diff options
318 files changed, 10004 insertions, 5470 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6355be13..dd025492 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -215,11 +215,14 @@ variables: # it sets an alternate HOME, which results in asdf returning # unknown command: python3. Perhaps you have to reshim? # Make sure /usr/local/bin is first in order to work around asdf. - - export PATH=/usr/local/bin:$PATH + - export PATH=/usr/local/bin:$PATH:$HOME/.python-env/bin - brew --version - printf "\e[0Ksection_start:%s:brew_section[collapsed=true]\r\e[0KInstalling prerequisites" "$( date +%s)" - ./tools/macos-setup-brew.sh --install-optional --install-test-deps - printf "\e[0Ksection_end:%s:brew_section\r\e[0K" "$( date +%s)" + # Homebrew implemented PEP 668, so install Python packages using venv for now. + - python3 -m venv $HOME/.python-env + - $HOME/.python-env/bin/pip3 install pytest pytest-xdist - export PYTEST_ADDOPTS=--skip-missing-programs=dumpcap,rawshark - mkdir -p ccache - ccache --show-stats @@ -271,6 +274,8 @@ Source Package: artifacts: paths: - wireshark-*.tar.* + - release-notes-*.html + - release-notes-*.txt # Job to generate packages for Debian stable Debian Stable APT Package: @@ -4275,6 +4275,7 @@ Danielle Church <dani.church[AT]gmail.com> Daniël van Eeden <github[AT]myname.nl> Daniël van Eeden <wireshark[AT]myname.nl> Darien Spencer <cusneud[AT]mail.com> +Darius Davis <darius-wireshark[AT]free-range.com.au> Darius Davis <darius[AT]vmware.com> Darshan Nevgi <darshan.sn[AT]samsung.com> Dave Barach <dave[AT]barachs.net> @@ -4490,6 +4491,7 @@ Igor Dmitriev <igor.dmitriev[AT]eke.fi> Igor Passchier <igor.passchier[AT]tassinternational.com> Ike Gilbert <ike[AT]imgilbert.com> Ilya Gavrilov <ilya.dev[AT]gmail.com> +Ilya Kulakov <kulakov.ilya[AT]gmail.com> Indraneel Guha <indraneelg[AT]gmail.com> Ionut Ceausu <ionut.ceausu[AT]gmail.com> Isaac Boukris <iboukris[AT]gmail.com> @@ -4874,7 +4876,7 @@ Nils Björklund <nils.bjorklund[AT]effnet.com> Nils Hanke <nils.hanke[AT]outlook.de> Nils Ohlmeier <github[AT]ohlmeier.org> Nitzan Carmi <nitzanc[AT]mellanox.com> -Noan Perrot <noan.perrot[AT]gmail.com> +Noan <noan.perrot[AT]gmail.com> Noel Power <noel.power[AT]suse.com> Nora Sandler <nsandler[AT]securityinnovation.com> Odysseus Yang <wiresharkyyh[AT]outlook.com> @@ -4910,6 +4912,7 @@ Patrick MacArthur <pmacarth[AT]iol.unh.edu> Patrick Rauscher <prauscher[AT]prauscher.de> Patrick Servello <patrick.servello[AT]gmail.com> Patrik Moško <patrikmosko95[AT]gmail.com> +Patrik Thunström <patrik.thunstroem[AT]technica-engineering.de> Patryk Nowak <patryk.nowak[AT]tieto.com> Pau Espin Pedrol <pespin[AT]sysmocom.de> Paul Aurich <paul[AT]darkrain42.org> @@ -5050,6 +5053,7 @@ Sayuri Mizushima <yamaguchi55[AT]protonmail.ch> Scott Deandrea <sdeandrea[AT]apple.com> Scott McKay <smckay[AT]pathwayconnect.com> Sebastian Kloeppel <sk[AT]nakedape.net> +Sebastian Reimers <hallo[AT]studio-link.de> Sebastian Schildt <sebastian[AT]frozenlight.de> Sebastien Henri <sebastien.henri[AT]meraki.net> Sektor van Skijlen <ethouris[AT]gmail.com> @@ -5061,6 +5065,7 @@ Sergey Rak <sergrak[AT]iotecha.com> Sergey V. Lobanov <sergey.v.lobanov[AT]yandex.ru> Sergey V. Lobanov <sergey[AT]lobanov.in> Sergio Moreno Mozota <sergio.morenomozota[AT]telefonica.com> +Sergio de Paula <sergio.paula[AT]dsr-corporation.com> Seth Alexander <seth.alexander[AT]cosmicaes.com> Sharon Brizinov <SharonBrizinov[AT]users.noreply.github.com> Sharvil Nanavati <sharvil[AT]playground.global> @@ -5257,6 +5262,7 @@ Yuya Kawakami <yuyarin[AT]yuyarin.net> Yuya Kusakabe <y-kusakabe[AT]bbsakura.net> Zach Chadwick <zachad[AT]qacafe.com> Zachary Holcomb <zholcomb2017[AT]my.fit.edu> +Zackhardtoname <zack.hardtoname[AT]gmail.com> Zdeněk Žamberský <zzdevel[AT]seznam.cz> Zhang Zhilei <zhangzhilei[AT]360.cn> Zhao Lin <zlbinghamton[AT]gmail.com> diff --git a/CMakeLists.txt b/CMakeLists.txt index 27fa752e..132e4a94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ endif() # Updated by tools/make-version.py set(PROJECT_MAJOR_VERSION 4) set(PROJECT_MINOR_VERSION 2) -set(PROJECT_PATCH_VERSION 2) +set(PROJECT_PATCH_VERSION 4) set(PROJECT_BUILD_VERSION 0) set(PROJECT_VERSION_EXTENSION "") @@ -1499,15 +1499,15 @@ if (QT_FOUND) # https://doc.qt.io/qt-5.11/supported-platforms-and-configurations.html # https://doc.qt.io/qt-5.15/supported-platforms.html # https://doc-snapshots.qt.io/qt6-dev/supported-platforms.html - if(Qt${qtver}Widgets_VERSION VERSION_GREATER_EQUAL "6.5.0") + if(Qt${qtver}Widgets_VERSION VERSION_GREATER_EQUAL "6.5.0" AND MIN_MACOS_VERSION VERSION_LESS "11.0") set(MIN_MACOS_VERSION 11.0) - elseif(Qt${qtver}Widgets_VERSION VERSION_GREATER_EQUAL "6.0.0") + elseif(Qt${qtver}Widgets_VERSION VERSION_GREATER_EQUAL "6.0.0" AND MIN_MACOS_VERSION VERSION_LESS "10.14") set(MIN_MACOS_VERSION 10.14) - elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.14.0") + elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.14.0" AND MIN_MACOS_VERSION VERSION_LESS "10.13") set(MIN_MACOS_VERSION 10.13) - elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.12.0") + elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.12.0" AND MIN_MACOS_VERSION VERSION_LESS "10.12") set(MIN_MACOS_VERSION 10.12) - elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.10.0") + elseif(Qt5Widgets_VERSION VERSION_GREATER_EQUAL "5.10.0" AND MIN_MACOS_VERSION VERSION_LESS "10.11") set(MIN_MACOS_VERSION 10.11) endif() if(CMAKE_OSX_DEPLOYMENT_TARGET AND CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS MIN_MACOS_VERSION) @@ -1,131 +1,1175 @@ -commit 8e38c07020 +commit cde7eb73a1b +Author: Niels Widger <niels@qacafe.com> +Date: Mon Mar 25 13:58:54 2024 -0400 + + sharkd: Add "column_info" field to "status" method + + Add new `column_info` field to `sharkd`'s `status` method which + contains additional column information. A new `column_info` field was + added because the existing `columns` field is a simple string array + and therefore new fields could not be added to it in a + backwards-compatible manner. The new `column_info` field includes + each column's title, format string (i.e. `%x` or + `%Cus:<expr>:<occurrence>` if `COL_CUSTOM`) as well as booleans + indicating if the column is visible or resolved. + + The existing `sharkd` unit tests `test_sharkd_req_status_no_pcap` and + `test_sharkd_req_status` have been updated to check for the new + `column_info` field. + + (cherry picked from commit a7236f6a57802cddb8d57f21d904bea729051b09) + +commit 99655aa204c +Author: John Thacker <johnthacker@gmail.com> +Date: Wed Mar 27 09:52:21 2024 -0400 + + IPPUSB: Avoid (mostly harmless) string overread + + The result of tvb_get_ptr and the CHUNKED_END array are not + null terminated (but are guaranteed to be CHUNK_LENGTH_MIN), + so memcmp is more appropriate than strncmp, as the later will + call strlen, which goes outside the desired range. It's a read, + not a write, and it will be thrown away because it will always + compare larger than CHUNK_LENGTH_MIN, but there's no reason to + do it. It also, at least on some versions of gcc and some compiler + options, causes a stringop-overread warning that becomes an error. + + For good practice, replace the tvb_get_ptr + memcmp call with + tvb_memeql. + + (cherry picked from commit 3a7b6188972e5fc59ce7df053e660b4f200795f8) + +commit e6abb97eb87 +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Mar 26 19:03:31 2024 -0400 + + Qt: Apply the fix for SyntaxComboBoxes to Qt 5.15.3 + + The change that caused SyntaxLineEdit backgrounds not to be applied + when inside a QComboBox (#18175, caused by Qt trying to fix + https://bugreports.qt.io/browse/QTBUG-81533) was backported to + Qt 5.15.3, so apply it on those versions as well. + + There might well be a better way to work around this, but this + is simple enough and works. + + Fix #18996 + + (cherry picked from commit 24b27a78e2cb2c64f1b359c920fd5f2fa051396a) + +commit c05c751df5a Author: Gerald Combs <gerald@wireshark.org> -Date: Thu Jan 4 14:16:36 2024 -0800 +Date: Mon Mar 25 16:29:53 2024 -0700 - Prep for 4.2.2 + Prep for 4.2.4 -commit 73c949e970 +commit bff2e50c192 Author: Gerald Combs <gerald@wireshark.org> -Date: Thu Jan 4 14:12:37 2024 -0800 +Date: Sat Mar 23 17:16:46 2024 -0700 - Qt: Update some comments related to WinSparkle + DVB-S2: Add a null check - [skip ci] + (cherry picked from commit 105da2927f217e21216b0d1f3e5c6f4022d28ac6) + +commit 4bd1e2d4deb +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 23 17:12:04 2024 -0700 + + ISO 7816: Add a null check + + (cherry picked from commit 45342588857f4410c7e2c7d11c72105010e459b3) + +commit c430b886679 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 23 17:03:35 2024 -0700 + + H.264+H.265: Add null checks + + Make sure our field pointers are valid. Found by scan-build. + + (cherry picked from commit 0cc1a5f11077094266b2bd3ddf272aa0a5c7ae88) + + Conflicts: + epan/dissectors/packet-h264.c + epan/dissectors/packet-h265.c + +commit 9cc50ba9757 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 24 09:24:14 2024 +0000 + + [Automatic update for 2024-03-24] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 73cae3cda13 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 23 10:37:13 2024 -0700 + + Add recursion checks to SoulSeek, SML, and Socks + + (cherry picked from commit 5366c18d28774f30c463d95df0e5e58d61f85897) + +commit 092d48aec06 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 23 11:53:04 2024 -0700 + + Recursion updates for Gryphon, MATE, OpcUa, PNIO, and WiMAX ASN CP + + (cherry picked from commit 6d4375846b07b827c73be6474c34dc68284414ab) + + Conflicts: + plugins/epan/mate/mate_runtime.c + plugins/epan/opcua/opcua_simpletypes.c + +commit 76c41d8dc0a +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 23 10:19:43 2024 -0700 + + Add recursion checks to LLRP, MQ PCF, OPSI, and OSC + + (cherry picked from commit f9e954497fb9900dfc62fd55b870f0d859147ec6) + +commit f0678f3ae71 +Author: Guy Harris <gharris@sonic.net> +Date: Fri Mar 22 12:23:04 2024 -0700 + + expert: register ei_unreassembled with proto_unreassembled. + + We have two pseudo-protocols, not one, and proto_unreassembled is + intended for "Wireshark didn't reassemble this, so we ran past the end + of the first segment" type errors. Have two separate ei_register_info[] + arrays, one for errors deemed "malformed" and one for errors deemed + "unreassembled", and register them with the appropriate protocols. + + (cherry picked from commit e4a33420689431c6c399946fb3c6203cf687b5a2) + +commit 0ef35722a7f +Author: Gerald Combs <gerald@wireshark.org> +Date: Thu Mar 21 09:25:29 2024 -0700 + + USBVIDEO: Add a class data type check + + Make sure our class data type is USB_CONV_VIDEO before trying to use it. + + Fixes #19717 + + (cherry picked from commit 0e1bad2875f2d73a6d67169eeb9f1cdb7554e1c2) + +commit a9c7dcd27eb +Author: Gerald Combs <gerald@wireshark.org> +Date: Thu Mar 21 13:03:14 2024 -0700 + + Windows: Upgrade c-ares to 1.27.0 + + (cherry picked from commit c733727c76a012b43d4026071e51e9a0d56559f3) + +commit 02218b1fb77 +Author: John Thacker <johnthacker@gmail.com> +Date: Wed Mar 20 12:02:51 2024 -0400 + + TFTP: Fix export objects in single pass tshark + + We cannot know during the first pass if the capture file contains + the last block of a TFTP transfer, so we have to copy the blocks + regardless (if we have no missing blocks yet.) + + Fix #19715 + + (cherry picked from commit e640ecd591fdc837ee2ed79b1e39bee5b34829e3) + +commit b0288cb8fb4 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Mar 20 09:54:17 2024 -0700 + + Add recursion checks to EXTREME MESH, LwM2M-TLV, MPLS ECHO, SNA, and TCAP + + (cherry picked from commit 1ed5bd8dd2c7b1a8c79c60fb368717728f0d15c4) + +commit b03e1136fc4 +Author: Guy Harris <gharris@sonic.net> +Date: Tue Mar 19 11:43:18 2024 -0700 + + mac-lte: fix more bogus casts. + + It is *not* safe to pass a pointer to anything other than a pointer to a + guint32/uint32_t as the last argument to proto_tree_add_item_ret_uint(). + + Doing so, and then making the compiler's complaint about that because + you want your code to compile, means that a full 32 bits will be written + to, even though they're being written to somethiing smaller than 32 + bits, so *something* outside of the item to be stored into will be + written. If you're *lucky*, that will be padding. If you're *not* + lucky, it could be anothr variable, or something else in memory. + + Don't do that. + + (cherry picked from commit 3ea56842a3750d760d1742e534eab424e81d9a41) + +commit 34bf4d1d361 +Author: Matan Perelman <matan1008@gmail.com> +Date: Tue Mar 19 09:07:13 2024 +0200 + + mac-lte: Fix memory access in LONG_BSR_LCID + + Before this change, when reaching LCID Group 2 in LONG_BSR_LCID parsing, + the call to `proto_tree_add_item_ret_uint` with `(guint32*)&buffer_size[2]` + would access memory beyond the array since the array contains 4 elements + of type guin8. The invalid access sometimes created an unexpected write + to the `lcids` array, changing the LCID and causing a wrong dissection + of the matching body. + + (cherry picked from commit 5de524bc2027b6d65480849f780169a9553506e2) + +commit 4fc3be24f0d +Author: John Thacker <johnthacker@gmail.com> +Date: Mon Mar 18 10:14:44 2024 -0400 + + MinGW+NSIS: Install NSIS package in setup script + + (cherry picked from commit 4c5f838c5881f11a91635ba330d9a5b0f70fa86b) + +commit 36afc6b15f5 +Author: John Thacker <johnthacker@gmail.com> +Date: Mon Mar 18 09:43:16 2024 -0400 + + MinGW+NSIS: Work around QTBug-122257 when building + + For one status message type, windeployqt --list ignores the + verbosity setting and prints them to standard out in + Qt 6.6.0 - 6.6.2. Work around that so that MSYS2 builds work. + + https://bugreports.qt.io/browse/QTBUG-122257 + + (cherry picked from commit 3cff44e4a06e5c0aa09e090538e0cea08e5a45d8) + +commit 3bc3389128b +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 17 12:52:39 2024 -0700 + + Add recursion checks to DCOM, MPEG PES, PROXY, Snort config, and Thread + + (cherry picked from commit 6653bfd82ed86417578a31525de67e5f1e299a89) + + Conflicts: + epan/dissectors/packet-snort-config.c + +commit b8146867260 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 17 10:37:39 2024 -0700 + + Add recursion checks to DICOM, FC-SWILS, PIM, RSL, and WASSP + + (cherry picked from commit e9f0d2c22a23bf279753884fd9a8980d2ae13642) - (cherry picked from commit e68771714aa72f1217d225821121a09ab2cf6fd0) +commit 218d89ff7db +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 17 09:25:25 2024 -0700 + + Add recursion checks to DCCP, KNX/IP, PANA, SOME/IP, and WLCCP + + (cherry picked from commit db886b4acbc761e730d2364e3759019266404275) + +commit 9c9a8a5defe +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 16 10:35:37 2024 -0700 + + Add recursion checks to CSN.1, GSM A-bis OML, NAS-5GS, SolarEdge, and WMIO + + (cherry picked from commit 73b6bf25e27796352774f7d95ef053c1da1d1cfd) + + Conflicts: + epan/dissectors/packet-wmio.c + +commit 248cb260566 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 17 09:24:41 2024 +0000 + + [Automatic update for 2024-03-17] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 9042c92dd95 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 16 09:44:46 2024 -0700 + + Add recursion checks to CQL, GSM GSUP, MSWSP, RSVP, and WTP + + (cherry picked from commit 277d965657060085e14990d7eafc596f0b1f0ed0) + +commit cc138f8ea22 +Author: Gerald Combs <gerald@wireshark.org> +Date: Fri Mar 15 14:31:15 2024 -0700 + + Add recursion checks to COSE, GQUIC, SUA, and XML + + (cherry picked from commit 7122291d5d0df839f4dd404cad13d93e36bd04a0) + +commit 8cac5932f79 +Author: Anders Broman <a.broman58@gmail.com> +Date: Mon Mar 4 12:22:54 2024 +0100 + + Lua: Replace lua_pushnumber with lua_pushinteger where apropriate. + + (cherry picked from commit 4e997a93ea4c494b5fdae5b14829feffafa6f453) + +commit 77897acfb46 +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Mar 12 19:28:43 2024 -0700 + + Add recursion checks to COROSYNC/TOTEMSRP, HSMS, ProtoBuf, RTLS, and YAMI -commit a8642e2956 + (cherry picked from commit 5b29346f9b7e4c67401afc2015b880de760eb73b) + +commit efed69f77b8 Author: John Thacker <johnthacker@gmail.com> -Date: Thu Jan 4 11:39:01 2024 -0500 +Date: Thu Mar 14 20:43:24 2024 -0400 + + Lua: Don't test for removed functions - Qt+WinSparkle: Don't close the main window in the can shutdown callback + atan2, cosh, sinh, tanh, pow, frexp, ldexp, and log10 were + removed from Lua 5.3. (log10 was removed in Lua 5.2), along + with other functions. - Apparently in Qt6 closing the main window can exit the Qt event loop, - which means that WinSparkle never gets the notifications it needs to - proceed. + Don't test for or promise their existence. People using them in dissectors + will have to use workarounds. The most common ones have native + implementations - anyone using hyperbolic sine in a dissector will + have to find some other workaound. - WinSparkle will call quit() shortly thereafter via the shutdown - request callback, so the main window will still close at approximately - the same time. + Related to #10881 - See discussion in https://github.com/vslavik/winsparkle/issues/237 + (backported from ad69c29f8e89b4f77ae4c63fa1b65da2ec57d648) + +commit 12b34c36d3a +Author: John Thacker <johnthacker@gmail.com> +Date: Sun Mar 3 17:46:26 2024 -0500 - Fix #19568 + Lua: In tests, use load instead of loadstring on Lua > 5.1 - (cherry picked from commit 96b0a674c71761f2c0d30d046e9f118caeefeb56) + loadstring was removed after Lua 5.1. load given a string argument + has the same behavior as loadstring did. Test for the Lua version + in order to use the appropriate function. -commit c2ad918749 + Related to #10881 + + (cherry picked from commit 5e4d7dd565b9262c38847ff33688b675996d2546) + +commit 4791b23c6c6 Author: John Thacker <johnthacker@gmail.com> -Date: Thu Jan 4 08:28:36 2024 -0500 +Date: Wed Mar 13 08:39:38 2024 -0400 - RSVP: Fix typo + wsutil: Allow converting zero length bytestrings again - The variable type is being passed for the encoding instead of - ENC_BIG_ENDIAN + Prior to 3.6, we allowed the bytes_to_str function to convert + an empty (but non NULL) hex byte string to an empty string, + and some uses expected that, e.g. in the UATs. Allow that again. - (cherry picked from commit 75fa97e7f2decfb4a772a3d03f17299a1ac0d649) + Fix #19705 -commit 8d0e01a099 -Author: Ismael Mendez Matamoros <ismael@rti.com> -Date: Fri Dec 22 13:40:36 2023 +0100 + (cherry picked from commit eb585523846961c8bfef20d7206a265e76825cd8) - RTPS: Fixed User Data Dissection feature +commit 9dbd02ff654 +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Mar 12 23:29:14 2024 -0400 - Function rtps_strlcpy broke the User Data dissection feature because it - overwites beyond the size of the string + Qt: queue TCP stream graph replots during mouse moves - (cherry picked from commit 6f17dcd67d861ac9116982d05ad01fbd76159b63) + For a mouseMove event, don't immediately replot but queue + the replot for the next event loop iteration. This dramatically + improves performance on Linux for graphs with a large number + of points when moving the mouse for graphs. -commit 143f8be037 -Author: Simon Steinmann <simon.steinmann91@gmail.com> -Date: Thu Jan 4 02:17:38 2024 +0000 + (cherry picked from commit 1ea44a05e95d71d458750ee3f57fbf9801989e5f) - s4607: Add to "decode as" +commit 4577621fc2f +Author: Jaap Keuter <jaap.keuter@xs4all.nl> +Date: Wed Mar 13 01:13:02 2024 +0000 - Fix #19566 + SNMP set correct req/resp relation when req's are repeated. - (cherry picked from commit 8f7f7cd7de724578c583c4d88752c70a68d7f747) + (cherry picked from commit 97bef124aea9d15fb202b8e9c412d4c575025d15) -commit 343c864939 + ab0f0c24 SNMP set correct req/resp relation when req's are repeated. + +commit 59c270da82f Author: John Thacker <johnthacker@gmail.com> -Date: Wed Jan 3 19:56:19 2024 -0500 +Date: Tue Mar 12 09:44:36 2024 -0400 - RTPS: Don't leak in the guid hash + dfilter: Fix parsing of single character hex character escapes - If hashing a newly created GBytes, unref the GBytes after computing - the hash (and before returning it.) + Fix parsing of C-style hex escape character constants with only + one hex digit. - Fix #19558 (in combination with 45b929a1b63a766edaa7eb52071f10614b87a5e2 - and 6f17dcd67d861ac9116982d05ad01fbd76159b63) + Prevents errors like: - (cherry picked from commit ca027987142407980e3d98f5ba9b45daf61abb25) + Error: '\x1' is too long to be a valid character constant. -commit 0d9bc173c4 -Author: Guy Harris <gharris@sonic.net> -Date: Wed Jan 3 16:32:12 2024 -0800 + (cherry picked from commit e05dfae55318c3b4e0f3176decdc2d06941fb729) + +commit 29ab3749d3a +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 10 11:59:21 2024 -0700 + + Add recursion checks to BVLC, DOCSIS MAC MGMT, MsgPack, RTMPT, and ZigBee ZCL - Add ".snoop" to the list of capture file extensions. + (cherry picked from commit 9bfa8d9142ba9efa38827346486c895df9dce9cc) - It's in other such lists. +commit a6cdd65539b +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 10 10:25:14 2024 -0700 - Update some comments while we're at it. + Add recursion checks to BT SDP, GTPv2, NHRP, SCTP, and Windows common - Fixes #19565. + (cherry picked from commit 128c298122e71147f7fa3d7b6df2d7f0fde4eb7a) - (cherry picked from commit dd7df70be8cbf7e47e7ad855b5ff2daa771e651a) + Conflicts: + epan/dissectors/packet-sctp.c -commit 42c28428e4 +commit 022b66008bf Author: Gerald Combs <gerald@wireshark.org> -Date: Tue Jan 2 15:31:21 2024 -0800 +Date: Sat Mar 9 17:22:34 2024 -0800 - NSIS+WiX: Install sharkd + Add recursion checks to BT BNEP, DOF, ICQ, Q.2931, and S7COMM - Install sharkd. As noted in #19562, we don't yet have a man page. + (cherry picked from commit e50ef0effb253534c1e8afa9102aa6d52f9cbd12) - Fixes #19556 +commit f170401f909 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 10 09:24:40 2024 +0000 + + [Automatic update for 2024-03-10] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 59c773d6540 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 9 10:56:40 2024 -0800 + + Add recursion checks to BGP, Etch, LI5G, RPL, and SIMULCRYPT - (cherry picked from commit bcb0d025684d20b5a21d93d2f8a57e604d83df2a) + (cherry picked from commit 6f2514fba5fca8cbdc0b3513979a68f56424f868) + +commit 53e8374919d +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 9 10:32:56 2024 -0800 + + Add recursion checks to BFCP, EDONKEY, QNET, RTPS, and XMPP + + (cherry picked from commit 709404e401cfb36fdeb38f0bc1bd481b7309c1d9) + +commit 4c3c98e2abc +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 9 12:29:15 2024 -0800 -commit 4d4f695860 -Author: Balint Reczey <balint@balintreczey.hu> -Date: Wed Jan 3 22:44:18 2024 +0100 + GitLab CI+tools: Homebrew recently adopted PEP 668 + + Attempting to install Python packages using pip under Homebrew now + returns + + ``` + error: externally-managed-environment + × This environment is externally managed + ╰─> To install Python packages system-wide, try brew install + xyz, where xyz is the package you are trying to + install. + + If you wish to install a non-brew-packaged Python package, + create a virtual environment using python3 -m venv path/to/venv. + Then use path/to/venv/bin/python and path/to/venv/bin/pip. + + If you wish to install a non-brew packaged Python application, + it may be easiest to use pipx install xyz, which will manage a + virtual environment for you. Make sure you have pipx installed. + note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. + ``` + + Install pytest and pytest-xdist in a venv for now. + + (cherry picked from commit 77ec5a5068f9c68e67957c7978ef340b1e00536a) + +commit 7be4bbb413d +Author: John Thacker <johnthacker@gmail.com> +Date: Wed Mar 6 20:40:42 2024 -0500 + + t38: Allocate forced defragmented memory in correct scope + + Fragment data can't be allocated in pinfo->pool scope, as it + outlives the frame. Set it to be freed when the associated tvb + is freed, as done in the main reassemble.c code. + + Fix #19695 + + (cherry picked from commit 6fd3af5e999c71df67c2cdcefb96d0dc4afa5341) + +commit eb894c6bca6 +Author: John Thacker <johnthacker@gmail.com> +Date: Sun Mar 3 20:11:02 2024 -0500 + + Lua: Convert the time to an integer in tests + + Apparently in Lua 5.3, os.date doesn't like being handed a + value with fractional seconds. Convert the time to an integer + via a method that also works on Lua 5.1 + + Related to #10881 + + (cherry picked from commit 61e8d3392ae476516c22fa727e01a21846f2a487) + +commit 1b3e1c9e8ec +Author: John Thacker <johnthacker@gmail.com> +Date: Mon Mar 4 17:11:21 2024 -0500 + + Lua: Make tests work on Lua 5.4 + + Lua tables are stored with reference values that default to + a one-up counter starting at 1. To reduce the number of necessary + reallocations, the allocated but previously freed entries form + a linked list. Starting with the head of the freelist, each + reference points to the index number of the next freed reference + in the list, or 0 as a sentinel value. The head always present + and is 0 if nothing has been deleted. + + On Lua 5.4 the head of the list is always index 3 (LUA_RIDX_LAST + 1). + On earlier Lua, 0 is used. + + Various C API functions like lua_next and lua_len (and thus the length + operator #) do not distinguish between these values that refer to + table indices and those that refer to objects we've stored in them. + We can distinguish by checking whether or not the value for a particular + key is one of our classes, e.g. a ProtoField, or a lua_Number. Our + setters should assure that we aren't putting any lua_Numbers into + the tables. + + Related to #10881 + + (cherry picked from commit 2188257743e44c98806df3968d756500f9697309) + +commit 3959fc563dc +Author: Anders Broman <a.broman58@gmail.com> +Date: Wed Feb 21 21:34:10 2024 +0100 + + LUA: Make it compile with LUA 5.4 + + (cherry picked from commit f9e052b88ed2303f2f2b52d0808cded1f5736576) + +commit 3a10e3984ba +Author: Anders Broman <a.broman58@gmail.com> +Date: Wed Feb 21 21:23:28 2024 +0100 + + LUA bitop: Convery our lua_bitop.c to work with 5.3 and 5.4 + + The code is written by Andrew Engelbrecht and found here: + https://github.com/LuaJIT/LuaJIT/issues/384 + + (cherry picked from commit 926344c16c2147d06689cbde3c1e08aa6b5d6e93) + +commit 2283c1efd4d +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Mar 5 09:19:39 2024 -0500 + + ICMPv6: Remove recursion check from 0 length option path + + Fixup 972bb56d0ab3fc825955d58bee629ba13c1e1a99 + + Fix #19688 + + (cherry picked from commit ba82fcdef633214518aa2ea7f7a99f54e6bb03f3) + +commit 7d7be263168 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 3 17:38:10 2024 -0800 + + ASAP: More recursion updates + + Check against pinfo->flags.in_error_pkt. + + (cherry picked from commit d46e93b274aec46d75ca91dcd4e6f4f7a4b9f420) + +commit 79fdafac830 +Author: Gerald Combs <gerald@wireshark.org> +Date: Mon Mar 4 14:13:59 2024 -0800 + + Add recursion checks to Bencode, BT-DHT, ErlDP, H.233, and H.264 + + (cherry picked from commit f38f79d6e14c5a278d5e08ba1b96f9f4c0e600e0) + +commit 175347ef5e2 +Author: Gerald Combs <gerald@wireshark.org> +Date: Mon Mar 4 11:33:20 2024 -0800 - wiretap: Bump ABI version to 14.1.0 + Add recursion checks and suppressions to BEEP, Kafka, and OpenFlow + + (cherry picked from commit fcde25cfb8dc0d86904aaeaab8b50e87e1985fc0) + +commit 18b84f7734d +Author: Gerald Combs <gerald@wireshark.org> +Date: Mon Mar 4 10:51:16 2024 -0800 + + Add recursion checks to Banana, ISAKMP, KINK, M2UA, and M3UA + + (cherry picked from commit 48e65f0c54b05dbc3d082dc645e3d111b46e9055) + +commit d238e207d84 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 3 17:53:45 2024 -0800 + + Remove our recursion checks in ICMPv6 and NETLINK + + We'll run out of packet before we run out of stack in each case. + + (cherry picked from commit 972bb56d0ab3fc825955d58bee629ba13c1e1a99) + +commit 4a83b8f470b +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Mar 3 09:25:02 2024 +0000 + + [Automatic update for 2024-03-03] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 13e199a4a56 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 2 18:42:13 2024 -0800 + + ASAP: Make sure pinfo is set + + Fixes #19685. + + (cherry picked from commit dc84bddc1f245512c56aa3f5e617db9fff729796) + +commit 0a90847b7e9 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 2 15:37:37 2024 -0800 + + Add recursion checks to BACnet, CIP, IPP, LISP, and NETLINK + + (cherry picked from commit c4d62f97615f85b24f86a0ab2a8aa0d62851b6e5) + +commit 129b918b14a +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 2 11:58:35 2024 -0800 + + Add recursion checks to ASAP, iSCSI, JXTA, MBIM, and MQTT-SN + + (cherry picked from commit c49e1f2ceacac3e7a808f95c88d4eabf81c996e5) + +commit 2d24f6d995e +Author: Gerald Combs <gerald@wireshark.org> +Date: Sat Mar 2 10:46:44 2024 -0800 + + Add recursion checks to AMQP, GNW, LDP, CFLOW, and RDP + + (cherry picked from commit 3948fe5132f9641b662c888efb74b1bd01216cc9) + +commit 80e5533370b +Author: Gerald Combs <gerald@wireshark.org> +Date: Fri Mar 1 13:48:31 2024 -0800 + + Add recursion checks to various protocols + + (cherry picked from commit d0c09f485951a0b014102e8fc82aa5b854d9c33b) + +commit e7f8b65fdf0 +Author: Gerald Combs <gerald@wireshark.org> +Date: Fri Mar 1 09:32:00 2024 -0800 + + Rebuild our ASN.1 dissectors + + Switch to simple recursion checks. + +commit 406c023c621 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Feb 28 17:13:45 2024 -0800 + + epan: Add simple recursion checks + + Add a "dissection_depth" element to packet_info, and add + increment_dissection_depth and decrement_dissection_depth. Assert if our + dissection depth exceeds the gui_max_tree_depth preference. + + Use them to replace some of the current p_get_proto_depth and + p_set_proto_depth calls. + + Get rid of PINFO_LAYER_MAX_RECURSION_DEPTH and use the + gui_max_tree_depth preference in call_dissector and + dissector_try_heuristic. + + (cherry picked from commit 4f35c3a34a33f06fb86d4567715d2e935f506cd5) + + Conflicts: + epan/dissectors/file-blf.c + epan/dissectors/packet-smb2.c + +commit 783048838e2 +Author: John Thacker <johnthacker@gmail.com> +Date: Thu Feb 29 18:38:14 2024 -0500 + + tools: Parse ranges in make-services.py + + The new services parsing was only putting the first and last port + of a range into the static C array data. This was a regression + in 4.2 compared to 4.0 + + (cherry picked from commit 95f6f94f8bd711660959d7d6b7ca0fffcd2f7630) + +commit 9c374bbfa1e +Author: John Thacker <johnthacker@gmail.com> +Date: Wed Feb 28 18:16:20 2024 -0500 + + docs: Explicitly set wildcard when including dissection-options tags + + The double wildcard is implied on recent versions of asciidoctor, + but explicitly specifying doesn't hurt, and fixes the includes on + some older versions (such as that with RHEL 8.) + + https://docs.asciidoctor.org/asciidoc/latest/directives/include-tagged-regions/#tag-filtering + (backported from commit bb37fcb0260eb06692ec127ceb05597c678bf4a7) + +commit c8e98a245cb +Author: Niels Widger <niels@qacafe.com> +Date: Mon Feb 26 13:51:53 2024 -0500 + + sharkd: Increase JSON buffer size from 2048 to 8192 bytes + + This commit increases the maximum size for the JSON commands processed + by `sharkd` from 2048 to 8192 bytes. The primary reason for this + change is to allow larger filters in `filter0`...`filter9` arguments + which, combined with the outer JSON boilerplate, can cause a command + to quickly hit the existing 2048-byte limit. + + (cherry picked from commit 8989c732fc0b78039c72b695e7c7099948ea5491) + +commit 57741bfc81d +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Feb 27 20:25:05 2024 -0500 + + prefs: Fix null defererences, remove obsolete function + + Null dereference check to fix Coverity CIDs 1399640 and 1399641. + Remove a function that has been unused for a decade. + + (cherry picked from commit 7dc0f853c6eed609f13fb2786c3cfa833dc850b5) + +commit aeffdcf8206 +Author: John Thacker <johnthacker@gmail.com> +Date: Wed Feb 28 06:59:45 2024 -0500 + + JSON-3GPP: Don't crash on empty suppFeat JSON value + + Return straightaway if the length is 0 or less. (It shouldn't + be less unless the JSON dissector has issues, but if it's + -1 it might not raise an exception adding the string because of + the longstanding feature of -1 length for a FT_STRING meaning + "to the end of the tvb.") + + Fix #19677 + + (cherry picked from commit ade326dbf56afb361158f7246572d5a96b7493dc) + +commit 005a3e8fdf7 +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Feb 27 09:02:55 2024 -0500 + + ENRP: Check for invalid parameter & error cause lengths + + The value in the length field in ENRP parameters and error causes + include the length and types, and must be at least 4. In particular, + not erring on zero can cause an infinite loop. + + https://datatracker.ietf.org/doc/html/rfc5354 + + Fix #19674 + + (backported from commit 84ffa648eaaa6292c5332df236b10d70f7cf07d0) + +commit 4cc9f9bbbf7 +Author: Triton Circonflexe <triton@kumal.info> +Date: Sat Feb 24 21:39:31 2024 +0100 + + Thrift: Fix recursion check + + Previous recursion check only worked with generic dissector. + The introduced changes cover the sub-dissectors as well. + + Remove the existing check as it counted basic types as well. + Add a check at every place where a sub-tree is created: + - containers (list, set, map) + - structures + + (cherry picked from commit 4eaf10bc4e46762b1e304baf188d0767907e1914) + +commit 3243e000415 +Author: John Thacker <johnthacker@gmail.com> +Date: Thu Feb 22 08:54:12 2024 -0500 + + Qt: Work around QTBUG-122109 when applying packet list style sheet + + https://bugreports.qt.io/browse/QTBUG-122109 + + A bug introduced by the fix for https://bugreports.qt.io/browse/QTBUG-116013 + causes all visible sections to reset to the default section size whenever a + style sheet is applied (even if defaultSectionSize didn't change.) + + Make sure that before applying a style sheet we prevent our recent + column widths from being updated, and then restore column widths + from the recent values afterwards. + + This affects versions 6.5.4 (commercial only, 6.5.3 is the last free + release) and 6.6.1 and 6.6.2. + + (cherry picked from commit ea38f142e89f81181fe397da0875a7df05787162) + +commit 854dd3c85f0 +Author: Patrik Thunström <patrik.thunstroem@technica-engineering.de> +Date: Sun Feb 25 00:07:45 2024 +0100 + + CSV Export: Last column no longer exported when hidden. + + Prior to fix the last column no matter if hidden or not was + always included when exporting packet dissections to CSV. + + Fixes #19666. + + (cherry picked from commit 30c0ab964ff62ef95b1a0ec9c04ebbbb0cd51c43) + +commit 535a868fab5 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Feb 25 09:26:26 2024 +0000 + + [Automatic update for 2024-02-25] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 459c0d50cb9 +Author: John Thacker <johnthacker@gmail.com> +Date: Fri Feb 23 07:56:18 2024 -0500 + + Inject TLS Secrets: Check for NULL used secrets map + + The GUI menu item should probably be disabled without a capture file + too. + + Fix #19667 + + (cherry picked from commit ac90d8c83437c4eb120f8d64025f2ca07269f35e) + +commit 315e14a35d5 +Author: Gerald Combs <gerald@wireshark.org> +Date: Thu Feb 22 18:35:09 2024 -0800 + + ICMPv6: Add a recursion check + + Fix + + ``` + wireshark/epan/dissectors/packet-icmpv6.c:1709:1: warning: function 'dissect_icmpv6_nd_opt' is within a recursive call chain [misc-no-recursion] + 1709 | dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) + | ^ + wireshark/epan/dissectors/packet-icmpv6.c:1709:1: note: example recursive call chain, starting from function 'dissect_icmpv6_nd_opt' + wireshark/epan/dissectors/packet-icmpv6.c:2247:30: note: Frame #1: function 'dissect_icmpv6_nd_opt' calls function 'dissect_icmpv6_nd_opt' here: + 2247 | opt_offset = dissect_icmpv6_nd_opt(tvb, opt_offset, pinfo, icmp6opt_tree); + | ^ + wireshark/epan/dissectors/packet-icmpv6.c:2247:30: note: ... which was the starting point of the recursive call chain; there may be other cycles + ``` + + (cherry picked from commit 0eb0d6fdb4394872e68ed2c8c9d2cc1a1bc85db9) + +commit 27d5c37e714 +Author: Gerald Combs <gerald@wireshark.org> +Date: Thu Feb 22 18:50:24 2024 -0800 + + SMB2: Add recursion checks + + (cherry picked from commit 1515b211e20354e097092de0b52e50862e64ce36) + + Conflicts: + epan/dissectors/packet-smb2.c + +commit db9610c3896 +Author: Gerald Combs <gerald@wireshark.org> +Date: Thu Feb 22 18:29:49 2024 -0800 + + DHCPv6: Add a recursion check + + Fix + + ``` + wireshark/epan/dissectors/packet-dhcpv6.c:1846:1: warning: function 'dhcpv6_option' is within a recursive call chain [misc-no-recursion] + 1846 | dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, + | ^ + wireshark/epan/dissectors/packet-dhcpv6.c:1846:1: note: example recursive call chain, starting from function 'dhcpv6_option' + wireshark/epan/dissectors/packet-dhcpv6.c:2052:28: note: Frame #1: function 'dhcpv6_option' calls function 'dhcpv6_option' here: + 2052 | temp_optlen += dhcpv6_option(tvb, pinfo, subtree, + | ^ + wireshark/epan/dissectors/packet-dhcpv6.c:2052:28: note: ... which was the starting point of the recursive call chain; there may be other cycles + wireshark/epan/dissectors/packet-dhcpv6.c:2958:1: warning: function 'dissect_dhcpv6' is within a recursive call chain [misc-no-recursion] + 2958 | dissect_dhcpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, + | ^ + ``` + + (cherry picked from commit 5a04c4ecee4a40851c8fd0f7de0ee96d257bb752) + +commit cd5c51f50f7 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Feb 21 15:01:00 2024 -0800 + + AllJoyn: Add recursion checks + + (cherry picked from commit 8b0e90d62e283d3aa7b00aa17a55a53bde362da4) + +commit 3b7f2c1ca79 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Feb 21 14:27:58 2024 -0800 + + 6LoWPAN: Add recursion checks + + (cherry picked from commit 34c90f7a3d31c74c7f66a71dcd23eed326718190) + +commit 5d2c25d97e6 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Feb 21 11:53:18 2024 -0800 + + TN5250: Add a recursion check + + (cherry picked from commit 282bd19e887a56496011d14b1bf7bdde40f9216e) + +commit 0e272f66bd2 +Author: Gerald Combs <gerald@wireshark.org> +Date: Wed Feb 21 11:08:42 2024 -0800 + + MONGO: Add a recursion check + + (cherry picked from commit 7183ac40da718b4a0531f84adf090e9a97c1297a) + +commit d8231096d5c +Author: John Thacker <johnthacker@gmail.com> +Date: Tue Feb 20 22:58:58 2024 -0500 + + text2pcap: Set encapsulation to WIRESHARK_UPPER_PDU with -P + + The documentation, both man page and help, claims that text2pcap + automatically sets the encapsulation to WIRESHARK_UPPER_PDU if + -P is given. Make the behavior match the documentation. + + (cherry picked from commit 339d6d4aba6f51f32c9483ea4dab5790b713d247) + +commit a29a21fb697 +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 15:22:07 2024 -0800 + + RBM: Add a recursion check + + Fix + + ``` + wireshark/epan/dissectors/file-rbm.c:196:13: warning: function 'dissect_rbm_array' is within a recursive call chain [misc-no-recursion] + 196 | static void dissect_rbm_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) + | ^ + wireshark/epan/dissectors/file-rbm.c:410:13: note: example recursive call chain, starting from function 'dissect_rbm_object' + 410 | static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* ptree, guint* offset, gchar** type, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:439:4: note: Frame #1: function 'dissect_rbm_object' calls function 'dissect_rbm_string' here: + 439 | dissect_rbm_string(tvb, pinfo, tree, offset, &value_local); + | ^ + wireshark/epan/dissectors/file-rbm.c:325:2: note: Frame #2: function 'dissect_rbm_string' calls function 'dissect_rbm_object' here: + 325 | dissect_rbm_object(tvb, pinfo, tree, offset, NULL, NULL); + | ^ + wireshark/epan/dissectors/file-rbm.c:325:2: note: ... which was the starting point of the recursive call chain; there may be other cycles + wireshark/epan/dissectors/file-rbm.c:222:13: warning: function 'dissect_rbm_hash' is within a recursive call chain [misc-no-recursion] + 222 | static void dissect_rbm_hash(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) + | ^ + wireshark/epan/dissectors/file-rbm.c:321:13: warning: function 'dissect_rbm_string' is within a recursive call chain [misc-no-recursion] + 321 | static void dissect_rbm_string(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:329:13: warning: function 'dissect_rbm_regex' is within a recursive call chain [misc-no-recursion] + 329 | static void dissect_rbm_regex(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:344:13: warning: function 'dissect_rbm_userclass' is within a recursive call chain [misc-no-recursion] + 344 | static void dissect_rbm_userclass(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:355:13: warning: function 'dissect_rbm_variable' is within a recursive call chain [misc-no-recursion] + 355 | static void dissect_rbm_variable(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) + | ^ + wireshark/epan/dissectors/file-rbm.c:368:13: warning: function 'dissect_rbm_struct' is within a recursive call chain [misc-no-recursion] + 368 | static void dissect_rbm_struct(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:374:13: warning: function 'dissect_rbm_drb' is within a recursive call chain [misc-no-recursion] + 374 | static void dissect_rbm_drb(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) + | ^ + wireshark/epan/dissectors/file-rbm.c:383:13: warning: function 'dissect_rbm_rubyobject' is within a recursive call chain [misc-no-recursion] + 383 | static void dissect_rbm_rubyobject(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) + | ^ + wireshark/epan/dissectors/file-rbm.c:400:13: warning: function 'dissect_rbm_extended' is within a recursive call chain [misc-no-recursion] + 400 | static void dissect_rbm_extended(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) + | ^ + wireshark/epan/dissectors/file-rbm.c:410:13: warning: function 'dissect_rbm_object' is within a recursive call chain [misc-no-recursion] + 410 | static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* ptree, guint* offset, gchar** type, gchar** value) + | ^ + wireshark/epan/dissectors/file-rbm.c:535:6: warning: function 'dissect_rbm_inline' is within a recursive call chain [misc-no-recursion] + 535 | void dissect_rbm_inline(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** type, gchar** value) + | ^ + ``` + + (cherry picked from commit d7b15ff6d19763cc29f3cc4677aef28aed2879df) + +commit ec470ca63d8 +Author: John Thacker <johnthacker@gmail.com> +Date: Thu Feb 15 19:39:52 2024 -0500 + + extcap: Fix writing preferences to file + + Do not change the preference pointer inside the Extcap Options + Dialog. That changes the real preference value, which disturbs + the check inside prefs_store_ext_multiple that storeValues() calls + for whether a pref has changed or not. Since the prefs are already + changed to their new value, we won't realize that we need to write + out a new preference file. + + The other changes in #18487 are sufficent to fix the problem + identified there (though it's a bit unclear what "required" means + in combination with a default, and whether we have to send the + default value for the required parameter or can omit it.) + + If the button says "Save", then save the preferences regardless + of what the "extcap Save on Start" preference says. + + Fix #19639. Related to #18487 + + (cherry picked from commit 268e7425416f0f482bc001c0ca8010c425db49c9) + +commit c1584528c32 +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 14:28:59 2024 -0800 + + JPEG: Add a recursion check + + Fix + + ``` + /builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:773:1: warning: function 'process_tiff_ifd_chain' is within a recursive call chain [misc-no-recursion] + 773 | process_tiff_ifd_chain(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, + | ^ + /builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:773:1: note: example recursive call chain, starting from function 'process_tiff_ifd_chain' + /builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:896:37: note: Frame #1: function 'process_tiff_ifd_chain' calls function 'process_tiff_ifd_chain' here: + 896 | process_tiff_ifd_chain(tree, tvb, pinfo, encoding, + | ^ + /builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:896:37: note: ... which was the starting point of the recursive call chain; there may be other cycles + ``` + + (cherry picked from commit 46c652102f432577961cac534f20fc88fa6c11cf) + +commit 69f9eab216b +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 14:03:02 2024 -0800 + + BLF: Add a recursion check + + Fix + + ``` + wireshark/epan/dissectors/file-blf.c:498:1: warning: function 'dissect_blf_lobj' is within a recursive call chain [misc-no-recursion] + 498 | dissect_blf_lobj(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset_orig) { + | ^ + wireshark/epan/dissectors/file-blf.c:886:1: note: example recursive call chain, starting from function 'dissect_blf_next_object' + 886 | dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { + | ^ + wireshark/epan/dissectors/file-blf.c:893:32: note: Frame #1: function 'dissect_blf_next_object' calls function 'dissect_blf_lobj' here: + 893 | int bytes_parsed = dissect_blf_lobj(tvb, pinfo, tree, offset); + | ^ + wireshark/epan/dissectors/file-blf.c:580:27: note: Frame #2: function 'dissect_blf_lobj' calls function 'dissect_blf_next_object' here: + 580 | tmp = dissect_blf_next_object(sub_tvb, pinfo, subtree, offset_sub); + | ^ + wireshark/epan/dissectors/file-blf.c:580:27: note: ... which was the starting point of the recursive call chain; there may be other cycles + wireshark/epan/dissectors/file-blf.c:886:1: warning: function 'dissect_blf_next_object' is within a recursive call chain [misc-no-recursion] + 886 | dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { + | ^ + ``` + + (cherry picked from commit 3b2c961eeb3eda36a0253cc5111396a4d6a424e0) + +commit 4861d841305 +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 09:41:29 2024 -0800 + + ISIS LSP: Add a recursion check + + Fix + + ``` + wireshark/epan/dissectors/packet-isis-lsp.c:3431:1: warning: function 'dissect_sub_clv_tlv_22_22_23_141_222_223' is within a recursive call chain [misc-no-recursion] + 3431 | dissect_sub_clv_tlv_22_22_23_141_222_223(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, + | ^ + wireshark/epan/dissectors/packet-isis-lsp.c:3431:1: note: example recursive call chain, starting from function 'dissect_sub_clv_tlv_22_22_23_141_222_223' + wireshark/epan/dissectors/packet-isis-lsp.c:3541:21: note: Frame #1: function 'dissect_sub_clv_tlv_22_22_23_141_222_223' calls function 'dissect_sub_clv_tlv_22_22_23_141_222_223' here: + 3541 | dissect_sub_clv_tlv_22_22_23_141_222_223(tvb, pinfo, subtree, local_offset, local_len); + | ^ + wireshark/epan/dissectors/packet-isis-lsp.c:3541:21: note: ... which was the starting point of the recursive call chain; there may be other cycles + ``` + + Add Clang-Tidy suppressions as well. + + (cherry picked from commit 16d85df6f447b082afce8cf183d187d6144f2870) + +commit 4557986660b +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 09:41:29 2024 -0800 + + GIOP: Add a recursion check + + Add Clang-Tidy suppressions as well. + + (cherry picked from commit 45f9dae43cc9f6253bc8e8f2d12afa47a8925e62) + +commit 37eb42985eb +Author: Gerald Combs <gerald@wireshark.org> +Date: Tue Feb 20 09:24:00 2024 -0800 + + ENRP: Add a recursion check + + Add Clang-Tidy suppressions as well. + + (cherry picked from commit 6c52cdf959a4da6a4bf148713cb341b40f06355b) + +commit e1299a0ef50 +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Feb 18 09:24:20 2024 +0000 + + [Automatic update for 2024-02-18] + + Update manuf, services enterprise numbers, translations, and other items. + +commit d3ad478c920 +Author: Noan <noan.perrot@gmail.com> +Date: Tue Nov 28 09:36:44 2023 +0000 + + Fix parse number of scalability structures in VP9 + + (cherry picked from commit 8873aba1a03fb2fdf618807a416d528b52143bd8) + + 92ceaf04 Fix parse number of scalability structures + d40a502b Fix parse number of scalability structures in VP9 + +commit 6f399ff8e6f +Author: Gerald Combs <gerald@wireshark.org> +Date: Sun Feb 18 10:09:57 2024 -0800 + + tools: Don't assume that Homebrew has Lua 5.1 + + [skip ci] - The added symbols since 14.0.0 requires bumping the minor version. + (cherry picked from commit deac878dd56a4c04fc4dc9f198167314262c0af7) -commit 622e368175 +commit 9dbb5482ef0 Author: Gerald Combs <gerald@wireshark.org> -Date: Wed Jan 3 11:16:23 2024 -0800 +Date: Wed Feb 14 13:18:50 2024 -0800 - GitLab CI: Generate our release notes + GitLab CI: Add release notes artifacts - (cherry picked from commit 40111d9e8fa069fd2cf221792c8c1b3708b1975e) + (cherry picked from commit d54031eda9e94e9c7ab28e8a70b2509dc20cdfc9) -commit 42bcc8f69e +commit 4520e9eb867 Author: Gerald Combs <gerald@wireshark.org> -Date: Wed Jan 3 12:44:04 2024 -0800 +Date: Wed Feb 14 13:32:10 2024 -0800 - Version: 4.2.1 → 4.2.2 + Version: 4.2.3 → 4.2.4 [skip ci] @@ -1,4 +1,4 @@ -Wireshark 4.2.1 Release Notes +Wireshark 4.2.4 Release Notes What is Wireshark? @@ -6,97 +6,20 @@ Wireshark 4.2.1 Release Notes used for troubleshooting, analysis, development and education. Wireshark is hosted by the Wireshark Foundation, a nonprofit which - promotes protocol analysis educaton. Wireshark and the foundation + promotes protocol analysis education. Wireshark and the foundation depend on your contributions in order to do their work. If you or your - employer would like to contribute or become a sponsor, please visit - wiresharkfoundation.org[1]. + organization would like to contribute or become a sponsor, please + visit wiresharkfoundation.org[1]. What’s New Bug Fixes - The following vulnerabilities have been fixed: - - • wnpa-sec-2024-01[2] GVCP dissector crash. Issue 19496[3]. - CVE-2024-0208[4]. - - • wnpa-sec-2024-02[5] IEEE 1609.2 dissector crash. Issue 19501[6]. - CVE-2024-0209[7]. - - • wnpa-sec-2024-03[8] HTTP3 dissector crash. Issue 19502[9]. - CVE-2024-0207[10]. - - • wnpa-sec-2024-04[11] Zigbee TLV dissector crash. Issue 19504[12]. - CVE-2024-0210[13]. - - • wnpa-sec-2024-05[14] DOCSIS dissector crash. Issue 19557[15]. - CVE-2024-0211[16]. + If you are upgrading Wireshark 4.2.0 or 4.2.1 on Windows you will + need to download and install[2] Wireshark 4.2.4 or later by hand. The following bugs have been fixed: - • Capture filters not saved to recently used list. Issue 12918[17]. - - • CFM dissector does not handle Sender ID TLV correctly when - Chassis ID Length is zero. Issue 13720[18]. - - • OSS-Fuzz 64290: wireshark:fuzzshark_ip: Global-buffer-overflow in - dissect_zcl_read_attr_struct. Issue 19490[19]. - - • Overriding capture options set by preference by command line - arguments (like -S) doesn’t work. Issue 14549[20]. - - • Segfault when enabling monitor mode on wireless card that falsely - claims to support it. Issue 16693[21]. - - • Documented format of temporary file name is out of date in the - Wireshark User’s Guide. Issue 18464[22]. - - • Selection highlight lost when interface list is sorted. Issue - 19133[23]. - - • HTTP3 malformed packets. Issue 19475[24]. - - • Capture filter compilation fails with obscure error message. - Issue 19480[25]. - - • XML: Parsing encoding attribute failed when standalone attribute - exists. Issue 19485[26]. - - • Display filter expressions where the protocol name starts with - digit and contains a hyphen are rejected. Issue 19489[27]. - - • diameter.3GPP-* display filters not working after upgrade to - version 4.2.0. Issue 19493[28]. - - • GigE-vision: Control Protocol shows \"unknown\" as value for - ASCII character set. Issue 19494[29]. - - • The HTTP/3 Request Header URI is not correct. Issue 19497[30]. - - • QUIC/TLS not extracting \"h3\" from ALPN in a capture. Issue - 19503[31]. - - • Documentation on system requirements should be updated. Issue - 19512[32]. - - • 4.2.0: init.lua in subdirectories not loaded anymore. Issue - 19516[33]. - - • Malformed SIP/SDP messages: components are not decoded properly. - Issue 19518[34]. - - • heuristic_protos do not reset on profile swap. Issue 19520[35]. - - • Wireshark 4.2 crashes on Apply As Column. Issue 19521[36]. - - • NFLOG timestamp is incorrect. Issue 19525[37]. - - • Qt6 Crash (Double Free) When Attempting to Save TCP Stream Graph. - Issue 19529[38]. - - • Fixed parsing display filter expressions containing literal OID - values, e.g. `snmp.name == 1.3.6.1.2.1.1.3.0`. - New and Updated Features There are no new or updated features in this release. @@ -109,17 +32,21 @@ Wireshark 4.2.1 Release Notes New and Updated Capture File Support - There is no new or updated capture file support in this release. - - pcapng: the if_tsoffset option is now supported. + pcap and pcapng Prior Versions This document only describes the changes introduced in Wireshark - 4.2.1. You can find release notes for prior versions at the following + 4.2.4. You can find release notes for prior versions at the following locations: - • Wireshark 4.2.0[39] + • Wireshark 4.2.3[3] + + • Wireshark 4.2.2[4] + + • Wireshark 4.2.1[5] + + • Wireshark 4.2.0[6] Getting Wireshark @@ -131,7 +58,7 @@ Wireshark 4.2.1 Release Notes Most Linux and Unix vendors supply their own Wireshark packages. You can usually install or upgrade Wireshark using the package management system specific to that platform. A list of third-party packages can - be found on the download page[40] on the Wireshark web site. + be found on the download page[7] on the Wireshark web site. File Locations @@ -146,70 +73,37 @@ Wireshark 4.2.1 Release Notes The User’s Guide, manual pages and various other documentation can be found at https://www.wireshark.org/docs/ - Community support is available on Wireshark’s Q&A site[41] and on the + Community support is available on Wireshark’s Q&A site[8] and on the wireshark-users mailing list. Subscription information and archives - for all of Wireshark’s mailing lists can be found on the web site[42]. + for all of Wireshark’s mailing lists can be found on the web site[9]. - Bugs and feature requests can be reported on the issue tracker[43]. + Bugs and feature requests can be reported on the issue tracker[10]. You can learn protocol analysis and meet Wireshark’s developers at - SharkFest[44]. + SharkFest[11]. How You Can Help The Wireshark Foundation helps as many people as possible understand their networks as much as possible. You can find out more and donate - at wiresharkfoundation.org[45]. + at wiresharkfoundation.org[12]. Frequently Asked Questions - A complete FAQ is available on the Wireshark web site[46]. + A complete FAQ is available on the Wireshark web site[13]. References 1. https://wiresharkfoundation.org - 2. https://www.wireshark.org/security/wnpa-sec-2024-01 - 3. https://gitlab.com/wireshark/wireshark/-/issues/19496 - 4. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0208 - 5. https://www.wireshark.org/security/wnpa-sec-2024-02 - 6. https://gitlab.com/wireshark/wireshark/-/issues/19501 - 7. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0209 - 8. https://www.wireshark.org/security/wnpa-sec-2024-03 - 9. https://gitlab.com/wireshark/wireshark/-/issues/19502 - 10. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0207 - 11. https://www.wireshark.org/security/wnpa-sec-2024-04 - 12. https://gitlab.com/wireshark/wireshark/-/issues/19504 - 13. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0210 - 14. https://www.wireshark.org/security/wnpa-sec-2024-05 - 15. https://gitlab.com/wireshark/wireshark/-/issues/19557 - 16. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0211 - 17. https://gitlab.com/wireshark/wireshark/-/issues/12918 - 18. https://gitlab.com/wireshark/wireshark/-/issues/13720 - 19. https://gitlab.com/wireshark/wireshark/-/issues/19490 - 20. https://gitlab.com/wireshark/wireshark/-/issues/14549 - 21. https://gitlab.com/wireshark/wireshark/-/issues/16693 - 22. https://gitlab.com/wireshark/wireshark/-/issues/18464 - 23. https://gitlab.com/wireshark/wireshark/-/issues/19133 - 24. https://gitlab.com/wireshark/wireshark/-/issues/19475 - 25. https://gitlab.com/wireshark/wireshark/-/issues/19480 - 26. https://gitlab.com/wireshark/wireshark/-/issues/19485 - 27. https://gitlab.com/wireshark/wireshark/-/issues/19489 - 28. https://gitlab.com/wireshark/wireshark/-/issues/19493 - 29. https://gitlab.com/wireshark/wireshark/-/issues/19494 - 30. https://gitlab.com/wireshark/wireshark/-/issues/19497 - 31. https://gitlab.com/wireshark/wireshark/-/issues/19503 - 32. https://gitlab.com/wireshark/wireshark/-/issues/19512 - 33. https://gitlab.com/wireshark/wireshark/-/issues/19516 - 34. https://gitlab.com/wireshark/wireshark/-/issues/19518 - 35. https://gitlab.com/wireshark/wireshark/-/issues/19520 - 36. https://gitlab.com/wireshark/wireshark/-/issues/19521 - 37. https://gitlab.com/wireshark/wireshark/-/issues/19525 - 38. https://gitlab.com/wireshark/wireshark/-/issues/19529 - 39. https://www.wireshark.org/docs/relnotes/wireshark-4.2.0.html - 40. https://www.wireshark.org/download.html - 41. https://ask.wireshark.org/ - 42. https://www.wireshark.org/lists/ - 43. https://gitlab.com/wireshark/wireshark/-/issues - 44. https://sharkfest.wireshark.org - 45. https://wiresharkfoundation.org - 46. https://www.wireshark.org/faq.html + 2. https://www.wireshark.org/download.html + 3. https://www.wireshark.org/docs/relnotes/wireshark-4.2.2.html + 4. https://www.wireshark.org/docs/relnotes/wireshark-4.2.2.html + 5. https://www.wireshark.org/docs/relnotes/wireshark-4.2.1.html + 6. https://www.wireshark.org/docs/relnotes/wireshark-4.2.0.html + 7. https://www.wireshark.org/download.html + 8. https://ask.wireshark.org/ + 9. https://www.wireshark.org/lists/ + 10. https://gitlab.com/wireshark/wireshark/-/issues + 11. https://sharkfest.wireshark.org + 12. https://wiresharkfoundation.org + 13. https://www.wireshark.org/faq.html diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in index 4fc78fe8..5afe3a89 100644 --- a/cmakeconfig.h.in +++ b/cmakeconfig.h.in @@ -357,15 +357,17 @@ * for our needs. * This should match the following: * - The <compatibility><application> section in resources\wireshark.exe.manifest.in - * - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi + * - The WinVer parts of packaging\nsis\wireshark.nsi * - The VersionNT parts of packaging\wix\Prerequisites.wxi */ # ifndef NTDDI_VERSION -# define NTDDI_VERSION NTDDI_WIN7 +// # define NTDDI_VERSION NTDDI_WIN7 +# define NTDDI_VERSION NTDDI_WIN10 # endif # ifndef _WIN32_WINNT -# define _WIN32_WINNT _WIN32_WINNT_WIN7 +// # define _WIN32_WINNT _WIN32_WINNT_WIN7 +# define _WIN32_WINNT _WIN32_WINNT_WIN10 # endif #endif diff --git a/doc/dumpcap.adoc b/doc/dumpcap.adoc index 672599bc..a9998d2a 100644 --- a/doc/dumpcap.adoc +++ b/doc/dumpcap.adoc @@ -107,8 +107,8 @@ fills up, *Dumpcap* will switch writing to the next file and so on. The created filenames are based on the filename given with the *-w* option, the number of the file and on the creation date and time, e.g. -outfile_00001_20230714120117.pcapng, -outfile_00002_20230714120523.pcapng, ... +outfile_00001_20240714120117.pcapng, +outfile_00002_20240714120523.pcapng, ... With the __files__ option it's also possible to form a "ring buffer". This will fill up new files until the number of files specified, diff --git a/doc/rawshark.adoc b/doc/rawshark.adoc index 9a28edac..a52e594a 100644 --- a/doc/rawshark.adoc +++ b/doc/rawshark.adoc @@ -226,7 +226,7 @@ could use *%D: %S (%N)*. -v|--version:: Print the full version information and exit. -include::dissection-options.adoc[tags=!tshark;!decode_as] +include::dissection-options.adoc[tags=**;!tshark;!decode_as] include::diagnostic-options.adoc[] diff --git a/doc/release-notes.adoc b/doc/release-notes.adoc index b735d998..bb66460d 100644 --- a/doc/release-notes.adoc +++ b/doc/release-notes.adoc @@ -12,29 +12,32 @@ include::../docbook/attributes.adoc[] Wireshark is the world’s most popular network protocol analyzer. It is used for troubleshooting, analysis, development and education. -Wireshark is hosted by the Wireshark Foundation, a nonprofit which promotes protocol analysis educaton. +Wireshark is hosted by the Wireshark Foundation, a nonprofit which promotes protocol analysis education. Wireshark and the foundation depend on your contributions in order to do their work. -If you or your employer would like to contribute or become a sponsor, please visit https://wiresharkfoundation.org[wiresharkfoundation.org]. +If you or your organization would like to contribute or become a sponsor, please visit https://wiresharkfoundation.org[wiresharkfoundation.org]. == What’s New === Bug Fixes -This release fixes a software update issue on Windows which causes Wireshark to hang if you are upgrading from version 4.2.0 or 4.2.1. -If you are experiencing this issue you will need to https://www.wireshark.org/download.html[download and install] Wireshark 4.2.2 or later. +If you are upgrading Wireshark 4.2.0 or 4.2.1 on Windows you will need to https://www.wireshark.org/download.html[download and install] Wireshark {wireshark-version} or later by hand. -// The following vulnerabilities have been fixed: +The following vulnerabilities have been fixed: -// * wssalink:2024-06[] -// Foo dissector {crash,infinite loop,memory leak}. -// wsbuglink:xxx[]. -// cveidlink:2024-xxx[]. -// Fixed in master: xxx -// Fixed in release-4.2: xxx -// Fixed in release-4.0: xxx -// Fixed in release-3.6: xxx +* wssalink:2024-06[] +T.38 dissector crash. +wsbuglink:19695[]. +cveidlink:2024-2955[]. +// Fixed in master: 6fd3af5e99 +// Fixed in release-4.2: 7be4bbb413d +// Fixed in release-4.0: c04f268605c +// Fixed in release-3.6: n/a // CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H -// CWE-125 +// CWE-762 +// * Fuzz job crash: fuzz-2024-03-07-7208.pcap. wsbuglink:19695[]. + +Additionally, CVE-2024-24478, CVE-2024-24479, and CVE-2024-24476 were recently assigned to Wireshark without any coordination with the Wireshark project. +As far as we can determine, each one is based on invalid assumptions and we have requested that they be rejected. The following bugs have been fixed: @@ -43,11 +46,16 @@ The following bugs have been fixed: //* cveidlink:2014-2486[] //* Wireshark grabs your ID at 3 am, goes to Waffle House, and insults people. -* sharkd is not installed by the Windows installer. wsbuglink:19556[]. -* Fuzz job crash output: fuzz-2024-01-01-7740.pcap. wsbuglink:19558[]. -* Can't open a snoop file from the Open dialog box unless I select \"All files\" as the file type. wsbuglink:19565[]. -* Add s4607 dissector to \"decode as\" wsbuglink:19566[]. -* Updater for 4.2.1 hangs. wsbuglink:19568[]. +* Extcap with configuration never starts; "Configure all extcaps before start of capture." is shown instead. wsbuglink:18487[]. +* Packet Dissection CSV Export includes last column even if hidden. wsbuglink:19666[]. +* Inject TLS secrets closes Wireshark on Windows. wsbuglink:19667[]. +* Fuzz job issue: fuzz-2024-02-27-7196.pcap. wsbuglink:19674[]. +* Wireshark crashes when adding another port to the HTTP dissector. wsbuglink:19677[]. +* Fuzz job issue: fuzz-2024-03-03-7204.pcap. wsbuglink:19685[]. +* Fuzz job issue: randpkt-2024-03-05-8004.pcap. wsbuglink:19688[]. +* When adding a new row to a table an error report may be inserted. wsbuglink:19705[]. +* '--export-objects' does not work as expected on tshark version later than 3.2.10. wsbuglink:19715[]. +* Fuzz job issue: fuzz-2024-03-21-7215.pcap. wsbuglink:19717[]. === New and Updated Features @@ -57,8 +65,6 @@ There are no new or updated features in this release. // === Removed Dissectors -// === New File Format Decoding Support - === New Protocol Support @@ -67,12 +73,158 @@ There are no new protocols in this release. === Updated Protocol Support // Add one protocol per line between the -- delimiters. -// ag -A1 '(define PSNAME|proto_register_protocol[^_])' $(git diff --name-only v4.2.2.. | ag packet- | sort -u) +// ag -A1 '(define PSNAME|proto_register_protocol[^_])' $(git diff --name-only v4.2.4.. | ag packet- | sort -u) [commaize] -- +6LoWPAN +AllJoyn +AFP +AMQP +ASAP +Babel +BACnet +Banana +BEEP +Bencode +BFCP +BGP +BT-DHT +BT BNEP +BT SDP +BVLC +CIP +CMIP +CMP +COROSYNC/TOTEMSRP +COSE +CQL +CSN.1 +DAP +DCCP +DICOM +DCOM +DHCPv6 +DISP +DOCSIS MAC MGMT +DOF +DVB-S2 +E2AP +EDONKEY +ENRP +ErlDP +Etch +EXTREME MESH +FC-SWILS +GNW +GIOP +GLOW +GOOSE +GQUIC +GSM A-bis OML +GSUP +GTPv2 +H.223 +H.225.0 +H.245 +H.248 +H.264 +H.265 +HSMS +ICMPv6 +ICQ +IEEE1609dot2 +IPP +IPPUSB +ISAKMP +iSCSI +ISIS LSP +ISO 7816 +ISUP +ITS +JSON 3GPP +JXTA +Kafka +KINK +KNX/IP +LDAP +LDP +5GLI +LISP TCP +LISP +LLRP +LwM2M-TLV +M2UA +M3UA +MAC-LTE +MBIM +MMS +MONGO +MPEG PES +MPLS Echo +MQ PCF +MQTT-SN +MSDP +MsgPack +MS-WSP +NAS-5GS +CFLOW +NETLINK +NHRP +OpenFlow +OpenWire +OPSI +OSC +P22 +P7 +PANA +PIM +ProtoBuf +PROXY +Q.2931 +QNET +RDP +RESP +RPL +RSL RSVP +RTLS +RTMPT RTPS -STANAG 4607 +S7COMM +SCTP +SIMULCRYPT +SoulSeek +SMB2 +SML +SNA +SNMP +Socks +SolarEdge +SOME/IP +SUA +T.38 +TCAP +TEAP +TFTP +Thread +Thrift +TN5250 +USBHID +USBVIDEO +VP9 +WASSP +WLCCP +WTP +X.509IF +X.509SAT +XML +XMPP +YAMI +Z39.50 +ZigBee ZCL +Gryphon +PNIO +WiMAX ASN CP -- === New and Updated Capture File Support @@ -83,6 +235,17 @@ There is no new or updated capture file support in this release. // -- // -- +=== Updated File Format Decoding Support + +// There is no updated file format support in this release. +// Add one file type per line between the -- delimiters. +[commaize] +-- +BLF +JPEG +RBM +-- + // === New and Updated Capture Interfaces support // === New and Updated Codec support @@ -94,6 +257,8 @@ There is no new or updated capture file support in this release. This document only describes the changes introduced in Wireshark {wireshark-version}. You can find release notes for prior versions at the following locations: +* https://www.wireshark.org/docs/relnotes/wireshark-4.2.2.html[Wireshark 4.2.3] +* https://www.wireshark.org/docs/relnotes/wireshark-4.2.2.html[Wireshark 4.2.2] * https://www.wireshark.org/docs/relnotes/wireshark-4.2.1.html[Wireshark 4.2.1] * https://www.wireshark.org/docs/relnotes/wireshark-4.2.0.html[Wireshark 4.2.0] diff --git a/doc/tshark.adoc b/doc/tshark.adoc index 6f086d6f..543579d5 100644 --- a/doc/tshark.adoc +++ b/doc/tshark.adoc @@ -215,7 +215,7 @@ fills up, *TShark* will switch writing to the next file and so on. The created filenames are based on the filename given with the *-w* option, the number of the file and on the creation date and time, -e.g. outfile_00001_20230714120117.pcap, outfile_00002_20230714120523.pcap, ... +e.g. outfile_00001_20240714120117.pcap, outfile_00002_20240714120523.pcap, ... With the __files__ option it's also possible to form a "ring buffer". This will fill up new files until the number of files specified, @@ -252,7 +252,7 @@ packets. *nametimenum*:__value__ Choose between two save filename templates. If __value__ is 1, make running file number part before start time part; this is -the original and default behaviour (e.g. log_00001_20230714164426.pcap). If +the original and default behaviour (e.g. log_00001_20240714164426.pcap). If __value__ is greater than 1, make start time part before running number part (e.g. log_20210828164426_00001.pcap). The latter makes alphabetical sorting order equal to creation time order, and keeps related multiple file sets in @@ -2252,7 +2252,7 @@ Output JSON containing elapsed times for each pass tshark does to process a capt file and the sum elapsed time for all passes. The per-pass output contains the total elapsed time and aggregate counters for per-packet operations (dissection and filtering). -include::dissection-options.adoc[tag=!not_tshark] +include::dissection-options.adoc[tags=**;!not_tshark] include::diagnostic-options.adoc[] diff --git a/doc/wireshark.adoc b/doc/wireshark.adoc index ca34f549..24434827 100644 --- a/doc/wireshark.adoc +++ b/doc/wireshark.adoc @@ -209,7 +209,7 @@ fills up, *Wireshark* will switch writing to the next file and so on. The created filenames are based on the filename given with the *-w* flag, the number of the file and on the creation date and time, -e.g. outfile_00001_20230714120117.pcap, outfile_00002_20230714120523.pcap, ... +e.g. outfile_00001_20240714120117.pcap, outfile_00002_20240714120523.pcap, ... With the __files__ option it's also possible to form a "ring buffer". This will fill up new files until the number of files specified, @@ -923,7 +923,7 @@ Show IEEE 802.11 network and station statistics. *-z* wsp,stat[,<filter>]:: Show WSP packet counters. -include::dissection-options.adoc[tag=!tshark] +include::dissection-options.adoc[tags=**;!tshark] include::diagnostic-options.adoc[] @@ -962,7 +962,7 @@ menu:File[File Set,List Files]:: Show a dialog box that lists all files of the file set matching the currently loaded file. A file set is a compound of files resulting from a capture using the "multiple files" / "ringbuffer" mode, recognizable by the filename pattern, -e.g.: Filename_00001_20230714101530.pcap. +e.g.: Filename_00001_20240714101530.pcap. menu:File[File Set,Next File]:: diff --git a/docbook/attributes.adoc b/docbook/attributes.adoc index 3076ab11..7c7085e4 100644 --- a/docbook/attributes.adoc +++ b/docbook/attributes.adoc @@ -1,6 +1,6 @@ // Common attributes -:wireshark-version: 4.2.2 +:wireshark-version: 4.2.4 :logray-version: 0.9.0 // Required for btn, kbd:, and menu: macros. diff --git a/docbook/wsug_src/capinfos-h.txt b/docbook/wsug_src/capinfos-h.txt index fa422fce..533aa77e 100644 --- a/docbook/wsug_src/capinfos-h.txt +++ b/docbook/wsug_src/capinfos-h.txt @@ -1,4 +1,4 @@ -Capinfos (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Capinfos (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Print various information (infos) about capture files. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/dumpcap-h.txt b/docbook/wsug_src/dumpcap-h.txt index 23441e8e..bd81eecf 100644 --- a/docbook/wsug_src/dumpcap-h.txt +++ b/docbook/wsug_src/dumpcap-h.txt @@ -1,4 +1,4 @@ -Dumpcap (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Dumpcap (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Capture network packets and dump them into a pcapng or pcap file. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/editcap-h.txt b/docbook/wsug_src/editcap-h.txt index 0b8a5b53..2f8299fb 100644 --- a/docbook/wsug_src/editcap-h.txt +++ b/docbook/wsug_src/editcap-h.txt @@ -1,4 +1,4 @@ -Editcap (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Editcap (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Edit and/or translate the format of capture files. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/mergecap-h.txt b/docbook/wsug_src/mergecap-h.txt index d2c5231c..ce75957c 100644 --- a/docbook/wsug_src/mergecap-h.txt +++ b/docbook/wsug_src/mergecap-h.txt @@ -1,4 +1,4 @@ -Mergecap (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Mergecap (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Merge two or more capture files into one. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/rawshark-h.txt b/docbook/wsug_src/rawshark-h.txt index 1302dea0..f088b94d 100644 --- a/docbook/wsug_src/rawshark-h.txt +++ b/docbook/wsug_src/rawshark-h.txt @@ -1,4 +1,4 @@ -Rawshark (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Rawshark (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Dump and analyze network traffic. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/reordercap-h.txt b/docbook/wsug_src/reordercap-h.txt index eb8ab5de..ad4ee8d1 100644 --- a/docbook/wsug_src/reordercap-h.txt +++ b/docbook/wsug_src/reordercap-h.txt @@ -1,4 +1,4 @@ -Reordercap (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Reordercap (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Reorder timestamps of input file frames into output file. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/text2pcap-h.txt b/docbook/wsug_src/text2pcap-h.txt index 9066427e..938f5e5d 100644 --- a/docbook/wsug_src/text2pcap-h.txt +++ b/docbook/wsug_src/text2pcap-h.txt @@ -1,4 +1,4 @@ -Text2pcap (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Text2pcap (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Generate a capture file from an ASCII hexdump of packets. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/tshark-h.txt b/docbook/wsug_src/tshark-h.txt index 84bb1c17..37a0d363 100644 --- a/docbook/wsug_src/tshark-h.txt +++ b/docbook/wsug_src/tshark-h.txt @@ -1,4 +1,4 @@ -TShark (Wireshark) 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +TShark (Wireshark) 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Dump and analyze network traffic. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/wireshark-h.txt b/docbook/wsug_src/wireshark-h.txt index 320d579a..5e3edb99 100644 --- a/docbook/wsug_src/wireshark-h.txt +++ b/docbook/wsug_src/wireshark-h.txt @@ -1,4 +1,4 @@ -Wireshark 4.2.1 (v4.2.1rc0-11-gae025b2614ce) +Wireshark 4.2.4 (v4.2.4rc0-1-g9dbb5482ef05) Interactively dump and analyze network traffic. See https://www.wireshark.org for more information. diff --git a/docbook/wsug_src/wsug_capture.adoc b/docbook/wsug_src/wsug_capture.adoc index c7ef8f1b..3029c6c3 100644 --- a/docbook/wsug_src/wsug_capture.adoc +++ b/docbook/wsug_src/wsug_capture.adoc @@ -490,8 +490,8 @@ Information about the folders used for capture files can be found in |File Name|“Create a new file...”|“Use a ring buffer...”|Mode|Resulting filename(s) used |-|-|-|Single temporary file|wiresharkXXXXXX.pcap[ng] (where XXXXXX is a unique 6 character alphanumeric sequence) |foo.cap|-|-|Single named file|foo.cap -|foo.cap|x|-|Multiple files, continuous|foo_00001_20230714110102.cap, foo_00002_20230714110318.cap, ... -|foo.cap|x|x|Multiple files, ring buffer|foo_00001_20230714110102.cap, foo_00002_20230714110318.cap, ... +|foo.cap|x|-|Multiple files, continuous|foo_00001_20240714110102.cap, foo_00002_20240714110318.cap, ... +|foo.cap|x|x|Multiple files, ring buffer|foo_00001_20240714110102.cap, foo_00002_20240714110318.cap, ... |=== Single temporary file:: diff --git a/docbook/wsug_src/wsug_io.adoc b/docbook/wsug_src/wsug_io.adoc index ed3a488a..df8fced7 100644 --- a/docbook/wsug_src/wsug_io.adoc +++ b/docbook/wsug_src/wsug_io.adoc @@ -704,7 +704,7 @@ some features to handle these file sets in a convenient way. .How does Wireshark detect the files of a file set? **** A filename in a file set uses the format Prefix_Number_DateTimeSuffix which -might look something like `test_00001_20230714183910.pcap`. All files of a file +might look something like `test_00001_20240714183910.pcap`. All files of a file set share the same prefix (e.g., “test”) and suffix (e.g., “.pcap”) and a varying middle part. diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index 9281a2a1..3a3d19c0 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -314,7 +314,7 @@ add_library(epan set_target_properties(epan PROPERTIES COMPILE_DEFINITIONS "WS_BUILD_DLL" LINK_FLAGS "${WS_LINK_FLAGS}" - VERSION "17.0.2" SOVERSION 17 + VERSION "17.0.4" SOVERSION 17 INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}" # By default the name for a library with target name epan will be libepan, # but Ethereal is now named Wireshark diff --git a/epan/dfilter/dfunctions.c b/epan/dfilter/dfunctions.c index be364241..4b09b704 100644 --- a/epan/dfilter/dfunctions.c +++ b/epan/dfilter/dfunctions.c @@ -176,10 +176,12 @@ df_func_compare(GSList *stack, uint32_t arg_count, df_cell_t *retval, for (args = stack, i = 0; i < arg_count; args = args->next, i++) { arg1 = args->data; - for (unsigned j = 0; j < arg1->len; j++) { - arg_fvalue = arg1->pdata[j]; - if (fv_ret == NULL || fv_cmp(arg_fvalue, fv_ret)) { - fv_ret = arg_fvalue; + if (arg1 != NULL) { + for (unsigned j = 0; j < arg1->len; j++) { + arg_fvalue = arg1->pdata[j]; + if (fv_ret == NULL || fv_cmp(arg_fvalue, fv_ret)) { + fv_ret = arg_fvalue; + } } } } diff --git a/epan/dfilter/dfvm.c b/epan/dfilter/dfvm.c index cae73360..a0a21b68 100644 --- a/epan/dfilter/dfvm.c +++ b/epan/dfilter/dfvm.c @@ -1428,7 +1428,9 @@ stack_pop(dfilter_t *df, dfvm_value_t *arg1) for (unsigned i = 0; i < count; i++) { /* Free top of stack data. */ - g_ptr_array_unref(df->function_stack->data); + if (df->function_stack->data) { + g_ptr_array_unref(df->function_stack->data); + } /* Remove top of stack. */ df->function_stack = g_slist_delete_link(df->function_stack, df->function_stack); } diff --git a/epan/dfilter/scanner.l b/epan/dfilter/scanner.l index e5565d2a..c6b876ac 100644 --- a/epan/dfilter/scanner.l +++ b/epan/dfilter/scanner.l @@ -902,8 +902,8 @@ parse_charconst(dfsyntax_t *dfs, const char *s, unsigned long *valuep) dfilter_fail(dfs, DF_ERROR_GENERIC, dfs->string_loc, "%s isn't a valid character constant.", s); return false; } + cp++; } - cp++; break; case 'u': diff --git a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c index 49646377..2b5a906d 100644 --- a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c +++ b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c @@ -2074,7 +2074,7 @@ verify_krb5_pac_ticket_checksum(proto_tree *tree _U_, } checksum.length = MIN(checksum.length, (unsigned int)checksum_length); - tepdata.data = (void *)(uintptr_t)tepbuffer; + tepdata.data = (void *)tepbuffer; tepdata.length = teplength; ret = decode_krb5_enc_tkt_part(&tepdata, &tep); diff --git a/epan/dissectors/asn1/mpeg-pes/packet-mpeg-pes-template.c b/epan/dissectors/asn1/mpeg-pes/packet-mpeg-pes-template.c index c4e8990d..680fa910 100644 --- a/epan/dissectors/asn1/mpeg-pes/packet-mpeg-pes-template.c +++ b/epan/dissectors/asn1/mpeg-pes/packet-mpeg-pes-template.c @@ -399,6 +399,7 @@ static int dissect_mpeg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data); static gboolean +// NOLINTNEXTLINE(misc-no-recursion) dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { int prefix; @@ -434,6 +435,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data offset = dissect_mpeg_pes_PES(tvb, offset, &asn1_ctx, tree, proto_mpeg_pes); + increment_dissection_depth(pinfo); if (stream == STREAM_PICTURE) { int frame_type; @@ -598,6 +600,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data proto_tree_add_item(tree, hf_mpeg_pes_data, tvb, offset / 8, -1, ENC_NA); } + decrement_dissection_depth(pinfo); return TRUE; } diff --git a/epan/dissectors/asn1/snmp/packet-snmp-template.c b/epan/dissectors/asn1/snmp/packet-snmp-template.c index e8e606e1..96a4a4ae 100644 --- a/epan/dissectors/asn1/snmp/packet-snmp-template.c +++ b/epan/dissectors/asn1/snmp/packet-snmp-template.c @@ -411,12 +411,9 @@ snmp_match_request_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, { proto_item *it; - // if it is a request - if (srrp->request_frame_id == pinfo->fd->num) + // if it is the response + if (srrp->response_frame_id == pinfo->fd->num) { - it=proto_tree_add_uint(tree, hf_snmp_response_in, tvb, 0, 0, srrp->response_frame_id); - proto_item_set_generated(it); - } else { nstime_t ns; it=proto_tree_add_uint(tree, hf_snmp_response_to, tvb, 0, 0, srrp->request_frame_id); proto_item_set_generated(it); @@ -425,6 +422,9 @@ snmp_match_request_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item_set_generated(it); return srrp; + } else { + it=proto_tree_add_uint(tree, hf_snmp_response_in, tvb, 0, 0, srrp->response_frame_id); + proto_item_set_generated(it); } } diff --git a/epan/dissectors/asn1/t38/packet-t38-template.c b/epan/dissectors/asn1/t38/packet-t38-template.c index ad46a999..852885c1 100644 --- a/epan/dissectors/asn1/t38/packet-t38-template.c +++ b/epan/dissectors/asn1/t38/packet-t38-template.c @@ -250,6 +250,7 @@ void t38_add_address(packet_info *pinfo, p_conversation_data->setup_frame_number = setup_frame_number; p_conversation_data->src_t38_info.reass_ID = 0; p_conversation_data->src_t38_info.reass_start_seqnum = -1; + p_conversation_data->src_t38_info.reass_start_data_field = 0; p_conversation_data->src_t38_info.reass_data_type = 0; p_conversation_data->src_t38_info.last_seqnum = -1; p_conversation_data->src_t38_info.packet_lost = 0; @@ -261,6 +262,7 @@ void t38_add_address(packet_info *pinfo, p_conversation_data->dst_t38_info.reass_ID = 0; p_conversation_data->dst_t38_info.reass_start_seqnum = -1; + p_conversation_data->dst_t38_info.reass_start_data_field = 0; p_conversation_data->dst_t38_info.reass_data_type = 0; p_conversation_data->dst_t38_info.last_seqnum = -1; p_conversation_data->dst_t38_info.packet_lost = 0; @@ -323,8 +325,9 @@ force_reassemble_seq(reassembly_table *table, packet_info *pinfo, guint32 id) last_fd=fd_i; } - data = (guint8 *) wmem_alloc(pinfo->pool, size); + data = (guint8 *) g_malloc(size); fd_head->tvb_data = tvb_new_real_data(data, size, size); + tvb_set_free_cb(fd_head->tvb_data, g_free); fd_head->len = size; /* record size for caller */ /* add all data fragments */ diff --git a/epan/dissectors/asn1/tcap/packet-tcap-template.c b/epan/dissectors/asn1/tcap/packet-tcap-template.c index 65efb15b..97485493 100644 --- a/epan/dissectors/asn1/tcap/packet-tcap-template.c +++ b/epan/dissectors/asn1/tcap/packet-tcap-template.c @@ -2114,6 +2114,7 @@ static void cleanup_tcap(void) } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset) { gint tag_offset, saved_offset, len_offset; @@ -2156,7 +2157,9 @@ dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset if (len-(2*ind_field)) /*should always be positive unless we get an empty contructor pointless? */ { next_tvb = tvb_new_subset_length(tvb, offset, len-(2*ind_field)); + increment_dissection_depth(actx->pinfo); dissect_tcap_param(actx, subtree,next_tvb,0); + decrement_dissection_depth(actx->pinfo); } if (ind_field) diff --git a/epan/dissectors/file-blf.c b/epan/dissectors/file-blf.c index 200d5de6..d527ea31 100644 --- a/epan/dissectors/file-blf.c +++ b/epan/dissectors/file-blf.c @@ -22,6 +22,7 @@ #include <epan/packet.h> #include <epan/prefs.h> + #include <wiretap/blf.h> static int proto_blf = -1; @@ -395,6 +396,7 @@ dissect_blf_api_version(proto_tree *tree, int hf, tvbuff_t *tvb, gint offset, gi } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_blf_lobj(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset_orig) { proto_item *ti_root = NULL; proto_item *ti = NULL; @@ -722,6 +724,7 @@ dissect_blf_lobj(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint o } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { gint offset_orig = offset; @@ -729,7 +732,9 @@ dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gin if (tvb_memeql(tvb, offset, blf_lobj_magic, MAGIC_NUMBER_SIZE) != 0) { offset += 1; } else { + increment_dissection_depth(pinfo); int bytes_parsed = dissect_blf_lobj(tvb, pinfo, tree, offset); + decrement_dissection_depth(pinfo); if (bytes_parsed <= 0) { return 0; } else { diff --git a/epan/dissectors/file-jpeg.c b/epan/dissectors/file-jpeg.c index 12a7e578..0eba3c95 100644 --- a/epan/dissectors/file-jpeg.c +++ b/epan/dissectors/file-jpeg.c @@ -25,6 +25,7 @@ #include "config.h" #include <epan/packet.h> +#include <epan/proto_data.h> #include <epan/expert.h> #include <wiretap/wtap.h> @@ -770,6 +771,7 @@ process_app0_segment(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, guint3 } static void +// NOLINTNEXTLINE(misc-no-recursion) process_tiff_ifd_chain(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, guint encoding, guint32 start_ifd_offset, int hf_tag, const char *ifd_type_desc) @@ -893,9 +895,11 @@ process_tiff_ifd_chain(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, if (extension_ifd_type_desc) { if (extension_ifd_offset < tvb_reported_length(tvb)) { + increment_dissection_depth(pinfo); process_tiff_ifd_chain(tree, tvb, pinfo, encoding, extension_ifd_offset, extension_hf_ifd_tag, extension_ifd_type_desc); + decrement_dissection_depth(pinfo); } else { expert_add_info_format(pinfo, value_item, &ei_start_ifd_offset, "bogus, should be < %u", tvb_reported_length(tvb)); diff --git a/epan/dissectors/file-rbm.c b/epan/dissectors/file-rbm.c index 988b7048..dd043d35 100644 --- a/epan/dissectors/file-rbm.c +++ b/epan/dissectors/file-rbm.c @@ -20,8 +20,10 @@ */ #include "config.h" -#include <epan/packet.h> + #include <epan/expert.h> +#include <epan/packet.h> + #include <file-rbm.h> #include <wiretap/ruby_marshal.h> @@ -193,6 +195,7 @@ static void dissect_rbm_string_data(tvbuff_t* tvb, packet_info* pinfo, proto_tre dissect_rbm_string_data_trailer(tvb, pinfo, tree, offset, label, prefix, "", value_str); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) { gint32 value; @@ -219,6 +222,7 @@ static void dissect_rbm_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tre *value_str = wmem_strdup_printf(pinfo->pool, "%d", value); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_hash(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) { gint32 value; @@ -318,6 +322,7 @@ static void dissect_rbm_struct_data(tvbuff_t* tvb, packet_info* pinfo, proto_tre *value_str = wmem_strdup_printf(pinfo->pool, "%d", value); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_string(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) { dissect_rbm_string_data(tvb, pinfo, tree, offset, "String", "", value); @@ -326,6 +331,7 @@ static void dissect_rbm_string(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tr dissect_rbm_object(tvb, pinfo, tree, offset, NULL, NULL); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_regex(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) { dissect_rbm_string_data_trailer(tvb, pinfo, tree, offset, "Regexp", "/", "/", value); @@ -341,6 +347,7 @@ static void dissect_rbm_class(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tre dissect_rbm_string_data(tvb, pinfo, tree, offset, "Class", "", value_str); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_userclass(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) { rbm_set_info(pinfo, "UserClass"); @@ -352,6 +359,7 @@ static void dissect_rbm_symbol(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tr dissect_rbm_string_data(tvb, pinfo, tree, offset, "Symbol", ":", value_str); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_variable(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str) { gint offset_start = *offset; @@ -365,12 +373,14 @@ static void dissect_rbm_module(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tr dissect_rbm_string_data(tvb, pinfo, tree, offset, "Module", "", value_str); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_struct(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value) { dissect_rbm_struct_data(tvb, pinfo, tree, offset, value); dissect_rbm_hash(tvb, pinfo, tree, offset, NULL); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_drb(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) { gint offset_start = *offset; @@ -380,6 +390,7 @@ static void dissect_rbm_drb(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, proto_item_set_len(drb_tree, *offset - offset_start); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_rubyobject(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) { gint offset_start = *offset; @@ -397,6 +408,7 @@ static void dissect_rbm_rubyobject(tvbuff_t* tvb, packet_info* pinfo, proto_tree proto_item_set_len(obj_tree, *offset - offset_start); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_extended(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) { gint offset_start = *offset; @@ -407,6 +419,7 @@ static void dissect_rbm_extended(tvbuff_t* tvb, packet_info* pinfo, proto_tree* proto_item_set_len(ext_tree, *offset - offset_start); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* ptree, guint* offset, gchar** type, gchar** value) { guint8 subtype = tvb_get_guint8(tvb, *offset); @@ -420,6 +433,8 @@ static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* pt proto_tree_add_item(tree, hf_rbm_type, tvb, *offset, 1, ENC_NA); *offset += 1; + increment_dissection_depth(pinfo); + switch (subtype) { case '0': case 'T': @@ -509,6 +524,8 @@ static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* pt *type = type_local; if (value) *value = value_local; + + decrement_dissection_depth(pinfo); } static gboolean dissect_rbm_header(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset) @@ -532,6 +549,7 @@ static gboolean dissect_rbm_header(tvbuff_t* tvb, packet_info* pinfo, proto_tree return TRUE; } +// NOLINTNEXTLINE(misc-no-recursion) void dissect_rbm_inline(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** type, gchar** value) { if (!dissect_rbm_header(tvb, pinfo, tree, offset)) diff --git a/epan/dissectors/packet-6lowpan.c b/epan/dissectors/packet-6lowpan.c index 068b9a6e..b13cd08d 100644 --- a/epan/dissectors/packet-6lowpan.c +++ b/epan/dissectors/packet-6lowpan.c @@ -238,6 +238,7 @@ void proto_reg_handoff_6lowpan(void); /* 6LoWPAN interface identifier length. */ #define LOWPAN_IFC_ID_LEN 8 + /* Protocol fields handles. */ static int proto_6lowpan = -1; static int hf_6lowpan_pattern = -1; @@ -1858,6 +1859,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg *--------------------------------------------------------------- */ static tvbuff_t * +// NOLINTNEXTLINE(misc-no-recursion) dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dgram_size, const guint8 *siid, const guint8 *diid) { ieee802154_hints_t *hints; @@ -2296,6 +2298,7 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d *--------------------------------------------------------------- */ static struct lowpan_nhdr * +// NOLINTNEXTLINE(misc-no-recursion) dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint dgram_size, const guint8 *siid, const guint8 *diid) { gint length; @@ -2326,7 +2329,10 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi offset += 1; /* Decode the remainder of the packet using IPHC encoding. */ + increment_dissection_depth(pinfo); iphc_tvb = dissect_6lowpan_iphc(tvb_new_subset_remaining(tvb, offset), pinfo, tree, dgram_size, siid, diid); + decrement_dissection_depth(pinfo); + if (!iphc_tvb) return NULL; /* Create the next header structure for the tunneled IPv6 header. */ @@ -2457,7 +2463,9 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi * There are more LOWPAN_NHC structures to parse. Call ourself again * recursively to parse them and build the linked list. */ + increment_dissection_depth(pinfo); nhdr->next = dissect_6lowpan_iphc_nhc(tvb, pinfo, tree, offset, dgram_size - nhdr->reported, siid, diid); + decrement_dissection_depth(pinfo); } else if (ipv6_ext.ip6e_nxt != IP_PROTO_NONE) { /* Create another next header structure for the remaining payload. */ diff --git a/epan/dissectors/packet-afp.c b/epan/dissectors/packet-afp.c index a17fc57b..f6229da3 100644 --- a/epan/dissectors/packet-afp.c +++ b/epan/dissectors/packet-afp.c @@ -19,6 +19,7 @@ #include <epan/exceptions.h> #include <epan/to_str.h> #include <epan/conversation.h> +#include <epan/prefs.h> #include <epan/tap.h> #include <epan/srt_table.h> #include <epan/expert.h> @@ -4219,6 +4220,7 @@ static const val64_string cpx_qtype_string_values[] = { }; static gint +// NOLINTNEXTLINE(misc-no-recursion) spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint64 cpx_query_type, gint count, gint toc_offset, guint encoding) { @@ -4240,8 +4242,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree /* * This loops through a possibly nested query data structure. * The outermost one is always without count and called from - * dissect_spotlight() with count = INT_MAX thus the while (...) - * loop terminates if (offset >= toc_offset). + * dissect_spotlight() with count = prefs.gui_max_tree_depth + * thus the while (...) loop terminates if (offset >= toc_offset). * If nested structures are found, these will have an encoded element * count which is used in a recursive call to * spotlight_dissect_query_loop as count parameter, thus in this case @@ -4495,7 +4497,7 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat "Spotlight RPC data"); /* Queries */ - offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree_queries, offset, SQ_CPX_TYPE_ARRAY, INT_MAX, offset + (gint)toc_offset + 8, encoding); + offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree_queries, offset, SQ_CPX_TYPE_ARRAY, prefs.gui_max_tree_depth, offset + (gint)toc_offset + 8, encoding); /* ToC */ sub_tree_toc = proto_tree_add_subtree_format(tree, tvb, offset, diff --git a/epan/dissectors/packet-alljoyn.c b/epan/dissectors/packet-alljoyn.c index 8dee1bff..a122bc89 100644 --- a/epan/dissectors/packet-alljoyn.c +++ b/epan/dissectors/packet-alljoyn.c @@ -769,13 +769,15 @@ append_struct_signature(proto_item *item, * @param signature_length is a pointer to the length of the signature. */ static void -advance_to_end_of_signature(const guint8 **signature, - guint8 *signature_length) +// NOLINTNEXTLINE(misc-no-recursion) +advance_to_end_of_signature(packet_info *pinfo, const guint8 **signature, guint8 *signature_length) { gboolean done = FALSE; gint8 current_type; gint8 end_type = ARG_INVALID; + increment_dissection_depth(pinfo); + while (*signature_length > 0 && **signature && !done) { current_type = *(++(*signature)); --*signature_length; @@ -792,15 +794,15 @@ advance_to_end_of_signature(const guint8 **signature, switch(current_type) { case ARG_ARRAY: - advance_to_end_of_signature(signature, signature_length); + advance_to_end_of_signature(pinfo, signature, signature_length); break; case ARG_STRUCT: end_type = ')'; - advance_to_end_of_signature(signature, signature_length); + advance_to_end_of_signature(pinfo, signature, signature_length); break; case ARG_DICT_ENTRY: end_type = '}'; - advance_to_end_of_signature(signature, signature_length); + advance_to_end_of_signature(pinfo, signature, signature_length); break; case ARG_BYTE: @@ -825,6 +827,7 @@ advance_to_end_of_signature(const guint8 **signature, break; } } + decrement_dissection_depth(pinfo); } /* This is called to add a padding item. There is not padding done for each call made. @@ -877,6 +880,7 @@ static void add_padding_item(gint padding_start, gint padding_end, tvbuff_t *tvb * parameters come in. */ static gint +// NOLINTNEXTLINE(misc-no-recursion) parse_arg(tvbuff_t *tvb, packet_info *pinfo, proto_item *header_item, @@ -941,10 +945,12 @@ parse_arg(tvbuff_t *tvb, add_padding_item(padding_start, offset, tvb, tree); if(0 == length) { - advance_to_end_of_signature(signature, signature_length); + advance_to_end_of_signature(pinfo, signature, signature_length); } else { guint8 sig_length_saved = *signature_length - 1; + increment_dissection_depth(pinfo); + while((offset - starting_offset) < length) { const guint8 *sig_pointer; guint8 remaining_sig_length; @@ -970,6 +976,7 @@ parse_arg(tvbuff_t *tvb, *signature = sig_pointer; *signature_length = remaining_sig_length; } + decrement_dissection_depth(pinfo); } if(item) { @@ -1180,14 +1187,18 @@ parse_arg(tvbuff_t *tvb, offset += length; sig_pointer = sig_saved; + increment_dissection_depth(pinfo); + /* The signature of the variant has now been taken care of. So now take care of the variant data. */ while(((sig_pointer - sig_saved) < (length - 1)) && (tvb_reported_length_remaining(tvb, offset) > 0)) { proto_item_append_text(item, "%c", g_ascii_isprint(*sig_pointer) ? *sig_pointer : '?'); offset = parse_arg(tvb, pinfo, header_item, encoding, offset, tree, is_reply_to, *sig_pointer, field_code, &sig_pointer, &variant_sig_length, field_starting_offset); + } + decrement_dissection_depth(pinfo); proto_item_append_text(item, "'"); proto_item_set_end(item, tvb, offset); } @@ -1241,6 +1252,8 @@ parse_arg(tvbuff_t *tvb, (*signature)++; /* Advance past the '(' or '{'. */ (*signature_length)--; + increment_dissection_depth(pinfo); + /* *signature should never be NULL but just make sure to avoid potential issues. */ while(*signature && **signature && **signature != type_stop && tvb_reported_length_remaining(tvb, offset) > 0) { @@ -1258,6 +1271,8 @@ parse_arg(tvbuff_t *tvb, field_starting_offset); } + decrement_dissection_depth(pinfo); + proto_item_set_end(item, tvb, offset); } break; diff --git a/epan/dissectors/packet-amqp.c b/epan/dissectors/packet-amqp.c index 69b85075..65cf1dfb 100644 --- a/epan/dissectors/packet-amqp.c +++ b/epan/dissectors/packet-amqp.c @@ -2394,6 +2394,7 @@ get_amqp_0_9_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, /* Dissection routine for AMQP 0-9 field tables */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_0_9_field_table(tvbuff_t *tvb, packet_info *pinfo, int offset, guint length, proto_item *item) { proto_tree *field_table_tree, *field_item_tree; @@ -2419,7 +2420,9 @@ dissect_amqp_0_9_field_table(tvbuff_t *tvb, packet_info *pinfo, int offset, guin offset += namelen; length -= namelen; + increment_dissection_depth(pinfo); vallen = dissect_amqp_0_9_field_value(tvb, pinfo, offset, length, name, field_item_tree); + decrement_dissection_depth(pinfo); if(vallen == 0) goto too_short; offset += vallen; @@ -2435,6 +2438,7 @@ too_short: /* Dissection routine for AMQP 0-9 field arrays */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_0_9_field_array(tvbuff_t *tvb, packet_info *pinfo, int offset, guint length, proto_item *item) { proto_tree *field_table_tree, *field_item_tree; @@ -2453,7 +2457,9 @@ dissect_amqp_0_9_field_array(tvbuff_t *tvb, packet_info *pinfo, int offset, guin field_item_tree = proto_item_add_subtree(field_item, ett_amqp_0_9_field); name = wmem_strdup_printf(pinfo->pool, "[%i]", idx); + increment_dissection_depth(pinfo); vallen = dissect_amqp_0_9_field_value(tvb, pinfo, offset, length, name, field_item_tree); + decrement_dissection_depth(pinfo); if(vallen == 0) goto too_short; offset += vallen; @@ -2523,6 +2529,7 @@ static const value_string amqp_0_9_field_type_vals[] = { }; static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_0_9_field_value(tvbuff_t *tvb, packet_info *pinfo, int offset, guint length, const char *name _U_, proto_tree *field_tree) { @@ -2818,6 +2825,7 @@ dissect_amqp_0_10_map(tvbuff_t *tvb, proto_item *item) /* Dissection routine for AMQP 0-10 maps */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_0_10_array(tvbuff_t *tvb, packet_info *pinfo, int offset, /* Start of array in tvb */ @@ -5811,6 +5819,7 @@ dissect_amqp_0_10_struct_stream_properties(tvbuff_t *tvb, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_0_10_struct32(tvbuff_t *tvb, packet_info *pinfo, proto_item *ti) @@ -5827,6 +5836,8 @@ dissect_amqp_0_10_struct32(tvbuff_t *tvb, proto_tree_add_item_ret_uint(tree, hf_amqp_0_10_struct32_class, tvb, offset, 1, ENC_NA, &class_code); proto_tree_add_item_ret_uint(tree, hf_amqp_0_10_struct32_struct, tvb, offset+1, 1, ENC_NA, &struct_code); + increment_dissection_depth(pinfo); + switch(class_code) { case AMQP_0_10_CLASS_MESSAGE: switch (struct_code) { @@ -5956,6 +5967,7 @@ dissect_amqp_0_10_struct32(tvbuff_t *tvb, } break; } + decrement_dissection_depth(pinfo); } /* decodes AMQP 1.0 list @@ -5971,6 +5983,7 @@ dissect_amqp_0_10_struct32(tvbuff_t *tvb, * name: what to show for unformatted content */ static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_1_0_list(tvbuff_t *tvb, packet_info *pinfo, int offset, @@ -6081,6 +6094,7 @@ dissect_amqp_1_0_list(tvbuff_t *tvb, * arguments: see dissect_amqp_1_0_list */ static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_1_0_map(tvbuff_t *tvb, packet_info *pinfo, int offset, @@ -6214,6 +6228,7 @@ dissect_amqp_1_0_map(tvbuff_t *tvb, * arguments: see dissect_amqp_1_0_list */ static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_amqp_1_0_array(tvbuff_t *tvb, packet_info *pinfo, int offset, @@ -10009,6 +10024,7 @@ static const struct amqp1_typeinfo* decode_fixed_type(guint8 code) * length_size: decoded length */ static void +// NOLINTNEXTLINE(misc-no-recursion) get_amqp_1_0_value_formatter(tvbuff_t *tvb, packet_info *pinfo, guint8 code, @@ -10023,6 +10039,7 @@ get_amqp_1_0_value_formatter(tvbuff_t *tvb, const struct amqp1_typeinfo* element_type; const char *value = NULL; + increment_dissection_depth(pinfo); element_type = decode_fixed_type(code); if (element_type) { @@ -10141,6 +10158,7 @@ get_amqp_1_0_value_formatter(tvbuff_t *tvb, break; } } + decrement_dissection_depth(pinfo); } /* It decodes 1.0 type, including type constructor @@ -10226,6 +10244,7 @@ get_amqp_1_0_type_formatter(tvbuff_t *tvb, * arguments: see get_amqp_1_0_value_formatter */ static void +// NOLINTNEXTLINE(misc-no-recursion) get_amqp_1_0_type_value_formatter(tvbuff_t *tvb, packet_info *pinfo, int offset, diff --git a/epan/dissectors/packet-asam-cmp.c b/epan/dissectors/packet-asam-cmp.c index 09af5add..2d37c220 100644 --- a/epan/dissectors/packet-asam-cmp.c +++ b/epan/dissectors/packet-asam-cmp.c @@ -1,7 +1,7 @@ /* packet-asam-cmp.c * ASAM Capture Module Protocol dissector. * Copyright 2021-2023 Alicia Mediano Schikarski, Technica Engineering GmbH - * Copyright 2021-2023 Dr. Lars Voelker, Technica Engineering GmbH + * Copyright 2021-2024 Dr. Lars Voelker, Technica Engineering GmbH * * Wireshark - Network traffic analyzer * By Gerald Combs <gerald@wireshark.org> @@ -1218,7 +1218,7 @@ dissect_asam_cmp_data_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tr can_id = can_id | CAN_ERR_FLAG; } - struct can_info can_info = { .id = can_id, .len = msg_payload_type_length, .fd = false, .bus_id = ht_interface_config_to_bus_id(interface_id) }; + struct can_info can_info = { .id = can_id, .len = msg_payload_type_length, .fd = CAN_TYPE_CAN_CLASSIC, .bus_id = ht_interface_config_to_bus_id(interface_id) }; if (!socketcan_call_subdissectors(sub_tvb, pinfo, tree, &can_info, heuristic_first)) { call_data_dissector(sub_tvb, pinfo, tree); } @@ -1326,7 +1326,7 @@ dissect_asam_cmp_data_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tr can_id = can_id | CAN_ERR_FLAG; } - struct can_info can_info = { .id = can_id, .len = msg_payload_type_length, .fd = true, .bus_id = ht_interface_config_to_bus_id(interface_id) }; + struct can_info can_info = { .id = can_id, .len = msg_payload_type_length, .fd = CAN_TYPE_CAN_FD, .bus_id = ht_interface_config_to_bus_id(interface_id) }; if (!socketcan_call_subdissectors(sub_tvb, pinfo, tree, &can_info, heuristic_first)) { call_data_dissector(sub_tvb, pinfo, tree); } @@ -1938,7 +1938,6 @@ dissect_asam_cmp_status_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_ offset += 2; if ((asam_cmp_status_msg_vendor_data_length) > 0) { - asam_cmp_status_msg_vendor_data_length += (asam_cmp_status_msg_vendor_data_length % 2); /* padding to 16bit */ proto_tree_add_item(asam_cmp_status_msg_payload_tree, hf_cmp_status_vendor_data, tvb, offset, asam_cmp_status_msg_vendor_data_length, ENC_NA); offset += (gint)asam_cmp_status_msg_vendor_data_length; } @@ -2016,7 +2015,6 @@ dissect_asam_cmp_status_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_ offset += 2; if ((asam_cmp_status_msg_vendor_data_length) > 0) { - asam_cmp_status_msg_vendor_data_length += (asam_cmp_status_msg_vendor_data_length % 2); /* padding to 16bit */ proto_tree_add_item(subtree, hf_cmp_iface_vendor_data, tvb, offset, asam_cmp_status_msg_vendor_data_length, ENC_NA); offset += (gint)asam_cmp_status_msg_vendor_data_length; } @@ -2660,6 +2658,7 @@ proto_reg_handoff_asam_cmp(void) { eth_handle = find_dissector("eth_maybefcs"); dissector_add_for_decode_as("ethertype", asam_cmp_handle); + dissector_add_for_decode_as_with_preference("udp.port", asam_cmp_handle); lin_subdissector_table = find_dissector_table("lin.frame_id"); } diff --git a/epan/dissectors/packet-asap.c b/epan/dissectors/packet-asap.c index f33f4eed..1b83af7e 100644 --- a/epan/dissectors/packet-asap.c +++ b/epan/dissectors/packet-asap.c @@ -93,9 +93,9 @@ static guint64 asap_total_msgs = 0; static guint64 asap_total_bytes = 0; static void -dissect_parameters(tvbuff_t *, proto_tree *); +dissect_parameters(tvbuff_t *, packet_info *, proto_tree *); static void -dissect_parameter(tvbuff_t *, proto_tree *); +dissect_parameter(tvbuff_t *, packet_info *, proto_tree *); static int dissect_asap(tvbuff_t *, packet_info *, proto_tree *, void *); @@ -125,13 +125,16 @@ dissect_unknown_cause(tvbuff_t *cause_tvb, proto_tree *cause_tree, proto_item *c } static void -dissect_error_cause(tvbuff_t *cause_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *parameter_tree) { guint16 code, length, padding_length; proto_item *cause_item; proto_tree *cause_tree; tvbuff_t *parameter_tvb, *message_tvb; + pinfo->flags.in_error_pkt = true; + code = tvb_get_ntohs(cause_tvb, CAUSE_CODE_OFFSET); length = tvb_get_ntohs(cause_tvb, CAUSE_LENGTH_OFFSET); padding_length = tvb_reported_length(cause_tvb) - length; @@ -145,27 +148,27 @@ dissect_error_cause(tvbuff_t *cause_tvb, proto_tree *parameter_tree) switch(code) { case UNRECOGNIZED_PARAMETER_CAUSE_CODE: parameter_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET); - dissect_parameter(parameter_tvb, cause_tree); + dissect_parameter(parameter_tvb, pinfo, cause_tree); break; case UNRECONGNIZED_MESSAGE_CAUSE_CODE: message_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET); - dissect_asap(message_tvb, NULL, cause_tree, NULL); + dissect_asap(message_tvb, pinfo, cause_tree, NULL); break; case INVALID_VALUES: parameter_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET); - dissect_parameter(parameter_tvb, cause_tree); + dissect_parameter(parameter_tvb, pinfo, cause_tree); break; case NON_UNIQUE_PE_IDENTIFIER: break; case POOLING_POLICY_INCONSISTENT_CAUSE_CODE: parameter_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET); - dissect_parameter(parameter_tvb, cause_tree); + dissect_parameter(parameter_tvb, pinfo, cause_tree); break; case LACK_OF_RESOURCES_CAUSE_CODE: break; case INCONSISTENT_TRANSPORT_TYPE_CAUSE_CODE: parameter_tvb = tvb_new_subset_remaining(cause_tvb, CAUSE_INFO_OFFSET); - dissect_parameter(parameter_tvb, cause_tree); + dissect_parameter(parameter_tvb, pinfo, cause_tree); break; case INCONSISTENT_DATA_CONTROL_CONFIGURATION_CAUSE_CODE: break; @@ -182,7 +185,8 @@ dissect_error_cause(tvbuff_t *cause_tvb, proto_tree *parameter_tree) } static void -dissect_error_causes(tvbuff_t *error_causes_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_error_causes(tvbuff_t *error_causes_tvb, packet_info *pinfo, proto_tree *parameter_tree) { guint16 length, total_length; gint offset; @@ -193,7 +197,7 @@ dissect_error_causes(tvbuff_t *error_causes_tvb, proto_tree *parameter_tree) length = tvb_get_ntohs(error_causes_tvb, offset + CAUSE_LENGTH_OFFSET); total_length = WS_ROUNDUP_4(length); error_cause_tvb = tvb_new_subset_length(error_causes_tvb, offset , total_length); - dissect_error_cause(error_cause_tvb, parameter_tree); + dissect_error_cause(error_cause_tvb, pinfo, parameter_tree); offset += total_length; } } @@ -215,7 +219,8 @@ dissect_ipv6_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, prot } static void -dissect_dccp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_dccp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -224,11 +229,12 @@ dissect_dccp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_ proto_tree_add_item(parameter_tree, hf_dccp_service_code, parameter_tvb, DCCP_SERVICE_CODE_OFFSET, DCCP_SERVICE_CODE_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, DCCP_ADDRESS_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_sctp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_sctp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -236,11 +242,12 @@ dissect_sctp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_ proto_tree_add_item(parameter_tree, hf_transport_use, parameter_tvb, SCTP_TRANSPORT_USE_OFFSET, SCTP_TRANSPORT_USE_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, SCTP_ADDRESS_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_tcp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_tcp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -248,11 +255,12 @@ dissect_tcp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_t proto_tree_add_item(parameter_tree, hf_transport_use, parameter_tvb, TCP_TRANSPORT_USE_OFFSET, TCP_TRANSPORT_USE_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, TCP_ADDRESS_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_udp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_udp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -260,11 +268,12 @@ dissect_udp_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_t proto_tree_add_item(parameter_tree, hf_udp_reserved, parameter_tvb, UDP_RESERVED_OFFSET, UDP_RESERVED_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, UDP_ADDRESS_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_udp_lite_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_udp_lite_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -272,7 +281,7 @@ dissect_udp_lite_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parame proto_tree_add_item(parameter_tree, hf_udp_lite_reserved, parameter_tvb, UDP_LITE_RESERVED_OFFSET, UDP_LITE_RESERVED_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, UDP_LITE_ADDRESS_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void @@ -348,7 +357,8 @@ dissect_pool_handle_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tre } static void -dissect_pool_element_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_pool_element_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t* parameters_tvb; @@ -357,27 +367,29 @@ dissect_pool_element_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tr proto_tree_add_item(parameter_tree, hf_reg_life, parameter_tvb, REGISTRATION_LIFE_OFFSET, REGISTRATION_LIFE_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, USER_TRANSPORT_PARAMETER_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_server_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_server_information_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; proto_tree_add_item(parameter_tree, hf_server_identifier, parameter_tvb, SERVER_ID_OFFSET, SERVER_ID_LENGTH, ENC_BIG_ENDIAN); parameters_tvb = tvb_new_subset_remaining(parameter_tvb, SERVER_TRANSPORT_OFFSET); - dissect_parameters(parameters_tvb, parameter_tree); + dissect_parameters(parameters_tvb, pinfo, parameter_tree); } static void -dissect_operation_error_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_operation_error_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *error_causes_tvb; error_causes_tvb = tvb_new_subset_remaining(parameter_tvb, ERROR_CAUSES_OFFSET); - dissect_error_causes(error_causes_tvb, parameter_tree); + dissect_error_causes(error_causes_tvb, pinfo, parameter_tree); } static void @@ -426,7 +438,8 @@ dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, p } static void -dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *asap_tree) { guint16 type, length, padding_length; proto_item *parameter_item; @@ -445,6 +458,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) proto_tree_add_item(parameter_tree, hf_parameter_type, parameter_tvb, PARAMETER_TYPE_OFFSET, PARAMETER_TYPE_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(parameter_tree, hf_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN); + increment_dissection_depth(pinfo); switch(type) { case IPV4_ADDRESS_PARAMETER_TYPE: dissect_ipv4_parameter(parameter_tvb, parameter_tree, parameter_item); @@ -453,19 +467,19 @@ dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) dissect_ipv6_parameter(parameter_tvb, parameter_tree, parameter_item); break; case DCCP_TRANSPORT_PARAMETER_TYPE: - dissect_dccp_transport_parameter(parameter_tvb, parameter_tree); + dissect_dccp_transport_parameter(parameter_tvb, pinfo, parameter_tree); break; case SCTP_TRANSPORT_PARAMETER_TYPE: - dissect_sctp_transport_parameter(parameter_tvb, parameter_tree); + dissect_sctp_transport_parameter(parameter_tvb, pinfo, parameter_tree); break; case TCP_TRANSPORT_PARAMETER_TYPE: - dissect_tcp_transport_parameter(parameter_tvb, parameter_tree); + dissect_tcp_transport_parameter(parameter_tvb, pinfo, parameter_tree); break; case UDP_TRANSPORT_PARAMETER_TYPE: - dissect_udp_transport_parameter(parameter_tvb, parameter_tree); + dissect_udp_transport_parameter(parameter_tvb, pinfo, parameter_tree); break; case UDP_LITE_TRANSPORT_PARAMETER_TYPE: - dissect_udp_lite_transport_parameter(parameter_tvb, parameter_tree); + dissect_udp_lite_transport_parameter(parameter_tvb, pinfo, parameter_tree); break; case POOL_MEMBER_SELECTION_POLICY_PARAMETER_TYPE: dissect_pool_member_selection_policy_parameter(parameter_tvb, parameter_tree); @@ -474,13 +488,13 @@ dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) dissect_pool_handle_parameter(parameter_tvb, parameter_tree); break; case POOL_ELEMENT_PARAMETER_TYPE: - dissect_pool_element_parameter(parameter_tvb, parameter_tree); + dissect_pool_element_parameter(parameter_tvb, pinfo, parameter_tree); break; case SERVER_INFORMATION_PARAMETER_TYPE: - dissect_server_information_parameter(parameter_tvb, parameter_tree); + dissect_server_information_parameter(parameter_tvb, pinfo, parameter_tree); break; case OPERATION_ERROR_PARAMETER_TYPE: - dissect_operation_error_parameter(parameter_tvb, parameter_tree); + dissect_operation_error_parameter(parameter_tvb, pinfo, parameter_tree); break; case COOKIE_PARAMETER_TYPE: dissect_cookie_parameter(parameter_tvb, parameter_tree, parameter_item); @@ -498,13 +512,15 @@ dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item); break; }; + decrement_dissection_depth(pinfo); if (padding_length > 0) proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA); } static void -dissect_parameters(tvbuff_t *parameters_tvb, proto_tree *tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree) { gint offset, length, total_length, remaining_length; tvbuff_t *parameter_tvb; @@ -517,7 +533,7 @@ dissect_parameters(tvbuff_t *parameters_tvb, proto_tree *tree) total_length = MIN(total_length, remaining_length); /* create a tvb for the parameter including the padding bytes */ parameter_tvb = tvb_new_subset_length(parameters_tvb, offset, total_length); - dissect_parameter(parameter_tvb, tree); + dissect_parameter(parameter_tvb, pinfo, tree); /* get rid of the handled parameter */ offset += total_length; } @@ -574,6 +590,7 @@ static const true_false_string reject_bit_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_asap_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *asap_tree) { asap_tap_rec_t *tap_rec; @@ -584,7 +601,7 @@ dissect_asap_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *asap type = tvb_get_guint8(message_tvb, MESSAGE_TYPE_OFFSET); /* pinfo is NULL only if dissect_asap_message is called via dissect_error_cause */ - if (pinfo) { + if (!pinfo->flags.in_error_pkt) { tap_rec = wmem_new0(pinfo->pool, asap_tap_rec_t); tap_rec->type = type; tap_rec->size = tvb_get_ntohs(message_tvb, MESSAGE_LENGTH_OFFSET); @@ -611,19 +628,21 @@ dissect_asap_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *asap } else { parameters_tvb = tvb_new_subset_remaining(message_tvb, MESSAGE_VALUE_OFFSET); } - dissect_parameters(parameters_tvb, asap_tree); + dissect_parameters(parameters_tvb, pinfo, asap_tree); } } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_asap(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { proto_item *asap_item; proto_tree *asap_tree; /* pinfo is NULL only if dissect_asap is called from dissect_error_cause */ - if (pinfo) + if (!pinfo->flags.in_error_pkt) { col_set_str(pinfo->cinfo, COL_PROTOCOL, "ASAP"); + } /* create the asap protocol tree */ asap_item = proto_tree_add_item(tree, proto_asap, message_tvb, 0, -1, ENC_NA); diff --git a/epan/dissectors/packet-babel.c b/epan/dissectors/packet-babel.c index 964070b3..f2453907 100644 --- a/epan/dissectors/packet-babel.c +++ b/epan/dissectors/packet-babel.c @@ -337,6 +337,7 @@ dissect_babel_subtlvs(tvbuff_t * tvb, guint8 type, guint16 beg, /* The following function is used to read the packet body and the packet trailer */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_babel_body(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint16 bodylen) { @@ -549,7 +550,9 @@ dissect_babel_body(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, subtree = proto_tree_add_subtree_format(tree, tvb, 4+bodylen, packet_len, ett_packet_trailer, NULL, "Packet Trailer (%u)", packet_len); + increment_dissection_depth(pinfo); dissect_babel_body(tvb, pinfo, subtree, bodylen, packet_len); + decrement_dissection_depth(pinfo); } return i; } diff --git a/epan/dissectors/packet-bacnet.c b/epan/dissectors/packet-bacnet.c index 9622113b..b9992482 100644 --- a/epan/dissectors/packet-bacnet.c +++ b/epan/dissectors/packet-bacnet.c @@ -477,6 +477,7 @@ bacnet_dissect_sec_wrapper(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bacnet_npdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { proto_item *ti; @@ -748,7 +749,10 @@ dissect_bacnet_npdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint of tvb_set_reported_length(tvb, bacnet_len); if (is_net_msg_flg) { /* decode network layer message */ - return dissect_bacnet_npdu(tvb, pinfo, tree, offset); + increment_dissection_depth(pinfo); + int npdu_len = dissect_bacnet_npdu(tvb, pinfo, tree, offset); + decrement_dissection_depth(pinfo); + return npdu_len; } /* APDU - call the APDU dissector */ next_tvb = tvb_new_subset_remaining(tvb, offset); diff --git a/epan/dissectors/packet-banana.c b/epan/dissectors/packet-banana.c index 891b66a3..5a629c37 100644 --- a/epan/dissectors/packet-banana.c +++ b/epan/dissectors/packet-banana.c @@ -110,6 +110,7 @@ static const value_string pb_vals[] = { /* Dissect the packets */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_banana_element(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { proto_item *ti; proto_tree *list_tree; @@ -150,7 +151,9 @@ dissect_banana_element(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int list_tree = proto_item_add_subtree(ti, ett_list); for (i = 0; i < val; i++) { old_offset = offset; + increment_dissection_depth(pinfo); offset += dissect_banana_element(tvb, pinfo, list_tree, offset); + decrement_dissection_depth(pinfo); if (offset <= old_offset) { return offset - start_offset; } diff --git a/epan/dissectors/packet-beep.c b/epan/dissectors/packet-beep.c index 3e1b3fcc..56e4685e 100644 --- a/epan/dissectors/packet-beep.c +++ b/epan/dissectors/packet-beep.c @@ -437,6 +437,7 @@ set_mime_hdr_flags(int more, struct beep_request_val *request_val, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, struct beep_request_val *request_val, struct beep_proto_data *beep_frame_data) @@ -574,9 +575,11 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo, /* If anything else left, dissect it ... */ - if (tvb_reported_length_remaining(tvb, offset) > 0) + if (tvb_reported_length_remaining(tvb, offset) > 0) { + increment_dissection_depth(pinfo); offset += dissect_beep_tree(tvb, offset, pinfo, tree, request_val, beep_frame_data); - + decrement_dissection_depth(pinfo); + } } else if (tvb_strneql(tvb, offset, "SEQ ", 4) == 0) { if (tree) { diff --git a/epan/dissectors/packet-bencode.c b/epan/dissectors/packet-bencode.c index 1f893e4c..93c042c3 100644 --- a/epan/dissectors/packet-bencode.c +++ b/epan/dissectors/packet-bencode.c @@ -163,6 +163,7 @@ static int dissect_bencoding_int(tvbuff_t *tvb, packet_info *pinfo, return -1; } +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo, int offset, int length, proto_tree *tree, int level, proto_item *treei, int treeadd) { @@ -207,8 +208,12 @@ static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo, } op2len = -1; - if ((length - op1len) > 2) + if ((length - op1len) > 2) { + increment_dissection_depth(pinfo); op2len = dissect_bencoding_rec(tvb, pinfo, offset + used + op1len, length - op1len, NULL, level + 1, NULL, 0); + decrement_dissection_depth(pinfo); + } + if (op2len < 0) { proto_tree_add_expert(dtree, pinfo, &ei_bencode_dict_value, tvb, offset + used + op1len, -1); return op2len; @@ -218,7 +223,9 @@ static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo, itree = proto_item_add_subtree(ti, ett_bencode_dict_entry); dissect_bencoding_str(tvb, pinfo, offset + used, length, itree, ti, 1); + increment_dissection_depth(pinfo); dissect_bencoding_rec(tvb, pinfo, offset + used + op1len, length - op1len, itree, level + 1, ti, 2); + decrement_dissection_depth(pinfo); used += op1len + op2len; length -= op1len + op2len; @@ -234,6 +241,7 @@ static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo, used = 1; length--; + increment_dissection_depth(pinfo); while (length >= 1) { op = tvb_get_guint8(tvb, offset + used); @@ -242,11 +250,16 @@ static int dissect_bencoding_rec(tvbuff_t *tvb, packet_info *pinfo, } oplen = dissect_bencoding_rec(tvb, pinfo, offset + used, length, itree, level + 1, ti, 0); - if (oplen < 1) return oplen; + + if (oplen < 1) { + decrement_dissection_depth(pinfo); + return oplen; + } used += oplen; length -= oplen; } + decrement_dissection_depth(pinfo); proto_tree_add_item(itree, hf_bencode_truncated_data, tvb, offset + used, -1, ENC_NA); return -1; diff --git a/epan/dissectors/packet-bfcp.c b/epan/dissectors/packet-bfcp.c index 3f356edc..f5c7889c 100644 --- a/epan/dissectors/packet-bfcp.c +++ b/epan/dissectors/packet-bfcp.c @@ -281,6 +281,7 @@ show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bfcp_attributes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int bfcp_payload_length) { proto_item *ti, *item; @@ -291,6 +292,7 @@ dissect_bfcp_attributes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int gint read_attr = 0; guint8 first_byte, pad_len; + increment_dissection_depth(pinfo); while ((tvb_reported_length_remaining(tvb, offset) >= 2) && ((bfcp_payload_length - read_attr) >= 2)) { @@ -499,6 +501,7 @@ dissect_bfcp_attributes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int } read_attr = read_attr + length; } + decrement_dissection_depth(pinfo); return offset; } @@ -850,8 +853,7 @@ void proto_register_bfcp(void) }; /* Register protocol name and description */ - proto_bfcp = proto_register_protocol("Binary Floor Control Protocol", - "BFCP", "bfcp"); + proto_bfcp = proto_register_protocol("Binary Floor Control Protocol", "BFCP", "bfcp"); bfcp_handle = register_dissector("bfcp", dissect_bfcp, proto_bfcp); diff --git a/epan/dissectors/packet-bgp.c b/epan/dissectors/packet-bgp.c index 75d9fc9a..85142598 100644 --- a/epan/dissectors/packet-bgp.c +++ b/epan/dissectors/packet-bgp.c @@ -5327,6 +5327,7 @@ decode_link_state_attribute_flex_algo_subtlv(proto_tree *tree, tvbuff_t *tvb, gi * Decode a multiprotocol prefix */ static int +// NOLINTNEXTLINE(misc-no-recursion) decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, packet_info *pinfo, guint8 protocol_id) { guint16 type; @@ -5350,6 +5351,7 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa type = tvb_get_ntohs(tvb, offset); length = tvb_get_ntohs(tvb, offset + 2); + increment_dissection_depth(pinfo); switch (type) { /* NODE ATTRIBUTE TLVs */ @@ -6449,6 +6451,7 @@ decode_link_state_attribute_tlv(proto_tree *tree, tvbuff_t *tvb, gint offset, pa "Unknown BGP-LS Attribute TLV Code (%u)!", type); break; } + decrement_dissection_depth(pinfo); return length + 4; } @@ -9574,6 +9577,7 @@ dissect_bgp_update_pmsi_attr(packet_info *pinfo, proto_tree *parent_tree, tvbuff * */ void +// NOLINTNEXTLINE(misc-no-recursion) dissect_bgp_path_attr(proto_tree *subtree, tvbuff_t *tvb, guint16 path_attr_len, guint tvb_off, packet_info *pinfo) { guint8 bgpa_flags; /* path attributes */ @@ -9631,6 +9635,7 @@ dissect_bgp_path_attr(proto_tree *subtree, tvbuff_t *tvb, guint16 path_attr_len, o = tvb_off; + increment_dissection_depth(pinfo); while (i < path_attr_len) { proto_item *ti_pa, *ti_flags; int off; @@ -10862,6 +10867,7 @@ dissect_bgp_path_attr(proto_tree *subtree, tvbuff_t *tvb, guint16 path_attr_len, i += alen + aoff; } + decrement_dissection_depth(pinfo); { /* FF: postponed BGPTYPE_LINK_STATE_ATTR dissection */ link_state_data *data = load_link_state_data(pinfo); @@ -14102,8 +14108,7 @@ proto_register_bgp(void) {NULL, NULL, -1} }; - proto_bgp = proto_register_protocol("Border Gateway Protocol", - "BGP", "bgp"); + proto_bgp = proto_register_protocol("Border Gateway Protocol", "BGP", "bgp"); proto_register_field_array(proto_bgp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_bgp = expert_register_protocol(proto_bgp); diff --git a/epan/dissectors/packet-bt-dht.c b/epan/dissectors/packet-bt-dht.c index 4d442a76..8b7a545b 100644 --- a/epan/dissectors/packet-bt-dht.c +++ b/epan/dissectors/packet-bt-dht.c @@ -187,6 +187,7 @@ static int dissect_bencoded_dict(tvbuff_t *tvb, packet_info *pinfo, proto_tree * /* dissect a bencoded list from tvb, start at offset. it's like "lXXXe", "X" is any bencoded thing */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bencoded_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const char *label ) { proto_item *ti; @@ -428,6 +429,7 @@ dissect_bt_dht_nodes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bencoded_dict_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset ) { proto_item *ti; @@ -556,6 +558,7 @@ dissect_bencoded_dict_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* dict = d...e */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bencoded_dict(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const char *label ) { proto_item *ti; @@ -790,6 +793,7 @@ proto_reg_handoff_bt_dht(void) { heur_dissector_add("udp", dissect_bt_dht_heur, "BitTorrent DHT over UDP", "bittorrent_dht_udp", proto_bt_dht, HEURISTIC_ENABLE); + // If this is ever streamed (transported over TCP) we need to add recursion checks. dissector_add_for_decode_as_with_preference("udp.port", bt_dht_handle); } diff --git a/epan/dissectors/packet-btbnep.c b/epan/dissectors/packet-btbnep.c index 0ce39f97..533a765e 100644 --- a/epan/dissectors/packet-btbnep.c +++ b/epan/dissectors/packet-btbnep.c @@ -237,6 +237,7 @@ dissect_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_extension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { guint8 extension_flag; @@ -262,7 +263,9 @@ dissect_extension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offse offset += extension_length; } + increment_dissection_depth(pinfo); if (extension_flag) offset = dissect_extension(tvb, pinfo, tree, offset); + decrement_dissection_depth(pinfo); return offset; } diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c index ef1141e8..c7bc939a 100644 --- a/epan/dissectors/packet-btsdp.c +++ b/epan/dissectors/packet-btsdp.c @@ -2113,6 +2113,7 @@ dissect_protocol_descriptor_list(proto_tree *next_tree, tvbuff_t *tvb, static gint +// NOLINTNEXTLINE(misc-no-recursion) dissect_sdp_type(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, gint attribute, bluetooth_uuid_t service_uuid, gint service_did_vendor_id, gint service_did_vendor_id_source, @@ -3532,6 +3533,7 @@ dissect_sdp_type(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, wmem_strbuf_append(info_buf, "{ "); + increment_dissection_depth(pinfo); while (bytes_to_go > 0) { if (!first) { wmem_strbuf_append(info_buf, ", "); @@ -3550,6 +3552,7 @@ dissect_sdp_type(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, next_offset += size; bytes_to_go -= size; } + decrement_dissection_depth(pinfo); wmem_strbuf_append(info_buf, "} "); break; diff --git a/epan/dissectors/packet-bvlc.c b/epan/dissectors/packet-bvlc.c index 58acc3a9..3fe10a36 100644 --- a/epan/dissectors/packet-bvlc.c +++ b/epan/dissectors/packet-bvlc.c @@ -503,6 +503,7 @@ static int * const bscvlc_header_flags[] = { }; static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_ipv4_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -664,7 +665,9 @@ dissect_ipv4_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat call_data_dissector(tvb, pinfo, tree); return tvb_captured_length(tvb); } + increment_dissection_depth(pinfo); dissect_ipv4_bvlc(tvb, pinfo, tree, data); + decrement_dissection_depth(pinfo); break; /* We check this if we get a FDT-packet somewhere */ case 0x04: /* Forwarded-NPDU @@ -704,6 +707,7 @@ dissect_ipv4_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_ipv6_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { proto_item *ti; @@ -851,7 +855,9 @@ dissect_ipv6_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat call_data_dissector(tvb, pinfo, tree); return tvb_captured_length(tvb); } + increment_dissection_depth(pinfo); dissect_ipv6_bvlc(tvb, pinfo, tree, data); + decrement_dissection_depth(pinfo); break; case 0x02: /* Original-Broadcast-NPDU */ case 0x0c: /* Distribute-Broadcast-To-Network */ diff --git a/epan/dissectors/packet-cip.c b/epan/dissectors/packet-cip.c index 13cb87a2..5f22dd52 100644 --- a/epan/dissectors/packet-cip.c +++ b/epan/dissectors/packet-cip.c @@ -6643,6 +6643,7 @@ dissect_cip_set_attribute_list_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree return 2 + (offset - start_offset); } +// NOLINTNEXTLINE(misc-no-recursion) int dissect_cip_multiple_service_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item * item, int offset, gboolean request) { proto_tree *mult_serv_tree, *offset_tree; @@ -6773,6 +6774,7 @@ int dissect_cip_multiple_service_packet(tvbuff_t *tvb, packet_info *pinfo, proto } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_cip_generic_service_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, cip_simple_request_info_t* req_data) { proto_item *cmd_data_item; @@ -7149,6 +7151,7 @@ gboolean should_dissect_cip_response(tvbuff_t *tvb, int offset, guint8 gen_statu } int +// NOLINTNEXTLINE(misc-no-recursion) dissect_cip_generic_service_rsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_item *cmd_data_item; @@ -9230,6 +9233,7 @@ dissect_class_cco_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * ************************************************/ +// NOLINTNEXTLINE(misc-no-recursion) void dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info *pinfo, cip_req_info_t* preq_info, proto_item* msp_item, gboolean is_msp_item ) { proto_item *ti; @@ -9266,6 +9270,7 @@ void dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_ proto_tree_add_item( rrsc_tree, hf_cip_reqrsp, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(rrsc_tree, hf_cip_service_code, tvb, offset, 1, ENC_LITTLE_ENDIAN); + increment_dissection_depth(pinfo); if( service & CIP_SC_RESPONSE_MASK ) { /* Response message */ @@ -9432,6 +9437,8 @@ void dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_ } } /* End of if-else( request ) */ + decrement_dissection_depth(pinfo); + p_remove_proto_data(wmem_file_scope(), pinfo, proto_cip, 0); p_add_proto_data(wmem_file_scope(), pinfo, proto_cip, 0, p_save_proto_data); diff --git a/epan/dissectors/packet-cmip.c b/epan/dissectors/packet-cmip.c index b3aaa2b9..b7ccee3c 100644 --- a/epan/dissectors/packet-cmip.c +++ b/epan/dissectors/packet-cmip.c @@ -602,7 +602,6 @@ static const char *object_identifier_id; static int dissect_cmip_CMISFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1012,16 +1011,15 @@ static const ber_choice_t CMISFilter_choice[] = { static int dissect_cmip_CMISFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // CMISFilter → CMISFilter/and → CMISFilter + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, CMISFilter_choice, hf_index, ett_cmip_CMISFilter, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-cmp.c b/epan/dissectors/packet-cmp.c index 30c422e2..64bc3100 100644 --- a/epan/dissectors/packet-cmp.c +++ b/epan/dissectors/packet-cmp.c @@ -277,7 +277,6 @@ static gint ett_cmp_PollRepContent_item = -1; /*int dissect_cmp_PKIMessage(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static const value_string cmp_CMPCertificate_vals[] = { { 0, "x509v3PKCert" }, @@ -1088,15 +1087,14 @@ static const ber_sequence_t PKIMessage_sequence[] = { int dissect_cmp_PKIMessage(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 5; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // PKIMessage → PKIBody → NestedMessageContent → PKIMessages → PKIMessage + actx->pinfo->dissection_depth += 4; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, PKIMessage_sequence, hf_index, ett_cmp_PKIMessage); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 4; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-corosync-totemsrp.c b/epan/dissectors/packet-corosync-totemsrp.c index 6f0feaf8..fce101da 100644 --- a/epan/dissectors/packet-corosync-totemsrp.c +++ b/epan/dissectors/packet-corosync-totemsrp.c @@ -473,6 +473,7 @@ dissect_corosync_totemsrp_srp_addr(tvbuff_t *tvb, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_corosync_totemsrp_mcast(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint length, int offset, @@ -797,6 +798,7 @@ dissect_corosync_totemsrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_ #define COROSYNC_TOTEMSRP_TEST_BIG_ENDIAN 0xFF22 static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_corosync_totemsrp0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean encapsulated) @@ -868,6 +870,7 @@ dissect_corosync_totemsrp0(tvbuff_t *tvb, info.nodeid = corosync_totemsrp_get_guint32(tvb, offset, encoding); offset += 4; + increment_dissection_depth(pinfo); switch (message_header__type) { case COROSYNC_TOTEMSRP_MESSAGE_TYPE_ORF_TOKEN: dissect_corosync_totemsrp_orf_token(tvb, pinfo, corosync_tree, length, offset, encoding); @@ -896,6 +899,7 @@ dissect_corosync_totemsrp0(tvbuff_t *tvb, default: break; } + decrement_dissection_depth(pinfo); return length; } diff --git a/epan/dissectors/packet-cose.c b/epan/dissectors/packet-cose.c index 5f5a7e6e..2637c1fa 100644 --- a/epan/dissectors/packet-cose.c +++ b/epan/dissectors/packet-cose.c @@ -558,6 +558,8 @@ static void dissect_ciphertext(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr } } static void dissect_cose_recipient(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset); + +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_cose_recipient_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset) { wscbor_chunk_t *chunk_list = wscbor_chunk_read(pinfo->pool, tvb, offset); wscbor_require_array(chunk_list); @@ -571,6 +573,8 @@ static void dissect_cose_recipient_list(tvbuff_t *tvb, packet_info *pinfo, proto } proto_item_set_len(item_list, *offset - chunk_list->start); } + +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_cose_recipient(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset) { wscbor_chunk_t *chunk_recip = wscbor_chunk_read(pinfo->pool, tvb, offset); wscbor_require_array_size(chunk_recip, 3, 4); @@ -581,7 +585,9 @@ static void dissect_cose_recipient(tvbuff_t *tvb, packet_info *pinfo, proto_tree dissect_headers(tvb, pinfo, tree_recip, offset); dissect_ciphertext(tvb, pinfo, tree_recip, offset); if (chunk_recip->head_value > 3) { + increment_dissection_depth(pinfo); dissect_cose_recipient_list(tvb, pinfo, tree_recip, offset); + decrement_dissection_depth(pinfo); } } proto_item_set_len(item_recip, *offset - chunk_recip->start); diff --git a/epan/dissectors/packet-cql.c b/epan/dissectors/packet-cql.c index 3f000a7e..32b03ec2 100644 --- a/epan/dissectors/packet-cql.c +++ b/epan/dissectors/packet-cql.c @@ -572,7 +572,8 @@ typedef enum { } cql_compression_level; -static int parse_option(proto_tree* metadata_subtree, tvbuff_t* tvb, gint offset) +// NOLINTNEXTLINE(misc-no-recursion) +static int parse_option(proto_tree* metadata_subtree, packet_info *pinfo, tvbuff_t* tvb, gint offset) { guint32 data_type = 0; guint32 string_length = 0; @@ -582,16 +583,17 @@ static int parse_option(proto_tree* metadata_subtree, tvbuff_t* tvb, gint offset proto_tree_add_item_ret_uint(metadata_subtree, hf_cql_result_rows_data_type, tvb, offset, 2, ENC_BIG_ENDIAN, &data_type); offset += 2; + increment_dissection_depth(pinfo); switch (data_type) { case CQL_RESULT_ROW_TYPE_LIST: - offset = parse_option(metadata_subtree, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); break; case CQL_RESULT_ROW_TYPE_MAP: - offset = parse_option(metadata_subtree, tvb, offset); - offset = parse_option(metadata_subtree, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); break; case CQL_RESULT_ROW_TYPE_SET: - offset = parse_option(metadata_subtree, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); break; case CQL_RESULT_ROW_TYPE_UDT: /* keyspace */ @@ -618,19 +620,20 @@ static int parse_option(proto_tree* metadata_subtree, tvbuff_t* tvb, gint offset offset += string_length; /* UDT field option */ - offset = parse_option(metadata_subtree, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); } break; case CQL_RESULT_ROW_TYPE_TUPLE: proto_tree_add_item_ret_uint(metadata_subtree, hf_cql_result_rows_tuple_size, tvb, offset, 2, ENC_BIG_ENDIAN, &tuple_size); offset += 2; for (i = 0; i < tuple_size; i++) { - offset = parse_option(metadata_subtree, tvb, offset); + offset = parse_option(metadata_subtree, pinfo, tvb, offset); } break; default: break; } + decrement_dissection_depth(pinfo); return offset; } @@ -684,6 +687,7 @@ static void add_cql_uuid(proto_tree* tree, int hf_uuid, tvbuff_t* tvb, gint offs } +// NOLINTNEXTLINE(misc-no-recursion) static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t* tvb, gint* offset_metadata, gint offset) { guint32 data_type = 0; @@ -722,6 +726,7 @@ static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t return offset; } + increment_dissection_depth(pinfo); switch (data_type) { case CQL_RESULT_ROW_TYPE_CUSTOM: proto_tree_add_item(columns_subtree, hf_cql_custom, tvb, offset, bytes_length, ENC_UTF_8 | ENC_NA); @@ -819,6 +824,7 @@ static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t item = proto_tree_add_item_ret_int(columns_subtree, hf_cql_string_result_rows_list_size, tvb, offset, 4, ENC_BIG_ENDIAN, &list_size); if (list_size < 0) { expert_add_info(pinfo, item, &ei_cql_unexpected_negative_value); + decrement_dissection_depth(pinfo); return tvb_reported_length(tvb); } offset += 4; @@ -835,6 +841,7 @@ static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t proto_item_append_text(map_subtree, " with %" PRId32 " element(s)", map_size); if (map_size < 0) { expert_add_info(pinfo, item, &ei_cql_unexpected_negative_value); + decrement_dissection_depth(pinfo); return tvb_reported_length(tvb); } else if (map_size == 0) { *offset_metadata += 4; /* skip the type fields of *both* key and value in the map in the metadata */ @@ -853,6 +860,7 @@ static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t offset += 4; if (set_size < 0) { expert_add_info(pinfo, item, &ei_cql_unexpected_negative_value); + decrement_dissection_depth(pinfo); return tvb_reported_length(tvb); } else if (set_size == 0) { *offset_metadata += 2; /* skip the type field of the elements in the set in the metadata */ @@ -910,6 +918,7 @@ static int parse_value(proto_tree* columns_subtree, packet_info *pinfo, tvbuff_t default: break; } + decrement_dissection_depth(pinfo); return offset; } @@ -1474,7 +1483,7 @@ dissect_cql_tcp_pdu(tvbuff_t* raw_tvb, packet_info* pinfo, proto_tree* tree, voi /* type "option" */ - offset = parse_option(col_spec_subtree, tvb, offset); + offset = parse_option(col_spec_subtree, pinfo, tvb, offset); } } diff --git a/epan/dissectors/packet-csn1.c b/epan/dissectors/packet-csn1.c index 15b4a718..815e7708 100644 --- a/epan/dissectors/packet-csn1.c +++ b/epan/dissectors/packet-csn1.c @@ -150,6 +150,7 @@ existNextElement(tvbuff_t *tvb, gint bit_offset, guint8 Tag) gint16 +// NOLINTNEXTLINE(misc-no-recursion) csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, tvbuff_t *tvb, void* data, int ett_csn1) { gint remaining_bits_len = ar->remaining_bits_len; @@ -475,7 +476,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]",pDescr->sz, i++); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pui8, ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { pui8 += nSize; @@ -539,7 +542,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t } else { test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s", pDescr->sz); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { proto_item_set_len(ti,((arT.bit_offset-1)>>3) - (bit_offset>>3)+1); @@ -604,7 +609,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t } csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR*)descr, tvb, data, ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { @@ -960,7 +967,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]",pDescr->sz, i++); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pui8, ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { pui8 += nSize; @@ -1013,7 +1022,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t } else { test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { proto_item_set_len(ti,((arT.bit_offset-1)>>3) - (bit_offset>>3)+1); @@ -1405,7 +1416,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t test_tree = proto_tree_add_subtree(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, pDescr->sz); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { /* successful completion */ @@ -1474,7 +1487,9 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t test_tree = proto_tree_add_subtree_format(tree, tvb, bit_offset>>3, 1, ett_csn1, &ti, "%s[%d]", pDescr->sz, ElementCount-1); csnStreamInit(&arT, bit_offset, remaining_bits_len, ar->pinfo); + increment_dissection_depth(ar->pinfo); Status = csnStreamDissector(test_tree, &arT, (const CSN_DESCR *)pDescr->descr.ptr, tvb, pvDATA(data, pDescr->offset), ett_csn1); + decrement_dissection_depth(ar->pinfo); if (Status >= 0) { /* successful completion */ diff --git a/epan/dissectors/packet-dap.c b/epan/dissectors/packet-dap.c index bb5c9d5d..8a823140 100644 --- a/epan/dissectors/packet-dap.c +++ b/epan/dissectors/packet-dap.c @@ -701,7 +701,6 @@ static int dissect_dap_ListResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_dap_SearchResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. const value_string dap_FamilyGrouping_vals[] = { { 1, "entryOnly" }, @@ -1266,15 +1265,14 @@ static const ber_sequence_t FamilyEntries_sequence[] = { static int dissect_dap_FamilyEntries(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 5; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // FamilyEntries → FamilyEntries/familyEntries → FamilyEntry → FamilyEntry/family-info → FamilyEntries + actx->pinfo->dissection_depth += 4; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, FamilyEntries_sequence, hf_index, ett_dap_FamilyEntries); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 4; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1470,16 +1468,15 @@ static const ber_choice_t Filter_choice[] = { int dissect_dap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Filter → SetOfFilter → Filter + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Filter_choice, hf_index, ett_dap_Filter, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -2932,16 +2929,15 @@ static const ber_choice_t ListResultData_choice[] = { static int dissect_dap_ListResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ListResultData → ListResultData/uncorrelatedListInfo → ListResult → ListResultData + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, ListResultData_choice, hf_index, ett_dap_ListResultData, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -3323,16 +3319,15 @@ static const ber_choice_t SearchResultData_choice[] = { static int dissect_dap_SearchResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // SearchResultData → SearchResultData/uncorrelatedSearchInfo → SearchResult → SearchResultData + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, SearchResultData_choice, hf_index, ett_dap_SearchResultData, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-dccp.c b/epan/dissectors/packet-dccp.c index 3481698c..e03154e5 100644 --- a/epan/dissectors/packet-dccp.c +++ b/epan/dissectors/packet-dccp.c @@ -755,6 +755,7 @@ dissect_feature_options(proto_tree *dccp_options_tree, tvbuff_t *tvb, * This function dissects DCCP options */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_options(tvbuff_t *tvb, packet_info *pinfo, proto_tree *dccp_options_tree, proto_tree *tree _U_, e_dccphdr *dccph _U_, @@ -890,6 +891,7 @@ dissect_options(tvbuff_t *tvb, packet_info *pinfo, mp_option_sub_item = proto_tree_add_item(option_tree, hf_mpdccp_confirm, tvb, offset, 1, ENC_BIG_ENDIAN); mp_option_sub_tree = proto_item_add_subtree(mp_option_sub_item, ett_dccp_options_item); offset += 1; + // We recurse here, but we'll run out of packet before we run out of stack. dissect_options(tvb, pinfo, mp_option_sub_tree, tree, dccph, offset, offset + option_len); break; case 1: @@ -1943,8 +1945,7 @@ proto_register_dccp(void) expert_module_t* expert_dccp; proto_dccp = - proto_register_protocol("Datagram Congestion Control Protocol", "DCCP", - "dccp"); + proto_register_protocol("Datagram Congestion Control Protocol", "DCCP", "dccp"); dccp_handle = register_dissector("dccp", dissect_dccp, proto_dccp); proto_register_field_array(proto_dccp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); diff --git a/epan/dissectors/packet-dcm.c b/epan/dissectors/packet-dcm.c index fab18c61..f6e74084 100644 --- a/epan/dissectors/packet-dcm.c +++ b/epan/dissectors/packet-dcm.c @@ -664,7 +664,7 @@ typedef struct dcm_status { const gchar *description; } dcm_status_t; -static dcm_status_t dcm_status_data[] = { +static dcm_status_t const dcm_status_data[] = { /* From PS 3.7 */ @@ -1010,11 +1010,11 @@ static const gchar * dcm_rsp2str(guint16 status_value) { - dcm_status_t *status = NULL; + dcm_status_t const *status = NULL; const gchar *s; /* Use specific text first */ - status = (dcm_status_t*) wmem_map_lookup(dcm_status_table, GUINT_TO_POINTER((guint32)status_value)); + status = (dcm_status_t const *)wmem_map_lookup(dcm_status_table, GUINT_TO_POINTER((guint32)status_value)); if (status) { s = status->description; @@ -1657,7 +1657,7 @@ dissect_dcm_assoc_item(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin proto_tree *assoc_item_ptree; /* Tree for item details */ proto_item *assoc_item_pitem; - dcm_uid_t *uid = NULL; + dcm_uid_t const *uid = NULL; guint32 item_number = 0; @@ -1681,7 +1681,7 @@ dissect_dcm_assoc_item(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin case DCM_ITEM_VALUE_TYPE_UID: *item_value = (gchar *)tvb_get_string_enc(pinfo->pool, tvb, offset+4, item_len, ENC_ASCII); - uid = (dcm_uid_t *)wmem_map_lookup(dcm_uid_table, (gpointer) *item_value); + uid = (dcm_uid_t const *)wmem_map_lookup(dcm_uid_table, (gpointer) *item_value); if (uid) { *item_description = uid->name; buf_desc = wmem_strdup_printf(pinfo->pool, "%s (%s)", *item_description, *item_value); @@ -1733,7 +1733,7 @@ dissect_dcm_assoc_sopclass_extneg(tvbuff_t *tvb, packet_info *pinfo, proto_tree gint32 cnt = 0; gchar *buf_desc = NULL; /* Used for item text */ - dcm_uid_t *sopclassuid=NULL; + dcm_uid_t const *sopclassuid=NULL; gchar *sopclassuid_str = NULL; item_len = tvb_get_ntohs(tvb, offset+2); @@ -1748,7 +1748,7 @@ dissect_dcm_assoc_sopclass_extneg(tvbuff_t *tvb, packet_info *pinfo, proto_tree proto_tree_add_item(assoc_item_extneg_tree, hf_dcm_info_extneg_sopclassuid_len, tvb, offset+4, 2, ENC_BIG_ENDIAN); sopclassuid_str = (gchar *)tvb_get_string_enc(pinfo->pool, tvb, offset+6, sop_class_uid_len, ENC_ASCII); - sopclassuid = (dcm_uid_t *)wmem_map_lookup(dcm_uid_table, (gpointer) sopclassuid_str); + sopclassuid = (dcm_uid_t const *)wmem_map_lookup(dcm_uid_table, (gpointer) sopclassuid_str); if (sopclassuid) { buf_desc = wmem_strdup_printf(pinfo->pool, "%s (%s)", sopclassuid->name, sopclassuid->value); @@ -1907,7 +1907,7 @@ dissect_dcm_assoc_role_selection(tvbuff_t *tvb, packet_info *pinfo, proto_tree * guint8 scp_role, scu_role; gchar *buf_desc; /* Used for item text */ - dcm_uid_t *sopclassuid; + dcm_uid_t const *sopclassuid; gchar *sopclassuid_str; item_len = tvb_get_ntohs(tvb, offset+2); @@ -1922,7 +1922,7 @@ dissect_dcm_assoc_role_selection(tvbuff_t *tvb, packet_info *pinfo, proto_tree * proto_tree_add_item(assoc_item_rolesel_tree, hf_dcm_info_rolesel_sopclassuid_len, tvb, offset+4, 2, ENC_BIG_ENDIAN); sopclassuid_str = (gchar *)tvb_get_string_enc(pinfo->pool, tvb, offset+6, sop_class_uid_len, ENC_ASCII); - sopclassuid = (dcm_uid_t *)wmem_map_lookup(dcm_uid_table, (gpointer) sopclassuid_str); + sopclassuid = (dcm_uid_t const *)wmem_map_lookup(dcm_uid_table, (gpointer) sopclassuid_str); scu_role = tvb_get_guint8(tvb, offset+6+sop_class_uid_len); scp_role = tvb_get_guint8(tvb, offset+7+sop_class_uid_len); @@ -2574,7 +2574,7 @@ dissect_dcm_tag_value(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, dcm_s */ gchar *vals; - dcm_uid_t *uid = NULL; + dcm_uid_t const *uid = NULL; guint8 val8; val8 = tvb_get_guint8(tvb, offset + vl_max - 1); @@ -2594,7 +2594,7 @@ dissect_dcm_tag_value(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, dcm_s if ((strncmp(vr, "UI", 2) == 0)) { /* This is a UID. Attempt a lookup. Will only return something for classes of course */ - uid = (dcm_uid_t *)wmem_map_lookup(dcm_uid_table, (gpointer) vals); + uid = (dcm_uid_t const *)wmem_map_lookup(dcm_uid_table, (gpointer) vals); if (uid) { *tag_value = wmem_strdup_printf(pinfo->pool, "%s (%s)", vals, uid->name); } @@ -2828,19 +2828,19 @@ dcm_tag_is_open(dcm_state_pdv_t *pdv, guint32 startpos, guint32 offset, guint32 } } -static dcm_tag_t* +static dcm_tag_t const * dcm_tag_lookup(guint16 grp, guint16 elm) { - static dcm_tag_t *tag_def = NULL; + static dcm_tag_t const *tag_def = NULL; - static dcm_tag_t tag_unknown = { 0x00000000, "(unknown)", "UN", "1", 0, 0}; - static dcm_tag_t tag_private = { 0x00000000, "Private Tag", "UN", "1", 0, 0 }; - static dcm_tag_t tag_private_grp_len = { 0x00000000, "Private Tag Group Length", "UL", "1", 0, 0 }; - static dcm_tag_t tag_grp_length = { 0x00000000, "Group Length", "UL", "1", 0, 0 }; + static dcm_tag_t const tag_unknown = { 0x00000000, "(unknown)", "UN", "1", 0, 0}; + static dcm_tag_t const tag_private = { 0x00000000, "Private Tag", "UN", "1", 0, 0 }; + static dcm_tag_t const tag_private_grp_len = { 0x00000000, "Private Tag Group Length", "UL", "1", 0, 0 }; + static dcm_tag_t const tag_grp_length = { 0x00000000, "Group Length", "UL", "1", 0, 0 }; /* Try a direct hit first before doing a masked search */ - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | elm)); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | elm)); if (tag_def == NULL) { @@ -2858,23 +2858,23 @@ dcm_tag_lookup(guint16 grp, guint16 elm) /* There are a few tags that require a mask to be found */ else if (((grp & 0xFF00) == 0x5000) || ((grp & 0xFF00) == 0x6000) || ((grp & 0xFF00) == 0x7F00)) { /* Do a special for groups 0x50xx, 0x60xx and 0x7Fxx */ - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER((((guint32)grp & 0xFF00) << 16) | elm)); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER((((guint32)grp & 0xFF00) << 16) | elm)); } else if ((grp == 0x0020) && ((elm & 0xFF00) == 0x3100)) { - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF00))); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF00))); } else if ((grp == 0x0028) && ((elm & 0xFF00) == 0x0400)) { /* This map was done to 0x041x */ - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF0F) | 0x0010)); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF0F) | 0x0010)); } else if ((grp == 0x0028) && ((elm & 0xFF00) == 0x0800)) { - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF0F))); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0xFF0F))); } else if (grp == 0x1000) { - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0x000F))); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0x000F))); } else if (grp == 0x1010) { - tag_def = (dcm_tag_t *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0x0000))); + tag_def = (dcm_tag_t const *)wmem_map_lookup(dcm_tag_table, GUINT_TO_POINTER(((guint32)grp << 16) | (elm & 0x0000))); } if (tag_def == NULL) { @@ -2920,6 +2920,7 @@ Decode one tag. If it is a sequence or item start create a subtree. Returns new http://dicom.nema.org/medical/dicom/current/output/chtml/part05/chapter_7.html */ static guint32 +// NOLINTNEXTLINE(misc-no-recursion) dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, dcm_state_pdv_t *pdv, guint32 offset, guint32 endpos, gboolean is_first_tag, const gchar **tag_description, @@ -2927,11 +2928,11 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, { - proto_tree *tag_ptree = NULL; /* Tree for decoded tag details */ - proto_tree *seq_ptree = NULL; /* Possible subtree for sequences and items */ + proto_tree *tag_ptree = NULL; /* Tree for decoded tag details */ + proto_tree *seq_ptree = NULL; /* Possible subtree for sequences and items */ - proto_item *tag_pitem = NULL; - dcm_tag_t *tag_def = NULL; + proto_item *tag_pitem = NULL; + dcm_tag_t const *tag_def = NULL; gint ett; @@ -3220,6 +3221,7 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (vl == 0xFFFFFFFF) { /* Undefined length */ + increment_dissection_depth(pinfo); while ((!local_end_of_seq_or_item) && (!pdv->open_tag.is_header_fragmented) && (offset < endpos)) { offset = dissect_dcm_tag(tvb, pinfo, seq_ptree, pdv, offset, endpos, FALSE, &item_description, &local_end_of_seq_or_item); @@ -3229,11 +3231,13 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, is_first_desc = FALSE; } } + decrement_dissection_depth(pinfo); } else { /* Defined length */ endpos_item = offset + vl_max; + increment_dissection_depth(pinfo); while (offset < endpos_item) { offset = dissect_dcm_tag(tvb, pinfo, seq_ptree, pdv, offset, endpos_item, FALSE, &item_description, &local_end_of_seq_or_item); @@ -3243,6 +3247,7 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, is_first_desc = FALSE; } } + decrement_dissection_depth(pinfo); } } /* if ((is_sequence || is_item) && (vl > 0)) */ else if ((grp == 0xFFFE) && (elm == 0xE00D)) { @@ -3292,7 +3297,9 @@ dissect_dcm_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, else { /* Regular value. Identify the type, decode and display */ + increment_dissection_depth(pinfo); offset = dissect_dcm_tag_value(tvb, pinfo, tag_ptree, pdv, offset, grp, elm, vl, vl_max, vr, &tag_value); + decrement_dissection_depth(pinfo); /* ------------------------------------------------------------- We have decoded the value. Now store those tags of interest diff --git a/epan/dissectors/packet-dcm.h b/epan/dissectors/packet-dcm.h index e132f31e..3b44b8d1 100644 --- a/epan/dissectors/packet-dcm.h +++ b/epan/dissectors/packet-dcm.h @@ -93,7 +93,7 @@ typedef struct dcm_tag { const gboolean add_to_summary; /* Add to parent's item description */ } dcm_tag_t; -static dcm_tag_t dcm_tag_data[] = { +static dcm_tag_t const dcm_tag_data[] = { /* Command Tags */ { 0x00000000, "Command Group Length", "UL", "1", 0, 0}, @@ -5498,7 +5498,7 @@ typedef struct dcm_uid { #define DCM_UID_LDAP_OID_DICOMTRANSFERCAPABILITY "1.2.840.10008.15.0.4.8" #define DCM_UID_SYNCHRONIZATION_FRAME_OF_REFERENCE_UNIVERSAL_COORDINATED_TIME "1.2.840.10008.15.1.1" -static dcm_uid_t dcm_uid_data[] = { +static dcm_uid_t const dcm_uid_data[] = { { DCM_UID_SOP_CLASS_VERIFICATION, "Verification SOP Class", "SOP Class"}, { DCM_UID_TRANSFER_SYNTAX_IMPLICIT_VR_LITTLE_ENDIAN, "Implicit VR Little Endian: Default Transfer Syntax for DICOM", "Transfer Syntax"}, { DCM_UID_TRANSFER_SYNTAX_EXPLICIT_VR_LITTLE_ENDIAN, "Explicit VR Little Endian", "Transfer Syntax"}, diff --git a/epan/dissectors/packet-dcom.c b/epan/dissectors/packet-dcom.c index 14f7d601..a3eb6142 100644 --- a/epan/dissectors/packet-dcom.c +++ b/epan/dissectors/packet-dcom.c @@ -1289,6 +1289,7 @@ dissect_dcom_VARTYPE(tvbuff_t *tvb, int offset, packet_info *pinfo, int +// NOLINTNEXTLINE(misc-no-recursion) dissect_dcom_VARIANT(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep, int hfindex) { @@ -1349,6 +1350,7 @@ dissect_dcom_VARIANT(tvbuff_t *tvb, int offset, packet_info *pinfo, offset = dissect_dcom_dcerpc_pointer(tvb, offset, pinfo, sub_tree, di, drep, &u32Pointer); } + increment_dissection_depth(pinfo); switch (u32VarType) { case(WIRESHARK_VT_EMPTY): break; @@ -1445,6 +1447,7 @@ dissect_dcom_VARIANT(tvbuff_t *tvb, int offset, packet_info *pinfo, offset = dissect_dcom_tobedone_data(tvb, offset, pinfo, sub_tree, drep, 10000); } + decrement_dissection_depth(pinfo); /* update subtree header */ proto_item_append_text(sub_item, ": %s", diff --git a/epan/dissectors/packet-dhcpv6.c b/epan/dissectors/packet-dhcpv6.c index 1ca4ac36..bbbbff83 100644 --- a/epan/dissectors/packet-dhcpv6.c +++ b/epan/dissectors/packet-dhcpv6.c @@ -1843,6 +1843,7 @@ cablelabs_fmt_dpoe_server_version( gchar *result, guint32 revision ) /* Returns the number of bytes consumed by this option. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int off, int eoff, gboolean *at_end, int protocol, hopcount_info hpi, guint8 msgtype) { @@ -1883,6 +1884,8 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, proto_tree_add_item(subtree, hf_option_length, tvb, off + 2, 2, ENC_BIG_ENDIAN); off += 4; + increment_dissection_depth(pinfo); + switch (opttype) { case OPTION_CLIENTID: if (optlen > 0) { @@ -2949,12 +2952,15 @@ dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, break; } + decrement_dissection_depth(pinfo); + return 4 + optlen; } -/* May be called recursively */ +/* May be called recursively via dhcpv6_option */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_dhcpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off, int eoff, hopcount_info hpi) { diff --git a/epan/dissectors/packet-disp.c b/epan/dissectors/packet-disp.c index 7d206fb0..61325352 100644 --- a/epan/dissectors/packet-disp.c +++ b/epan/dissectors/packet-disp.c @@ -232,7 +232,6 @@ static int dissect_disp_Subtree(bool implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_disp_IncrementalStepRefresh(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1042,15 +1041,14 @@ static const ber_sequence_t Subtree_sequence[] = { static int dissect_disp_Subtree(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Subtree → Subtree/subtree → Subtree + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, Subtree_sequence, hf_index, ett_disp_Subtree); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1206,15 +1204,14 @@ static const ber_sequence_t IncrementalStepRefresh_sequence[] = { static int dissect_disp_IncrementalStepRefresh(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // IncrementalStepRefresh → IncrementalStepRefresh/subordinateUpdates → SubordinateChanges → IncrementalStepRefresh + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-docsis-macmgmt.c b/epan/dissectors/packet-docsis-macmgmt.c index 23864bbf..e3bf924a 100644 --- a/epan/dissectors/packet-docsis-macmgmt.c +++ b/epan/dissectors/packet-docsis-macmgmt.c @@ -3832,6 +3832,7 @@ dissect_uccrsp (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* da * attributes. It's called recursively, to dissect embedded attributes */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_attrs (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) { guint8 type; @@ -3883,6 +3884,7 @@ dissect_attrs (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) ti = proto_tree_add_item (attr_tree, hf_docsis_bpkmattr_cm_id, tvb, pos, length, ENC_NA); attr_subtree = proto_item_add_subtree(ti, ett_docsis_bpkmattr_cmid); attr_tvb = tvb_new_subset_length (tvb, pos, length); + // We recurse here, but we're limited by our packet length and the depth check in proto_tree_add_node. dissect_attrs (attr_tvb, pinfo, attr_subtree); break; case BPKM_DISPLAY_STR: diff --git a/epan/dissectors/packet-dof.c b/epan/dissectors/packet-dof.c index d1075a2c..a8e07d5e 100644 --- a/epan/dissectors/packet-dof.c +++ b/epan/dissectors/packet-dof.c @@ -813,7 +813,7 @@ static int dissect_2008_16_security_13(tvbuff_t *tvb, packet_info *pinfo, proto_ static int dissect_2009_11_type_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data); static int dissect_2009_11_type_5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -static const gchar* dof_oid_create_standard_string(guint32 bufferSize, const guint8 *pOIDBuffer); +static const gchar* dof_oid_create_standard_string(guint32 bufferSize, const guint8 *pOIDBuffer, packet_info *pinfo); static const gchar* dof_iid_create_standard_string(guint32 bufferSize, const guint8 *pIIDBuffer); static guint8 dof_oid_create_internal(const char *oid, guint32 *size, guint8 *buffer); static void dof_oid_new_standard_string(const char *data, guint32 *rsize, guint8 **oid); @@ -1340,7 +1340,7 @@ typedef struct static oap_1_binding* oap_1_resolve_alias(oap_1_alias_key *key); -static int oap_1_tree_add_alias(dof_api_data *api_data, oap_1_packet_data *oap_packet _U_, dof_packet_data *packet, proto_tree *tree, tvbuff_t *tvb, gint offset, guint8 alias_length, guint8 resolve) +static int oap_1_tree_add_alias(dof_api_data *api_data, oap_1_packet_data *oap_packet _U_, dof_packet_data *packet, proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset, guint8 alias_length, guint8 resolve) { dof_session_data *session = api_data->session; proto_item *ti; @@ -1381,7 +1381,7 @@ static int oap_1_tree_add_alias(dof_api_data *api_data, oap_1_packet_data *oap_p proto_item_set_generated(ti); /* Decode the Object ID */ - ti = proto_tree_add_bytes_format_value(tree, hf_oap_1_objectid, tvb, 0, 0, binding->oid, "%s", dof_oid_create_standard_string(binding->oid_length, binding->oid)); + ti = proto_tree_add_bytes_format_value(tree, hf_oap_1_objectid, tvb, 0, 0, binding->oid, "%s", dof_oid_create_standard_string(binding->oid_length, binding->oid, pinfo)); proto_item_set_generated(ti); proto_tree_add_uint_format(options_tree, hf_oap_1_alias_frame, @@ -3061,6 +3061,7 @@ static int dissect_2008_16_security_13(tvbuff_t *tvb, packet_info *pinfo, proto_ * * If 'tree' is NULL then just return the length. */ +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_2009_11_type_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { proto_item *ti; @@ -3075,7 +3076,7 @@ static gint dissect_2009_11_type_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree if (tree) { ti = proto_tree_get_parent(tree); - proto_item_set_text(ti, "Object ID: %s", dof_oid_create_standard_string(tvb_reported_length(tvb), tvb_get_ptr(tvb, 0, tvb_reported_length(tvb)))); + proto_item_set_text(ti, "Object ID: %s", dof_oid_create_standard_string(tvb_reported_length(tvb), tvb_get_ptr(tvb, 0, tvb_reported_length(tvb)), pinfo)); } offset = read_c4(tvb, offset, &oid_class, &oid_class_len); @@ -3120,7 +3121,9 @@ static gint dissect_2009_11_type_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree ti = proto_tree_add_item(tree, hf_oid_all_attribute_data, tvb, offset, -1, ENC_NA); attribute_tree = proto_item_add_subtree(ti, ett_oid_attribute); flag = tvb_get_guint8(tvb, offset); + increment_dissection_depth(pinfo); attribute_length = dissect_2009_11_type_5(packet, pinfo, attribute_tree); + decrement_dissection_depth(pinfo); proto_item_set_len(ti, (const gint)attribute_length); offset += attribute_length; } @@ -3152,6 +3155,7 @@ static gint dissect_2009_11_type_4(tvbuff_t *tvb, packet_info *pinfo, proto_tree * * If 'tree' is NULL then just return the length. */ +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_2009_11_type_5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_item *ti; @@ -3190,7 +3194,9 @@ static int dissect_2009_11_type_5(tvbuff_t *tvb, packet_info *pinfo, proto_tree ti = proto_tree_add_item(tree, hf_oid_attribute_oid, tvb, offset, -1, ENC_NA); attribute_tree = proto_item_add_subtree(ti, ett_oid_attribute_oid); + increment_dissection_depth(pinfo); offset += dissect_2009_11_type_4(packet, pinfo, attribute_tree, NULL); + decrement_dissection_depth(pinfo); } break; @@ -4084,7 +4090,8 @@ static DOFObjectID DOFObjectID_Create_Bytes(guint32 bufferSize, const guint8 *pO return rval; } -static guint32 ObjectID_ToStringLength(const DOFObjectID oid) +// NOLINTNEXTLINE(misc-no-recursion) +static guint32 ObjectID_ToStringLength(const DOFObjectID oid, packet_info *pinfo) { guint32 len = 0; @@ -4097,6 +4104,7 @@ static guint32 ObjectID_ToStringLength(const DOFObjectID oid) len += 4; /* Four more hex digits. */ else if (DOFObjectID_GetIDClass(oid) & 0xFF00) len += 2; /* Two more hex digits. */ + increment_dissection_depth(pinfo); /* Handle Attributes, if any. */ if (DOFObjectID_HasAttributes(oid)) { @@ -4120,7 +4128,7 @@ static guint32 ObjectID_ToStringLength(const DOFObjectID oid) DOFObjectIDAttribute_GetValue(avpDescriptor)); if (embedOID) { - len += ObjectID_ToStringLength(embedOID); /* Recurse to compute string rep length of found OID. */ + len += ObjectID_ToStringLength(embedOID, pinfo); /* Recurse to compute string rep length of found OID. */ DOFObjectID_Destroy(embedOID); } else @@ -4131,6 +4139,7 @@ static guint32 ObjectID_ToStringLength(const DOFObjectID oid) } } /* end for(). */ } + decrement_dissection_depth(pinfo); return len; } @@ -4167,7 +4176,8 @@ static guint32 InterfaceID_ToString(const guint8 *iid, char *pBuf) return len; } -static guint32 ObjectID_ToString(const DOFObjectID oid, char *pBuf) +// NOLINTNEXTLINE(misc-no-recursion) +static guint32 ObjectID_ToString(const DOFObjectID oid, char *pBuf, packet_info *pinfo) { DOFObjectIDClass oidClass; guint32 len = 0; @@ -4225,7 +4235,9 @@ static guint32 ObjectID_ToString(const DOFObjectID oid, char *pBuf) DOFObjectIDAttribute_GetValue(avpDescriptor)); if (embedOID) { - len += ObjectID_ToString(embedOID, &pBuf[len]); /* Recurse to output string rep of found OID. */ + increment_dissection_depth(pinfo); + len += ObjectID_ToString(embedOID, &pBuf[len], pinfo); /* Recurse to output string rep of found OID. */ + decrement_dissection_depth(pinfo); DOFObjectID_Destroy(embedOID); } else @@ -4257,7 +4269,7 @@ static const gchar* dof_iid_create_standard_string(guint32 bufferSize, const gui return pRetval; } -static const gchar* dof_oid_create_standard_string(guint32 bufferSize, const guint8 *pOIDBuffer) +static const gchar* dof_oid_create_standard_string(guint32 bufferSize, const guint8 *pOIDBuffer, packet_info *pinfo) { DOFObjectID oid; gchar *pRetval; @@ -4267,12 +4279,12 @@ static const gchar* dof_oid_create_standard_string(guint32 bufferSize, const gui if (!oid) return "Illegal OID"; - len = ObjectID_ToStringLength(oid); + len = ObjectID_ToStringLength(oid, pinfo); /* Use PCRMem_Alloc() and not DOFMem_Alloc() because app caller will be freeing memory with PCRMem_Destroy(). */ pRetval = (gchar *)wmem_alloc(wmem_packet_scope(), len + 1); if (pRetval) { - ObjectID_ToString(oid, pRetval); + ObjectID_ToString(oid, pRetval, pinfo); pRetval[len] = 0; } @@ -4287,6 +4299,7 @@ struct parseCtx guint32 oidLen; guint32 currOidPos; guint32 currBufferPos; + unsigned depth; }parseCtx; /* Operations on OID string */ @@ -4537,22 +4550,29 @@ static guint8 parseAttributeID(struct parseCtx *ctx) return 1; } +// NOLINTNEXTLINE(misc-no-recursion) static guint8 parseAttributeData(struct parseCtx *ctx) { + uint8_t ret; + ctx->depth++; + DISSECTOR_ASSERT(ctx->depth < prefs.gui_max_tree_depth); if (PARSECTX_PEEK_CHAR_OID(ctx) == '[') { - return parseFormatOID(ctx); + ret = parseFormatOID(ctx); } else if (PARSECTX_PEEK_CHAR_OID(ctx) == '{') { - return parseHexField(ctx); + ret = parseHexField(ctx); } else { - return parseStringField(ctx); + ret = parseStringField(ctx); } + ctx->depth--; + return ret; } +// NOLINTNEXTLINE(misc-no-recursion) static guint8 parseAttribute(struct parseCtx *ctx) { if (parseAttributeID(ctx) == 0) @@ -4603,6 +4623,7 @@ static guint8 parseAttributes(struct parseCtx *ctx) return 1; } +// NOLINTNEXTLINE(misc-no-recursion) static guint8 parseFormatOID(struct parseCtx *ctx) { /* oid must start with '[' */ @@ -4658,12 +4679,10 @@ static guint8 parseFormatOID(struct parseCtx *ctx) static guint8 dof_oid_create_internal(const char *oid, guint32 *size, guint8 *buffer) { - struct parseCtx ctx; + struct parseCtx ctx = {0}; ctx.oid = oid; ctx.buffer = buffer; - ctx.currOidPos = 0; - ctx.currBufferPos = 0; if (oid) { @@ -6765,7 +6784,7 @@ static int dissect_dpp_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo if (packet_data->sender_sid) { - const gchar *SID = dof_oid_create_standard_string(packet_data->sender_sid[0], packet_data->sender_sid + 1); + const gchar *SID = dof_oid_create_standard_string(packet_data->sender_sid[0], packet_data->sender_sid + 1, pinfo); ti = proto_tree_add_bytes_format_value(tree, hf_2008_1_dpp_sid_str, tvb, 0, 0, packet_data->sender_sid, "%s", SID); proto_item_set_generated(ti); } @@ -6776,7 +6795,7 @@ static int dissect_dpp_2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo if (packet_data->receiver_sid) { - const gchar *SID = dof_oid_create_standard_string(packet_data->receiver_sid[0], packet_data->receiver_sid + 1); + const gchar *SID = dof_oid_create_standard_string(packet_data->receiver_sid[0], packet_data->receiver_sid + 1, pinfo); ti = proto_tree_add_bytes_format_value(tree, hf_2008_1_dpp_rid_str, tvb, 0, 0, packet_data->receiver_sid, "%s", SID); proto_item_set_generated(ti); } @@ -8313,7 +8332,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); @@ -8356,7 +8375,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); @@ -8392,7 +8411,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); @@ -8429,7 +8448,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); @@ -8455,7 +8474,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); @@ -8488,7 +8507,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_length, FALSE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_length, FALSE); iid_offset = offset; offset = oap_1_tree_add_interface(oap_tree, tvb, offset); @@ -8546,7 +8565,7 @@ static int dissect_oap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void expert_add_info(pinfo, ti, &ei_oap_no_session); return offset; } - offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, offset, alias_len, TRUE); + offset = oap_1_tree_add_alias(api_data, oap_packet, packet_data, oap_tree, tvb, pinfo, offset, alias_len, TRUE); } else offset = oap_1_tree_add_binding(oap_tree, pinfo, tvb, offset); diff --git a/epan/dissectors/packet-dvb-s2-bb.c b/epan/dissectors/packet-dvb-s2-bb.c index 3f603b20..f1ee9b15 100644 --- a/epan/dissectors/packet-dvb-s2-bb.c +++ b/epan/dissectors/packet-dvb-s2-bb.c @@ -1310,7 +1310,7 @@ static int dissect_dvb_s2_gse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre next_tvb = process_reassembled_data(tvb, new_off, pinfo, "Reassembled GSE", dvbs2_frag_head, &dvb_s2_gse_frag_items, &update_col_info, tree); - if (next_tvb != NULL) { + if (next_tvb != NULL && subpacket_data) { /* We have a reassembled packet. */ complete = TRUE; labeltype = subpacket_data->labeltype; diff --git a/epan/dissectors/packet-e2ap.c b/epan/dissectors/packet-e2ap.c index 19069a79..e1952aba 100644 --- a/epan/dissectors/packet-e2ap.c +++ b/epan/dissectors/packet-e2ap.c @@ -2100,7 +2100,6 @@ static int dissect_e2ap_RANParameter_Definition(tvbuff_t *tvb _U_, int offset _U static int dissect_e2ap_RANParameter_ValueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static const value_string e2ap_Criticality_vals[] = { { 0, "reject" }, @@ -7286,15 +7285,14 @@ static const per_sequence_t RANParameter_Testing_Item_sequence[] = { static int dissect_e2ap_RANParameter_Testing_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 5; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // RANParameter-Testing-Item → RANParameter-Testing-Item/ranParameter-Type → RANParameter-Testing-Item-Choice-List → RANParameter-Testing-LIST → RANParameter-Testing-Item + actx->pinfo->dissection_depth += 4; + increment_dissection_depth(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_Testing_Item, RANParameter_Testing_Item_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 4; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -7679,15 +7677,14 @@ static const per_sequence_t RANParameter_Definition_sequence[] = { static int dissect_e2ap_RANParameter_Definition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // RANParameter-Definition → RANParameter-Definition-Choice → RANParameter-Definition-Choice-LIST → RANParameter-Definition-Choice-LIST/ranParameter-List → RANParameter-Definition-Choice-LIST-Item → RANParameter-Definition + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_Definition, RANParameter_Definition_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -7837,16 +7834,15 @@ static const per_choice_t RANParameter_ValueType_choice[] = { static int dissect_e2ap_RANParameter_ValueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // RANParameter-ValueType → RANParameter-ValueType-Choice-Structure → RANParameter-STRUCTURE → RANParameter-STRUCTURE/sequence-of-ranParameters → RANParameter-STRUCTURE-Item → RANParameter-ValueType + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_ValueType, RANParameter_ValueType_choice, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-edonkey.c b/epan/dissectors/packet-edonkey.c index 3cb1a64f..8e338abe 100644 --- a/epan/dissectors/packet-edonkey.c +++ b/epan/dissectors/packet-edonkey.c @@ -1653,6 +1653,7 @@ static int dissect_kademlia2_peer(tvbuff_t *tvb, packet_info *pinfo, /* Dissects the eDonkey search query */ +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_edonkey_search_query(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree) { @@ -1668,6 +1669,7 @@ static int dissect_edonkey_search_query(tvbuff_t *tvb, packet_info *pinfo, search_length = 1; ti = proto_tree_add_uint(tree, hf_edonkey_search_type, tvb, offset, 1, search_type); + increment_dissection_depth(pinfo); switch (search_type) { case EDONKEY_SEARCH_BOOL: @@ -1752,6 +1754,7 @@ static int dissect_edonkey_search_query(tvbuff_t *tvb, packet_info *pinfo, offset += search_length; break; } + decrement_dissection_depth(pinfo); return offset; } @@ -2507,6 +2510,7 @@ static int dissect_kademlia_search_result(tvbuff_t *tvb, packet_info *pinfo, return dissect_kademlia_taglist( tvb, pinfo, offset, tree ); } +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_kademlia_search_expression_tree(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree) { @@ -2518,6 +2522,7 @@ static int dissect_kademlia_search_expression_tree(tvbuff_t *tvb, packet_info *p ti = proto_tree_add_uint(tree, hf_kademlia_search_expression_type, tvb, offset, 1, op); tree = proto_item_add_subtree( ti, ett_kademlia_search_expression ); ++offset; + increment_dissection_depth(pinfo); switch( op ) { case 0: /* Bool op */ proto_tree_add_item(tree, hf_kademlia_search_bool_op, tvb, offset, 1, ENC_NA ); @@ -2553,6 +2558,7 @@ static int dissect_kademlia_search_expression_tree(tvbuff_t *tvb, packet_info *p default: expert_add_info_format(pinfo, ti, &ei_kademlia_search_expression_type, "NOT DECODED op %x", op ); } + decrement_dissection_depth(pinfo); proto_item_set_len( ti, offset - item_start_offset ); return offset; } diff --git a/epan/dissectors/packet-enrp.c b/epan/dissectors/packet-enrp.c index 2611e12a..70114dcc 100644 --- a/epan/dissectors/packet-enrp.c +++ b/epan/dissectors/packet-enrp.c @@ -102,6 +102,7 @@ static guint64 enrp_total_msgs = 0; static guint64 enrp_total_bytes = 0; static expert_field ei_enrp_max_recursion_depth_reached = EI_INIT; +static expert_field ei_enrp_invalid_length = EI_INIT; static void dissect_parameters(tvbuff_t *, packet_info *, proto_tree *); @@ -114,6 +115,7 @@ dissect_enrp(tvbuff_t *, packet_info *, proto_tree *, void*); #define ENRP_UDP_PORT 9901 #define ENRP_SCTP_PORT 9901 +#define ENRP_MAX_RECURSION_DEPTH 10 typedef struct _enrp_tap_rec_t { guint8 type; @@ -137,6 +139,7 @@ dissect_unknown_cause(tvbuff_t *cause_tvb, proto_tree *cause_tree, proto_item *c } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *parameter_tree) { guint16 code, length, padding_length; @@ -194,6 +197,7 @@ dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *paramet } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_causes(tvbuff_t *error_causes_tvb, packet_info *pinfo, proto_tree *parameter_tree) { guint16 length, total_length; @@ -203,6 +207,12 @@ dissect_error_causes(tvbuff_t *error_causes_tvb, packet_info *pinfo, proto_tree offset = 0; while(tvb_reported_length_remaining(error_causes_tvb, offset) > 0) { length = tvb_get_ntohs(error_causes_tvb, offset + CAUSE_LENGTH_OFFSET); + if (length < 4) { + proto_tree_add_expert_format(parameter_tree, pinfo, &ei_enrp_invalid_length, + error_causes_tvb, offset + CAUSE_LENGTH_OFFSET, 2, + "Error cause length must be at least 4 bytes"); + return; + } total_length = WS_ROUNDUP_4(length); error_cause_tvb = tvb_new_subset_length(error_causes_tvb, offset, total_length); dissect_error_cause(error_cause_tvb, pinfo, parameter_tree); @@ -227,6 +237,7 @@ dissect_ipv6_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree * } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_dccp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -240,6 +251,7 @@ dissect_dccp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sctp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -252,6 +264,7 @@ dissect_sctp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_tcp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -264,6 +277,7 @@ dissect_tcp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pro } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_udp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -276,6 +290,7 @@ dissect_udp_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pro } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_udp_lite_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -360,6 +375,7 @@ dissect_pool_handle_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_pool_element_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t* parameters_tvb; @@ -373,6 +389,7 @@ dissect_pool_element_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, prot } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_server_information_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -384,6 +401,7 @@ dissect_server_information_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_operation_error_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *error_causes_tvb; @@ -432,12 +450,22 @@ dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, p } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *enrp_tree) { guint16 type, length, padding_length; proto_tree *parameter_item; proto_tree *parameter_tree; + unsigned recursion_depth = p_get_proto_depth(pinfo, proto_enrp); + + if (recursion_depth > ENRP_MAX_RECURSION_DEPTH) { + proto_tree_add_expert(enrp_tree, pinfo, &ei_enrp_max_recursion_depth_reached, + parameter_tvb, 0, 0); + return; + } + p_set_proto_depth(pinfo, proto_enrp, recursion_depth + 1); + /* extract tag and length from the parameter */ type = tvb_get_ntohs(parameter_tvb, PARAMETER_TYPE_OFFSET); length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET); @@ -504,9 +532,12 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *enrp_ if (padding_length > 0) proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA); + + p_set_proto_depth(pinfo, proto_enrp, recursion_depth); } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree) { gint offset, length, total_length, remaining_length; @@ -515,6 +546,11 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre offset = 0; while((remaining_length = tvb_reported_length_remaining(parameters_tvb, offset)) > 0) { length = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_LENGTH_OFFSET); + if (length < 4) { + proto_tree_add_expert(tree, pinfo, &ei_enrp_invalid_length, + parameters_tvb, offset + PARAMETER_LENGTH_OFFSET, 2); + return; + } total_length = WS_ROUNDUP_4(length); if (remaining_length >= length) total_length = MIN(total_length, remaining_length); @@ -543,6 +579,7 @@ static const true_false_string reply_required_bit_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_presence_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *message_tree, proto_tree *flags_tree) { tvbuff_t *parameters_tvb; @@ -585,6 +622,7 @@ static const true_false_string more_to_send_bit_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_handle_table_response_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *message_tree, proto_tree *flags_tree) { tvbuff_t *parameters_tvb; @@ -617,6 +655,7 @@ static const true_false_string tos_bit_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_handle_update_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *message_tree, proto_tree *flags_tree) { tvbuff_t *parameters_tvb; @@ -639,6 +678,7 @@ dissect_enrp_list_request_message(tvbuff_t *message_tvb, packet_info *pinfo _U_, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_list_response_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *message_tree, proto_tree *flags_tree) { tvbuff_t *parameters_tvb; @@ -681,6 +721,7 @@ dissect_enrp_init_takeover_server_message(tvbuff_t *message_tvb, packet_info *pi } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_error_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *message_tree, proto_tree *flags_tree _U_) { tvbuff_t *parameters_tvb; @@ -722,6 +763,7 @@ static const value_string message_type_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *enrp_tree) { enrp_tap_rec_t *tap_rec; @@ -783,21 +825,20 @@ dissect_enrp_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *enrp } } -#define ENRP_MAX_RECURSION_DEPTH 10 - static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_enrp_main(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree) { proto_item *enrp_item; proto_tree *enrp_tree; unsigned recursion_depth = p_get_proto_depth(pinfo, proto_enrp); - if (++recursion_depth >= ENRP_MAX_RECURSION_DEPTH) { + if (recursion_depth > ENRP_MAX_RECURSION_DEPTH) { proto_tree_add_expert(tree, pinfo, &ei_enrp_max_recursion_depth_reached, message_tvb, 0, 0); return; } - p_set_proto_depth(pinfo, proto_enrp, recursion_depth); + p_set_proto_depth(pinfo, proto_enrp, recursion_depth + 1); /* create the enrp protocol tree */ enrp_item = proto_tree_add_item(tree, proto_enrp, message_tvb, 0, -1, ENC_NA); @@ -1111,7 +1152,9 @@ proto_register_enrp(void) static ei_register_info ei[] = { { &ei_enrp_max_recursion_depth_reached, { "enrp.max_recursion_depth_reached", - PI_PROTOCOL, PI_WARN, "Maximum allowed recursion depth reached - stop decoding", EXPFILL }} + PI_PROTOCOL, PI_WARN, "Maximum allowed recursion depth reached - stop decoding", EXPFILL }}, + { &ei_enrp_invalid_length, { "enrp.invalid_length", + PI_MALFORMED, PI_ERROR, "Parameter length must be at least 4 bytes", EXPFILL }} }; static tap_param enrp_stat_params[] = { diff --git a/epan/dissectors/packet-erldp.c b/epan/dissectors/packet-erldp.c index dcf50527..b44f333b 100644 --- a/epan/dissectors/packet-erldp.c +++ b/epan/dissectors/packet-erldp.c @@ -354,6 +354,7 @@ static gint dissect_etf_dist_header(packet_info *pinfo _U_, tvbuff_t *tvb, gint return offset; } +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_etf_tuple_content(gboolean large, packet_info *pinfo, tvbuff_t *tvb, gint offset, proto_tree *tree, const gchar **value_str _U_) { guint32 arity, i; @@ -415,12 +416,15 @@ static gint dissect_etf_big_ext(tvbuff_t *tvb, gint offset, guint32 len, proto_t return offset + len; } +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_etf_type_content(guint8 tag, packet_info *pinfo, tvbuff_t *tvb, gint offset, proto_tree *tree, const gchar **value_str) { gint32 int_val; guint32 len, i, uint_val; guint32 id; const guint8 *str_val; + increment_dissection_depth(pinfo); + switch (tag) { case ATOM_CACHE_REF: proto_tree_add_item_ret_uint(tree, hf_erldp_atom_cache_ref, tvb, offset, 1, ENC_BIG_ENDIAN, &uint_val); @@ -623,6 +627,8 @@ static gint dissect_etf_type_content(guint8 tag, packet_info *pinfo, tvbuff_t *t break; } + decrement_dissection_depth(pinfo); + return offset; } @@ -737,6 +743,7 @@ static gint dissect_etf_versioned_type(const gchar *label, packet_info *pinfo, t return dissect_etf_type(label, pinfo, tvb, offset, tree); } +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_etf_type(const gchar *label, packet_info *pinfo, tvbuff_t *tvb, gint offset, proto_tree *tree) { gint begin = offset; guint32 tag; diff --git a/epan/dissectors/packet-etch.c b/epan/dissectors/packet-etch.c index a651fdab..8d9b1919 100644 --- a/epan/dissectors/packet-etch.c +++ b/epan/dissectors/packet-etch.c @@ -139,11 +139,11 @@ static gboolean gbl_have_symbol = FALSE; * forward declared dissector methods */ static void read_key_value(unsigned int *offset, tvbuff_t *tvb, - proto_tree *etch_tree); + proto_tree *etch_tree, packet_info *pinfo); static void read_struct(unsigned int *offset, tvbuff_t *tvb, - proto_tree *etch_tree, int add_type_field); + proto_tree *etch_tree, packet_info *pinfo, int add_type_field); static int read_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, - int asWhat); + packet_info *pinfo, int asWhat); /************************************************************************ * Symbol value-string functions @@ -440,7 +440,8 @@ read_length(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) * read an array from tvb and add it to tree */ static void -read_array(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) +// NOLINTNEXTLINE(misc-no-recursion) +read_array(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, packet_info *pinfo) { int length; @@ -458,7 +459,7 @@ read_array(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) length = read_length(offset, tvb, etch_tree); for (; length > 0; length--) { - read_value(offset, tvb, etch_tree, hf_etch_value); + read_value(offset, tvb, etch_tree, pinfo, hf_etch_value); } /* terminaton */ read_type(offset, tvb, etch_tree); @@ -536,8 +537,9 @@ read_number(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, * read a value and add it to tree */ static int +// NOLINTNEXTLINE(misc-no-recursion) read_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, - int asWhat) + packet_info *pinfo, int asWhat) { guint8 type_code; @@ -550,12 +552,13 @@ read_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, return type_code; } + increment_dissection_depth(pinfo); switch(type_code) { case ETCH_TC_CUSTOM: - read_struct(offset, tvb, etch_tree, 1); + read_struct(offset, tvb, etch_tree, pinfo, 1); break; case ETCH_TC_ARRAY: - read_array(offset, tvb, etch_tree); + read_array(offset, tvb, etch_tree, pinfo); break; case ETCH_TC_STRING: read_string(offset, tvb, etch_tree); @@ -584,6 +587,7 @@ read_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, default: read_number(offset, tvb, etch_tree, asWhat, type_code); } + decrement_dissection_depth(pinfo); return 0; } @@ -592,7 +596,7 @@ read_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, */ static void read_struct(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, - int add_type_field) + packet_info *pinfo, int add_type_field) { proto_item *ti; proto_tree *new_tree; @@ -607,13 +611,13 @@ read_struct(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, read_type(offset, tvb, new_tree); } /* struct type as hash */ - read_value(offset, tvb, new_tree, hf_etch_value); + read_value(offset, tvb, new_tree, pinfo, hf_etch_value); /* struct length */ - length = read_value(offset, tvb, new_tree, hf_etch_length); + length = read_value(offset, tvb, new_tree, pinfo, hf_etch_length); for (i = 0; i < length; i++) { - read_key_value(offset, tvb, new_tree); + read_key_value(offset, tvb, new_tree, pinfo); } /* termination */ @@ -624,7 +628,8 @@ read_struct(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, * read a key value pair and add it to tree */ static void -read_key_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) +// NOLINTNEXTLINE(misc-no-recursion) +read_key_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree, packet_info *pinfo) { proto_tree *new_tree; proto_tree *new_tree_bck; @@ -641,7 +646,7 @@ read_key_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) ti = proto_tree_add_item(new_tree, hf_etch_keyname, tvb, *offset, 0, ENC_NA); new_tree = proto_item_add_subtree(ti, ett_etch_key); - read_value(offset, tvb, new_tree, hf_etch_value); + read_value(offset, tvb, new_tree, pinfo, hf_etch_value); /* append the symbol of the key */ if(gbl_have_symbol == TRUE){ @@ -651,7 +656,7 @@ read_key_value(unsigned int *offset, tvbuff_t *tvb, proto_tree *etch_tree) ti = proto_tree_add_item(new_tree_bck, hf_etch_valuename, tvb, *offset, 0, ENC_NA); new_tree = proto_item_add_subtree(ti, ett_etch_value); - read_value(offset, tvb, new_tree, hf_etch_value); + read_value(offset, tvb, new_tree, pinfo, hf_etch_value); } /*************************************************************************/ @@ -731,7 +736,7 @@ dissect_etch_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* proto_tree_add_item(etch_tree, hf_etch_sig, tvb, 0, 4, ENC_BIG_ENDIAN); proto_tree_add_item(etch_tree, hf_etch_length, tvb, 4, 4, ENC_BIG_ENDIAN); proto_tree_add_item(etch_tree, hf_etch_version, tvb, 8, 1, ENC_BIG_ENDIAN); - read_struct(&offset, tvb, etch_tree, 0); + read_struct(&offset, tvb, etch_tree, pinfo, 0); } return tvb_captured_length(tvb); @@ -920,10 +925,7 @@ void proto_register_etch(void) &ett_etch_value, }; - proto_etch = proto_register_protocol("Apache Etch Protocol", /* name */ - "Etch", /* short name */ - "etch" /* abbrev */ - ); + proto_etch = proto_register_protocol("Apache Etch Protocol", "Etch", "etch"); proto_register_field_array(proto_etch, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); diff --git a/epan/dissectors/packet-extrememesh.c b/epan/dissectors/packet-extrememesh.c index ca97fa9d..dedeb6b1 100644 --- a/epan/dissectors/packet-extrememesh.c +++ b/epan/dissectors/packet-extrememesh.c @@ -1462,6 +1462,7 @@ static gint dissect_extrememesh_probe(tvbuff_t *tvb, packet_info *pinfo, proto_t return MESH_NEXT_PROTOCOL_INVALID; } +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_extrememesh_mch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *meshTree = tree; @@ -1514,6 +1515,7 @@ static gint dissect_extrememesh_mch(tvbuff_t *tvb, packet_info *pinfo, proto_tre next_proto = MESH_NEXT_PROTOCOL_INVALID; break; case MESH_NEXT_PROTOCOL_MCH: + // We recurse here, but we'll run out of packet before we run out of stack. next_proto = dissect_extrememesh_mch(nextTvb, pinfo, meshTree); break; case MESH_NEXT_PROTOCOL_ENCAPSULATED_ETH: diff --git a/epan/dissectors/packet-fcswils.c b/epan/dissectors/packet-fcswils.c index e9fb3e70..904c5aa0 100644 --- a/epan/dissectors/packet-fcswils.c +++ b/epan/dissectors/packet-fcswils.c @@ -1207,6 +1207,7 @@ dissect_swils_zone_mbr(tvbuff_t *tvb, packet_info* pinfo, proto_tree *zmbr_tree, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_swils_zone_obj(tvbuff_t *tvb, packet_info* pinfo, proto_tree *zobj_tree, int offset) { proto_tree *zmbr_tree; @@ -1229,6 +1230,7 @@ dissect_swils_zone_obj(tvbuff_t *tvb, packet_info* pinfo, proto_tree *zobj_tree, offset += 8 + ZONENAME_LEN(tvb, offset+4); for (i = 0; i < numrec; i++) { if (objtype == FC_SWILS_ZONEOBJ_ZONESET) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_swils_zone_obj(tvb, pinfo, zobj_tree, offset); offset += get_zoneobj_len(tvb, offset); } diff --git a/epan/dissectors/packet-geonw.c b/epan/dissectors/packet-geonw.c index 34059574..77d7e282 100644 --- a/epan/dissectors/packet-geonw.c +++ b/epan/dissectors/packet-geonw.c @@ -1742,6 +1742,7 @@ static int dissect_sec_signer_info(tvbuff_t *tvb, gint *offset, packet_info *pin static int hf_sgeonw_certification_version = -1; static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_sec_certificate(tvbuff_t *tvb, gint *offset, packet_info *pinfo, proto_tree *tree, guint8 version) { guint32 tmp_val; @@ -1777,6 +1778,7 @@ dissect_sec_certificate(tvbuff_t *tvb, gint *offset, packet_info *pinfo, proto_t } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_sec_signer_info(tvbuff_t *tvb, gint *offset, packet_info *pinfo, proto_tree *tree, guint8 version) { gint start = *offset; @@ -1787,6 +1789,8 @@ dissect_sec_signer_info(tvbuff_t *tvb, gint *offset, packet_info *pinfo, proto_t proto_item *tinner; proto_tree *insidetree; + increment_dissection_depth(pinfo); + tmp_val = tvb_get_guint8(tvb, *offset); if (tmp_val == self) { // No additional data shall be given @@ -1836,6 +1840,7 @@ dissect_sec_signer_info(tvbuff_t *tvb, gint *offset, packet_info *pinfo, proto_t } proto_item_set_end(ti, tvb, *offset); } + decrement_dissection_depth(pinfo); return (*offset) - start; } diff --git a/epan/dissectors/packet-giop.c b/epan/dissectors/packet-giop.c index fd5c72ec..9e1c7325 100644 --- a/epan/dissectors/packet-giop.c +++ b/epan/dissectors/packet-giop.c @@ -2183,6 +2183,7 @@ static void set_new_alignment(int *offset, int delta, int alignment) { * * data_name is allowed to be NULL or empty string */ +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_data_for_typecode_with_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, gint *offset, gboolean stream_is_big_endian, guint32 boundary, @@ -2220,11 +2221,11 @@ static void dissect_data_for_typecode_with_params(tvbuff_t *tvb, packet_info *pi const gchar *buf = NULL; /* ptr to string buffer */ unsigned recursion_depth = p_get_proto_depth(pinfo, proto_giop); - if (++recursion_depth >= GIOP_MAX_RECURSION_DEPTH) { + if (recursion_depth > GIOP_MAX_RECURSION_DEPTH) { proto_tree_add_expert(tree, pinfo, &ei_giop_max_recursion_depth_reached, tvb, 0, 0); return; } - p_set_proto_depth(pinfo, proto_giop, recursion_depth); + p_set_proto_depth(pinfo, proto_giop, recursion_depth + 1); /* Grab the data according to data type */ @@ -2483,7 +2484,7 @@ static void dissect_data_for_typecode_with_params(tvbuff_t *tvb, packet_info *pi expert_add_info_format(pinfo, item, &ei_giop_unknown_typecode_datatype, "Unknown typecode data type %u", data_type); break; } - p_set_proto_depth(pinfo, proto_giop, recursion_depth - 1); + p_set_proto_depth(pinfo, proto_giop, recursion_depth); } /* @@ -2546,6 +2547,7 @@ static void dissect_tk_objref_params(tvbuff_t *tvb, proto_tree *tree, gint *offs } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_struct_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header, wmem_list_t *params) { @@ -2606,6 +2608,7 @@ static void dissect_tk_struct_params(tvbuff_t *tvb, packet_info *pinfo, proto_tr } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_union_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item* item, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header) { @@ -2716,6 +2719,7 @@ static void dissect_tk_enum_params(tvbuff_t *tvb, proto_tree *tree, gint *offset } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_sequence_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header, wmem_list_t *params) { @@ -2748,6 +2752,7 @@ static void dissect_tk_sequence_params(tvbuff_t *tvb, packet_info *pinfo, proto_ } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_array_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header, wmem_list_t *params) { @@ -2787,6 +2792,7 @@ static void dissect_tk_array_params(tvbuff_t *tvb, packet_info *pinfo, proto_tre * dissection of nested (complex) types. Those are saved into a nested linked * list which can be handed into dissect_data_for_typecode_with_params */ +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_alias_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header, wmem_list_t *params) { @@ -2822,6 +2828,7 @@ static void dissect_tk_alias_params(tvbuff_t *tvb, packet_info *pinfo, proto_tre } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_except_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header) { @@ -2868,6 +2875,7 @@ static void dissect_tk_except_params(tvbuff_t *tvb, packet_info *pinfo, proto_tr } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_value_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header) { @@ -2928,6 +2936,7 @@ static void dissect_tk_value_params(tvbuff_t *tvb, packet_info *pinfo, proto_tre } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_tk_value_box_params(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, guint32 boundary, MessageHeader * header) { @@ -3087,6 +3096,7 @@ guint32 get_CDR_encap_info(tvbuff_t *tvb, proto_tree *tree, gint *offset, * followed by the encoded value. */ +// NOLINTNEXTLINE(misc-no-recursion) void get_CDR_any(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, gint *offset, gboolean stream_is_big_endian, int boundary, MessageHeader * header ) { @@ -3627,6 +3637,7 @@ guint32 get_CDR_string(tvbuff_t *tvb, const gchar **seq, int *offset, gboolean s * * It returns a guint32 representing a TCKind value. */ +// NOLINTNEXTLINE(misc-no-recursion) guint32 get_CDR_typeCode(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, int boundary, MessageHeader * header ) { @@ -3638,6 +3649,7 @@ guint32 get_CDR_typeCode(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, } +// NOLINTNEXTLINE(misc-no-recursion) static guint32 get_CDR_typeCode_with_params(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, gint *offset, gboolean stream_is_big_endian, int boundary, MessageHeader * header, @@ -3650,6 +3662,14 @@ static guint32 get_CDR_typeCode_with_params(tvbuff_t *tvb, packet_info* pinfo, p proto_item *ti; val = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary); /* get TCKind enum */ + + unsigned recursion_depth = p_get_proto_depth(pinfo, proto_giop); + if (recursion_depth > GIOP_MAX_RECURSION_DEPTH) { + proto_tree_add_expert(tree, pinfo, &ei_giop_max_recursion_depth_reached, tvb, 0, 0); + return val; + } + p_set_proto_depth(pinfo, proto_giop, recursion_depth + 1); + ti = proto_tree_add_uint(tree, hf_giop_TCKind, tvb, *offset-4, 4, val); proto_tree *params_tree = proto_tree_add_subtree(tree, tvb, *offset, -1, ett_giop_typecode_parameters, NULL, "TypeCode-Parameters"); @@ -3765,6 +3785,8 @@ static guint32 get_CDR_typeCode_with_params(tvbuff_t *tvb, packet_info* pinfo, p break; } /* val */ + p_set_proto_depth(pinfo, proto_giop, recursion_depth); + return val; } diff --git a/epan/dissectors/packet-glow.c b/epan/dissectors/packet-glow.c index 32e6ec9d..d374395c 100644 --- a/epan/dissectors/packet-glow.c +++ b/epan/dissectors/packet-glow.c @@ -185,7 +185,6 @@ static int dissect_glow_ElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _ static int dissect_glow_Template(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1086,15 +1085,14 @@ dissect_glow_SEQUENCE_OF_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_glow_ElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ElementCollection → ElementCollection/_untag → Element → Node → Node/_untag → ElementCollection + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 4, TRUE, dissect_glow_SEQUENCE_OF_Element); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1118,15 +1116,14 @@ dissect_glow_Parameter_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U static int dissect_glow_Parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Parameter → Parameter/_untag → ElementCollection → ElementCollection/_untag → Element → Parameter + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 1, TRUE, dissect_glow_Parameter_U); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1176,15 +1173,14 @@ dissect_glow_Template_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_ static int dissect_glow_Template(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 9; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Template → Template/_untag → TemplateElement → Parameter → Parameter/_untag → ElementCollection → ElementCollection/_untag → Element → Template + actx->pinfo->dissection_depth += 8; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 24, TRUE, dissect_glow_Template_U); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 8; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-goose.c b/epan/dissectors/packet-goose.c index 2eb45619..b11f8a46 100644 --- a/epan/dissectors/packet-goose.c +++ b/epan/dissectors/packet-goose.c @@ -187,7 +187,6 @@ static gint ett_goose_Data = -1; static int dissect_goose_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -711,16 +710,15 @@ static const ber_choice_t Data_choice[] = { static int dissect_goose_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Data → Data/array → Data + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Data_choice, hf_index, ett_goose_Data, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-gquic.c b/epan/dissectors/packet-gquic.c index 36053c01..372bd405 100644 --- a/epan/dissectors/packet-gquic.c +++ b/epan/dissectors/packet-gquic.c @@ -1396,6 +1396,7 @@ gboolean is_gquic_unencrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, gui } static guint32 +// NOLINTNEXTLINE(misc-no-recursion) dissect_gquic_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, guint offset, guint32 tag_number){ guint32 tag_offset_start = offset + tag_number*4*2; guint32 tag_offset = 0, total_tag_len = 0; @@ -1490,6 +1491,7 @@ dissect_gquic_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, gui scfg_tag_number = tvb_get_guint32(tvb, tag_offset_start + tag_offset, ENC_LITTLE_ENDIAN); tag_offset += 4; + // We recurse here, but we're limited by tree depth checks in epan dissect_gquic_tag(tvb, pinfo, tag_tree, tag_offset_start + tag_offset, scfg_tag_number); tag_offset += tag_len - 4 - 4; } diff --git a/epan/dissectors/packet-gsm_abis_oml.c b/epan/dissectors/packet-gsm_abis_oml.c index 43294758..0b667872 100644 --- a/epan/dissectors/packet-gsm_abis_oml.c +++ b/epan/dissectors/packet-gsm_abis_oml.c @@ -1567,6 +1567,7 @@ dissect_ipacc_test_rep(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb) /* Dissect OML FOM Attributes after OML + FOM header */ static gint +// NOLINTNEXTLINE(misc-no-recursion) dissect_oml_attrs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo, proto_tree *tree) { @@ -1770,7 +1771,9 @@ dissect_oml_attrs(tvbuff_t *tvb, int base_offs, int length, tvb, loffset++, 1, ENC_LITTLE_ENDIAN); } + increment_dissection_depth(pinfo); dissect_oml_attrs(tvb, loffset, len - 1 - not_counted, pinfo, att_tree); + decrement_dissection_depth(pinfo); } break; case NM_ATT_INTERF_BOUND: @@ -2804,8 +2807,7 @@ proto_register_abis_oml(void) NM_ATT_TLVDEF_IPA(NM_ATT_IPACC_CGI, TLV_TYPE_TL16V, 0); /* assign our custom match functions */ - proto_abis_oml = proto_register_protocol("GSM A-bis OML", "A-bis OML", - "gsm_abis_oml"); + proto_abis_oml = proto_register_protocol("GSM A-bis OML", "A-bis OML", "gsm_abis_oml"); proto_register_field_array(proto_abis_oml, hf, array_length(hf)); diff --git a/epan/dissectors/packet-gsm_gsup.c b/epan/dissectors/packet-gsm_gsup.c index 6e36e00b..fe20fde6 100644 --- a/epan/dissectors/packet-gsm_gsup.c +++ b/epan/dissectors/packet-gsm_gsup.c @@ -696,6 +696,7 @@ static void dissect_name_ie(tvbuff_t *tvb, packet_info *pinfo _U_, guint offset, static gint +// NOLINTNEXTLINE(misc-no-recursion) dissect_gsup_tlvs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo, proto_tree *tree, proto_item *gsup_ti, guint8 msg_type) { @@ -729,6 +730,7 @@ dissect_gsup_tlvs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo, proto_tree_add_item(att_tree, hf_gsup_iei, tvb, offset-2, 1, ENC_BIG_ENDIAN); proto_tree_add_uint(att_tree, hf_gsup_ie_len, tvb, offset-1, 1, len); + increment_dissection_depth(pinfo); switch (tag) { /* Nested TLVs */ case OSMO_GSUP_AUTH_TUPLE_IE: @@ -884,6 +886,7 @@ dissect_gsup_tlvs(tvbuff_t *tvb, int base_offs, int length, packet_info *pinfo, proto_tree_add_item(att_tree, hf_gsup_ie_payload, tvb, offset, len, ENC_NA); break; } + decrement_dissection_depth(pinfo); offset += len; } diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c index 87861709..1302d80a 100644 --- a/epan/dissectors/packet-gtp.c +++ b/epan/dissectors/packet-gtp.c @@ -2408,12 +2408,15 @@ static const value_string gtp_ext_hdr_pdu_ses_cont_pdu_type_vals[] = { #define MM_PROTO_SESSION_MGMT 0x0A #define MM_PROTO_NON_CALL_RELATED 0x0B -static wmem_map_t *gtpstat_msg_idx_hash = NULL; +static GHashTable *gtpstat_msg_idx_hash = NULL; static void gtpstat_init(struct register_srt* srt _U_, GArray* srt_array) { - gtpstat_msg_idx_hash = wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal); + if (gtpstat_msg_idx_hash != NULL) { + g_hash_table_destroy(gtpstat_msg_idx_hash); + } + gtpstat_msg_idx_hash = g_hash_table_new(g_direct_hash, g_direct_equal); init_srt_table("GTP Requests", NULL, srt_array, 0, NULL, NULL, NULL); } @@ -2443,13 +2446,13 @@ gtpstat_packet(void *pss, packet_info *pinfo, epan_dissect_t *edt _U_, const voi gtp_srt_table = g_array_index(data->srt_array, srt_stat_table*, i); - idx = GPOINTER_TO_UINT(wmem_map_lookup(gtpstat_msg_idx_hash, GUINT_TO_POINTER(gtp->msgtype))); + idx = GPOINTER_TO_UINT(g_hash_table_lookup(gtpstat_msg_idx_hash, GUINT_TO_POINTER(gtp->msgtype))); /* Store the value incremented by 1 to avoid confusing index 0 with NULL */ if (idx == 0) { - idx = wmem_map_size(gtpstat_msg_idx_hash); - wmem_map_insert(gtpstat_msg_idx_hash, GUINT_TO_POINTER(gtp->msgtype), GUINT_TO_POINTER(idx + 1)); - init_srt_table_row(gtp_srt_table, idx, val_to_str_ext(gtp->msgtype, >p_message_type_ext, "Unknown (%d)")); + idx = g_hash_table_size(gtpstat_msg_idx_hash); + g_hash_table_insert(gtpstat_msg_idx_hash, GUINT_TO_POINTER(gtp->msgtype), GUINT_TO_POINTER(idx + 1)); + init_srt_table_row(gtp_srt_table, idx, val_to_str_ext_const(gtp->msgtype, >p_message_type_ext, "Unknown")); } else { idx -= 1; } @@ -2987,7 +2990,7 @@ typedef struct { /* --------------------- * GPRS messages * ---------------------*/ -static _gtp_mess_items gprs_mess_items[] = { +static const _gtp_mess_items gprs_mess_items[] = { { GTP_MSG_ECHO_REQ, { @@ -3319,7 +3322,7 @@ static _gtp_mess_items gprs_mess_items[] = { /* ----------------------------- * UMTS messages * -----------------------------*/ -static _gtp_mess_items umts_mess_items[] = { +static const _gtp_mess_items umts_mess_items[] = { /* 7.2 Path Management Messages */ { GTP_MSG_ECHO_REQ, { @@ -4391,7 +4394,7 @@ check_field_presence_and_decoder(guint8 message, guint8 field, int *position, ie { guint i = 0; - _gtp_mess_items *mess_items; + const _gtp_mess_items *mess_items; switch (gtp_version) { case 0: diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c index dc4a8204..4953729a 100644 --- a/epan/dissectors/packet-gtpv2.c +++ b/epan/dissectors/packet-gtpv2.c @@ -1561,12 +1561,15 @@ gtpv2_sn_equal_unmatched(gconstpointer k1, gconstpointer k2) return key1->seq_nr == key2->seq_nr; } -static wmem_map_t *gtpv2_stat_msg_idx_hash = NULL; +static GHashTable *gtpv2_stat_msg_idx_hash = NULL; static void gtpv2_stat_init(struct register_srt* srt _U_, GArray*srt_array) { - gtpv2_stat_msg_idx_hash = wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal); + if (gtpv2_stat_msg_idx_hash != NULL) { + g_hash_table_destroy(gtpv2_stat_msg_idx_hash); + } + gtpv2_stat_msg_idx_hash = g_hash_table_new(g_direct_hash, g_direct_equal); init_srt_table("GTPv2 Requests", NULL, srt_array, 0, NULL, NULL, NULL); } @@ -1596,13 +1599,13 @@ gtpv2_stat_packet(void *pss, packet_info *pinfo, epan_dissect_t *edt _U_, const * (requests and responses have different message types, and we * only use the request value.) */ - idx = GPOINTER_TO_UINT(wmem_map_lookup(gtpv2_stat_msg_idx_hash, GUINT_TO_POINTER(gcrp->msgtype))); + idx = GPOINTER_TO_UINT(g_hash_table_lookup(gtpv2_stat_msg_idx_hash, GUINT_TO_POINTER(gcrp->msgtype))); /* Store the row value incremented by 1 to distinguish 0 from NULL */ if (idx == 0) { - idx = wmem_map_size(gtpv2_stat_msg_idx_hash); - wmem_map_insert(gtpv2_stat_msg_idx_hash, GUINT_TO_POINTER(gcrp->msgtype), GUINT_TO_POINTER(idx + 1)); - init_srt_table_row(gtpv2_srt_table, idx, val_to_str_ext(gcrp->msgtype, >pv2_message_type_vals_ext, "Unknown (%d)")); + idx = g_hash_table_size(gtpv2_stat_msg_idx_hash); + g_hash_table_insert(gtpv2_stat_msg_idx_hash, GUINT_TO_POINTER(gcrp->msgtype), GUINT_TO_POINTER(idx + 1)); + init_srt_table_row(gtpv2_srt_table, idx, val_to_str_ext_const(gcrp->msgtype, >pv2_message_type_vals_ext, "Unknown")); } else { idx -= 1; } @@ -8956,6 +8959,7 @@ dissect_gtpv2_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data _U_) { proto_tree *gtpv2_tree; @@ -9137,7 +9141,9 @@ dissect_gtpv2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data new_p_tvb = tvb_new_subset_remaining(tvb, msg_length + 4); col_append_str(pinfo->cinfo, COL_INFO, " / "); col_set_fence(pinfo->cinfo, COL_INFO); + increment_dissection_depth(pinfo); dissect_gtpv2(new_p_tvb, pinfo, tree, NULL); + decrement_dissection_depth(pinfo); } return tvb_captured_length(tvb); diff --git a/epan/dissectors/packet-h223.c b/epan/dissectors/packet-h223.c index f6b451db..f0f99e7f 100644 --- a/epan/dissectors/packet-h223.c +++ b/epan/dissectors/packet-h223.c @@ -800,17 +800,20 @@ dissect_mux_sdu_fragment(tvbuff_t *volatile next_tvb, packet_info *pinfo, } static guint32 -mux_element_sublist_size( h223_mux_element* me ) +// NOLINTNEXTLINE(misc-no-recursion) +mux_element_sublist_size(packet_info *pinfo, h223_mux_element* me) { h223_mux_element *current_me = me->next; guint32 length = 0; + increment_dissection_depth(pinfo); while ( current_me ) { if ( current_me->sublist ) - length += current_me->repeat_count * mux_element_sublist_size( current_me->sublist ); + length += current_me->repeat_count * mux_element_sublist_size(pinfo, current_me->sublist); else length += current_me->repeat_count; current_me = current_me->next; } + decrement_dissection_depth(pinfo); /* should never happen, but to avoid infinite loops... */ DISSECTOR_ASSERT(length != 0); @@ -832,6 +835,7 @@ mux_element_sublist_size( h223_mux_element* me ) * endOfMuxSdu true if the end-of-sdu flag was set */ static guint32 +// NOLINTNEXTLINE(misc-no-recursion) dissect_mux_payload_by_me_list( tvbuff_t *tvb, packet_info *pinfo, guint32 pkt_offset, proto_tree *pdu_tree, h223_call_info* call_info, @@ -843,10 +847,11 @@ dissect_mux_payload_by_me_list( tvbuff_t *tvb, packet_info *pinfo, guint32 frag_len; guint32 sublist_len; int i; + increment_dissection_depth(pinfo); while ( me ) { if ( me->sublist ) { if ( me->repeat_count == 0 ) { - for(sublist_len = mux_element_sublist_size( me->sublist ); + for(sublist_len = mux_element_sublist_size(pinfo, me->sublist); offset + sublist_len <= len; offset = dissect_mux_payload_by_me_list( tvb, pinfo, pkt_offset, pdu_tree, call_info, me->sublist, offset, endOfMuxSdu, @@ -873,6 +878,7 @@ dissect_mux_payload_by_me_list( tvbuff_t *tvb, packet_info *pinfo, } me = me->next; } + decrement_dissection_depth(pinfo); return offset; } diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index 5bd5f1f1..1d348ad1 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -1257,7 +1257,6 @@ static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, a /*int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -3968,11 +3967,9 @@ static const per_sequence_t EnumeratedParameter_sequence[] = { static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // EnumeratedParameter → Content → Content/compound → EnumeratedParameter + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); gef_ctx_t *parent_gefx; parent_gefx = gef_ctx_get(actx->private_data); @@ -3980,7 +3977,8 @@ dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h225_EnumeratedParameter, EnumeratedParameter_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); actx->private_data = parent_gefx; return offset; } @@ -3994,11 +3992,9 @@ static const per_sequence_t GenericData_sequence[] = { int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // GenericData → GenericData/parameters → EnumeratedParameter → Content → Content/nested → GenericData + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); void *priv_data = actx->private_data; gef_ctx_t *gefx; @@ -4011,7 +4007,8 @@ dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h225_GenericData, GenericData_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); actx->private_data = priv_data; return offset; } diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index 5fb832f5..92b9fa55 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -2426,7 +2426,6 @@ static int dissect_h245_AudioMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_h245_ModeElementType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -3865,15 +3864,14 @@ static const per_sequence_t GenericParameter_sequence[] = { static int dissect_h245_GenericParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // GenericParameter → ParameterValue → ParameterValue/genericParameter → GenericParameter + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_GenericParameter, GenericParameter_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -5666,11 +5664,9 @@ static const per_choice_t VideoCapability_choice[] = { static int dissect_h245_VideoCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // VideoCapability → ExtendedVideoCapability → ExtendedVideoCapability/videoCapability → VideoCapability + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); gint32 value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -5680,7 +5676,8 @@ dissect_h245_VideoCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx codec_type = val_to_str(value, h245_VideoCapability_vals, "<unknown>"); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -5988,11 +5985,9 @@ static const per_choice_t AudioCapability_choice[] = { static int dissect_h245_AudioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // AudioCapability → VBDCapability → AudioCapability + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); gint32 value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -6001,7 +5996,8 @@ dissect_h245_AudioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx codec_type = val_to_str(value, h245_AudioCapability_short_vals, "<unknown>"); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -7152,11 +7148,9 @@ static const per_choice_t DataType_choice[] = { static int dissect_h245_DataType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 5; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // DataType → H235Media → H235Media/mediaType → RedundancyEncoding → DataType + actx->pinfo->dissection_depth += 4; + increment_dissection_depth(actx->pinfo); gint choice_index; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -7173,7 +7167,8 @@ if (upcoming_channel){ } - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 4; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -8874,11 +8869,9 @@ static const per_sequence_t MultiplexElement_sequence[] = { static int dissect_h245_MultiplexElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // MultiplexElement → MultiplexElement/type → MultiplexElement/type/subElementList → MultiplexElement + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); /*MultiplexElement*/ h223_mux_element* me = wmem_new(wmem_file_scope(), h223_mux_element); h223_me->next = me; @@ -8887,7 +8880,8 @@ dissect_h245_MultiplexElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_MultiplexElement, MultiplexElement_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -9509,11 +9503,9 @@ static const per_choice_t AudioMode_choice[] = { static int dissect_h245_AudioMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // AudioMode → VBDMode → AudioMode + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); gint32 value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -9522,7 +9514,8 @@ dissect_h245_AudioMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, codec_type = val_to_str(value, h245_AudioMode_vals, "<unknown>"); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -9868,16 +9861,15 @@ static const per_choice_t ModeElementType_choice[] = { static int dissect_h245_ModeElementType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ModeElementType → RedundancyEncodingDTMode → RedundancyEncodingDTModeElement → RedundancyEncodingDTModeElement/type → FECMode → ModeElementType + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h245_ModeElementType, ModeElementType_choice, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c index ca5f4192..d1799fed 100644 --- a/epan/dissectors/packet-h248.c +++ b/epan/dissectors/packet-h248.c @@ -2619,7 +2619,6 @@ static int dissect_h248_MtpAddress(bool implicit_tag, tvbuff_t *tvb, int offset, static int dissect_h248_SecondEventsDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -4248,15 +4247,14 @@ static const ber_sequence_t SecondEventsDescriptor_sequence[] = { static int dissect_h248_SecondEventsDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 7; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // SecondEventsDescriptor → SecondEventsDescriptor/eventList → SecondRequestedEvent → SecondRequestedActions → NotifyBehaviour → RegulatedEmbeddedDescriptor → SecondEventsDescriptor + actx->pinfo->dissection_depth += 6; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 6; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-h264.c b/epan/dissectors/packet-h264.c index 9d9a1256..8ca3f5e9 100644 --- a/epan/dissectors/packet-h264.c +++ b/epan/dissectors/packet-h264.c @@ -561,17 +561,20 @@ dissect_h264_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, gint start_offset = *start_bit_offset>>3; - if (hf_index > -1) + if (hf_index > -1) { hf_field = proto_registrar_get_nth(hf_index); + } - switch (descriptor) { - case H264_SE_V: - DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_INT32); - break; + if (hf_field) { + switch (descriptor) { + case H264_SE_V: + DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_INT32); + break; - default: - DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_UINT32); - break; + default: + DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_UINT32); + break; + } } bit_offset = *start_bit_offset; @@ -2131,6 +2134,7 @@ static int dissect_h264_prefix(proto_tree *tree, tvbuff_t *tvb, packet_info *pin /* RFC 6190 Section: 4.9 - Payload Content Scalability Information (PACSI) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_h264_pacsi(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset) { gint8 pacsi_flags; @@ -2201,6 +2205,7 @@ dissect_h264_pacsi(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint off * RFC 3984 Section 5.7.1 - Single-Time Aggregation Packet (STAP) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_h264_stap(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint offset, gint8 nal_type) { guint16 nal_unit_size; @@ -2246,6 +2251,7 @@ dissect_h264_stap(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint * RFC 3984 Section 5.7.2 Multi-Time Aggregation Packet (MTAP) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_h264_mtap(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint offset, gint8 nal_type) { gint size_offset; @@ -2303,6 +2309,7 @@ dissect_h264_mtap(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint * Dissect NAL Header extension and NI-MTAP Subtype defined in RFC 6190 */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_h264_nalu_extension (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint offset) { gint size_offset; @@ -2545,6 +2552,7 @@ dissect_h264_bytestream(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi /* Code to actually dissect the packets */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_h264(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { int offset = 0; @@ -2615,6 +2623,7 @@ dissect_h264(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ rbsp_tvb = dissect_h265_unescap_nal_unit(tvb, pinfo, offset); stream_tree = proto_tree_add_subtree(h264_tree, tvb, offset, -1, ett_h264_stream, NULL, "H264 NAL Unit Payload"); + increment_dissection_depth(pinfo); switch (type) { case 1: /* 1 Coded slice of a non-IDR picture */ dissect_h264_slice_layer_without_partitioning_rbsp(stream_tree, rbsp_tvb, pinfo, 0); @@ -2660,6 +2669,7 @@ dissect_h264(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ default: break; } + decrement_dissection_depth(pinfo); } /* if (tree) */ return tvb_captured_length(tvb); } diff --git a/epan/dissectors/packet-h265.c b/epan/dissectors/packet-h265.c index eb71ca59..cd0a0481 100644 --- a/epan/dissectors/packet-h265.c +++ b/epan/dissectors/packet-h265.c @@ -801,18 +801,21 @@ dissect_h265_exp_golomb_code(proto_tree *tree, int hf_index, tvbuff_t *tvb, pack start_offset = *start_bit_offset >> 3; - if (hf_index > -1) + if (hf_index > -1) { hf_field = proto_registrar_get_nth(hf_index); + } - /* Allow only gint32 for se(v), guint32 for others. */ - switch (descriptor) { - case H265_SE_V: - DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_INT32); - break; + if (hf_field) { + /* Allow only gint32 for se(v), guint32 for others. */ + switch (descriptor) { + case H265_SE_V: + DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_INT32); + break; - default: - DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_UINT32); - break; + default: + DISSECTOR_ASSERT_FIELD_TYPE(hf_field, FT_UINT32); + break; + } } bit_offset = *start_bit_offset; diff --git a/epan/dissectors/packet-hsms.c b/epan/dissectors/packet-hsms.c index 361012aa..b30c3934 100644 --- a/epan/dissectors/packet-hsms.c +++ b/epan/dissectors/packet-hsms.c @@ -174,6 +174,7 @@ static gint ett_hsms_data_item = -1; #define HSMS_MIN_LENGTH 14 static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_secs_variable(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data, int *offset) { proto_item *hdr_stream_item; @@ -265,7 +266,9 @@ dissect_secs_variable(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void if (item_format_code == 0) { /* add sub items for list element to item tree */ + increment_dissection_depth(pinfo); int subItemLength = dissect_secs_variable(tvb, pinfo, hsms_data_item_tree, data, offset); + decrement_dissection_depth(pinfo); /* check for parsing error in sub list */ if (subItemLength == -1) @@ -733,11 +736,7 @@ proto_register_hsms(void) }; /* Register the protocol name and description */ - proto_hsms = proto_register_protocol ( - "High-speed SECS Message Service Protocol", /* name */ - "HSMS", /* short name */ - "hsms" /* abbrev */ - ); + proto_hsms = proto_register_protocol ("High-speed SECS Message Service Protocol", "HSMS", "hsms"); /* Required function calls to register the header fields and subtrees */ proto_register_field_array(proto_hsms, hf, array_length(hf)); diff --git a/epan/dissectors/packet-http2.c b/epan/dissectors/packet-http2.c index 7d9cac01..5def945a 100644 --- a/epan/dissectors/packet-http2.c +++ b/epan/dissectors/packet-http2.c @@ -2947,6 +2947,78 @@ get_reassembly_id_from_stream(packet_info *pinfo, http2_session_t* session) return stream_info->stream_id | (flow_index << 31); } +/* + * Like process_reassembled_data() in reassemble.[ch], but ignores the layer + * number, which is not always stable in HTTP/2, if multiple TLS records are + * in the same frame. + */ +static tvbuff_t* +http2_process_reassembled_data(tvbuff_t *tvb, const int offset, packet_info *pinfo, + const char *name, fragment_head *fd_head, const fragment_items *fit, + gboolean *update_col_infop, proto_tree *tree) +{ + tvbuff_t* next_tvb; + gboolean update_col_info; + proto_item* frag_tree_item; + + if (fd_head != NULL) { + /* + * OK, we've reassembled this. + * Is this something that's been reassembled from more + * than one fragment? + */ + if (fd_head->next != NULL) { + /* + * Yes. + * Allocate a new tvbuff, referring to the + * reassembled payload, and set + * the tvbuff to the list of tvbuffs to which + * the tvbuff we were handed refers, so it'll get + * cleaned up when that tvbuff is cleaned up. + */ + next_tvb = tvb_new_chain(tvb, fd_head->tvb_data); + + /* Add the defragmented data to the data source list. */ + add_new_data_source(pinfo, next_tvb, name); + + /* show all fragments */ + if (fd_head->flags & FD_BLOCKSEQUENCE) { + update_col_info = !show_fragment_seq_tree( + fd_head, fit, tree, pinfo, next_tvb, &frag_tree_item); + } + else { + update_col_info = !show_fragment_tree(fd_head, + fit, tree, pinfo, next_tvb, &frag_tree_item); + } + } + else { + /* + * No. + * Return a tvbuff with the payload. next_tvb ist from offset until end + */ + next_tvb = tvb_new_subset_remaining(tvb, offset); + pinfo->fragmented = FALSE; /* one-fragment packet */ + update_col_info = TRUE; + } + if (update_col_infop != NULL) + *update_col_infop = update_col_info; + } else { + /* + * We don't have the complete reassembled payload, or this + * isn't the final frame of that payload. + */ + next_tvb = NULL; + /* process_reassembled_data() in reassemble.[ch] adds reassembled_in + * here, but the reas_in_layer_num is often unstable in HTTP/2 now so + * we rely on the stream end flag (that's why we have this function). + * + * Perhaps we could DISSECTOR_ASSERT() in this path, we shouldn't + * get here. + */ + } + return next_tvb; +} + static tvbuff_t* reassemble_http2_data_into_full_frame(tvbuff_t *tvb, packet_info *pinfo, http2_session_t* http2_session, proto_tree *http2_tree, guint offset, guint8 flags, guint datalen) @@ -2973,8 +3045,8 @@ reassemble_http2_data_into_full_frame(tvbuff_t *tvb, packet_info *pinfo, http2_s * incorrectly match for frames that exist in the same packet as the final DATA frame and incorrectly add * reassembly information to those dissection trees */ if (head && IS_HTTP2_END_STREAM(flags)) { - return process_reassembled_data(tvb, offset, pinfo, "Reassembled body", head, - &http2_body_fragment_items, NULL, http2_tree); + return http2_process_reassembled_data(tvb, offset, pinfo, "Reassembled body", head, + &http2_body_fragment_items, NULL, http2_tree); } /* Add frame where reassembly happened. process_reassembled_data() does this automatically if the reassembled diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c index 1b0d5a22..08b29344 100644 --- a/epan/dissectors/packet-icmpv6.c +++ b/epan/dissectors/packet-icmpv6.c @@ -1682,8 +1682,9 @@ static icmp_transaction_t *transaction_end(packet_info *pinfo, proto_tree *tree, } /* transaction_end() */ -static int -dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) +// This is recursive, but we'll run out of PDU before we'll run out of stack. +// NOLINTNEXTLINE(misc-no-recursion) +static int dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) { proto_tree *icmp6opt_tree; proto_item *ti, *ti_opt, *ti_opt_len; diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c index 93e55bd1..2df62eee 100644 --- a/epan/dissectors/packet-icq.c +++ b/epan/dissectors/packet-icq.c @@ -786,6 +786,7 @@ icqv5_srv_user_online(proto_tree *tree,/* Tree to put the data in */ } static void +// NOLINTNEXTLINE(misc-no-recursion) icqv5_srv_multi(proto_tree *tree, /* Tree to put the data in */ tvbuff_t *tvb, /* Packet content */ int offset, /* Offset from the start of the packet to the content */ @@ -804,6 +805,7 @@ icqv5_srv_multi(proto_tree *tree, /* Tree to put the data in */ for (i = 0; i < num; i++) { pktSz = tvb_get_letohs(tvb, offset); offset += 2; + // We recurse here, but we'll run out of packet before we run out of stack. dissect_icqv5Server(tvb, offset, pinfo, tree, pktSz); offset += pktSz; } @@ -1123,6 +1125,7 @@ dissect_icqv5Client(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_icqv5Server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int pktsize) { @@ -1180,6 +1183,7 @@ dissect_icqv5Server(tvbuff_t *tvb, int offset, packet_info *pinfo, pktsize - ICQ5_SRV_HDRSIZE, pinfo); break; case SRV_MULTI: + // We recurse here, but we'll run out of packet before we run out of stack. icqv5_srv_multi(icq_body_tree, tvb, offset + ICQ5_SRV_HDRSIZE, pinfo); break; case SRV_ACK: diff --git a/epan/dissectors/packet-ieee1609dot2.c b/epan/dissectors/packet-ieee1609dot2.c index 9675333e..2c06c97e 100644 --- a/epan/dissectors/packet-ieee1609dot2.c +++ b/epan/dissectors/packet-ieee1609dot2.c @@ -427,7 +427,6 @@ ieee1609dot2_set_next_default_psid(packet_info *pinfo, guint32 psid) static int dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -3024,16 +3023,15 @@ static const oer_sequence_t Ieee1609Dot2Data_sequence[] = { static int dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 6; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Ieee1609Dot2Data → Ieee1609Dot2Content → SignedData → ToBeSignedData → SignedDataPayload → Ieee1609Dot2Data + actx->pinfo->dissection_depth += 5; + increment_dissection_depth(actx->pinfo); actx->private_data = (void*)wmem_new0(actx->pinfo->pool, ieee1609_private_data_t); offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index, ett_ieee1609dot2_Ieee1609Dot2Data, Ieee1609Dot2Data_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 5; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-ieee1722.c b/epan/dissectors/packet-ieee1722.c index e7a9b5f1..277de8f7 100644 --- a/epan/dissectors/packet-ieee1722.c +++ b/epan/dissectors/packet-ieee1722.c @@ -2652,7 +2652,7 @@ static int dissect_1722_acf_can_common(tvbuff_t *tvb, packet_info *pinfo, proto_ } can_info.len = (guint32)parsed.datalen; - can_info.fd = parsed.is_fd; + can_info.fd = parsed.is_fd ? CAN_TYPE_CAN_FD : CAN_TYPE_CAN_CLASSIC; /* for practical reasons a remapping might be needed in the future */ can_info.bus_id = (guint16)parsed.bus_id; diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c index 355fc6c0..481d3725 100644 --- a/epan/dissectors/packet-ip.c +++ b/epan/dissectors/packet-ip.c @@ -568,7 +568,7 @@ capture_ip(const guchar *pd, int offset, int len, capture_packet_info_t *cpinfo, } static void -add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, ws_in4_addr ip, int isdst) +add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, ws_in4_addr ip, gboolean isdst) { const mmdb_lookup_t *lookup = maxmind_db_lookup_ipv4(&ip); if (!lookup->found) return; @@ -593,7 +593,7 @@ add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint o wmem_strbuf_append(summary, lookup->as_org); } - int addr_offset = offset + isdst ? IPH_DST : IPH_SRC; + int addr_offset = offset + (isdst ? IPH_DST : IPH_SRC); int dir_hf = isdst ? hf_geoip_dst_summary : hf_geoip_src_summary; proto_item *geoip_info_item = proto_tree_add_string(tree, dir_hf, tvb, addr_offset, 4, wmem_strbuf_finalize(summary)); proto_item_set_generated(geoip_info_item); diff --git a/epan/dissectors/packet-ipp.c b/epan/dissectors/packet-ipp.c index 8c6941d5..03855671 100644 --- a/epan/dissectors/packet-ipp.c +++ b/epan/dissectors/packet-ipp.c @@ -377,20 +377,20 @@ static const value_string status_vals[] = { { 0, NULL } }; -static int parse_attributes(tvbuff_t *tvb, int offset, proto_tree *tree); +static int parse_attributes(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree); static proto_tree *add_integer_tree(proto_tree *tree, tvbuff_t *tvb, int offset, int name_length, const gchar *name, int value_length, guint8 tag); static void add_integer_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, int offset, int name_length, const gchar *name, int value_length, guint8 tag); -static proto_tree *add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, +static proto_tree *add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int name_length, const gchar *name, int value_length, guint8 tag); static proto_tree *add_octetstring_value(const gchar *tag_desc, proto_tree *tree, - tvbuff_t *tvb, int offset, int name_length, const gchar *name, int value_length, guint8 tag); + tvbuff_t *tvb, packet_info *pinfo, int offset, int name_length, const gchar *name, int value_length, guint8 tag); static proto_tree *add_charstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset, guint8 tag, int name_length, const gchar *name, int value_length); static void add_charstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, int offset, int name_length, const gchar *name, int value_length, guint8 tag); -static int ipp_fmt_collection(tvbuff_t *tvb, int offset, char *buffer, int bufsize); +static int ipp_fmt_collection(tvbuff_t *tvb, packet_info *pinfo, int offset, char *buffer, int bufsize); static int dissect_ipp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) @@ -546,7 +546,7 @@ dissect_ipp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) proto_tree_add_item(ipp_tree, hf_ipp_request_id, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; - offset = parse_attributes(tvb, offset, ipp_tree); + offset = parse_attributes(tvb, pinfo, offset, ipp_tree); if (tvb_offset_exists(tvb, offset)) { call_data_dissector(tvb_new_subset_remaining(tvb, offset), pinfo, ipp_tree); @@ -630,7 +630,7 @@ static const value_string tag_vals[] = { }; static int -parse_attributes(tvbuff_t *tvb, int offset, proto_tree *tree) +parse_attributes(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree) { guint8 tag; const gchar *tag_desc; @@ -746,12 +746,12 @@ parse_attributes(tvbuff_t *tvb, int offset, proto_tree *tree) * an additional value, so * start a tree for it. */ - attr_tree = add_octetstring_tree(as_tree, tvb, offset, name_length, name, value_length, tag); + attr_tree = add_octetstring_tree(as_tree, tvb, pinfo, offset, name_length, name, value_length, tag); } if (tag == TAG_ENDCOLLECTION) attr_tree = proto_tree_get_parent_tree(attr_tree); else - attr_tree = add_octetstring_value(tag_desc, attr_tree, tvb, offset, name_length, name, value_length, tag); + attr_tree = add_octetstring_value(tag_desc, attr_tree, tvb, pinfo, offset, name_length, name, value_length, tag); break; case TAG_TYPE_CHARSTRING : @@ -1007,7 +1007,7 @@ add_integer_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, } static proto_tree * -add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset, int name_length, const gchar *name, int value_length, guint8 tag) +add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int name_length, const gchar *name, int value_length, guint8 tag) { int count = 0; const char *type = val_to_str(tag, tag_vals, "unknown-%02x"); @@ -1232,7 +1232,7 @@ add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset, int name_lengt count ++; - valoffset = ipp_fmt_collection(tvb, valoffset + 1 + 2 + name_length + 2 + value_length, temp, sizeof(temp)); + valoffset = ipp_fmt_collection(tvb, pinfo, valoffset + 1 + 2 + name_length + 2 + value_length, temp, sizeof(temp)); if (value) value = wmem_strconcat(wmem_packet_scope(), value, ",", temp, NULL); @@ -1268,7 +1268,7 @@ add_octetstring_tree(proto_tree *tree, tvbuff_t *tvb, int offset, int name_lengt } static proto_tree * -add_octetstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, +add_octetstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int name_length, const gchar *name _U_, int value_length, guint8 tag) { proto_tree *subtree = tree; @@ -1357,7 +1357,7 @@ add_octetstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, break; case TAG_BEGCOLLECTION : - endoffset = ipp_fmt_collection(tvb, valoffset + value_length, value, sizeof(value)); + endoffset = ipp_fmt_collection(tvb, pinfo, valoffset + value_length, value, sizeof(value)); subtree = proto_tree_add_subtree_format(tree, tvb, valoffset, endoffset - valoffset, ett_ipp_member, NULL, "collection %s", value); break; @@ -1450,7 +1450,8 @@ add_charstring_value(const gchar *tag_desc, proto_tree *tree, tvbuff_t *tvb, } static int -ipp_fmt_collection(tvbuff_t *tvb, int valoffset, char *buffer, int bufsize) +// NOLINTNEXTLINE(misc-no-recursion) +ipp_fmt_collection(tvbuff_t *tvb, packet_info *pinfo, int valoffset, char *buffer, int bufsize) { char *bufptr = buffer, *bufend = buffer + bufsize - 1; guint8 tag; @@ -1499,7 +1500,9 @@ ipp_fmt_collection(tvbuff_t *tvb, int valoffset, char *buffer, int bufsize) if (tag == TAG_BEGCOLLECTION) { char temp[176]; - valoffset = ipp_fmt_collection(tvb, valoffset, temp, sizeof(temp)); + increment_dissection_depth(pinfo); + valoffset = ipp_fmt_collection(tvb, pinfo, valoffset, temp, sizeof(temp)); + decrement_dissection_depth(pinfo); if (!overflow) { if ((bufend - bufptr) < (int)strlen(temp)) { (void) g_strlcpy(bufptr, "...", bufend - bufptr + 1); diff --git a/epan/dissectors/packet-ippusb.c b/epan/dissectors/packet-ippusb.c index e2f9e963..a2a2571b 100644 --- a/epan/dissectors/packet-ippusb.c +++ b/epan/dissectors/packet-ippusb.c @@ -203,7 +203,6 @@ dissect_ippusb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) gint next_offset; guint8 last; guint8 status_code; - const guchar *last_chunk = NULL; struct ippusb_analysis *ippusbd = NULL; conversation_t *conv = NULL; @@ -234,9 +233,10 @@ dissect_ippusb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) last = tvb_get_guint8(tvb, captured_length - 1); status_code = tvb_get_bits8(tvb, 3 * BITS_PER_BYTE, BITS_PER_BYTE); - /* If segment has length of last chunk from chunk transfer */ - if(captured_length == CHUNK_LENGTH_MIN){ - last_chunk = tvb_get_ptr(tvb, offset, captured_length); + /* Is the segment the last chunk from chunk transfer? */ + bool is_last_chunk = false; + if (captured_length == CHUNK_LENGTH_MIN) { + is_last_chunk = tvb_memeql(tvb, offset, CHUNKED_END, CHUNK_LENGTH_MIN) == 0; } if (is_http_header(first_linelen, first_line) && last == TAG_END_OF_ATTRIBUTES && status_code != PRINT_JOB && status_code != SEND_DOCUMENT) { @@ -292,7 +292,7 @@ dissect_ippusb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) new_msp->document |= MSP_HAS_DOCUMENT; } - if(!(last_chunk && strncmp(last_chunk, CHUNKED_END, CHUNK_LENGTH_MIN) == 0)){ + if (!is_last_chunk) { /* If this segment is not the last chunk in a chunked transfer */ if (captured_length < reported_length && (new_msp->document & MSP_HAS_DOCUMENT)) { @@ -403,7 +403,7 @@ dissect_ippusb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) } } } - else if (current_msp &&last_chunk && strncmp(last_chunk, CHUNKED_END, CHUNK_LENGTH_MIN) == 0) { + else if (current_msp && is_last_chunk) { /* This is the last segment of the chunked transfer and reassembled packet */ proto_tree_add_item(tree, proto_ippusb, tvb, offset, -1, ENC_NA); diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c index 3358b92b..2e62cf29 100644 --- a/epan/dissectors/packet-ipv6.c +++ b/epan/dissectors/packet-ipv6.c @@ -1027,7 +1027,7 @@ capture_ipv6_exthdr(const guchar *pd, int offset, int len, capture_packet_info_t } static void -add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, const ws_in6_addr *ip6, int isdst) +add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, const ws_in6_addr *ip6, gboolean isdst) { const mmdb_lookup_t *lookup = maxmind_db_lookup_ipv6(ip6); if (!lookup->found) return; @@ -1052,7 +1052,7 @@ add_geoip_info_entry(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint o wmem_strbuf_append(summary, lookup->as_org); } - int addr_offset = offset + isdst ? IP6H_DST : IP6H_SRC; + int addr_offset = offset + (isdst ? IP6H_DST : IP6H_SRC); int dir_hf = isdst ? hf_geoip_dst_summary : hf_geoip_src_summary; proto_item *geoip_info_item = proto_tree_add_string(tree, dir_hf, tvb, addr_offset, 16, wmem_strbuf_finalize(summary)); proto_item_set_generated(geoip_info_item); diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c index 35d05677..03020be7 100644 --- a/epan/dissectors/packet-isakmp.c +++ b/epan/dissectors/packet-isakmp.c @@ -3128,6 +3128,7 @@ static const bytes_string vendor_id[] = { static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payloads(tvbuff_t *tvb, proto_tree *tree, int isakmp_version, guint8 initial_payload, int offset, int length, packet_info *pinfo, guint32 message_id, gboolean is_request, void* decr_data) @@ -3148,6 +3149,7 @@ dissect_payloads(tvbuff_t *tvb, proto_tree *tree, ntree = dissect_payload_header(tvb, pinfo, offset, length, isakmp_version, payload, &next_payload, &payload_length, tree); if (payload_length >= 4) { /* XXX = > 4? */ + increment_dissection_depth(pinfo); tvb_ensure_bytes_exist(tvb, offset + 4, payload_length - 4); switch(payload){ case PLOAD_IKE_SA: @@ -3250,6 +3252,7 @@ dissect_payloads(tvbuff_t *tvb, proto_tree *tree, proto_tree_add_item(ntree, hf_isakmp_datapayload, tvb, offset + 4, payload_length-4, ENC_NA); break; } + increment_dissection_depth(pinfo); } else if (payload_length > length) { proto_tree_add_expert_format(ntree, pinfo, &ei_isakmp_payload_bad_length, tvb, 0, 0, @@ -3279,6 +3282,7 @@ isakmp_dissect_payloads(tvbuff_t *tvb, proto_tree *tree, int isakmp_version, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_isakmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { int offset = 0, len; @@ -3530,6 +3534,7 @@ dissect_payload_header(tvbuff_t *tvb, packet_info *pinfo, int offset, int length } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sa(tvbuff_t *tvb, int offset, int length, proto_tree *tree, int isakmp_version, packet_info *pinfo, gboolean is_request, void* decr_data) { guint32 doi; @@ -4549,6 +4554,7 @@ dissect_nonce(tvbuff_t *tvb, int offset, int length, proto_tree *ntree) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_cisco_fragmentation(tvbuff_t *tvb, int offset, int length, proto_tree *tree, packet_info *pinfo) { guint8 seq; /* Packet sequence number, starting from 1 */ @@ -4603,6 +4609,7 @@ dissect_cisco_fragmentation(tvbuff_t *tvb, int offset, int length, proto_tree *t /* This is RFC7383 reassembly. */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_ikev2_fragmentation(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo, guint message_id, guint8 next_payload, gboolean is_request, void* decr_info) { @@ -5537,6 +5544,7 @@ dissect_sa_kek(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, int length, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sa_tek(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, int length, proto_tree *tree) { int offset_end = 0, payload_end=0; @@ -5603,7 +5611,9 @@ dissect_sa_tek(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, int length, pr } if(PLOAD_IKE_SAT == next_payload) { + increment_dissection_depth(pinfo); dissect_sa_tek(tvb, pinfo, offset, length, tree); + decrement_dissection_depth(pinfo); } } else { proto_tree_add_item(ntree, hf_isakmp_sat_payload, tvb, offset, offset_end - offset, ENC_NA); @@ -5856,6 +5866,7 @@ dissect_ts_payload(tvbuff_t *tvb, int offset, int length, proto_tree *tree) /* For RFC 7383 reassembly, only need decrypted payload, so don't set dissect_payload_now .*/ /* TODO: rename? */ static tvbuff_t* +// NOLINTNEXTLINE(misc-no-recursion) dissect_enc(tvbuff_t *tvb, int offset, int length, diff --git a/epan/dissectors/packet-iscsi.c b/epan/dissectors/packet-iscsi.c index 0741025c..69072b9d 100644 --- a/epan/dissectors/packet-iscsi.c +++ b/epan/dissectors/packet-iscsi.c @@ -715,6 +715,7 @@ handleDataSegmentAsTextKeys(iscsi_session_t *iscsi_session, packet_info *pinfo, /* Code to actually dissect the packets */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_iscsi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 opcode, guint32 data_segment_len, iscsi_session_t *iscsi_session, conversation_t *conversation) { guint original_offset = offset; @@ -1562,7 +1563,9 @@ dissect_iscsi_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off tt = proto_tree_add_subtree(ti, tvb, offset, -1, ett_iscsi_RejectHeader, NULL, "Rejected Header"); + increment_dissection_depth(pinfo); dissect_iscsi_pdu(tvb, pinfo, tt, offset, next_opcode, 0, iscsi_session, conversation); + decrement_dissection_depth(pinfo); } else if(opcode == ISCSI_OPCODE_VENDOR_SPECIFIC_I0 || opcode == ISCSI_OPCODE_VENDOR_SPECIFIC_I1 || opcode == ISCSI_OPCODE_VENDOR_SPECIFIC_I2 || diff --git a/epan/dissectors/packet-isis-lsp.c b/epan/dissectors/packet-isis-lsp.c index 598052ca..db15cfb7 100644 --- a/epan/dissectors/packet-isis-lsp.c +++ b/epan/dissectors/packet-isis-lsp.c @@ -21,8 +21,9 @@ #include "config.h" -#include <epan/packet.h> #include <epan/expert.h> +#include <epan/packet.h> + #include "packet-osi.h" #include "packet-isis.h" #include "packet-isis-clv.h" @@ -3429,6 +3430,7 @@ dissect_srv6_sid_struct_subsubclv(tvbuff_t *tvb, packet_info* pinfo, */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sub_clv_tlv_22_22_23_141_222_223(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int offset, int subclvs_len) { @@ -3446,6 +3448,8 @@ dissect_sub_clv_tlv_22_22_23_141_222_223(tvbuff_t *tvb, packet_info* pinfo, prot proto_tree *subsubtree = NULL; proto_item *ti_subsubtree = NULL; + increment_dissection_depth(pinfo); + while (i < subclvs_len) { /* offset for each sub-TLV */ sub_tlv_offset = offset + i; @@ -3705,8 +3709,9 @@ dissect_sub_clv_tlv_22_22_23_141_222_223(tvbuff_t *tvb, packet_info* pinfo, prot proto_tree_add_item(subtree, hf_isis_lsp_ext_is_reachability_value, tvb, sub_tlv_offset, clv_len, ENC_NA); break; } - i += clv_len + 2; - } + i += clv_len + 2; + } + decrement_dissection_depth(pinfo); } diff --git a/epan/dissectors/packet-iso15765.c b/epan/dissectors/packet-iso15765.c index bd3ff614..b27dc7ca 100644 --- a/epan/dissectors/packet-iso15765.c +++ b/epan/dissectors/packet-iso15765.c @@ -871,10 +871,17 @@ dissect_iso15765_can(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* return 0; } - if (can_info.fd) { + switch (can_info.fd) { + + case CAN_TYPE_CAN_FD: return dissect_iso15765(tvb, pinfo, tree, ISO15765_TYPE_CAN_FD, can_info.id, can_info.len); - } else { + + case CAN_TYPE_CAN_CLASSIC: return dissect_iso15765(tvb, pinfo, tree, ISO15765_TYPE_CAN, can_info.id, can_info.len); + + default: + DISSECTOR_ASSERT_NOT_REACHED(); + return tvb_captured_length(tvb); } } diff --git a/epan/dissectors/packet-iso7816.c b/epan/dissectors/packet-iso7816.c index 7f071fc9..dbf7276d 100644 --- a/epan/dissectors/packet-iso7816.c +++ b/epan/dissectors/packet-iso7816.c @@ -634,18 +634,20 @@ dissect_iso7816_cmd_apdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } ret = dissect_iso7816_class(tvb, offset, pinfo, tree); - if (ret==-1) { + if (ret == -1) { /* the class byte says that the remaining APDU is not in ISO7816 format */ - iso7816_trans->handle = - dissector_get_payload_handle(iso7816_apdu_pld_table); - if (iso7816_trans->handle != NULL) { - ret = call_dissector(iso7816_trans->handle, tvb, pinfo, tree); - if (ret == 0) { - col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, - "Command APDU using proprietary format"); - return 1; /* we only dissected the class byte */ + if (iso7816_trans) { + iso7816_trans->handle = + dissector_get_payload_handle(iso7816_apdu_pld_table); + if (iso7816_trans->handle != NULL) { + ret = call_dissector(iso7816_trans->handle, tvb, pinfo, tree); + if (ret == 0) { + col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, + "Command APDU using proprietary format"); + return 1; /* we only dissected the class byte */ + } } } diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c index be5060b7..67dac0ec 100644 --- a/epan/dissectors/packet-isup.c +++ b/epan/dissectors/packet-isup.c @@ -9723,6 +9723,7 @@ dissect_japan_chg_inf(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isu } /* ------------------------------------------------------------------ */ +// NOLINTBEGIN(misc-no-recursion) static void dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree, guint8 itu_isup_variant, guint32 circuit_id) { @@ -9739,6 +9740,9 @@ dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree tap_calling_number = NULL; offset = 0; + // We call ourselves for MESSAGE_TYPE_PASS_ALONG. + increment_dissection_depth(pinfo); + /* Extract message type field */ message_type = tvb_get_guint8(message_tvb, 0); @@ -9991,8 +9995,12 @@ dissect_ansi_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree tap_rec->called_number = tap_called_number; tap_rec->cause_value = tap_cause_value; tap_queue_packet(isup_tap, pinfo, tap_rec); + + decrement_dissection_depth(pinfo); } +// NOLINTEND(misc-no-recursion) +// NOLINTBEGIN(misc-no-recursion) static void dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree, guint8 itu_isup_variant, guint32 circuit_id) { @@ -10009,6 +10017,9 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup tap_calling_number = NULL; offset = 0; + // We call ourselves for MESSAGE_TYPE_PASS_ALONG. + increment_dissection_depth(pinfo); + /* Extract message type field */ message_type = tvb_get_guint8(message_tvb, 0); @@ -10360,7 +10371,10 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup tap_rec->called_number = tap_called_number; tap_rec->cause_value = tap_cause_value; tap_queue_packet(isup_tap, pinfo, tap_rec); + + decrement_dissection_depth(pinfo); } +// NOLINTEND(misc-no-recursion) /* ------------------------------------------------------------------ */ static int diff --git a/epan/dissectors/packet-its.c b/epan/dissectors/packet-its.c index d40d5afe..a651376c 100644 --- a/epan/dissectors/packet-its.c +++ b/epan/dissectors/packet-its.c @@ -14082,7 +14082,6 @@ static int dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU(tvbuff_t *tvb _U_, pa static int dissect_gdd_GddStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -14999,15 +14998,14 @@ static const per_sequence_t gdd_GddStructure_sequence[] = { static int dissect_gdd_GddStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 9; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // GddStructure → GddAttributes → GddAttributes/_item → InternationalSign-destinationInformation → InternationalSign-destinationInformation/ioList → DestinationInformationIO → DestinationInformationIO/destPlace → DestinationPlace → GddStructure + actx->pinfo->dissection_depth += 8; + increment_dissection_depth(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_gdd_GddStructure, gdd_GddStructure_sequence); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 8; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-json_3gpp.c b/epan/dissectors/packet-json_3gpp.c index 662df5b0..8cb4cadb 100644 --- a/epan/dissectors/packet-json_3gpp.c +++ b/epan/dissectors/packet-json_3gpp.c @@ -271,6 +271,9 @@ dissect_3gpp_supportfeatures(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo } ti = proto_tree_add_item(tree, hf_json_3gpp_suppfeat, tvb, offset, len, ENC_ASCII); + if (len <= 0) { + return; + } sub_tree = proto_item_add_subtree(ti, ett_json_3gpp_data); suppfeat_tvb = tvb_new_subset_length(tvb, offset, len); diff --git a/epan/dissectors/packet-jxta.c b/epan/dissectors/packet-jxta.c index 2f020ce8..a6b44d70 100644 --- a/epan/dissectors/packet-jxta.c +++ b/epan/dissectors/packet-jxta.c @@ -1461,6 +1461,7 @@ static int dissect_jxta_message(tvbuff_t * tvb, packet_info * pinfo, proto_tree * the packet was not recognized as a JXTA packet and negative if the * dissector needs more bytes in order to process a PDU. **/ +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, guint ns_count, const gchar ** names_table) { @@ -1591,7 +1592,9 @@ static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, p jxta_signature_element_tvb = tvb_new_subset_remaining(tvb, offset); + increment_dissection_depth(pinfo); processed = dissect_jxta_message_element_1(jxta_signature_element_tvb, pinfo, NULL, 0, NULL); + decrement_dissection_depth(pinfo); if (processed == 0) { return offset; @@ -1685,7 +1688,9 @@ static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, p if ((flags & JXTAMSG1_ELMFLAG_SIGNATURE) != 0) { tvbuff_t *jxta_message_element_tvb = tvb_new_subset_remaining(tvb, tree_offset); + increment_dissection_depth(pinfo); tree_offset += dissect_jxta_message_element_1(jxta_message_element_tvb, pinfo, jxta_elem_tree, ns_count, names_table); + decrement_dissection_depth(pinfo); } proto_item_set_end(jxta_elem_tree_item, tvb, tree_offset); @@ -1709,6 +1714,7 @@ static int dissect_jxta_message_element_1(tvbuff_t * tvb, packet_info * pinfo, p * the packet was not recognized as a JXTA packet and negative if the * dissector needs more bytes in order to process a PDU. **/ +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_jxta_message_element_2(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, guint names_count, const gchar ** names_table) { @@ -1848,7 +1854,9 @@ static int dissect_jxta_message_element_2(tvbuff_t * tvb, packet_info * pinfo, p jxta_signature_element_tvb = tvb_new_subset_remaining(tvb, offset); + increment_dissection_depth(pinfo); processed = dissect_jxta_message_element_2(jxta_signature_element_tvb, pinfo, NULL, 0, NULL); + decrement_dissection_depth(pinfo); if (processed == 0) { return offset; @@ -2014,6 +2022,7 @@ static int dissect_jxta_message_element_2(tvbuff_t * tvb, packet_info * pinfo, p * the packet was not recognized and negative if the dissector needs * more bytes in order to process a PDU. **/ +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_media( const gchar* fullmediatype, tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) { int dissected = 0; @@ -2047,7 +2056,9 @@ static int dissect_media( const gchar* fullmediatype, tvbuff_t * tvb, packet_inf add_new_data_source(pinfo, uncomp_tvb, "Uncompressed Element Content"); /* XXX bondolo 20060201 Force XML for uncompressed data. */ + increment_dissection_depth(pinfo); dissected = dissect_media("text/xml;charset=\"UTF-8\"", uncomp_tvb, pinfo, tree); + decrement_dissection_depth(pinfo); if( dissected > 0 ) { /* report back the uncompressed length. */ diff --git a/epan/dissectors/packet-kafka.c b/epan/dissectors/packet-kafka.c index 798f1c95..482a6701 100644 --- a/epan/dissectors/packet-kafka.c +++ b/epan/dissectors/packet-kafka.c @@ -1907,6 +1907,7 @@ decompress(tvbuff_t *tvb, packet_info *pinfo, int offset, guint32 length, int co * returns: pointer to the next message/batch */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_kafka_message_old(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int end_offset _U_) { proto_item *message_ti; @@ -2000,6 +2001,7 @@ dissect_kafka_message_old(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i * returns: pointer to the next message/batch */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_kafka_message_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int end_offset _U_) { proto_item *batch_ti; @@ -2073,6 +2075,7 @@ dissect_kafka_message_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_kafka_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int end_offset) { gint8 magic_byte; @@ -2093,14 +2096,19 @@ dissect_kafka_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o } magic_byte = tvb_get_guint8(tvb, offset + 16); + int message_offset = 0; + increment_dissection_depth(pinfo); if (magic_byte < 2) { - return dissect_kafka_message_old(tvb, pinfo, tree, offset, end_offset); + message_offset = dissect_kafka_message_old(tvb, pinfo, tree, offset, end_offset); } else { - return dissect_kafka_message_new(tvb, pinfo, tree, offset, end_offset); + message_offset = dissect_kafka_message_new(tvb, pinfo, tree, offset, end_offset); } + decrement_dissection_depth(pinfo); + return message_offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_kafka_message_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint len, guint8 codec) { proto_item *ti; diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c index 34a5408f..024d2192 100644 --- a/epan/dissectors/packet-kerberos.c +++ b/epan/dissectors/packet-kerberos.c @@ -2508,7 +2508,7 @@ verify_krb5_pac_ticket_checksum(proto_tree *tree _U_, } checksum.length = MIN(checksum.length, (unsigned int)checksum_length); - tepdata.data = (void *)(uintptr_t)tepbuffer; + tepdata.data = (void *)tepbuffer; tepdata.length = teplength; ret = decode_krb5_enc_tkt_part(&tepdata, &tep); diff --git a/epan/dissectors/packet-kink.c b/epan/dissectors/packet-kink.c index 7c19b1da..87c7fd65 100644 --- a/epan/dissectors/packet-kink.c +++ b/epan/dissectors/packet-kink.c @@ -275,6 +275,7 @@ dissect_kink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ * This function called by the respective function again. */ static void +// NOLINTNEXTLINE(misc-no-recursion) control_payload(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8 next_payload, proto_tree *kink_tree){ switch(next_payload){ case KINK_DONE: @@ -310,6 +311,7 @@ control_payload(packet_info *pinfo, tvbuff_t *tvb, int offset, guint8 next_paylo } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_ap_req(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_ap_req_tree; proto_item *ti; @@ -365,6 +367,7 @@ dissect_payload_kink_ap_req(packet_info *pinfo, tvbuff_t *tvb, int offset, proto static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_ap_rep(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_ap_rep_tree; proto_item *ti; @@ -420,6 +423,7 @@ dissect_payload_kink_ap_rep(packet_info *pinfo, tvbuff_t *tvb, int offset, proto } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_krb_error(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_krb_error_tree; proto_item *ti; @@ -472,6 +476,7 @@ dissect_payload_kink_krb_error(packet_info *pinfo, tvbuff_t *tvb, int offset, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_tgt_req(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_tgt_req_tree; guint8 next_payload; @@ -514,6 +519,7 @@ dissect_payload_kink_tgt_req(packet_info *pinfo, tvbuff_t *tvb, int offset, prot } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_tgt_rep(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_tgt_rep_tree; guint8 next_payload; @@ -572,6 +578,7 @@ dissect_payload_kink_tgt_rep(packet_info *pinfo, tvbuff_t *tvb, int offset, prot } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_isakmp(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_isakmp_tree; proto_item *ti; @@ -636,6 +643,7 @@ dissect_payload_kink_isakmp(packet_info *pinfo, tvbuff_t *tvb, int offset, proto } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_encrypt(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_encrypt_tree; proto_item *ti; @@ -714,6 +722,7 @@ dissect_payload_kink_encrypt(packet_info *pinfo, tvbuff_t *tvb, int offset, prot #ifdef HAVE_KERBEROS static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_decrypt_kink_encrypt(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tree, int payload_length){ proto_tree *decrypt_kink_encrypt_tree; @@ -750,6 +759,7 @@ static const range_string kink_error_rvals[] = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_error(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_error_tree; proto_item *ti; @@ -784,6 +794,7 @@ dissect_payload_kink_error(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_ } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_payload_kink_not_defined(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree *tree){ proto_tree *payload_kink_not_defined_tree; guint8 next_payload; @@ -980,6 +991,7 @@ proto_register_kink(void) { } void proto_reg_handoff_kink(void) { + // If this is ever streamed (transported over TCP) we need to add recursion checks. dissector_add_uint_with_preference("udp.port", KINK_PORT, kink_handle); } diff --git a/epan/dissectors/packet-knxip.c b/epan/dissectors/packet-knxip.c index cb7d5ec6..15f13d44 100644 --- a/epan/dissectors/packet-knxip.c +++ b/epan/dissectors/packet-knxip.c @@ -2646,6 +2646,7 @@ static void make_key_info( gchar* text, gint text_max, const guint8* key, const /* Dissect SECURE_WRAPPER */ +// NOLINTNEXTLINE(misc-no-recursion) static guint8 dissect_secure_wrapper( guint8 header_length, tvbuff_t* tvb, packet_info* pinfo, proto_tree* root, proto_item* item, proto_tree* tree, gint* p_offset ) { guint8 ok = 1; @@ -2803,7 +2804,9 @@ static guint8 dissect_secure_wrapper( guint8 header_length, tvbuff_t* tvb, packe /* Dissect embedded KIP packet */ { tvbuff_t* tvb3 = tvb_new_subset_length( tvb2, 0, size2 ); + increment_dissection_depth(pinfo); dissect_knxip( tvb3, pinfo, root, NULL ); + decrement_dissection_depth(pinfo); } } } @@ -3177,6 +3180,7 @@ static guint8 dissect_session_status( tvbuff_t* tvb, packet_info* pinfo, proto_i /* Dissect KNX-IP data after KNX-IP header */ +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_knxip_data( guint8 header_length, guint8 protocol_version _U_, guint16 service, tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, proto_item* kip_item, proto_tree* kip_tree ) { guint8 ok = 1; @@ -3740,6 +3744,7 @@ get_knxip_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data return tvb_get_ntohs( tvb, offset+4 ); } +// NOLINTNEXTLINE(misc-no-recursion) static gint dissect_knxip( tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_ ) { gint offset = 0; diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c index 1ad92152..42834ced 100644 --- a/epan/dissectors/packet-ldap.c +++ b/epan/dissectors/packet-ldap.c @@ -1115,7 +1115,6 @@ ldap_match_call_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu static int dissect_ldap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -2174,11 +2173,9 @@ static const ber_choice_t Filter_choice[] = { static int dissect_ldap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Filter → Filter/and → Filter/and/_item → Filter + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); proto_tree *tr; proto_item *it; attributedesc_string=NULL; @@ -2204,7 +2201,8 @@ dissect_ldap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, as proto_item_append_text(it, "%s", string_or_null(Filter_string)); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-ldp.c b/epan/dissectors/packet-ldp.c index e4114f39..25daf89d 100644 --- a/epan/dissectors/packet-ldp.c +++ b/epan/dissectors/packet-ldp.c @@ -2433,6 +2433,7 @@ static int dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem); static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_tlv_er(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem) { proto_tree *val_tree; @@ -2514,6 +2515,7 @@ dissect_tlv_upstrm_ass_lbl(tvbuff_t *tvb, packet_info *pinfo, guint offset, prot } /*Dissect IPv4 Interface ID TLV*/ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_tlv_ipv4_interface_id(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem) { proto_tree *val_tree, *sub_tree; @@ -2558,6 +2560,7 @@ dissect_tlv_ip_multicast_tunnel(tvbuff_t *tvb, guint offset, proto_tree *tree, i } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_tlv_mpls_context_lbl(tvbuff_t *tvb,packet_info *pinfo, guint offset, proto_tree *tree, int rem) { proto_tree *val_tree; @@ -2594,6 +2597,7 @@ dissect_tlv_rsvp_te_p2mp_lsp(tvbuff_t *tvb, guint offset, proto_tree *tree) /* Dissect a TLV and return the number of bytes consumed ... */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem) { guint16 type, typebak; @@ -2616,6 +2620,8 @@ dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, i rem -= 4; /*do not count header*/ length = MIN(length, rem); /* Don't go haywire if a problem ... */ + increment_dissection_depth(pinfo); + if (tree) { proto_tree *tlv_tree; /*chk for vendor-private*/ @@ -3000,6 +3006,7 @@ dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, i } } + decrement_dissection_depth(pinfo); return length + 4; /* Length of the value field + header */ } diff --git a/epan/dissectors/packet-li5g.c b/epan/dissectors/packet-li5g.c index f9950c06..af930f46 100644 --- a/epan/dissectors/packet-li5g.c +++ b/epan/dissectors/packet-li5g.c @@ -100,6 +100,7 @@ static const value_string attribute_type_vals[] = { }; static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_li5g(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { proto_tree *li5g_tree, *attr_tree, *parent=NULL; @@ -171,8 +172,11 @@ dissect_li5g(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ li5g_tree->parent=parent; /* have another li5g in the same packet? */ - if (tvb_captured_length(tvb)>offset+payloadLen) + if (tvb_captured_length(tvb)>offset+payloadLen) { + increment_dissection_depth(pinfo); dissect_li5g(tvb_new_subset_remaining(tvb, offset+payloadLen), pinfo, tree, NULL); + decrement_dissection_depth(pinfo); + } /* set these info at the end*/ col_set_str(pinfo->cinfo, COL_PROTOCOL, "5GLI"); diff --git a/epan/dissectors/packet-lisp-tcp.c b/epan/dissectors/packet-lisp-tcp.c index f05e2bbf..108e9f58 100644 --- a/epan/dissectors/packet-lisp-tcp.c +++ b/epan/dissectors/packet-lisp-tcp.c @@ -150,7 +150,7 @@ dissect_lisp_tcp_message_eid_prefix(tvbuff_t *tvb, packet_info *pinfo, proto_tre prefix_length = tvb_get_guint8(tvb, offset); prefix_afi = tvb_get_ntohs(tvb, offset + 1); - prefix = get_addr_str(pinfo->pool, tvb, offset + 3, prefix_afi, &addr_len); + prefix = get_addr_str(tvb, pinfo, offset + 3, prefix_afi, &addr_len); if (prefix == NULL) { expert_add_info_format(pinfo, message_tree, &ei_lisp_tcp_unexpected_afi, diff --git a/epan/dissectors/packet-lisp.c b/epan/dissectors/packet-lisp.c index 6eb7db4d..56f9a3ec 100644 --- a/epan/dissectors/packet-lisp.c +++ b/epan/dissectors/packet-lisp.c @@ -515,7 +515,8 @@ get_lcaf_data(tvbuff_t *tvb, gint offset, guint8 *lcaf_type, guint16 *len) } const gchar * -get_addr_str(wmem_allocator_t *pool, tvbuff_t *tvb, gint offset, guint16 afi, guint16 *addr_len) +// NOLINTNEXTLINE(misc-no-recursion) +get_addr_str(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint16 afi, guint16 *addr_len) { const gchar *notset_str = "not set"; const gchar *addr_str; @@ -529,11 +530,11 @@ get_addr_str(wmem_allocator_t *pool, tvbuff_t *tvb, gint offset, guint16 afi, gu return notset_str; case AFNUM_INET: *addr_len = INET_ADDRLEN; - addr_str = tvb_ip_to_str(pool, tvb, offset); + addr_str = tvb_ip_to_str(pinfo->pool, tvb, offset); return addr_str; case AFNUM_INET6: *addr_len = INET6_ADDRLEN; - addr_str = tvb_ip6_to_str(pool, tvb, offset); + addr_str = tvb_ip6_to_str(pinfo->pool, tvb, offset); return addr_str; case AFNUM_LCAF: get_lcaf_data(tvb, offset, &lcaf_type, addr_len); @@ -541,24 +542,28 @@ get_addr_str(wmem_allocator_t *pool, tvbuff_t *tvb, gint offset, guint16 afi, gu if (lcaf_type == LCAF_IID) { iid = tvb_get_ntohl(tvb, offset + LCAF_HEADER_LEN); afi = tvb_get_ntohs(tvb, offset + LCAF_HEADER_LEN + 4); - addr_str = get_addr_str(pool, tvb, offset + LCAF_HEADER_LEN + 6, afi, &cur_len); - return wmem_strdup_printf(pool, "[%d] %s", iid, addr_str); + increment_dissection_depth(pinfo); + addr_str = get_addr_str(tvb, pinfo, offset + LCAF_HEADER_LEN + 6, afi, &cur_len); + decrement_dissection_depth(pinfo); + return wmem_strdup_printf(pinfo->pool, "[%d] %s", iid, addr_str); } if (lcaf_type == LCAF_ASN) { asn = tvb_get_ntohl(tvb, offset + LCAF_HEADER_LEN); afi = tvb_get_ntohs(tvb, offset + LCAF_HEADER_LEN + 4); - addr_str = get_addr_str(pool, tvb, offset + LCAF_HEADER_LEN + 6, afi, &cur_len); - return wmem_strdup_printf(pool, "%s (ASN %d)", addr_str, asn); + increment_dissection_depth(pinfo); + addr_str = get_addr_str(tvb, pinfo, offset + LCAF_HEADER_LEN + 6, afi, &cur_len); + decrement_dissection_depth(pinfo); + return wmem_strdup_printf(pinfo->pool, "%s (ASN %d)", addr_str, asn); } return addr_str; case AFNUM_802: case AFNUM_EUI48: *addr_len = EUI48_ADDRLEN; - addr_str = tvb_ether_to_str(pool, tvb, offset); + addr_str = tvb_ether_to_str(pinfo->pool, tvb, offset); return addr_str; case AFNUM_DISTNAME: *addr_len = tvb_strsize(tvb, offset); - addr_str = tvb_get_stringz_enc(pool, tvb, offset, NULL, ENC_ASCII); + addr_str = tvb_get_stringz_enc(pinfo->pool, tvb, offset, NULL, ENC_ASCII); return addr_str; default: return NULL; @@ -566,6 +571,7 @@ get_addr_str(wmem_allocator_t *pool, tvbuff_t *tvb, gint offset, guint16 afi, gu } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_natt_rloc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, const gchar *str, int idx) { @@ -584,7 +590,7 @@ dissect_lcaf_natt_rloc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Reencap hop */ - rloc_str = get_addr_str(pinfo->pool, tvb, offset, rloc_afi, &addr_len); + rloc_str = get_addr_str(tvb, pinfo, offset, rloc_afi, &addr_len); switch (rloc_afi) { case AFNUM_RESERVED: @@ -616,6 +622,7 @@ dissect_lcaf_natt_rloc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_elp_hop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, int idx, proto_item *tip) { @@ -646,7 +653,7 @@ dissect_lcaf_elp_hop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Reencap hop */ - hop_str = get_addr_str(pinfo->pool, tvb, offset, hop_afi, &addr_len); + hop_str = get_addr_str(tvb, pinfo, offset, hop_afi, &addr_len); switch (hop_afi) { case AFNUM_INET: @@ -688,6 +695,7 @@ dissect_lcaf_elp_hop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_rle_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, int idx, proto_item *tip) { @@ -716,7 +724,7 @@ dissect_lcaf_rle_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* RTR/ETR entry */ - entry_str = get_addr_str(pinfo->pool, tvb, offset, entry_afi, &addr_len); + entry_str = get_addr_str(tvb, pinfo, offset, entry_afi, &addr_len); switch (entry_afi) { case AFNUM_INET: @@ -756,6 +764,7 @@ dissect_lcaf_rle_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_afi_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint16 length) { @@ -796,7 +805,7 @@ dissect_lcaf_afi_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case AFNUM_LCAF: old_offset = offset; - lcaf_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + lcaf_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); proto_item_append_text(tir, " %d. %s", i, lcaf_str); proto_item_set_len(tir, 2 + addr_len); offset = dissect_lcaf(tvb, pinfo, lisp_afi_list_tree, offset, tir); @@ -848,6 +857,7 @@ dissect_lcaf_afi_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_iid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tip) { const gchar *ip_address; @@ -865,7 +875,7 @@ dissect_lcaf_iid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offse offset += 2; /* Address */ - ip_address = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + ip_address = get_addr_str(tvb, pinfo, offset, afi, &addr_len); if (ip_address && afi) proto_item_append_text(tip, ", Address: %s", ip_address); @@ -922,6 +932,7 @@ dissect_lcaf_iid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offse */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_asn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tip) { const gchar *addr; @@ -939,7 +950,7 @@ dissect_lcaf_asn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offse offset += 2; /* Address */ - addr = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + addr = get_addr_str(tvb, pinfo, offset, afi, &addr_len); if (addr && afi) proto_item_append_text(tip, ", Address: %s", addr); @@ -1000,6 +1011,7 @@ dissect_lcaf_asn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offse */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_geo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tir) { guint16 addr_len = 0; @@ -1108,7 +1120,7 @@ dissect_lcaf_geo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offse proto_tree_add_item(tree, hf_lisp_lcaf_geo_afi, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; - ip_address = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + ip_address = get_addr_str(tvb, pinfo, offset, afi, &addr_len); if (ip_address && afi) proto_item_append_text(tir, ", Address: %s", ip_address); @@ -1235,6 +1247,7 @@ dissect_lcaf_natt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_nonce_loc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tip) { const gchar *addr; @@ -1257,7 +1270,7 @@ dissect_lcaf_nonce_loc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset += 2; /* Address */ - addr = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + addr = get_addr_str(tvb, pinfo, offset, afi, &addr_len); if (addr && afi) proto_item_append_text(tip, ", Address: %s", addr); @@ -1318,6 +1331,7 @@ dissect_lcaf_nonce_loc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_mcast_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tir) { @@ -1356,7 +1370,7 @@ dissect_lcaf_mcast_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Source/Subnet Address */ - src_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + src_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1389,7 +1403,7 @@ dissect_lcaf_mcast_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Group Address */ - grp_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + grp_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1479,6 +1493,7 @@ dissect_lcaf_elp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_src_dst_key(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tir) { @@ -1511,7 +1526,7 @@ dissect_lcaf_src_dst_key(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Source Prefix */ - src_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + src_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1550,7 +1565,7 @@ dissect_lcaf_src_dst_key(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Destination Prefix */ - dst_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + dst_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1643,6 +1658,7 @@ dissect_lcaf_rle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf_kv_addr_pair(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { @@ -1661,7 +1677,7 @@ dissect_lcaf_kv_addr_pair(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Key */ - key_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + key_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1705,7 +1721,7 @@ dissect_lcaf_kv_addr_pair(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; /* Value */ - value_str = get_addr_str(pinfo->pool, tvb, offset, afi, &addr_len); + value_str = get_addr_str(tvb, pinfo, offset, afi, &addr_len); switch (afi) { case AFNUM_INET: @@ -1821,6 +1837,7 @@ dissect_lcaf_vendor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, */ int +// NOLINTNEXTLINE(misc-no-recursion) dissect_lcaf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tip) { guint8 lcaf_type; @@ -1875,6 +1892,7 @@ dissect_lcaf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, p payload_tvb = tvb_new_subset_length(tvb, 0, offset + len); ti = (tip) ? tip : tir; + increment_dissection_depth(pinfo); switch (lcaf_type) { case LCAF_NULL: break; @@ -1918,6 +1936,7 @@ dissect_lcaf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, p proto_tree_add_expert(tree, pinfo, &ei_lisp_undecoded, tvb, offset, len); return offset + len; } + decrement_dissection_depth(pinfo); return offset; } @@ -1985,7 +2004,7 @@ dissect_lisp_locator(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_mapping loc_afi = tvb_get_ntohs(tvb, offset); offset += 2; - locator = get_addr_str(pinfo->pool, tvb, offset, loc_afi, &addr_len); + locator = get_addr_str(tvb, pinfo, offset, loc_afi, &addr_len); if (locator == NULL) { expert_add_info_format(pinfo, lisp_mapping_tree, &ei_lisp_unexpected_field, @@ -2054,7 +2073,7 @@ dissect_lisp_mapping(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_tree, act = flags & LISP_MAP_ACT; act >>= 13; - prefix = get_addr_str(pinfo->pool, tvb, offset + 12, prefix_afi, &addr_len); + prefix = get_addr_str(tvb, pinfo, offset + 12, prefix_afi, &addr_len); if (prefix == NULL) { expert_add_info_format(pinfo, lisp_tree, &ei_lisp_unexpected_field, @@ -2290,7 +2309,7 @@ dissect_lisp_map_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_tre offset += INET6_ADDRLEN; break; case AFNUM_LCAF: - src_eid = get_addr_str(pinfo->pool, tvb, offset, src_eid_afi, &addr_len); + src_eid = get_addr_str(tvb, pinfo, offset, src_eid_afi, &addr_len); lcaf_src_eid_tree = proto_tree_add_subtree_format(lisp_tree, tvb, offset, addr_len, ett_lisp_lcaf, NULL, "Source EID: %s", src_eid); dissect_lcaf(tvb, pinfo, lcaf_src_eid_tree, offset, NULL); offset += addr_len; @@ -2355,7 +2374,7 @@ dissect_lisp_map_request(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_tre addr_len = 0; prefix_mask = tvb_get_guint8(tvb, offset + 1); prefix_afi = tvb_get_ntohs(tvb, offset + 2); - prefix = get_addr_str(pinfo->pool, tvb, offset + 4, prefix_afi, &addr_len); + prefix = get_addr_str(tvb, pinfo, offset + 4, prefix_afi, &addr_len); if (prefix == NULL) { expert_add_info_format(pinfo, lisp_tree, &ei_lisp_unexpected_field, @@ -2879,7 +2898,7 @@ dissect_lisp_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_tree) proto_tree_add_item(prefix_tree, hf_lisp_info_prefix_afi, tvb, offset, 2, ENC_BIG_ENDIAN); prefix_afi = tvb_get_ntohs(tvb, offset); offset += 2; - prefix = get_addr_str(pinfo->pool, tvb, offset, prefix_afi, &addr_len); + prefix = get_addr_str(tvb, pinfo, offset, prefix_afi, &addr_len); if (prefix == NULL) { expert_add_info_format(pinfo, lisp_tree, &ei_lisp_unexpected_field, diff --git a/epan/dissectors/packet-lisp.h b/epan/dissectors/packet-lisp.h index b85a647a..5a61c63a 100644 --- a/epan/dissectors/packet-lisp.h +++ b/epan/dissectors/packet-lisp.h @@ -22,7 +22,7 @@ #define LISP_CONTROL_PORT 4342 -const gchar * get_addr_str(wmem_allocator_t *pool, tvbuff_t *tvb, gint offset, guint16 afi, guint16 *addr_len); +const gchar * get_addr_str(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint16 afi, guint16 *addr_len); int dissect_lcaf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, proto_item *tip); int dissect_lisp_mapping(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lisp_tree, guint8 rec_cnt, int rec, gboolean referral, gint offset, proto_item *tim); diff --git a/epan/dissectors/packet-llrp.c b/epan/dissectors/packet-llrp.c index 9b02b072..4e97b53c 100644 --- a/epan/dissectors/packet-llrp.c +++ b/epan/dissectors/packet-llrp.c @@ -1519,6 +1519,7 @@ static guint dissect_llrp_item_array(tvbuff_t * const tvb, packet_info *pinfo, } static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_llrp_impinj_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *param_tree, guint suboffset, const guint param_end) { @@ -1806,6 +1807,7 @@ dissect_llrp_impinj_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *par } static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_llrp_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const guint end, const guint depth) { @@ -1857,6 +1859,7 @@ dissect_llrp_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 2; suboffset = offset; + increment_dissection_depth(pinfo); switch(type) { case LLRP_TLV_RO_BOUND_SPEC: case LLRP_TLV_UHF_CAPABILITIES: @@ -2503,6 +2506,7 @@ dissect_llrp_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } break; } + decrement_dissection_depth(pinfo); /* Have we decoded exactly the number of bytes declared in the parameter? */ if(suboffset != param_end) { /* Report problem */ @@ -2566,7 +2570,7 @@ dissect_llrp_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, * will already show up as 'unknown'. */ real_len = 0; break; - }; + } ti = proto_tree_add_none_format(tree, hf_llrp_param, tvb, offset, real_len + 1, "TV Parameter : %s", @@ -3996,8 +4000,7 @@ proto_register_llrp(void) expert_module_t* expert_llrp; /* Register the protocol name and description */ - proto_llrp = proto_register_protocol("Low Level Reader Protocol", - "LLRP", "llrp"); + proto_llrp = proto_register_protocol("Low Level Reader Protocol", "LLRP", "llrp"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_llrp, hf, array_length(hf)); diff --git a/epan/dissectors/packet-lwm2mtlv.c b/epan/dissectors/packet-lwm2mtlv.c index da5995fb..032a13f6 100644 --- a/epan/dissectors/packet-lwm2mtlv.c +++ b/epan/dissectors/packet-lwm2mtlv.c @@ -820,6 +820,7 @@ addValueInterpretations(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tlv_tree, } static void +// NOLINTNEXTLINE(misc-no-recursion) addValueTree(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tlv_tree, lwm2mElement_t *element, gint object_id, gint resource_id, const lwm2m_resource_t *resource) { guint valueOffset = 1 + element->length_of_identifier + element->length_of_length; @@ -839,6 +840,7 @@ addValueTree(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tlv_tree, lwm2mEleme } static void +// NOLINTNEXTLINE(misc-no-recursion) addTlvElement(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tlv_tree, lwm2mElement_t *element, gint object_id, gint resource_id) { proto_tree *element_tree = NULL; @@ -906,6 +908,7 @@ static guint parseTLVHeader(tvbuff_t *tvb, lwm2mElement_t *element) return element->totalLength; } +// NOLINTNEXTLINE(misc-no-recursion) static void parseArrayOfElements(packet_info *pinfo, tvbuff_t *tvb, proto_tree *tlv_tree, gint object_id, gint resource_id) { guint length; @@ -916,6 +919,7 @@ static void parseArrayOfElements(packet_info *pinfo, tvbuff_t *tvb, proto_tree * length = tvb_reported_length(tvb); + increment_dissection_depth(pinfo); while ( length > 0 ) { tvbuff_t* sub = tvb_new_subset_length(tvb, offset, length); elementLength = parseTLVHeader(sub, &element); @@ -932,6 +936,7 @@ static void parseArrayOfElements(packet_info *pinfo, tvbuff_t *tvb, proto_tree * break; } } + decrement_dissection_depth(pinfo); proto_item_append_text(tlv_tree, " (%u element%s)", element_count, plurality(element_count, "", "s")); } @@ -1170,11 +1175,7 @@ void proto_register_lwm2mtlv(void) module_t *lwm2mtlv_module; /* Register our configuration options */ - proto_lwm2mtlv = proto_register_protocol ( - "Lightweight M2M TLV", - "LwM2M-TLV", - "lwm2mtlv" - ); + proto_lwm2mtlv = proto_register_protocol ("Lightweight M2M TLV", "LwM2M-TLV","lwm2mtlv"); proto_register_field_array(proto_lwm2mtlv, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); diff --git a/epan/dissectors/packet-m2ua.c b/epan/dissectors/packet-m2ua.c index 3e0e662a..e575ebad 100644 --- a/epan/dissectors/packet-m2ua.c +++ b/epan/dissectors/packet-m2ua.c @@ -655,6 +655,7 @@ dissect_retrieval_result_parameter(tvbuff_t *parameter_tvb, proto_tree *paramete } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_link_key_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -702,6 +703,7 @@ dissect_sdl_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_ } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_registration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -745,6 +747,7 @@ dissect_registration_status_parameter(tvbuff_t *parameter_tvb, proto_tree *param } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_deregistration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -864,6 +867,7 @@ static const value_string parameter_tag_values[] = { static gint protocol_data_1_global = PROTOCOL_DATA_1_PARAMETER_TAG; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m2ua_tree) { guint16 tag, length, padding_length; @@ -994,6 +998,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m2ua_tree) { gint offset, length, total_length, remaining_length; @@ -1007,7 +1012,9 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre total_length = MIN(total_length, remaining_length); /* create a tvb for the parameter including the padding bytes */ parameter_tvb = tvb_new_subset_length(parameters_tvb, offset, total_length); + increment_dissection_depth(pinfo); dissect_parameter(parameter_tvb, pinfo, tree, m2ua_tree); + decrement_dissection_depth(pinfo); /* get rid of the handled parameter */ offset += total_length; } diff --git a/epan/dissectors/packet-m3ua.c b/epan/dissectors/packet-m3ua.c index 7ce880c6..73533fda 100644 --- a/epan/dissectors/packet-m3ua.c +++ b/epan/dissectors/packet-m3ua.c @@ -860,6 +860,7 @@ dissect_concerned_destination_parameter(tvbuff_t *parameter_tvb, proto_tree *par } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_routing_key_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -900,6 +901,7 @@ dissect_v67_registration_result_parameter(tvbuff_t *parameter_tvb, proto_tree *p } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_registration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -933,6 +935,7 @@ dissect_v67_deregistration_result_parameter(tvbuff_t *parameter_tvb, proto_tree } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_deregistration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -1308,6 +1311,7 @@ dissect_deregistration_status_parameter(tvbuff_t *parameter_tvb, proto_tree *par } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_registration_results_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -1319,6 +1323,7 @@ dissect_registration_results_parameter(tvbuff_t *parameter_tvb, packet_info *pin } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_deregistration_results_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -1498,6 +1503,7 @@ static const value_string v6_parameter_tag_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_v6_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m3ua_tree) { guint16 tag, length, padding_length; @@ -1665,6 +1671,7 @@ static const value_string v7_parameter_tag_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_v7_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m3ua_tree) { guint16 tag, length, padding_length; @@ -1831,6 +1838,7 @@ static const value_string parameter_tag_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m3ua_tree) { guint16 tag, length, padding_length; @@ -1940,6 +1948,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m3ua_tree) { gint offset, length, total_length, remaining_length; @@ -1953,6 +1962,7 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre total_length = MIN(total_length, remaining_length); /* create a tvb for the parameter including the padding bytes */ parameter_tvb = tvb_new_subset_length(parameters_tvb, offset, total_length); + increment_dissection_depth(pinfo); switch(version) { case M3UA_V5: dissect_v5_parameter(parameter_tvb, pinfo, tree, m3ua_tree); @@ -1967,6 +1977,7 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre dissect_parameter(parameter_tvb, pinfo, tree, m3ua_tree); break; } + decrement_dissection_depth(pinfo); /* get rid of the handled parameter */ offset += total_length; } @@ -1974,6 +1985,7 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *m3ua_tree) { tvbuff_t *common_header_tvb, *parameters_tvb; diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c index e6c882fc..363a9bc5 100644 --- a/epan/dissectors/packet-mac-lte.c +++ b/epan/dissectors/packet-mac-lte.c @@ -3151,7 +3151,7 @@ static gint dissect_rar_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre proto_item *ul_grant_ti; guint32 timing_advance; guint32 ul_grant; - guint16 temp_crnti; + guint32 temp_crnti; const gchar *rapid_description; guint32 bits_offset; @@ -3356,7 +3356,7 @@ static gint dissect_rar_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre /* Temporary C-RNTI */ proto_tree_add_item_ret_uint(rar_body_tree, hf_mac_lte_rar_temporary_crnti, tvb, offset, 2, - ENC_BIG_ENDIAN, (guint32*)&temp_crnti); + ENC_BIG_ENDIAN, &temp_crnti); offset += 2; rapid_description = get_mac_lte_rapid_description(rapid); @@ -3379,6 +3379,7 @@ static void dissect_rar(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pro { guint number_of_rars = 0; /* No of RAR bodies expected following headers */ guint8 *rapids = (guint8 *)wmem_alloc(pinfo->pool, MAX_RAR_PDUS * sizeof(guint8)); + guint32 temp_rapid; gboolean backoff_indicator_seen = FALSE; guint32 backoff_indicator = 0; guint8 extension; @@ -3469,7 +3470,8 @@ static void dissect_rar(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pro const gchar *rapid_description; proto_tree_add_item_ret_uint(rar_header_tree, hf_mac_lte_rar_rapid, tvb, offset, 1, - ENC_BIG_ENDIAN, (guint32*)&rapids[number_of_rars]); + ENC_BIG_ENDIAN, &temp_rapid); + rapids[number_of_rars] = (guint8)temp_rapid; rapid_description = get_mac_lte_rapid_description(rapids[number_of_rars]); @@ -6260,7 +6262,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree proto_tree *bsr_tree; proto_item *bsr_ti, *bsr_median_ti; proto_item *buffer_size_ti; - guint8 buffer_size[4]; + guint32 buffer_size[4]; int hfindex[4]; value_string_ext *p_vs_ext; guint32 *p_buffer_size_median; @@ -6294,7 +6296,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* LCID Group 0 */ buffer_size_ti = proto_tree_add_item_ret_uint(bsr_tree, hfindex[0], tvb, offset, 1, - ENC_BIG_ENDIAN, (guint32*)&buffer_size[0]); + ENC_BIG_ENDIAN, &buffer_size[0]); if (global_mac_lte_show_BSR_median) { /* Add value that can be graphed */ @@ -6302,7 +6304,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree proto_item_set_generated(bsr_median_ti); } - if (buffer_size[0] >= global_mac_lte_bsr_warn_threshold) { + if ((gint)buffer_size[0] >= global_mac_lte_bsr_warn_threshold) { expert_add_info_format(pinfo, buffer_size_ti, &ei_mac_lte_bsr_warn_threshold_exceeded, "UE %u - BSR for LCG 0 exceeds threshold: %u (%s)", p_mac_lte_info->ueid, @@ -6313,7 +6315,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* LCID Group 1 */ buffer_size_ti = proto_tree_add_item_ret_uint(bsr_tree, hfindex[1], tvb, offset, 2, - ENC_BIG_ENDIAN, (guint32*)&buffer_size[1]); + ENC_BIG_ENDIAN, &buffer_size[1]); if (global_mac_lte_show_BSR_median) { /* Add value that can be graphed */ @@ -6322,7 +6324,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree } offset++; - if (buffer_size[1] >= global_mac_lte_bsr_warn_threshold) { + if ((gint)buffer_size[1] >= global_mac_lte_bsr_warn_threshold) { expert_add_info_format(pinfo, buffer_size_ti, &ei_mac_lte_bsr_warn_threshold_exceeded, "UE %u - BSR for LCG 1 exceeds threshold: %u (%s)", p_mac_lte_info->ueid, @@ -6333,7 +6335,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* LCID Group 2 */ buffer_size_ti = proto_tree_add_item_ret_uint(bsr_tree, hfindex[2], tvb, offset, 2, - ENC_BIG_ENDIAN, (guint32*)&buffer_size[2]); + ENC_BIG_ENDIAN, &buffer_size[2]); if (global_mac_lte_show_BSR_median) { /* Add value that can be graphed */ @@ -6342,7 +6344,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree } offset++; - if (buffer_size[2] >= global_mac_lte_bsr_warn_threshold) { + if ((gint)buffer_size[2] >= global_mac_lte_bsr_warn_threshold) { expert_add_info_format(pinfo, buffer_size_ti, &ei_mac_lte_bsr_warn_threshold_exceeded, "UE %u - BSR for LCG 2 exceeds threshold: %u (%s)", p_mac_lte_info->ueid, @@ -6353,7 +6355,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* LCID Group 3 */ buffer_size_ti = proto_tree_add_item_ret_uint(bsr_tree, hfindex[3], tvb, offset, 1, - ENC_BIG_ENDIAN, (guint32*)&buffer_size[3]); + ENC_BIG_ENDIAN, &buffer_size[3]); if (global_mac_lte_show_BSR_median) { /* Add value that can be graphed */ @@ -6362,7 +6364,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree } offset++; - if (buffer_size[3] >= global_mac_lte_bsr_warn_threshold) { + if ((gint)buffer_size[3] >= global_mac_lte_bsr_warn_threshold) { expert_add_info_format(pinfo, buffer_size_ti, &ei_mac_lte_bsr_warn_threshold_exceeded, "UE %u - BSR for LCG 3 exceeds threshold: %u (%s)", p_mac_lte_info->ueid, diff --git a/epan/dissectors/packet-mbim.c b/epan/dissectors/packet-mbim.c index 1b594968..0cf68657 100644 --- a/epan/dissectors/packet-mbim.c +++ b/epan/dissectors/packet-mbim.c @@ -3373,6 +3373,7 @@ mbim_dissect_nssai(tvbuff_t* tvb, proto_tree* tree, gint offset, gint nssai_buff } static void +// NOLINTNEXTLINE(misc-no-recursion) mbim_dissect_precfg_dflt_cfg_nssai(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, gint offset, gint nssai_buffer_length) { proto_tree* subtree; @@ -3418,6 +3419,7 @@ mbim_dissect_rej_nssai(tvbuff_t* tvb, proto_tree* tree, gint offset, gint rej_ns } static void +// NOLINTNEXTLINE(misc-no-recursion) mbim_dissect_ladn(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, gint offset, gint rej_nssai_buffer_length) { proto_tree* subtree, * ladn_tree; @@ -3598,6 +3600,7 @@ mbim_dissect_ursp_rules(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, gin } static void +// NOLINTNEXTLINE(misc-no-recursion) mbim_dissect_tlv_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset) { guint tlv_data_offset; @@ -3615,6 +3618,7 @@ mbim_dissect_tlv_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *o *offset += 4; tlv_data_offset = *offset; if (data_length) { + increment_dissection_depth(pinfo); // New TLV types will be added here switch (tlv_type) { case TLV_TYPE_SINGLE_NSSAI: @@ -3665,6 +3669,7 @@ mbim_dissect_tlv_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *o proto_tree_add_item(tree, hf_mbim_tlv_ie_unnamed_data, tvb, *offset, data_length, ENC_NA); break; } + decrement_dissection_depth(pinfo); *offset = tlv_data_offset + data_length; } if (padding_length) { diff --git a/epan/dissectors/packet-mms.c b/epan/dissectors/packet-mms.c index cacfdbaf..81e7aaf3 100644 --- a/epan/dissectors/packet-mms.c +++ b/epan/dissectors/packet-mms.c @@ -1039,7 +1039,6 @@ static int dissect_mms_AlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_mms_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1558,16 +1557,15 @@ static const ber_choice_t TypeSpecification_choice[] = { static int dissect_mms_TypeSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // TypeSpecification → TypeSpecification/array → TypeSpecification + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, TypeSpecification_choice, hf_index, ett_mms_TypeSpecification, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1749,15 +1747,14 @@ static const ber_sequence_t AlternateAccess_sequence_of[1] = { static int dissect_mms_AlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 5; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // AlternateAccess → AlternateAccess/_item → AlternateAccessSelection → AlternateAccessSelection/selectAlternateAccess → AlternateAccess + actx->pinfo->dissection_depth += 4; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, AlternateAccess_sequence_of, hf_index, ett_mms_AlternateAccess); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 4; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1811,16 +1808,15 @@ static const ber_choice_t VariableSpecification_choice[] = { static int dissect_mms_VariableSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // VariableSpecification → ScatteredAccessDescription → ScatteredAccessDescription/_item → VariableSpecification + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, VariableSpecification_choice, hf_index, ett_mms_VariableSpecification, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -2097,16 +2093,15 @@ static const ber_choice_t Data_choice[] = { static int dissect_mms_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Data → Data/array → Data + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Data_choice, hf_index, ett_mms_Data, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-mongo.c b/epan/dissectors/packet-mongo.c index 64e6747b..db23a063 100644 --- a/epan/dissectors/packet-mongo.c +++ b/epan/dissectors/packet-mongo.c @@ -319,6 +319,7 @@ dissect_fullcollectionname(tvbuff_t *tvb, guint offset, proto_tree *tree) #define BSON_MAX_NESTING 100 #define BSON_MAX_DOC_SIZE (16 * 1000 * 1000) static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_bson_document(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int hf_mongo_doc) { gint32 document_length; @@ -702,6 +703,7 @@ dissect_mongo_op_commandreply(tvbuff_t *tvb, packet_info *pinfo, guint offset, p } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_mongo_op_compressed(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, guint *effective_opcode) { guint opcode = 0; @@ -896,10 +898,15 @@ dissect_mongo_op_msg(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_opcode_types(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *mongo_tree, guint opcode, guint *effective_opcode) { *effective_opcode = opcode; + unsigned recursion_depth = p_get_proto_depth(pinfo, proto_mongo); + DISSECTOR_ASSERT(recursion_depth <= BSON_MAX_NESTING); + p_set_proto_depth(pinfo, proto_mongo, recursion_depth + 1); + switch(opcode){ case OP_REPLY: offset = dissect_mongo_reply(tvb, pinfo, offset, mongo_tree); @@ -942,6 +949,8 @@ dissect_opcode_types(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree break; } + p_set_proto_depth(pinfo, proto_mongo, recursion_depth); + return offset; } diff --git a/epan/dissectors/packet-mpeg-pes.c b/epan/dissectors/packet-mpeg-pes.c index 5db34f63..0ab1dea2 100644 --- a/epan/dissectors/packet-mpeg-pes.c +++ b/epan/dissectors/packet-mpeg-pes.c @@ -819,6 +819,7 @@ static int dissect_mpeg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data); static gboolean +// NOLINTNEXTLINE(misc-no-recursion) dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { int prefix; @@ -854,6 +855,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data offset = dissect_mpeg_pes_PES(tvb, offset, &asn1_ctx, tree, proto_mpeg_pes); + increment_dissection_depth(pinfo); if (stream == STREAM_PICTURE) { int frame_type; @@ -1018,6 +1020,7 @@ dissect_mpeg_pes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data proto_tree_add_item(tree, hf_mpeg_pes_data, tvb, offset / 8, -1, ENC_NA); } + decrement_dissection_depth(pinfo); return TRUE; } diff --git a/epan/dissectors/packet-mpls-echo.c b/epan/dissectors/packet-mpls-echo.c index 6178c742..4e7a847b 100644 --- a/epan/dissectors/packet-mpls-echo.c +++ b/epan/dissectors/packet-mpls-echo.c @@ -1572,21 +1572,25 @@ dissect_mpls_echo_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tre * Dissector for Errored TLVs */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_mpls_echo_tlv_errored(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem) { int errored_tlv_length; + increment_dissection_depth(pinfo); while (rem >= 4) { errored_tlv_length = dissect_mpls_echo_tlv(tvb, pinfo, offset, tree, rem, TRUE); rem -= errored_tlv_length; offset += errored_tlv_length; } + increment_dissection_depth(pinfo); } /* * Dissector for MPLS Echo TLVs and return bytes consumed */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_mpls_echo_tlv(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tree *tree, int rem, gboolean in_errored) { proto_tree *ti = NULL, *mpls_echo_tlv_tree = NULL; diff --git a/epan/dissectors/packet-mq-pcf.c b/epan/dissectors/packet-mq-pcf.c index b9b4b979..8e15e3ec 100644 --- a/epan/dissectors/packet-mq-pcf.c +++ b/epan/dissectors/packet-mq-pcf.c @@ -149,6 +149,8 @@ static void dissect_mqpcf_parm_int(tvbuff_t *tvb, proto_tree *tree, guint offset } } } + +// NOLINTNEXTLINE(misc-no-recursion) int dissect_mqpcf_parm_grp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* mq_tree, guint offset, guint bLittleEndian, gboolean bParse) { @@ -169,6 +171,7 @@ int dissect_mqpcf_parm_grp(tvbuff_t* tvb, packet_info* pinfo, proto_tree* mq_tre return offset; } +// NOLINTNEXTLINE(misc-no-recursion) guint32 dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tree, guint offset, guint32 uCount, guint bLittleEndian, gboolean bParse) { @@ -252,6 +255,7 @@ guint32 dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tre uTyp, val_to_str_ext_const(uTyp, GET_VALS_EXTP(PrmTyp2), " Unkn") + 6, uPrm, uPrm); + increment_dissection_depth(pinfo); switch (uTyp) { case MQ_MQCFT_NONE: @@ -571,6 +575,7 @@ guint32 dissect_mqpcf_parm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *mq_tre } break; } + decrement_dissection_depth(pinfo); offset = tOfs + uLen; } if (u != uCount) diff --git a/epan/dissectors/packet-mqtt-sn.c b/epan/dissectors/packet-mqtt-sn.c index b9623a0a..f086a3ec 100644 --- a/epan/dissectors/packet-mqtt-sn.c +++ b/epan/dissectors/packet-mqtt-sn.c @@ -184,6 +184,7 @@ static gint ett_mqttsn_msg = -1; static gint ett_mqttsn_flags = -1; /* Dissect a single MQTT-SN packet. */ +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_mqttsn_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { /* Various variables. */ @@ -477,7 +478,9 @@ static void dissect_mqttsn_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* Dissect encapsulated message (if present). */ if (tvb_reported_length_remaining(tvb, offset) > 0) { + increment_dissection_depth(pinfo); dissect_mqttsn_packet(tvb, pinfo, mqttsn_msg_tree, offset); + decrement_dissection_depth(pinfo); } /* Default Case */ diff --git a/epan/dissectors/packet-msdp.c b/epan/dissectors/packet-msdp.c index ef952782..12532eb8 100644 --- a/epan/dissectors/packet-msdp.c +++ b/epan/dissectors/packet-msdp.c @@ -169,6 +169,7 @@ dissect_msdp_notification(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_msdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { proto_item *ti; @@ -189,6 +190,7 @@ dissect_msdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ msdp_tree = proto_item_add_subtree(ti, ett_msdp); offset = 0; + increment_dissection_depth(pinfo); while (tvb_reported_length_remaining(tvb, offset) != 0) { proto_tree_add_item_ret_uint(msdp_tree, hf_msdp_type, tvb, offset, 1, ENC_BIG_ENDIAN, &type); length_item = proto_tree_add_item_ret_uint(msdp_tree, hf_msdp_length, tvb, offset + 1, 2, ENC_BIG_ENDIAN, &length); @@ -269,6 +271,7 @@ dissect_msdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ break; } } + decrement_dissection_depth(pinfo); return tvb_captured_length(tvb); } @@ -378,6 +381,7 @@ static void add_notification_data_ipv4addr(tvbuff_t *tvb, proto_tree *tree, int return; } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_msdp_notification(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, guint16 tlv_len, proto_item *length_item) { guint8 error, error_sub; diff --git a/epan/dissectors/packet-msgpack.c b/epan/dissectors/packet-msgpack.c index fa7b819a..1dac8b38 100644 --- a/epan/dissectors/packet-msgpack.c +++ b/epan/dissectors/packet-msgpack.c @@ -157,6 +157,7 @@ static void dissect_msgpack_integer(tvbuff_t* tvb, packet_info *pinfo, proto_tre } } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_msgpack_map(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint8 type, void* data, int* offset, char** value) { proto_tree* subtree; @@ -178,6 +179,7 @@ static void dissect_msgpack_map(tvbuff_t* tvb, packet_info* pinfo, proto_tree* t dissect_msgpack_object(tvb, pinfo, map_subtree, "Key", offset, value); if (value) proto_item_append_text(map_subtree, " %s:", *value); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_msgpack_object(tvb, pinfo, map_subtree, "Value", offset, value); if (value) proto_item_append_text(map_subtree, " %s", *value); @@ -187,6 +189,7 @@ static void dissect_msgpack_map(tvbuff_t* tvb, packet_info* pinfo, proto_tree* t *value = label; } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_msgpack_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint8 type, void* data, int* offset, char** value) { proto_tree* subtree; @@ -203,6 +206,7 @@ static void dissect_msgpack_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* subtree = proto_item_add_subtree(ti, ett_msgpack_array); *offset += 1; for (i = 0; i < len; i++) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_msgpack_object(tvb, pinfo, subtree, data, offset, value); } @@ -312,6 +316,7 @@ static void dissect_msgpack_ext(tvbuff_t* tvb, proto_tree* tree, int type, void* proto_item_set_len(ext_tree, *offset - offset_start); } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_msgpack_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data, int* offset, char** value) { guint8 type; @@ -356,12 +361,14 @@ static void dissect_msgpack_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree // Array if (type >> 4 == 0x9) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_msgpack_array(tvb, pinfo, tree, type, data, offset, value); return; } // Map if (type >> 4 == 0x8) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_msgpack_map(tvb, pinfo, tree, type, data, offset, value); return; } @@ -464,6 +471,7 @@ void proto_register_msgpack(void) void proto_reg_handoff_msgpack(void) { + // If this is ever streamed (transported over TCP) we need to add recursion checks dissector_add_for_decode_as("udp.port", msgpack_handle); } diff --git a/epan/dissectors/packet-mswsp.c b/epan/dissectors/packet-mswsp.c index 5f676c69..d706c803 100644 --- a/epan/dissectors/packet-mswsp.c +++ b/epan/dissectors/packet-mswsp.c @@ -3531,6 +3531,7 @@ static int parse_CPropertyRestriction(tvbuff_t *tvb, packet_info *pinfo, int off return offset; } +// NOLINTNEXTLINE(misc-no-recursion) static int parse_CCoercionRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *fmt, ...) { proto_tree *tree; @@ -3746,6 +3747,7 @@ static int parse_rType(tvbuff_t *tvb, int offset, proto_tree *tree, enum rType * return offset + 4; } +// NOLINTNEXTLINE(misc-no-recursion) static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *fmt, ...) { proto_tree *tree; @@ -3767,6 +3769,7 @@ static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, pro proto_tree_add_uint(tree, hf_mswsp_crestrict_weight, tvb, offset, 4, v->Weight); offset += 4; + increment_dissection_depth(pinfo); switch(v->ulType) { case RTNone: break; @@ -3819,6 +3822,7 @@ static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, pro default: proto_item_append_text(item, " Not supported!"); } + decrement_dissection_depth(pinfo); proto_item_set_end(item, tvb, offset); return offset; @@ -3861,6 +3865,7 @@ static int parse_CRestrictionArray(tvbuff_t *tvb, packet_info *pinfo, int offset return offset; } +// NOLINTNEXTLINE(misc-no-recursion) static int parse_CNodeRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char *fmt, ...) { proto_tree *tree; @@ -7980,8 +7985,7 @@ proto_register_mswsp(void) }; int i; - proto_mswsp = proto_register_protocol("Windows Search Protocol", - "MS-WSP", "mswsp"); + proto_mswsp = proto_register_protocol("Windows Search Protocol", "MS-WSP", "mswsp"); proto_register_field_array(proto_mswsp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); diff --git a/epan/dissectors/packet-nas_5gs.c b/epan/dissectors/packet-nas_5gs.c index ac58b247..915ae1c0 100644 --- a/epan/dissectors/packet-nas_5gs.c +++ b/epan/dissectors/packet-nas_5gs.c @@ -2897,12 +2897,14 @@ static const value_string nas_5gs_mm_pld_cont_opt_ie_type_vals[] = { * 9.11.3.39 Payload container */ static guint16 +// NOLINTNEXTLINE(misc-no-recursion) de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) { struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo); + increment_dissection_depth(pinfo); switch (nas5gs_data->payload_container_type) { case 1: /* N1 SM information */ dissect_nas_5gs_common(tvb_new_subset_length(tvb, offset, len), pinfo, tree, 0, NULL); @@ -3032,6 +3034,7 @@ de_nas_5gs_mm_pld_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, proto_tree_add_item(tree, hf_nas_5gs_mm_pld_cont, tvb, offset, len, ENC_NA); break; } + decrement_dissection_depth(pinfo); return len; } diff --git a/epan/dissectors/packet-nbt.c b/epan/dissectors/packet-nbt.c index c409bca5..abb6b252 100644 --- a/epan/dissectors/packet-nbt.c +++ b/epan/dissectors/packet-nbt.c @@ -1468,16 +1468,39 @@ dissect_nbss(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) * (If it is reassembled data, it shouldn't be a continuation, * as reassembly should've gathered the continuations together * into a message.) + * XXX: Unless it was reassembled because we didn't have enough + * data for a NBSS header, it had a first byte that looked like a + * message type, but it turned out not to be a message but continuation + * data after all. Perhaps we should check even reassembled data, + * at least if it's the first message in the conversation. */ if (!tcpinfo->is_reassembled) { if (max_data < 4) { /* - * Not enough data for an NBSS header; assume - * it's a continuation of a message. - * - * XXX - if there's not enough data, we should - * attempt to reassemble the data, if the first byte - * is a valid message type. + * Not enough data for an NBSS header. It could be a message + * split into a very small payload, or a continuation of a message. + */ + if (try_val_to_str(msg_type, message_types)) { + /* + * The first byte looks like a valid message type. + * Can we do reassembly? + */ + if (nbss_desegment && pinfo->can_desegment) { + /* + * Yes. Tell the TCP dissector where the data for this message + * starts in the data it handed us and that we need "some more + * data." Don't tell it exactly how many bytes we need because + * if/when we ask for even more (after the header) that will + * break reassembly. + */ + pinfo->desegment_offset = offset; + pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT; + return tvb_captured_length(tvb); + } + } + /* + * Either we can't do reassembly, or this doesn't look + * like a valid message type. Mark it as continuation. */ return dissect_continuation_packet(tvb, pinfo, tree); } diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c index 4226b815..5c6ffaab 100644 --- a/epan/dissectors/packet-netflow.c +++ b/epan/dissectors/packet-netflow.c @@ -5123,6 +5123,7 @@ enum duration_type_e { /* SubTemplateList reference https://tools.ietf.org/html/rfc6313#section-4.5.2 */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_v10_pdu_subtemplate_list(tvbuff_t* tvb, packet_info* pinfo, proto_item* pduitem, int offset, guint16 length, hdrinfo_t* hdrinfo_p) { @@ -5156,6 +5157,7 @@ dissect_v10_pdu_subtemplate_list(tvbuff_t* tvb, packet_info* pinfo, proto_item* } proto_item_set_generated(ti); + increment_dissection_depth(pinfo); while (offset < end_offset) { sub_tree = proto_tree_add_subtree_format(pdutree, tvb, offset, subtmplt_p->length, ett_subtemplate_list, NULL, "List Item %d", count++); @@ -5168,6 +5170,7 @@ dissect_v10_pdu_subtemplate_list(tvbuff_t* tvb, packet_info* pinfo, proto_item* } offset += consumed; } + decrement_dissection_depth(pinfo); if (offset != end_offset) { int data_bytes = offset - start_offset; proto_tree_add_expert_format(pdutree, NULL, &ei_cflow_subtemplate_bad_length, @@ -5184,6 +5187,7 @@ dissect_v10_pdu_subtemplate_list(tvbuff_t* tvb, packet_info* pinfo, proto_item* } static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_v9_v10_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, int offset, v9_v10_tmplt_t *tmplt_p, hdrinfo_t *hdrinfo_p, v9_v10_tmplt_fields_type_t fields_type) { @@ -5289,6 +5293,9 @@ dissect_v9_v10_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, string_len_long = length = tvb_get_ntohs(tvb, offset+1); } offset += vstr_len; + if (length == 0) { + continue; + } gen_str_offset = offset; } diff --git a/epan/dissectors/packet-netlink.c b/epan/dissectors/packet-netlink.c index b437ed34..200d4718 100644 --- a/epan/dissectors/packet-netlink.c +++ b/epan/dissectors/packet-netlink.c @@ -14,6 +14,8 @@ #include <epan/packet.h> #include <epan/arptypes.h> #include <epan/exceptions.h> +#include <epan/prefs.h> + #include <wiretap/wtap.h> #include <wsutil/ws_roundup.h> @@ -152,6 +154,7 @@ static int * const netlink_header_standard_flags[] = { static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_netlink_attributes_common(tvbuff_t *tvb, int hf_type, int ett_tree, int ett_attrib, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int offset, int length, netlink_attributes_cb_t cb) { int encoding; @@ -261,6 +264,9 @@ dissect_netlink_attributes_common(tvbuff_t *tvb, int hf_type, int ett_tree, int offset += 2; proto_item_append_text(ti, " %u", rta_type); + // In theory we should use increment_dissection_depth here, but that + // requires adding pinfo all over packet-netlink*.[ch] and we're limited + // to 262144 bytes (WTAP_MAX_PACKET_SIZE_STANDARD). dissect_netlink_attributes(tvb, hf_type, ett_attrib, data, nl_data, attr_tree, offset, rta_len - 4, cb); } @@ -276,6 +282,7 @@ dissect_netlink_attributes_common(tvbuff_t *tvb, int hf_type, int ett_tree, int } int +// NOLINTNEXTLINE(misc-no-recursion) dissect_netlink_attributes(tvbuff_t *tvb, int hf_type, int ett, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int offset, int length, netlink_attributes_cb_t cb) { return dissect_netlink_attributes_common(tvb, hf_type, ett, -1, data, nl_data, tree, offset, length, cb); diff --git a/epan/dissectors/packet-nhrp.c b/epan/dissectors/packet-nhrp.c index 44edaebb..33c32b0c 100644 --- a/epan/dissectors/packet-nhrp.c +++ b/epan/dissectors/packet-nhrp.c @@ -562,6 +562,7 @@ static void dissect_cie_list(tvbuff_t *tvb, } } +// NOLINTNEXTLINE(misc-no-recursion) static void dissect_nhrp_mand(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, @@ -757,6 +758,7 @@ static void dissect_nhrp_mand(tvbuff_t *tvb, save_in_error_pkt = pinfo->flags.in_error_pkt; pinfo->flags.in_error_pkt = TRUE; sub_tvb = tvb_new_subset_remaining(tvb, offset); + // We recurse here, but we'll run out of packet before we run out of stack. _dissect_nhrp(sub_tvb, pinfo, ind_tree, TRUE, FALSE); pinfo->flags.in_error_pkt = save_in_error_pkt; break; @@ -994,6 +996,7 @@ static int dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi return tvb_captured_length(tvb); } +// NOLINTNEXTLINE(misc-no-recursion) static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean nested, gboolean codeinfo) { @@ -1034,6 +1037,7 @@ static void _dissect_nhrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (mandLen) { tvbuff_t *mand_tvb = tvb_new_subset_length(tvb, offset, mandLen); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_nhrp_mand(mand_tvb, pinfo, nhrp_tree, oui_info, &hdr, &srcLen, codeinfo); offset += mandLen; diff --git a/epan/dissectors/packet-ntlmssp.c b/epan/dissectors/packet-ntlmssp.c index 85ec0e9a..a538c204 100644 --- a/epan/dissectors/packet-ntlmssp.c +++ b/epan/dissectors/packet-ntlmssp.c @@ -764,6 +764,7 @@ create_ntlmssp_v1_key(const guint8 *serverchallenge, const guint8 *clientchallen static const unsigned char lmhash_key[] = {0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25}; // "KGS!@#$%" + memset(sessionkey, 0, NTLMSSP_KEY_LEN); /* Create a NT hash of the input password, even if empty */ // NTOWFv1 as defined in https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nlmp/464551a8-9fc4-428e-b3d3-bc5bfb2e73a5 password_len = strlen(password); @@ -857,7 +858,6 @@ create_ntlmssp_v1_key(const guint8 *serverchallenge, const guint8 *clientchallen } get_keyexchange_key(keyexchangekey, sessionbasekey, lm_challenge_response, flags); - memset(sessionkey, 0, NTLMSSP_KEY_LEN); /*printnbyte(nt_challenge_response, 24, "NT challenge response", "\n"); printnbyte(lm_challenge_response, 24, "LM challenge response", "\n");*/ /* now decrypt session key if needed and setup sessionkey for decrypting further communications */ diff --git a/epan/dissectors/packet-openflow_v4.c b/epan/dissectors/packet-openflow_v4.c index a4c47044..b4901d63 100644 --- a/epan/dissectors/packet-openflow_v4.c +++ b/epan/dissectors/packet-openflow_v4.c @@ -1494,6 +1494,7 @@ static const value_string openflow_v4_error_table_features_failed_code_values[] }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_error_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length) { proto_tree *data_tree; @@ -4342,6 +4343,7 @@ dissect_openflow_metermod_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_message_v4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *openflow_tree, int offset) { diff --git a/epan/dissectors/packet-openflow_v5.c b/epan/dissectors/packet-openflow_v5.c index ffe2f56b..d49de46f 100644 --- a/epan/dissectors/packet-openflow_v5.c +++ b/epan/dissectors/packet-openflow_v5.c @@ -1752,6 +1752,7 @@ static const value_string openflow_v5_error_bundle_failed_code_values[] = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_error_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length) { proto_tree *data_tree; @@ -5746,6 +5747,7 @@ dissect_openflow_table_status_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_requestforward_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { proto_item *ti; @@ -5879,6 +5881,7 @@ dissect_openflow_bundle_control_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_bundle_add_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { proto_item *ti; @@ -5917,6 +5920,7 @@ dissect_openflow_bundle_add_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_message_v5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { guint8 type; diff --git a/epan/dissectors/packet-openflow_v6.c b/epan/dissectors/packet-openflow_v6.c index 12e2be14..d6dbe272 100644 --- a/epan/dissectors/packet-openflow_v6.c +++ b/epan/dissectors/packet-openflow_v6.c @@ -1980,6 +1980,7 @@ static const value_string openflow_v6_error_bundle_failed_code_values[] = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_error_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length) { proto_tree *data_tree; @@ -4509,6 +4510,7 @@ dissect_openflow_switch_description_v6(tvbuff_t *tvb, packet_info *pinfo _U_, pr static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_flow_desc_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { proto_item *ti; @@ -6351,6 +6353,7 @@ dissect_openflow_table_status_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_requestforward_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { proto_item *ti; @@ -6490,6 +6493,7 @@ dissect_openflow_bundle_control_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_bundle_add_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { proto_item *ti; @@ -6528,6 +6532,7 @@ dissect_openflow_bundle_add_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openflow_message_v6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { guint8 type; diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c index d56d3fda..695fa41b 100644 --- a/epan/dissectors/packet-opensafety.c +++ b/epan/dissectors/packet-opensafety.c @@ -1813,7 +1813,7 @@ check_scmudid_validity(opensafety_packet_info *packet, tvbuff_t *message_tvb) /* Now confirm, that the xor operation was successful. The ID fields of both frames have to be the same */ b_ID = tvb_get_guint8(message_tvb, packet->frame.subframe2 + 1) ^ (guint8)(scmUDID->data[OSS_FRAME_POS_ID]);; - if ( ( OSS_FRAME_ID_T(message_tvb, packet->frame.subframe1) ^ b_ID ) != 0 ) + if ( ( OSS_FRAME_ID_T(message_tvb, packet->frame.subframe1) ^ (b_ID & 0xFC)) != 0 ) packet->scm_udid_valid = FALSE; /* The IDs do not match, but the SCM UDID could still be ok. This happens, if this packet diff --git a/epan/dissectors/packet-openwire.c b/epan/dissectors/packet-openwire.c index a057d7d9..1beb68ce 100644 --- a/epan/dissectors/packet-openwire.c +++ b/epan/dissectors/packet-openwire.c @@ -657,6 +657,7 @@ static int dissect_openwire_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int parentType); static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openwire_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int field, int type, int parentType, gboolean nullable) { gint startOffset = offset; @@ -717,7 +718,11 @@ dissect_openwire_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o inner_item = proto_tree_add_item(tree, particularize(field, hf_openwire_none), tvb, startOffset, -1, ENC_NA); proto_item_append_text(inner_item, ": %s", val_to_str_ext(iCommand, &openwire_opcode_vals_ext, "Unknown (0x%02x)")); object_tree = proto_item_add_subtree(inner_item, ett_openwire_type); - return (1 + dissect_openwire_command(tvb, pinfo, object_tree, offset, parentType)); + increment_dissection_depth(pinfo); + int command_offset = 1 + dissect_openwire_command(tvb, pinfo, object_tree, offset, parentType); + decrement_dissection_depth(pinfo); + return command_offset; + } if ((type == OPENWIRE_TYPE_NESTED || type == OPENWIRE_TYPE_CACHED) && tvb_reported_length_remaining(tvb, offset) >= 1) { @@ -1071,6 +1076,7 @@ dissect_openwire_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_openwire_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int parentType) { gint startOffset = offset; diff --git a/epan/dissectors/packet-opsi.c b/epan/dissectors/packet-opsi.c index f2701437..c0aae3f0 100644 --- a/epan/dissectors/packet-opsi.c +++ b/epan/dissectors/packet-opsi.c @@ -484,17 +484,23 @@ get_opsi_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _ } static int -get_opsi_attribute_index(int min, int max, int attribute_type) +// NOLINTNEXTLINE(misc-no-recursion) +get_opsi_attribute_index(packet_info *pinfo, int min, int max, int attribute_type) { int middle, at; middle = (min+max)/2; at = opsi_attributes[middle].attribute_type; if (at == attribute_type) return middle; + int attr_idx; + increment_dissection_depth(pinfo); if (attribute_type > at) { - return (middle == max) ? -1 : get_opsi_attribute_index(middle+1, max, attribute_type); + attr_idx = (middle == max) ? -1 : get_opsi_attribute_index(pinfo, middle+1, max, attribute_type); + } else { + attr_idx = (middle == min) ? -1 : get_opsi_attribute_index(pinfo, min, middle-1, attribute_type); } - return (middle == min) ? -1 : get_opsi_attribute_index(min, middle-1, attribute_type); + decrement_dissection_depth(pinfo); + return attr_idx; } @@ -512,7 +518,7 @@ dissect_attributes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *opsi_tree, int attribute_length = tvb_get_ntohs(tvb, offset+2); if (attribute_length > length) break; /* We perform a standard log(n) lookup */ - i = get_opsi_attribute_index(0, OPSI_ATTRIBUTES_COUNT-1, attribute_type); + i = get_opsi_attribute_index(pinfo, 0, OPSI_ATTRIBUTES_COUNT-1, attribute_type); if (i == -1) { proto_tree_add_expert_format(opsi_tree, pinfo, &ei_opsi_unknown_attribute, tvb, offset, attribute_length, "Unknown attribute (%d)", attribute_type); @@ -845,8 +851,7 @@ proto_register_opsi(void) expert_module_t* expert_opsi; /* Register the protocol name and description */ - proto_opsi = proto_register_protocol("Open Policy Service Interface", - "OPSI", "opsi"); + proto_opsi = proto_register_protocol("Open Policy Service Interface", "OPSI", "opsi"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_opsi, hf, array_length(hf)); diff --git a/epan/dissectors/packet-osc.c b/epan/dissectors/packet-osc.c index 2abef37c..fe09053d 100644 --- a/epan/dissectors/packet-osc.c +++ b/epan/dissectors/packet-osc.c @@ -725,7 +725,8 @@ dissect_osc_message(tvbuff_t *tvb, proto_item *ti, proto_tree *osc_tree, gint of /* Dissect OSC bundle */ static int -dissect_osc_bundle(tvbuff_t *tvb, proto_item *ti, proto_tree *osc_tree, gint offset, gint len) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_osc_bundle(tvbuff_t *tvb, packet_info *pinfo, proto_item *ti, proto_tree *osc_tree, gint offset, gint len) { proto_tree *bundle_tree; gint end = offset + len; @@ -768,10 +769,11 @@ dissect_osc_bundle(tvbuff_t *tvb, proto_item *ti, proto_tree *osc_tree, gint off continue; /* peek first bundle element char */ + increment_dissection_depth(pinfo); switch(tvb_get_guint8(tvb, offset)) { case '#': /* this is a bundle */ - if(dissect_osc_bundle(tvb, ti, bundle_tree, offset, size)) + if(dissect_osc_bundle(tvb, pinfo, ti, bundle_tree, offset, size)) return -1; else break; @@ -783,6 +785,7 @@ dissect_osc_bundle(tvbuff_t *tvb, proto_item *ti, proto_tree *osc_tree, gint off default: return -1; /* neither message nor bundle */ } + decrement_dissection_depth(pinfo); /* check for integer overflow */ if(size > G_MAXINT - offset) @@ -817,7 +820,7 @@ dissect_osc_pdu_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void switch(tvb_get_guint8(tvb, offset)) { case '#': /* this is a bundle */ - if(dissect_osc_bundle(tvb, ti, osc_tree, offset, len)) + if(dissect_osc_bundle(tvb, pinfo, ti, osc_tree, offset, len)) return; else break; diff --git a/epan/dissectors/packet-p22.c b/epan/dissectors/packet-p22.c index ea2004ba..8486a0c7 100644 --- a/epan/dissectors/packet-p22.c +++ b/epan/dissectors/packet-p22.c @@ -839,7 +839,6 @@ static int dissect_p22_BodyPartTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_p22_ForwardedContentToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1802,11 +1801,9 @@ static const ber_sequence_t IPM_sequence[] = { int dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 7; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // IPM → Body → BodyPart → BodyPart/basic → MessageBodyPart → MessageData → IPM + actx->pinfo->dissection_depth += 6; + increment_dissection_depth(actx->pinfo); col_append_str(actx->pinfo->cinfo, COL_INFO, " Message"); @@ -1816,7 +1813,8 @@ dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_c - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 6; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -3519,15 +3517,14 @@ static const ber_sequence_t IPMSynopsis_sequence_of[1] = { static int dissect_p22_IPMSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // IPMSynopsis → BodyPartSynopsis → MessageBodyPartSynopsis → IPMSynopsis + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, IPMSynopsis_sequence_of, hf_index, ett_p22_IPMSynopsis); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -3985,15 +3982,14 @@ static const ber_sequence_t BodyPartTokens_set_of[1] = { static int dissect_p22_BodyPartTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // BodyPartTokens → BodyPartTokens/_item → BodyPartTokens/_item/body-part-choice → BodyPartTokens + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, BodyPartTokens_set_of, hf_index, ett_p22_BodyPartTokens); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -4041,15 +4037,14 @@ static const ber_sequence_t ForwardedContentToken_set_of[1] = { static int dissect_p22_ForwardedContentToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ForwardedContentToken → ForwardedContentToken/_item → ForwardedContentToken/_item/body-part-choice → ForwardedContentToken + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, ForwardedContentToken_set_of, hf_index, ett_p22_ForwardedContentToken); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-p7.c b/epan/dissectors/packet-p7.c index 6748d979..c791133d 100644 --- a/epan/dissectors/packet-p7.c +++ b/epan/dissectors/packet-p7.c @@ -644,7 +644,6 @@ static const value_string p7_err_code_string_vals[] = { static int dissect_p7_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1559,16 +1558,15 @@ static const ber_choice_t Filter_choice[] = { static int dissect_p7_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Filter → Filter/and → Filter + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Filter_choice, hf_index, ett_p7_Filter, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-pana.c b/epan/dissectors/packet-pana.c index dc64b682..03edebc7 100644 --- a/epan/dissectors/packet-pana.c +++ b/epan/dissectors/packet-pana.c @@ -276,6 +276,7 @@ pana_avp_get_type(guint16 avp_code, guint32 vendor_id) * Function for AVP dissector. */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree) { @@ -367,6 +368,7 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree) group_tvb = tvb_new_subset_length_caplen(tvb, offset, MIN(avp_data_length, tvb_reported_length(tvb)-offset), avp_data_length); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_avps(group_tvb, pinfo, avp_group_tree); break; } @@ -427,6 +429,7 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree) tvb, offset, avp_data_length, ett_pana_avp, NULL, "AVP Value (PANA packet)"); encap_tvb = tvb_new_subset_length(tvb, offset, avp_data_length); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_pana_pdu(encap_tvb, pinfo, avp_encap_tree); break; } @@ -445,6 +448,7 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree) * Function for the PANA PDU dissector. */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_pana_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -859,8 +863,7 @@ proto_register_pana(void) }; /* Register the protocol name and description */ - proto_pana = proto_register_protocol("Protocol for carrying Authentication for Network Access", - "PANA", "pana"); + proto_pana = proto_register_protocol("Protocol for carrying Authentication for Network Access", "PANA", "pana"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_pana, hf, array_length(hf)); diff --git a/epan/dissectors/packet-parlay.c b/epan/dissectors/packet-parlay.c index ecec46a3..7d07fdea 100644 --- a/epan/dissectors/packet-parlay.c +++ b/epan/dissectors/packet-parlay.c @@ -23,6 +23,7 @@ #include <string.h> #include <epan/packet.h> #include <epan/proto.h> +#include <epan/proto_data.h> #include "packet-giop.h" #include <epan/expert.h> @@ -2997,6 +2998,7 @@ static expert_field ei_parlay_unknown_giop_msg = EI_INIT; static expert_field ei_parlay_unknown_exception = EI_INIT; static expert_field ei_parlay_unknown_reply_status = EI_INIT; +#define MAX_RECURSION_DEPTH 50 // Arbitrarily chosen. static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset); @@ -53623,6 +53625,7 @@ decode_org_csapi_cs_TpAppInformation_un(tvbuff_t *tvb _U_, packet_info *pinfo _U } /* Union = IDL:org/csapi/policy/TpPolicyType:1.0 */ +// NOLINTBEGIN(misc-no-recursion) static void decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int *offset _U_, MessageHeader *header _U_, const gchar *operation _U_, gboolean stream_is_big_endian _U_) { @@ -53633,6 +53636,11 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U gint32 disc_s_TpPolicyType; /* Operation specific Variable declarations End */ + // Cycle: this -> decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st -> this + unsigned recursion_depth = p_get_proto_depth(pinfo, proto_parlay); + DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); + p_set_proto_depth(pinfo, proto_parlay, recursion_depth + 1); + /* * IDL Union Start - IDL:org/csapi/policy/TpPolicyType:1.0 */ @@ -53651,6 +53659,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U u_octet4 = get_CDR_enum(tvb,offset,stream_is_big_endian, boundary); proto_tree_add_uint(tree, hf_org_csapi_policy_TpPolicyType_SimpleType, tvb, *offset-4, 4, u_octet4); + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); return; /* End Compare for this discriminant type */ } @@ -53659,6 +53668,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U /* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */ decode_org_csapi_policy_TpPolicyType_TpPolicyRecordType_st(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian); /* End struct "org_csapi_policy_TpPolicyType_TpPolicyRecordType" */ + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); return; /* End Compare for this discriminant type */ } @@ -53667,6 +53677,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U /* Begin struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */ decode_org_csapi_policy_TpPolicyType_TpPolicyListType_st(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian); /* End struct "org_csapi_policy_TpPolicyType_TpPolicyListType" */ + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); return; /* End Compare for this discriminant type */ } @@ -53674,6 +53685,7 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U giop_add_CDR_string(tree, tvb, offset, stream_is_big_endian, boundary, hf_org_csapi_policy_TpPolicyType_StructuredType); + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); return; /* End Compare for this discriminant type */ } @@ -53681,10 +53693,13 @@ decode_org_csapi_policy_TpPolicyType_un(tvbuff_t *tvb _U_, packet_info *pinfo _U giop_add_CDR_string(tree, tvb, offset, stream_is_big_endian, boundary, hf_org_csapi_policy_TpPolicyType_XMLString); + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); return; /* End Compare for this discriminant type */ } + p_set_proto_depth(pinfo, proto_parlay, recursion_depth); } +// NOLINTEND(misc-no-recursion) /* Union = IDL:org/csapi/pam/TpPAMContextData:1.0 */ static void diff --git a/epan/dissectors/packet-pim.c b/epan/dissectors/packet-pim.c index 1277cbbd..7c9ac399 100644 --- a/epan/dissectors/packet-pim.c +++ b/epan/dissectors/packet-pim.c @@ -759,6 +759,7 @@ dissect_pimv1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U } static gboolean +// NOLINTNEXTLINE(misc-no-recursion) dissect_pim_addr(packet_info *pinfo, proto_tree* tree, tvbuff_t *tvb, int offset, enum pimv2_addrtype at, const char* label, proto_item** ret_item, int hf_ip4, int hf_ip6, int *advance) { guint8 af, et, flags, mask_len, ja_af; @@ -1011,6 +1012,7 @@ dissect_pim_addr(packet_info *pinfo, proto_tree* tree, tvbuff_t *tvb, int offset case PIM_JOIN_ATTRIBUTE_TYPE_RPF: if ((ja_length == 6) || (ja_length == 18)) { int advance_attr; + // We recurse here, but we'll run out of packet before we run out of stack. if (!dissect_pim_addr(pinfo, ja_tree, tvb, ja_offset, pimv2_unicast, NULL, NULL, hf_pim_unicast_addr_ipv4, hf_pim_unicast_addr_ipv6, &advance_attr)) break; @@ -2292,8 +2294,7 @@ proto_register_pim(void) expert_module_t* expert_pim; module_t *pim_module; - proto_pim = proto_register_protocol("Protocol Independent Multicast", - "PIM", "pim"); + proto_pim = proto_register_protocol("Protocol Independent Multicast", "PIM", "pim"); proto_register_field_array(proto_pim, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_pim = expert_register_protocol(proto_pim); diff --git a/epan/dissectors/packet-protobuf.c b/epan/dissectors/packet-protobuf.c index ee7c5ab0..8597da4a 100644 --- a/epan/dissectors/packet-protobuf.c +++ b/epan/dissectors/packet-protobuf.c @@ -387,6 +387,7 @@ dissect_protobuf_message(tvbuff_t *tvb, guint offset, guint length, packet_info * Return consumed bytes */ static guint +// NOLINTNEXTLINE(misc-no-recursion) dissect_packed_repeated_field_values(tvbuff_t *tvb, guint start, guint length, packet_info *pinfo, proto_item *ti_field, int field_type, const gchar* prepend_text, const PbwFieldDescriptor* field_desc, json_dumper *dumper) @@ -533,6 +534,7 @@ abs_time_to_rfc3339(wmem_allocator_t *scope, const nstime_t *nstime, bool use_ut /* Dissect field value based on a specific type. */ static void +// NOLINTNEXTLINE(misc-no-recursion) protobuf_dissect_field_value(proto_tree *value_tree, tvbuff_t *tvb, guint offset, guint length, packet_info *pinfo, proto_item *ti_field, int field_type, const guint64 value, const gchar* prepend_text, const PbwFieldDescriptor* field_desc, gboolean is_top_level, json_dumper *dumper) @@ -840,6 +842,7 @@ protobuf_dissect_field_value(proto_tree *value_tree, tvbuff_t *tvb, guint offset /* add all possible values according to field types. */ static void +// NOLINTNEXTLINE(misc-no-recursion) protobuf_try_dissect_field_value_on_multi_types(proto_tree *value_tree, tvbuff_t *tvb, guint offset, guint length, packet_info *pinfo, proto_item *ti_field, int* field_types, const guint64 value, const gchar* prepend_text, json_dumper *dumper) @@ -857,6 +860,7 @@ protobuf_try_dissect_field_value_on_multi_types(proto_tree *value_tree, tvbuff_t } static gboolean +// NOLINTNEXTLINE(misc-no-recursion) dissect_one_protobuf_field(tvbuff_t *tvb, guint* offset, guint maxlen, packet_info *pinfo, proto_tree *protobuf_tree, const PbwDescriptor* message_desc, gboolean is_top_level, const PbwFieldDescriptor** field_desc_ptr, const PbwFieldDescriptor* prev_field_desc, json_dumper *dumper) @@ -1002,6 +1006,7 @@ dissect_one_protobuf_field(tvbuff_t *tvb, guint* offset, guint maxlen, packet_in /* add value subtree. we add uint value for numeric field or string for length-delimited at least. */ value_tree = proto_item_add_subtree(ti_value, ett_protobuf_value); + increment_dissection_depth(pinfo); if (field_desc) { if (dumper) { if (prev_field_desc == NULL || pbw_FieldDescriptor_number(prev_field_desc) != (int) field_number) { @@ -1043,6 +1048,7 @@ dissect_one_protobuf_field(tvbuff_t *tvb, guint* offset, guint maxlen, packet_in ti_field, field_types, value_uint64, "", dumper); } } + decrement_dissection_depth(pinfo); if (field_desc && !show_details) { proto_item_set_hidden(ti_field_number); @@ -1369,6 +1375,7 @@ add_missing_fields_with_default_values(tvbuff_t* tvb, guint offset, packet_info* } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_protobuf_message(tvbuff_t *tvb, guint offset, guint length, packet_info *pinfo, proto_tree *protobuf_tree, const PbwDescriptor* message_desc, int hf_msg, gboolean is_top_level, json_dumper *dumper, wmem_allocator_t* scope, char** retval) { @@ -1452,6 +1459,7 @@ dissect_protobuf_message(tvbuff_t *tvb, guint offset, guint length, packet_info } /* each time we dissect one protobuf field. */ + increment_dissection_depth(pinfo); while (offset < max_offset) { field_desc = NULL; @@ -1465,6 +1473,7 @@ dissect_protobuf_message(tvbuff_t *tvb, guint offset, guint length, packet_info prev_field_desc = field_desc; } + decrement_dissection_depth(pinfo); if (dumper && prev_field_desc && pbw_FieldDescriptor_is_repeated(prev_field_desc)) { /* The last field is repeated field, we close the JSON array */ @@ -1655,7 +1664,8 @@ dissect_protobuf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data } static gboolean -load_all_files_in_dir(PbwDescriptorPool* pool, const gchar* dir_path) +// NOLINTNEXTLINE(misc-no-recursion) +load_all_files_in_dir(PbwDescriptorPool* pool, const gchar* dir_path, unsigned depth) { WS_DIR *dir; /* scanned directory */ WS_DIRENT *file; /* current file */ @@ -1663,6 +1673,10 @@ load_all_files_in_dir(PbwDescriptorPool* pool, const gchar* dir_path) const gchar *name; /* current file or dir name (without parent dir path) */ gchar *path; /* sub file or dir path of dir_path */ + if (depth > prefs.gui_max_tree_depth) { + return FALSE; + } + if (g_file_test(dir_path, G_FILE_TEST_IS_DIR)) { if ((dir = ws_dir_open(dir_path, 0, NULL)) != NULL) { while ((file = ws_dir_read_name(dir)) != NULL) { @@ -1678,7 +1692,7 @@ load_all_files_in_dir(PbwDescriptorPool* pool, const gchar* dir_path) return FALSE; } } else { - if (!load_all_files_in_dir(pool, path)) { + if (!load_all_files_in_dir(pool, path, depth + 1)) { g_free(path); ws_dir_close(dir); return FALSE; @@ -1994,7 +2008,7 @@ protobuf_reinit(int target) /* load all .proto files in the marked search paths, we can invoke FindMethodByName etc later. */ for (i = 0; i < num_proto_paths; ++i) { if ((i < 2) || protobuf_search_paths[i - 2].load_all) { - if (!load_all_files_in_dir(pbw_pool, source_paths[i])) { + if (!load_all_files_in_dir(pbw_pool, source_paths[i], 0)) { buffer_error("Protobuf: Loading .proto files action stopped!\n"); loading_completed = FALSE; break; /* stop loading when error occurs */ diff --git a/epan/dissectors/packet-proxy.c b/epan/dissectors/packet-proxy.c index b45eb872..2e41ff54 100644 --- a/epan/dissectors/packet-proxy.c +++ b/epan/dissectors/packet-proxy.c @@ -245,8 +245,10 @@ dissect_proxy_proxied(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_proxy_v2_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *proxy_tree, int offset, int next_offset) { + increment_dissection_depth(pinfo); while (offset < next_offset) { guint32 type, length; proto_item *ti_tlv; @@ -298,6 +300,7 @@ dissect_proxy_v2_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *proxy_tree, break; } } + decrement_dissection_depth(pinfo); return offset; } diff --git a/epan/dissectors/packet-q2931.c b/epan/dissectors/packet-q2931.c index 2749db08..348707e9 100644 --- a/epan/dissectors/packet-q2931.c +++ b/epan/dissectors/packet-q2931.c @@ -1127,6 +1127,7 @@ static const value_string q2931_rejection_reason_vals[] = { static const true_false_string tfs_abnormal_normal = { "Abnormal", "Normal" }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_q2931_cause_ie(tvbuff_t *tvb, packet_info* pinfo, int offset, int len, proto_tree *tree) { @@ -1201,6 +1202,7 @@ dissect_q2931_cause_ie(tvbuff_t *tvb, packet_info* pinfo, int offset, int len, info_element = tvb_get_guint8(tvb, offset); info_element_ext = tvb_get_guint8(tvb, offset + 1); info_element_len = tvb_get_ntohs(tvb, offset + 2); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_q2931_ie(tvb, pinfo, offset, info_element_len, tree, info_element, info_element_ext); break; @@ -1716,6 +1718,7 @@ dissect_q2931_endpoint_state_ie(tvbuff_t *tvb, int offset, int len, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_q2931_ie_contents(tvbuff_t *tvb, packet_info* pinfo, int offset, int len, proto_tree *tree, guint8 info_element) { @@ -1774,6 +1777,7 @@ dissect_q2931_ie_contents(tvbuff_t *tvb, packet_info* pinfo, int offset, int len break; case Q2931_IE_CAUSE: + // We recurse here, but we'll run out of packet before we run out of stack. dissect_q2931_cause_ie(tvb, pinfo, offset, len, tree); break; @@ -1820,6 +1824,7 @@ dissect_q2931_ie_contents(tvbuff_t *tvb, packet_info* pinfo, int offset, int len } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_q2931_ie(tvbuff_t *tvb, packet_info* pinfo, int offset, int len, proto_tree *tree, guint8 info_element, guint8 info_element_ext) { @@ -1842,6 +1847,7 @@ dissect_q2931_ie(tvbuff_t *tvb, packet_info* pinfo, int offset, int len, proto_t if ((info_element_ext & Q2931_IE_COMPAT_CODING_STD) == Q2931_ITU_STANDARDIZED_CODING) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_q2931_ie_contents(tvb, pinfo, offset + 4, len, ie_tree, info_element); } else { diff --git a/epan/dissectors/packet-qnet6.c b/epan/dissectors/packet-qnet6.c index e081b9e0..ffa22d92 100644 --- a/epan/dissectors/packet-qnet6.c +++ b/epan/dissectors/packet-qnet6.c @@ -1956,6 +1956,11 @@ dissect_qnet6_kif_msgsend_msg_msginfo(tvbuff_t * tvb, packet_info * pinfo _U_, p } +// Most of the functions below recurse via dissect_qnet6_kif_msgsend_msg. +// We're guaranteed to run out of packet before we run out of stack, so +// just skip over them. +// NOLINTBEGIN(misc-no-recursion) + /* * in dissect_qnet6_kif_msgsend_msg already passed the first 2 bytes * msg->type and when dissect_qnet6_kif_msgsend_msg_devctl is called, it @@ -3254,6 +3259,8 @@ dissect_qnet6_kif_msgsend_msg(tvbuff_t * tvb, packet_info * pinfo, proto_tree * return ret; } +// NOLINTEND(misc-no-recursion) + static void qos_tcs_init_addtree(tvbuff_t * tvb, proto_tree * tree, gint * poffset, guint encoding, int hf_off, int hf_generated, gint rlen, gint name_start) { diff --git a/epan/dissectors/packet-rdp.c b/epan/dissectors/packet-rdp.c index b9457a17..370cbee2 100644 --- a/epan/dissectors/packet-rdp.c +++ b/epan/dissectors/packet-rdp.c @@ -1328,6 +1328,7 @@ rdp_get_conversation_data(packet_info *pinfo) } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_rdp_fields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const rdp_field_info_t *fields, int totlen) { const rdp_field_info_t *c; @@ -1336,6 +1337,8 @@ dissect_rdp_fields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr guint32 info_flags = 0; guint encoding; + increment_dissection_depth(pinfo); + for ( ; fields->pfield != NULL; fields++) { c = fields; if ((c->fixedLength == 0) && (c->variableLength)) { @@ -1406,6 +1409,7 @@ dissect_rdp_fields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr /* XXX: err if > totlen ?? */ } + decrement_dissection_depth(pinfo); return offset; } diff --git a/epan/dissectors/packet-resp.c b/epan/dissectors/packet-resp.c index 19bf2e4a..b2216b27 100644 --- a/epan/dissectors/packet-resp.c +++ b/epan/dissectors/packet-resp.c @@ -188,6 +188,7 @@ static int dissect_resp_integer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t return bulk_string_string_length + CRLF_LENGTH; } +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_resp_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint string_length, gint array_depth) { guint8 *array_length_as_string = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + RESP_TOKEN_PREFIX_LENGTH, string_length - RESP_TOKEN_PREFIX_LENGTH, ENC_ASCII); @@ -254,6 +255,7 @@ static int dissect_resp_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre return dissected_offset - offset; } +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_resp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint string_length, gint array_depth) { switch (tvb_get_guint8(tvb, offset)) { case '+': @@ -282,6 +284,7 @@ static int dissect_resp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t } } +// NOLINTNEXTLINE(misc-no-recursion) static int dissect_resp_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint array_depth, gint64 expected_elements) { gint error_or_offset; gint crlf_string_line_length; @@ -300,7 +303,9 @@ static int dissect_resp_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree pinfo->desegment_len = DESEGMENT_ONE_MORE_SEGMENT; return -1; } + increment_dissection_depth(pinfo); error_or_offset = dissect_resp_message(tvb, pinfo, tree, offset, crlf_string_line_length, array_depth); + decrement_dissection_depth(pinfo); if (error_or_offset == -1) { return -1; } diff --git a/epan/dissectors/packet-rpl.c b/epan/dissectors/packet-rpl.c index 9dcfb53b..c39e74a5 100644 --- a/epan/dissectors/packet-rpl.c +++ b/epan/dissectors/packet-rpl.c @@ -83,6 +83,7 @@ static const value_string rpl_type_vals[] = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_rpl_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint16 len, type, sublen, subtyp; @@ -383,8 +384,7 @@ proto_register_rpl(void) &ett_rpl_unkn }; - proto_rpl = proto_register_protocol("Remote Program Load", - "RPL", "rpl"); + proto_rpl = proto_register_protocol("Remote Program Load", "RPL", "rpl"); proto_register_field_array(proto_rpl, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); rpl_handle = register_dissector("rpl", dissect_rpl, proto_rpl); diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c index 08757864..4f3b8686 100644 --- a/epan/dissectors/packet-rsl.c +++ b/epan/dissectors/packet-rsl.c @@ -2576,6 +2576,7 @@ dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre * which was considered erroneous at reception. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory) { proto_item *ti; @@ -3907,6 +3908,7 @@ dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int } static int +// NOLINTNEXTLINE(misc-no-recursion) dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { guint8 msg_disc, msg_type, sys_info_type; @@ -3922,6 +3924,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) } offset++; + increment_dissection_depth(pinfo); switch (msg_type) { /* Radio Link Layer Management messages */ /* 8.3.1 DATA REQUEST */ @@ -4573,6 +4576,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) default: break; } + decrement_dissection_depth(pinfo); return offset; diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c index 34983c70..b271d422 100644 --- a/epan/dissectors/packet-rsvp.c +++ b/epan/dissectors/packet-rsvp.c @@ -2948,6 +2948,7 @@ dissect_rsvp_session(packet_info *pinfo, proto_item *ti, proto_tree *rsvp_object * (TODO: TLV type 12, 13, 25) *------------------------------------------------------------------------------*/ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_rsvp_ifid_tlv(proto_tree *ti, packet_info* pinfo, proto_tree *rsvp_object_tree, tvbuff_t *tvb, int offset, int length, int subtree_type) @@ -3156,8 +3157,10 @@ dissect_rsvp_ifid_tlv(proto_tree *ti, packet_info* pinfo, proto_tree *rsvp_objec proto_tree_add_uint_format_value(rsvp_ifid_subtree, hf_rsvp_type, tvb, offset+tlv_off, 2, tlv_type, "%d (%s-Exclusions)", tlv_type, tlv_name); proto_tree_add_item(rsvp_ifid_subtree, hf_rsvp_ifid_tlv_length, tvb, offset+tlv_off+2, 2, ENC_BIG_ENDIAN); + increment_dissection_depth(pinfo); dissect_rsvp_ifid_tlv(ti2, pinfo, rsvp_ifid_subtree, tvb, offset+tlv_off+4, tlv_len-4, TREE(TT_HOP_SUBOBJ)); + decrement_dissection_depth(pinfo); break; case 516: /* FF: ERROR_STRING TLV, RFC 4783 */ @@ -7585,6 +7588,7 @@ dissect_rsvp_unknown(proto_tree *ti _U_, * Dissect a single RSVP message in a tree *------------------------------------------------------------------------------*/ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int tree_mode, rsvp_conversation_info *rsvph, gboolean e2ei) { @@ -7671,7 +7675,9 @@ dissect_rsvp_msg_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb_sub; sub_len = tvb_get_ntohs(tvb, len2+6); tvb_sub = tvb_new_subset_length(tvb, len2, sub_len); + increment_dissection_depth(pinfo); dissect_rsvp_msg_tree(tvb_sub, pinfo, rsvp_tree, TREE(TT_BUNDLE_COMPMSG), rsvph, e2ei); + decrement_dissection_depth(pinfo); len2 += sub_len; } } else { diff --git a/epan/dissectors/packet-rtls.c b/epan/dissectors/packet-rtls.c index 95c56819..af4b9b4b 100644 --- a/epan/dissectors/packet-rtls.c +++ b/epan/dissectors/packet-rtls.c @@ -212,6 +212,7 @@ dissect_rtls_header(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *rtls_tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_rtls_message_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *rtls_tree, guint offset, guint type) { proto_item *ti_rssi; @@ -361,6 +362,7 @@ hf_rtls_nack_flags, ett_rtls_nack_flags, rtls_nack_flags, ENC_BIG_ENDIAN, BMT_NO offset = dissect_rtls_header(tvb, pinfo, sub_tree, offset, &data_length); + // We recurse here, but we'll run out of packet before we run out of stack. offset = dissect_rtls_message_type(tvb, pinfo, sub_tree, offset, type); proto_item_set_len(sub_tree, data_length + 16); @@ -774,6 +776,7 @@ proto_register_rtls(void) void proto_reg_handoff_rtls(void) { + // If this is ever streamed (transported over TCP) we need to add recursion checks dissector_add_for_decode_as_with_preference("udp.port", rtls_handle); } diff --git a/epan/dissectors/packet-rtmpt.c b/epan/dissectors/packet-rtmpt.c index 7760318b..0d88ba2f 100644 --- a/epan/dissectors/packet-rtmpt.c +++ b/epan/dissectors/packet-rtmpt.c @@ -569,7 +569,7 @@ rtmpt_get_amf_length(tvbuff_t *tvb, gint offset, proto_item* pi) while (rv == 0 || depth > 0) { - if (--iterations) { + if (--iterations == 0) { expert_add_info(NULL, pi, &ei_amf_loop); return 0; } @@ -873,7 +873,7 @@ dissect_rtmpt_body_scm(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, guint } static gint -dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean *amf3_encoding, proto_item *parent_ti); +dissect_amf0_value_type(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *tree, gboolean *amf3_encoding, proto_item *parent_ti); /* * A "property list" is a sequence of name/value pairs, terminated by @@ -881,7 +881,8 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * * are encoded as property lists. */ static gint -dissect_amf0_property_list(tvbuff_t *tvb, gint offset, proto_tree *tree, guint *countp, gboolean *amf3_encoding) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_amf0_property_list(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *tree, guint *countp, gboolean *amf3_encoding) { proto_item *prop_ti; proto_tree *prop_tree; @@ -918,7 +919,7 @@ dissect_amf0_property_list(tvbuff_t *tvb, gint offset, proto_tree *tree, guint * offset += iStringLength; /* value-type: property value */ - offset = dissect_amf0_value_type(tvb, offset, prop_tree, amf3_encoding, prop_ti); + offset = dissect_amf0_value_type(tvb, pinfo, offset, prop_tree, amf3_encoding, prop_ti); proto_item_set_end(prop_ti, tvb, offset); } proto_tree_add_item(tree, hf_amf_end_of_object_marker, tvb, offset, 3, ENC_NA); @@ -930,7 +931,8 @@ dissect_amf0_property_list(tvbuff_t *tvb, gint offset, proto_tree *tree, guint * } static gint -dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean *amf3_encoding, proto_item *parent_ti) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_amf0_value_type(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *tree, gboolean *amf3_encoding, proto_item *parent_ti) { guint8 iObjType; proto_item *ti; @@ -993,6 +995,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * proto_tree_add_uint(val_tree, hf_amf_amf0_type, tvb, iValueOffset, 1, iObjType); iValueOffset++; + increment_dissection_depth(pinfo); switch (iObjType) { case AMF0_NUMBER: iDoubleValue = tvb_get_ntohieee_double(tvb, iValueOffset); @@ -1023,7 +1026,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * proto_item_append_text(parent_ti, " '%s'", iStringValue); break; case AMF0_OBJECT: - iValueOffset = dissect_amf0_property_list(tvb, iValueOffset, val_tree, &count, amf3_encoding); + iValueOffset = dissect_amf0_property_list(tvb, pinfo, iValueOffset, val_tree, &count, amf3_encoding); proto_item_append_text(ti, " (%u items)", count); break; case AMF0_NULL: @@ -1050,7 +1053,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * iArrayLength = tvb_get_ntohl(tvb, iValueOffset); proto_tree_add_uint(val_tree, hf_amf_arraylength, tvb, iValueOffset, 4, iArrayLength); iValueOffset += 4; - iValueOffset = dissect_amf0_property_list(tvb, iValueOffset, val_tree, &count, amf3_encoding); + iValueOffset = dissect_amf0_property_list(tvb, pinfo, iValueOffset, val_tree, &count, amf3_encoding); proto_item_append_text(ti, " (%u items)", count); break; case AMF0_END_OF_OBJECT: @@ -1068,7 +1071,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * proto_tree_add_uint(val_tree, hf_amf_arraylength, tvb, iValueOffset, 4, iArrayLength); iValueOffset += 4; for (i = 0; i < iArrayLength; i++) - iValueOffset = dissect_amf0_value_type(tvb, iValueOffset, val_tree, amf3_encoding, NULL); + iValueOffset = dissect_amf0_value_type(tvb, pinfo, iValueOffset, val_tree, amf3_encoding, NULL); proto_item_append_text(ti, " (%u items)", iArrayLength); break; case AMF0_DATE: @@ -1106,7 +1109,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * iStringValue = tvb_get_string_enc(wmem_packet_scope(), tvb, iValueOffset, iStringLength, ENC_UTF_8|ENC_NA); proto_tree_add_string(val_tree, hf_amf_string, tvb, iValueOffset, iStringLength, iStringValue); iValueOffset += iStringLength; - iValueOffset = dissect_amf0_property_list(tvb, iValueOffset, val_tree, &count, amf3_encoding); + iValueOffset = dissect_amf0_property_list(tvb, pinfo, iValueOffset, val_tree, &count, amf3_encoding); break; case AMF0_AMF3_MARKER: *amf3_encoding = TRUE; @@ -1127,6 +1130,7 @@ dissect_amf0_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, gboolean * iValueOffset = tvb_reported_length(tvb); break; } + decrement_dissection_depth(pinfo); proto_item_set_end(ti, tvb, iValueOffset); return iValueOffset; } @@ -1173,7 +1177,8 @@ amf_get_u29(tvbuff_t *tvb, int offset, guint *lenp) } static gint -dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item *parent_ti) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_amf3_value_type(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *tree, proto_item *parent_ti) { guint8 iObjType; proto_item *ti; @@ -1233,6 +1238,7 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item proto_tree_add_uint(val_tree, hf_amf_amf3_type, tvb, iValueOffset, 1, iObjType); iValueOffset++; + increment_dissection_depth(pinfo); switch (iObjType) { case AMF3_UNDEFINED: case AMF3_NULL: @@ -1365,14 +1371,14 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item proto_item_append_text(subval_ti, "%s", val_to_str_const(iObjType, amf3_type_vals, "Unknown")); - iValueOffset = dissect_amf3_value_type(tvb, iValueOffset, subval_tree, subval_ti); + iValueOffset = dissect_amf3_value_type(tvb, pinfo, iValueOffset, subval_tree, subval_ti); } /* * Dissect the dense portion. */ for (i = 0; i < iArrayLength; i++) - iValueOffset = dissect_amf3_value_type(tvb, iValueOffset, val_tree, NULL); + iValueOffset = dissect_amf3_value_type(tvb, pinfo, iValueOffset, val_tree, NULL); proto_item_set_end(ti, tvb, iValueOffset); } else { @@ -1450,7 +1456,7 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item } } for (i = 0; i < iTraitCount; i++) - iValueOffset = dissect_amf3_value_type(tvb, iValueOffset, traits_tree, NULL); + iValueOffset = dissect_amf3_value_type(tvb, pinfo, iValueOffset, traits_tree, NULL); if (iTypeIsDynamic) { for (;;) { /* Fetch the name */ @@ -1485,7 +1491,7 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item } /* Fetch the value */ - iValueOffset = dissect_amf3_value_type(tvb, iValueOffset, subval_tree, subval_ti); + iValueOffset = dissect_amf3_value_type(tvb, pinfo, iValueOffset, subval_tree, subval_ti); proto_item_set_end(subval_ti, tvb, iValueOffset); } } @@ -1563,12 +1569,13 @@ dissect_amf3_value_type(tvbuff_t *tvb, gint offset, proto_tree *tree, proto_item iValueOffset = tvb_reported_length(tvb); break; } + decrement_dissection_depth(pinfo); proto_item_set_end(ti, tvb, iValueOffset); return iValueOffset; } static gint -dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, gboolean amf3) +dissect_rtmpt_body_command(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *rtmpt_tree, gboolean amf3) { gboolean amf3_encoding = FALSE; @@ -1584,9 +1591,9 @@ dissect_rtmpt_body_command(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree, g while (tvb_reported_length_remaining(tvb, offset) > 0) { if (amf3_encoding) - offset = dissect_amf3_value_type(tvb, offset, rtmpt_tree, NULL); + offset = dissect_amf3_value_type(tvb, pinfo, offset, rtmpt_tree, NULL); else - offset = dissect_amf0_value_type(tvb, offset, rtmpt_tree, &amf3_encoding, NULL); + offset = dissect_amf0_value_type(tvb, pinfo, offset, rtmpt_tree, &amf3_encoding, NULL); } return offset; } @@ -1634,7 +1641,7 @@ dissect_rtmpt_body_video(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree) } static void -dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree) +dissect_rtmpt_body_aggregate(tvbuff_t *tvb, packet_info *pinfo, gint offset, proto_tree *rtmpt_tree) { proto_tree *tag_tree; @@ -1665,7 +1672,7 @@ dissect_rtmpt_body_aggregate(tvbuff_t *tvb, gint offset, proto_tree *rtmpt_tree) dissect_rtmpt_body_video(tvb, offset + 11, data_tree); break; case 18: - dissect_rtmpt_body_command(tvb, offset + 11, data_tree, FALSE); + dissect_rtmpt_body_command(tvb, pinfo, offset + 11, data_tree, FALSE); break; default: break; @@ -1842,11 +1849,11 @@ dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t break; case RTMPT_TYPE_COMMAND_AMF0: case RTMPT_TYPE_DATA_AMF0: - dissect_rtmpt_body_command(tvb, offset, rtmpt_tree, FALSE); + dissect_rtmpt_body_command(tvb, pinfo, offset, rtmpt_tree, FALSE); break; case RTMPT_TYPE_COMMAND_AMF3: case RTMPT_TYPE_DATA_AMF3: - dissect_rtmpt_body_command(tvb, offset, rtmpt_tree, TRUE); + dissect_rtmpt_body_command(tvb, pinfo, offset, rtmpt_tree, TRUE); break; case RTMPT_TYPE_AUDIO_DATA: dissect_rtmpt_body_audio(tvb, offset, rtmpt_tree); @@ -1855,7 +1862,7 @@ dissect_rtmpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, rtmpt_conv_t dissect_rtmpt_body_video(tvb, offset, rtmpt_tree); break; case RTMPT_TYPE_AGGREGATE: - dissect_rtmpt_body_aggregate(tvb, offset, rtmpt_tree); + dissect_rtmpt_body_aggregate(tvb, pinfo, offset, rtmpt_tree); break; } } @@ -2500,7 +2507,7 @@ dissect_rtmpt_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da } static int -dissect_amf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_) +dissect_amf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { proto_item *ti; proto_tree *amf_tree, *headers_tree, *messages_tree; @@ -2536,9 +2543,9 @@ dissect_amf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data proto_tree_add_uint(headers_tree, hf_amf_header_length, tvb, offset, 4, header_length); offset += 4; if (amf3_encoding) - offset = dissect_amf3_value_type(tvb, offset, headers_tree, NULL); + offset = dissect_amf3_value_type(tvb, pinfo, offset, headers_tree, NULL); else - offset = dissect_amf0_value_type(tvb, offset, headers_tree, &amf3_encoding, NULL); + offset = dissect_amf0_value_type(tvb, pinfo, offset, headers_tree, &amf3_encoding, NULL); } } message_count = tvb_get_ntohs(tvb, offset); @@ -2559,7 +2566,7 @@ dissect_amf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data else proto_tree_add_uint(messages_tree, hf_amf_message_length, tvb, offset, 4, message_length); offset += 4; - offset = dissect_rtmpt_body_command(tvb, offset, messages_tree, FALSE); + offset = dissect_rtmpt_body_command(tvb, pinfo, offset, messages_tree, FALSE); } } return tvb_captured_length(tvb); diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c index 9f7ecea1..9e34b914 100644 --- a/epan/dissectors/packet-rtp.c +++ b/epan/dissectors/packet-rtp.c @@ -1185,6 +1185,7 @@ srtp_add_address(packet_info *pinfo, const port_type ptype, address *addr, int p conversation_t* p_conv, *sdp_conv; struct _rtp_conversation_info *p_conv_data; wmem_array_t *rtp_conv_info_list = NULL; + wmem_map_t *ssrc_number_space = NULL; /* * If this isn't the first time this packet has been processed, @@ -1213,10 +1214,20 @@ srtp_add_address(packet_info *pinfo, const port_type ptype, address *addr, int p if (p_conv) { /* * Check if the conversation has data associated with it. + * Sometimes there are multiple setup messages for the same + * conversation, and it's worth copying over some of our + * internal data to the new conversation. The extended sequence + * number and timestamp cycle information is per-SSRC, and it + * doesn't hurt (and can definitely help) to ensure that the + * new conversation uses the same extended cycles as the old one. + * XXX: It's not actually clear that we really need to create + * extra conversations for each setup frame, because we save the + * relevant information to per-packet data for the subsequent passes. */ p_conv_data = (struct _rtp_conversation_info *)conversation_get_proto_data(p_conv, proto_rtp); if (p_conv_data) { rtp_conv_info_list = p_conv_data->rtp_sdp_setup_info_list; + ssrc_number_space = p_conv_data->ssrc_number_space; } } @@ -1266,7 +1277,7 @@ srtp_add_address(packet_info *pinfo, const port_type ptype, address *addr, int p /* Create conversation data */ p_conv_data = wmem_new0(wmem_file_scope(), struct _rtp_conversation_info); - p_conv_data->ssrc_number_space = wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal); + p_conv_data->ssrc_number_space = ssrc_number_space ? ssrc_number_space : wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal); p_conv_data->rtp_conv_info = wmem_new(wmem_file_scope(), rtp_private_conv_info); p_conv_data->rtp_conv_info->multisegment_pdus = wmem_tree_new(wmem_file_scope()); DINDENT(); diff --git a/epan/dissectors/packet-rtps.c b/epan/dissectors/packet-rtps.c index f278368e..a6fb03d9 100644 --- a/epan/dissectors/packet-rtps.c +++ b/epan/dissectors/packet-rtps.c @@ -2859,7 +2859,7 @@ static gint dissect_crypto_algorithm_requirements(proto_tree *tree , tvbuff_t* t return offset; } -static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, gint offset, guint encoding, guint encoding_version, +static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, packet_info *pinfo, gint offset, guint encoding, guint encoding_version, dissection_info * info, gboolean * is_end, gboolean show); static gint get_native_type_cdr_length(guint64 member_kind) { @@ -3008,7 +3008,8 @@ static dissection_info* lookup_dissection_info_in_custom_and_builtin_types(guint } /* this is a recursive function. _info may or may not be NULL depending on the use iteration */ -static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, guint encoding, guint encoding_version, +// NOLINTNEXTLINE(misc-no-recursion) +static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, packet_info *pinfo, gint offset, guint encoding, guint encoding_version, dissection_info * _info, guint64 type_id, gchar * name, RTICdrTypeObjectExtensibility extensibility, gint offset_zero, guint16 flags, guint32 element_member_id, gboolean show) { @@ -3064,6 +3065,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, } //proto_item_append_text(tree, "(Before Switch 0x%016" PRIx64 ")", type_id); + increment_dissection_depth(pinfo); switch (member_kind) { case RTI_CDR_TYPE_OBJECT_TYPE_KIND_BOOLEAN_TYPE: { gint length = get_native_type_cdr_length(member_kind); @@ -3237,7 +3239,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, break; } } - offset = dissect_user_defined(aux_tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(aux_tree, tvb, pinfo, offset, encoding, encoding_version, NULL, info->base_type_id, temp_buff, EXTENSIBILITY_INVALID, offset_zero, 0, 0, show_current_element); } @@ -3310,7 +3312,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, } } if (info != NULL && info->base_type_id > 0) - offset = dissect_user_defined(aux_tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(aux_tree, tvb, pinfo, offset, encoding, encoding_version, NULL, info->base_type_id, temp_buff, EXTENSIBILITY_INVALID, offset_zero, 0, 0, show_current_element); } /* If reached the limit and there are remaining elements we need to show the message and @@ -3351,7 +3353,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, if (info != NULL) { base_type_id = info->base_type_id; } - offset = dissect_user_defined(tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, NULL, base_type_id, name, EXTENSIBILITY_INVALID, offset_zero, 0, 0, show); break; } @@ -3369,7 +3371,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, proto_item_append_text(tree, " (discriminator = %d, type_id = 0x%016" PRIx64 ")", value, result->member_type_id); } - offset = dissect_user_defined(tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, NULL, result->member_type_id, result->member_name, EXTENSIBILITY_INVALID, offset, 0, 0, show); } else { /* the hashmap uses the type_id to index the objects. substracting -2 here to lookup the discriminator @@ -3381,7 +3383,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, proto_item_append_text(tree, " (discriminator = %d, type_id = 0x%016" PRIx64 ")", value, result->member_type_id); } - offset = dissect_user_defined(tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, NULL, result->member_type_id, result->member_name, EXTENSIBILITY_INVALID, offset, 0, 0, show); } } @@ -3414,7 +3416,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, /* Updated only once */ first_skipped_element_offset = offset; } - offset = dissect_mutable_member(aux_tree, tvb, offset, encoding, encoding_version, info, &is_end, show_current_element); + offset = dissect_mutable_member(aux_tree, tvb, pinfo, offset, encoding, encoding_version, info, &is_end, show_current_element); ++num_elements; if (show_current_element) { ++shown_elements; @@ -3426,7 +3428,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, if (show) { proto_item_append_text(tree, "(BaseId: 0x%016" PRIx64 ")", info->base_type_id); } - offset = dissect_user_defined(aux_tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(aux_tree, tvb, pinfo, offset, encoding, encoding_version, NULL, info->base_type_id, info->member_name, EXTENSIBILITY_INVALID, offset, 0, 0, show); } @@ -3445,7 +3447,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, first_skipped_element_offset = offset; } /* If a member is not shown all it children will inherit the "show_current_element" value */ - offset = dissect_user_defined(aux_tree, tvb, offset, encoding, encoding_version, NULL, + offset = dissect_user_defined(aux_tree, tvb, pinfo, offset, encoding, encoding_version, NULL, info->elements[i].type_id, info->elements[i].member_name, info->extensibility, offset_zero, info->elements[i].flags, info->elements[i].member_id, show_current_element); } @@ -3476,6 +3478,7 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, break; } } + decrement_dissection_depth(pinfo); if (extensibility == EXTENSIBILITY_MUTABLE) { offset_zero += member_length; @@ -3485,7 +3488,8 @@ static gint dissect_user_defined(proto_tree *tree, tvbuff_t * tvb, gint offset, } } -static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, gint offset, guint encoding, guint encoding_version, +// NOLINTNEXTLINE(misc-no-recursion) +static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, packet_info *pinfo, gint offset, guint encoding, guint encoding_version, dissection_info * info, gboolean * is_end, gboolean show) { proto_tree * member; @@ -3514,7 +3518,7 @@ static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, gint offse mapping = (mutable_member_mapping *) wmem_map_lookup(mutable_member_mappings, &(key)); if (mapping) { /* the library knows how to dissect this */ proto_item_append_text(member, "(base found 0x%016" PRIx64 ")", key); - dissect_user_defined(tree, tvb, offset, encoding, encoding_version, NULL, mapping->member_type_id, + dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, NULL, mapping->member_type_id, mapping->member_name, EXTENSIBILITY_INVALID, offset, 0, mapping->member_id, show); proto_item_set_hidden(member); return check_offset_addition(offset, member_length, tree, NULL, tvb); @@ -3528,7 +3532,7 @@ static gint dissect_mutable_member(proto_tree *tree , tvbuff_t * tvb, gint offse mapping = (mutable_member_mapping *) wmem_map_lookup(mutable_member_mappings, &(key)); if (mapping) { /* the library knows how to dissect this */ proto_item_append_text(member, "(found 0x%016" PRIx64 ")", key); - dissect_user_defined(tree, tvb, offset, encoding, encoding_version, NULL, mapping->member_type_id, + dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, NULL, mapping->member_type_id, mapping->member_name, EXTENSIBILITY_INVALID, offset, 0, mapping->member_id, show); } else @@ -4920,7 +4924,8 @@ static const char *rtps_util_typecode_id_to_string(guint32 typecode_id) { /* Insert in the protocol tree the next bytes interpreted as typecode info * Returns the number of bytes parsed */ -static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, const guint encoding, +// NOLINTNEXTLINE(misc-no-recursion) +static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset, const guint encoding, int indent_level, int is_pointer, guint16 bitfield, int is_key, const gint offset_begin, char *name, int seq_max_len, /* -1 = not a sequence field */ @@ -5064,9 +5069,11 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, offset = disc_offset_begin + disc_size; #if 0 field_offset_begin = offset; + increment_dissection_depth(pinfo); offset += rtps_util_add_typecode( tree, tvb, + pinfo, offset, encoding, indent_level+1, @@ -5078,6 +5085,7 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, -1, NULL, ndds_40_hack); + decrement_dissection_depth(pinfo); #endif /* Add the entry of the union in the tree */ @@ -5143,9 +5151,11 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, proto_item_set_len(case_item, retVal); } - offset += rtps_util_add_typecode(tree, tvb, offset, encoding, + increment_dissection_depth(pinfo); + offset += rtps_util_add_typecode(tree, tvb, pinfo, offset, encoding, indent_level+2, member_is_pointer, 0, 0, field_offset_begin, member_name, -1, NULL, ndds_40_hack); + decrement_dissection_depth(pinfo); } /* Finally prints the name of the struct (if provided) */ (void) g_strlcpy(type_name, "}", sizeof(type_name)); @@ -5313,9 +5323,11 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, member_is_key = tvb_get_guint8(tvb, offset); offset++; - offset += rtps_util_add_typecode(tree, tvb, offset, encoding, + increment_dissection_depth(pinfo); + offset += rtps_util_add_typecode(tree, tvb, pinfo, offset, encoding, indent_level+1, member_is_pointer, member_bitfield, member_is_key, field_offset_begin, member_name, -1, NULL, ndds_40_hack); + decrement_dissection_depth(pinfo); } } /* Finally prints the name of the struct (if provided) */ @@ -5354,7 +5366,7 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, offset += 4; /* Recursive decode seq typecode */ - /*offset += */rtps_util_add_typecode(tree, tvb, offset, encoding, indent_level, + /*offset += */rtps_util_add_typecode(tree, tvb, pinfo, offset, encoding, indent_level, is_pointer, bitfield, is_key, offset_begin, name, seq_max_len2, NULL, ndds_40_hack); /* Differently from the other typecodes, the line has been already printed */ @@ -5389,9 +5401,11 @@ static gint rtps_util_add_typecode(proto_tree *tree, tvbuff_t *tvb, gint offset, } /* Recursive decode seq typecode */ - /*offset += */rtps_util_add_typecode(tree, tvb, offset, encoding, + increment_dissection_depth(pinfo); + /*offset += */rtps_util_add_typecode(tree, tvb, pinfo, offset, encoding, indent_level, is_pointer, bitfield, is_key, offset_begin, name, -1, size, ndds_40_hack); + decrement_dissection_depth(pinfo); /* Differently from the other typecodes, the line has been already printed */ return retVal; } @@ -5981,6 +5995,7 @@ static void rtps_util_add_type_element_struct(proto_tree *tree, static void rtps_util_add_type_library(proto_tree *tree, packet_info * pinfo, tvbuff_t * tvb, gint offset, const guint encoding, guint32 size); +// NOLINTNEXTLINE(misc-no-recursion) static void rtps_util_add_type_element_module(proto_tree *tree, packet_info * pinfo, tvbuff_t * tvb, gint offset, const guint encoding) { guint32 long_number; @@ -5992,6 +6007,7 @@ static void rtps_util_add_type_element_module(proto_tree *tree, packet_info * pi rtps_util_add_type_library(tree, pinfo, tvb, offset, encoding, -1); } +// NOLINTNEXTLINE(misc-no-recursion) static gint rtps_util_add_type_library_element(proto_tree *tree, packet_info * pinfo, tvbuff_t * tvb, gint offset, const guint encoding) { proto_tree * element_tree; @@ -6065,6 +6081,7 @@ static gint rtps_util_add_type_library_element(proto_tree *tree, packet_info * p return offset; } +// NOLINTNEXTLINE(misc-no-recursion) static void rtps_util_add_type_library(proto_tree *tree, packet_info * pinfo, tvbuff_t * tvb, gint offset, const guint encoding, guint32 size) { proto_tree * library_tree; @@ -6073,10 +6090,12 @@ static void rtps_util_add_type_library(proto_tree *tree, packet_info * pinfo, library_tree = proto_tree_add_subtree_format(tree, tvb, offset, size, ett_rtps_type_library, NULL, "Type Library (%d elements)", long_number); offset += 4; + increment_dissection_depth(pinfo); for (i = 0; i < long_number; i++) { offset = rtps_util_add_type_library_element(library_tree, pinfo, tvb, offset, encoding); } + decrement_dissection_depth(pinfo); } static void rtps_util_add_typeobject(proto_tree *tree, packet_info * pinfo, @@ -6753,7 +6772,7 @@ static gboolean rtps_util_try_dissector(proto_tree *tree, info = lookup_dissection_info_in_custom_and_builtin_types(type_mapping_object->type_id); if (info != NULL) { proto_item_append_text(tree, " (TypeId: 0x%016" PRIx64 ")", info->type_id); - return dissect_user_defined(tree, tvb, offset, encoding, encoding_version, info, + return dissect_user_defined(tree, tvb, pinfo, offset, encoding, encoding_version, info, info->type_id, info->member_name, EXTENSIBILITY_INVALID, offset, 0 /* flags */, 0 /* member_id */, TRUE); } @@ -7498,6 +7517,7 @@ static gboolean dissect_parameter_sequence_rti_dds(proto_tree *rtps_parameter_tr case PID_TYPECODE_RTPS2: { rtps_util_add_typecode(rtps_parameter_tree, tvb, + pinfo, offset, encoding, 0, /* indent level */ @@ -7714,6 +7734,7 @@ static gboolean dissect_parameter_sequence_toc(proto_tree *rtps_parameter_tree, case PID_TYPECODE_RTPS2: { rtps_util_add_typecode(rtps_parameter_tree, tvb, + pinfo, offset, encoding, 0, /* indent level */ @@ -8608,7 +8629,7 @@ static gboolean dissect_parameter_sequence_v1(proto_tree *rtps_parameter_tree, p * +---------------+---------------+---------------+---------------+ */ case PID_TYPECODE: - rtps_util_add_typecode(rtps_parameter_tree, tvb, offset, encoding, + rtps_util_add_typecode(rtps_parameter_tree, tvb, pinfo, offset, encoding, 0, /* indent level */ 0, /* isPointer */ -1, /* bitfield */ diff --git a/epan/dissectors/packet-s7comm.c b/epan/dissectors/packet-s7comm.c index de55b83b..5eeac7f0 100644 --- a/epan/dissectors/packet-s7comm.c +++ b/epan/dissectors/packet-s7comm.c @@ -4252,6 +4252,7 @@ s7comm_decode_ud_tis_param(tvbuff_t *tvb, * *******************************************************************************************************/ static guint32 +// NOLINTNEXTLINE(misc-no-recursion) s7comm_decode_ud_tis_jobs(tvbuff_t *tvb, proto_tree *td_tree, guint16 td_size, @@ -4309,6 +4310,7 @@ s7comm_decode_ud_tis_jobs(tvbuff_t *tvb, } /* New job data tree */ if (job_td_size > 0) { + // We recurse here, but we'll run out of packet before we run out of stack. offset = s7comm_decode_ud_tis_data(tvb, td_tree, S7COMM_UD_TYPE_REQ, job_subfunc, job_td_size, offset); } break; @@ -5122,6 +5124,7 @@ s7comm_decode_ud_tis_breakpoint(tvbuff_t *tvb, * *******************************************************************************************************/ static guint32 +// NOLINTNEXTLINE(misc-no-recursion) s7comm_decode_ud_tis_data(tvbuff_t *tvb, proto_tree *tree, guint8 type, @@ -5164,6 +5167,7 @@ s7comm_decode_ud_tis_data(tvbuff_t *tvb, case S7COMM_UD_SUBF_TIS_READJOBLIST: case S7COMM_UD_SUBF_TIS_READJOB: case S7COMM_UD_SUBF_TIS_REPLACEJOB: + // We recurse here, but we'll run out of packet before we run out of stack. offset = s7comm_decode_ud_tis_jobs(tvb, td_tree, td_size, type, subfunc, offset); break; case S7COMM_UD_SUBF_TIS_MODVAR: @@ -8567,11 +8571,7 @@ proto_register_s7comm (void) &ett_s7comm_fragment, }; - proto_s7comm = proto_register_protocol ( - "S7 Communication", /* name */ - "S7COMM", /* short name */ - "s7comm" /* abbrev */ - ); + proto_s7comm = proto_register_protocol ("S7 Communication", "S7COMM", "s7comm"); proto_register_field_array(proto_s7comm, hf, array_length (hf)); diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c index 7bb08cb7..14f22952 100644 --- a/epan/dissectors/packet-scsi.c +++ b/epan/dissectors/packet-scsi.c @@ -960,7 +960,8 @@ scsistat_init(struct register_srt* srt, GArray* srt_array) scsi_srt_table = init_srt_table(tap_data->prog, NULL, srt_array, SCSI_NUM_PROCEDURES, NULL, tap_data->hf_name, tap_data); for (i = 0; i < SCSI_NUM_PROCEDURES; i++) { - init_srt_table_row(scsi_srt_table, i, val_to_str_ext(i, tap_data->cdbnames_ext, "Unknown-0x%02x")); + init_srt_table_row(scsi_srt_table, i, + val_to_str_ext_const(i, tap_data->cdbnames_ext, "Unknown")); } } diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c index f9f72a13..76348743 100644 --- a/epan/dissectors/packet-sctp.c +++ b/epan/dissectors/packet-sctp.c @@ -1404,6 +1404,7 @@ dissect_state_cookie_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_unrecognized_parameters_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { /* FIXME: Does it contain one or more parameters? */ @@ -1717,6 +1718,7 @@ dissect_forward_tsn_supported_parameter(tvbuff_t *parameter_tvb _U_) #define ADDRESS_PARAMETER_OFFSET (CORRELATION_ID_OFFSET + CORRELATION_ID_LENGTH) static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_add_ip_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, proto_item *parameter_item) { guint16 address_length; @@ -1734,6 +1736,7 @@ dissect_add_ip_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_del_ip_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, proto_item *parameter_item) { guint16 address_length; @@ -1753,6 +1756,7 @@ dissect_del_ip_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr #define ERROR_CAUSE_IND_CASUES_OFFSET (CORRELATION_ID_OFFSET + CORRELATION_ID_LENGTH) static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_cause_indication_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { guint16 causes_length; @@ -1767,6 +1771,7 @@ dissect_error_cause_indication_parameter(tvbuff_t *parameter_tvb, packet_info *p } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_set_primary_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, proto_item *parameter_item) { guint16 address_length; @@ -1886,6 +1891,7 @@ static const true_false_string sctp_parameter_bit_2_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *chunk_tree, proto_item *additional_item, gboolean dissecting_init_init_ack_chunk, @@ -1928,6 +1934,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, parameter_tree = NULL; } + increment_dissection_depth(pinfo); switch(type) { case HEARTBEAT_INFO_PARAMETER_ID: dissect_heartbeat_info_parameter(parameter_tvb, parameter_tree, parameter_item); @@ -2014,6 +2021,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item); break; } + decrement_dissection_depth(pinfo); if (padding_length > 0) { proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA); @@ -2021,6 +2029,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree, proto_item *additional_item, gboolean dissecting_init_init_ack_chunk) { gint offset, length, total_length, remaining_length; @@ -2122,6 +2131,7 @@ dissect_out_of_resource_cause(tvbuff_t *cause_tvb _U_) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_unresolvable_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree, proto_item *cause_item) { guint16 parameter_length; @@ -2138,6 +2148,7 @@ static gboolean dissect_sctp_chunk(tvbuff_t *chunk_tvb, packet_info *pinfo, proto_tree *tree, proto_tree *sctp_tree, sctp_half_assoc_t *assoc, gboolean useinfo); static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_unrecognized_chunk_type_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree, proto_item *cause_item) { guint16 chunk_length; @@ -2159,6 +2170,7 @@ dissect_invalid_mandatory_parameter_cause(tvbuff_t *cause_tvb _U_) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_unrecognized_parameters_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree) { guint16 cause_info_length; @@ -2188,6 +2200,7 @@ dissect_cookie_received_while_shutting_down_cause(tvbuff_t *cause_tvb _U_) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_restart_with_new_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree, proto_item *cause_item) { guint16 cause_info_length; @@ -2223,6 +2236,7 @@ dissect_protocol_violation_cause(tvbuff_t *cause_tvb, proto_tree *cause_tree) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_delete_last_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree, proto_item *cause_item) { guint16 cause_info_length; @@ -2238,6 +2252,7 @@ dissect_delete_last_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_resource_outage_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree) { guint16 cause_info_length; @@ -2251,6 +2266,7 @@ dissect_resource_outage_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tre } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_delete_source_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree, proto_item *cause_item) { guint16 cause_info_length; @@ -2266,6 +2282,7 @@ dissect_delete_source_address_cause(tvbuff_t *cause_tvb, packet_info *pinfo, pro } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_request_refused_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *cause_tree) { guint16 cause_info_length; @@ -2339,6 +2356,7 @@ static const value_string cause_code_values[] = { static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *chunk_tree) { guint16 code, length, padding_length; @@ -2356,6 +2374,7 @@ dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *chunk_t proto_tree_add_item(cause_tree, hf_cause_length, cause_tvb, CAUSE_LENGTH_OFFSET, CAUSE_LENGTH_LENGTH, ENC_BIG_ENDIAN); /* XXX - add expert info if length is bogus? */ + increment_dissection_depth(pinfo); switch(code) { case INVALID_STREAM_IDENTIFIER: dissect_invalid_stream_identifier_cause(cause_tvb, cause_tree, cause_item); @@ -2415,12 +2434,14 @@ dissect_error_cause(tvbuff_t *cause_tvb, packet_info *pinfo, proto_tree *chunk_t dissect_unknown_cause(cause_tvb, cause_tree, cause_item); break; } + decrement_dissection_depth(pinfo); if (padding_length > 0) proto_tree_add_item(cause_tree, hf_cause_padding, cause_tvb, CAUSE_HEADER_OFFSET + length, padding_length, ENC_NA); } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_causes(tvbuff_t *causes_tvb, packet_info *pinfo, proto_tree *tree) { gint offset, length, total_length, remaining_length; @@ -3587,6 +3608,7 @@ dissect_data_chunk(tvbuff_t *chunk_tvb, INIT_CHUNK_INITIAL_TSN_LENGTH ) static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_init_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameters_tvb; @@ -3621,6 +3643,7 @@ dissect_init_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_init_ack_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameters_tvb; @@ -3998,6 +4021,7 @@ dissect_nr_sack_chunk(packet_info *pinfo, tvbuff_t *chunk_tvb, proto_tree *chunk #define HEARTBEAT_CHUNK_INFO_OFFSET CHUNK_VALUE_OFFSET static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_heartbeat_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameter_tvb; @@ -4015,6 +4039,7 @@ dissect_heartbeat_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info * #define HEARTBEAT_ACK_CHUNK_INFO_OFFSET CHUNK_VALUE_OFFSET static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_heartbeat_ack_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameter_tvb; @@ -4033,6 +4058,7 @@ dissect_heartbeat_ack_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_in #define SCTP_ABORT_CHUNK_T_BIT 0x01 static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_abort_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *flags_item) { tvbuff_t *causes_tvb; @@ -4071,6 +4097,7 @@ dissect_shutdown_ack_chunk(tvbuff_t *chunk_tvb _U_) #define ERROR_CAUSE_IND_CAUSES_OFFSET CHUNK_VALUE_OFFSET static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_error_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree) { tvbuff_t *causes_tvb; @@ -4231,6 +4258,7 @@ dissect_i_forward_tsn_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, proto_tre #define RE_CONFIG_PARAMETERS_OFFSET CHUNK_HEADER_LENGTH static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_re_config_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item _U_) { tvbuff_t *parameters_tvb; @@ -4264,6 +4292,7 @@ dissect_auth_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, proto_tree *chunk_ #define ASCONF_CHUNK_PARAMETERS_OFFSET (SEQUENCE_NUMBER_OFFSET + SCTP_SEQUENCE_NUMBER_LENGTH) static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_asconf_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameters_tvb; @@ -4287,6 +4316,7 @@ dissect_asconf_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pin #define ASCONF_ACK_CHUNK_PARAMETERS_OFFSET (SEQUENCE_NUMBER_OFFSET + SCTP_SEQUENCE_NUMBER_LENGTH) static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_asconf_ack_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item) { tvbuff_t *parameters_tvb; @@ -4344,6 +4374,7 @@ static const true_false_string sctp_pktdropk_t_bit_value = { }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_pktdrop_chunk(tvbuff_t *chunk_tvb, guint16 chunk_length, packet_info *pinfo, proto_tree *chunk_tree, proto_item *chunk_item, proto_item *flags_item) { tvbuff_t *data_field_tvb; @@ -4427,6 +4458,7 @@ static const true_false_string sctp_chunk_bit_2_value = { static gboolean +// NOLINTNEXTLINE(misc-no-recursion) dissect_sctp_chunk(tvbuff_t *chunk_tvb, packet_info *pinfo, proto_tree *tree, @@ -4492,6 +4524,7 @@ dissect_sctp_chunk(tvbuff_t *chunk_tvb, */ /* now dissect the chunk value */ + increment_dissection_depth(pinfo); switch(type) { case SCTP_DATA_CHUNK_ID: result = dissect_data_chunk(chunk_tvb, length, pinfo, tree, chunk_tree, chunk_item, flags_item, ha, FALSE); @@ -4574,6 +4607,7 @@ dissect_sctp_chunk(tvbuff_t *chunk_tvb, dissect_unknown_chunk(chunk_tvb, length, type, chunk_tree, chunk_item); break; } + decrement_dissection_depth(pinfo); if (padding_length > 0) proto_tree_add_item(chunk_tree, hf_chunk_padding, chunk_tvb, CHUNK_HEADER_OFFSET + length, padding_length, ENC_NA); @@ -4585,6 +4619,7 @@ dissect_sctp_chunk(tvbuff_t *chunk_tvb, } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sctp_chunks(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *sctp_item, proto_tree *sctp_tree, sctp_half_assoc_t *ha, gboolean encapsulated) { tvbuff_t *chunk_tvb; @@ -4679,6 +4714,7 @@ dissect_sctp_chunks(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_i } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sctp_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean encapsulated) { guint32 checksum = 0, calculated_crc32c = 0, calculated_adler32 = 0; diff --git a/epan/dissectors/packet-simulcrypt.c b/epan/dissectors/packet-simulcrypt.c index 5fac3a13..10eee43c 100644 --- a/epan/dissectors/packet-simulcrypt.c +++ b/epan/dissectors/packet-simulcrypt.c @@ -941,6 +941,7 @@ dissect_emmg_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinf static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_eis_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, guint32 offset, guint16 plen, guint16 ptype, gchar *pvalue_char) { @@ -1082,7 +1083,7 @@ dissect_eis_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo } static void -dissect_psig_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, guint32 offset, +dissect_psig_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint16 plen, guint16 ptype, gchar *pvalue_char) { proto_tree *simulcrypt_psig_table_period_pair_tree; @@ -1090,6 +1091,7 @@ dissect_psig_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinf proto_item *simulcrypt_item; guint32 pvaluedec; /* parameter decimal value */ + increment_dissection_depth(pinfo); switch (ptype) { case SIMULCRYPT_PSIG_PSIG_TYPE: pvaluedec = tvb_get_guint8(tvb, offset); @@ -1184,6 +1186,7 @@ dissect_psig_parameter_value (proto_tree *tree, tvbuff_t *tvb, packet_info *pinf proto_tree_add_string(tree, hf_simulcrypt_parameter_value, tvb, offset, plen, pvalue_char); break; } /* end parameter type switch */ + decrement_dissection_depth(pinfo); } /* This method dissects fully reassembled messages */ @@ -1264,6 +1267,7 @@ dissect_simulcrypt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* this method is used to dissect TLV parameters */ /* can be used both from the main tree (simulcrypt_message_tree) and the subtrees (created from TLV items) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_simulcrypt_data(proto_tree *simulcrypt_tree, proto_item *simulcrypt_item, packet_info *pinfo _U_, tvbuff_t *tvb, proto_tree *tree, int offset, int container_data_length, guint16 iftype, gboolean is_subtree) diff --git a/epan/dissectors/packet-sll.h b/epan/dissectors/packet-sll.h index c34c7bb8..88b00724 100644 --- a/epan/dissectors/packet-sll.h +++ b/epan/dissectors/packet-sll.h @@ -22,6 +22,7 @@ #define LINUX_SLL_P_PPPHDLC 0x0007 /* PPP HDLC frames */ #define LINUX_SLL_P_CAN 0x000C /* Controller Area Network */ #define LINUX_SLL_P_CANFD 0x000D /* Controller Area Network flexible data rate */ +#define LINUX_SLL_P_CANXL 0x000E /* Controller Area Network etended length */ #define LINUX_SLL_P_IRDA_LAP 0x0017 /* IrDA Link Access Protocol */ #define LINUX_SLL_P_ISI 0x00F5 /* Intelligent Service Interface */ #define LINUX_SLL_P_IEEE802154 0x00f6 /* 802.15.4 on monitor inteface */ diff --git a/epan/dissectors/packet-slsk.c b/epan/dissectors/packet-slsk.c index 2ee9a925..ab648bcb 100644 --- a/epan/dissectors/packet-slsk.c +++ b/epan/dissectors/packet-slsk.c @@ -245,7 +245,8 @@ static const char* connection_type(char con_type[]) { return "Unknown"; } -static gboolean check_slsk_format(tvbuff_t *tvb, int offset, const char format[]){ +// NOLINTNEXTLINE(misc-no-recursion) +static gboolean check_slsk_format(tvbuff_t *tvb, packet_info *pinfo, int offset, const char format[]){ /* * Returns TRUE if tvbuff beginning at offset matches a certain format @@ -282,11 +283,14 @@ static gboolean check_slsk_format(tvbuff_t *tvb, int offset, const char format[] return FALSE; return TRUE; } - return check_slsk_format(tvb, offset, &format[1]); + increment_dissection_depth(pinfo); + gboolean valid = check_slsk_format(tvb, pinfo, offset, &format[1]); + decrement_dissection_depth(pinfo); + return valid; } -static const char* get_message_type(tvbuff_t *tvb) { +static const char* get_message_type(tvbuff_t *tvb, packet_info *pinfo) { /* * Checks if the Message Code is known. * If unknown checks if the Message Code is stored in a byte. @@ -295,11 +299,11 @@ static const char* get_message_type(tvbuff_t *tvb) { int msg_code = tvb_get_letohl(tvb, 4); const gchar *message_type = try_val_to_str(msg_code, slsk_tcp_msgs); if (message_type == NULL) { - if (check_slsk_format(tvb, 4, "bisis")) + if (check_slsk_format(tvb, pinfo, 4, "bisis")) message_type = "Distributed Search"; - else if (check_slsk_format(tvb, 4, "bssi")) + else if (check_slsk_format(tvb, pinfo, 4, "bssi")) message_type = "Peer Init"; - else if (check_slsk_format(tvb, 4, "bi")) + else if (check_slsk_format(tvb, pinfo, 4, "bi")) message_type = "Pierce Fw"; else message_type = "Unknown"; @@ -342,7 +346,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, col_set_str(pinfo->cinfo, COL_INFO, "SoulSeek Message"); - col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", get_message_type(tvb)); + col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", get_message_type(tvb, pinfo)); /* create display subtree for the protocol */ ti = proto_tree_add_item(tree, proto_slsk, tvb, 0, -1, ENC_NA); @@ -357,7 +361,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, switch (msg_code) { case 1: - if (check_slsk_format(tvb, offset, "issi")) { + if (check_slsk_format(tvb, pinfo, offset, "issi")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Login (Code: %02d)", msg_code); @@ -369,7 +373,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_version, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "ibs") || check_slsk_format(tvb, offset, "ibsi")) { + else if (check_slsk_format(tvb, pinfo, offset, "ibs") || check_slsk_format(tvb, pinfo, offset, "ibsi")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Login Reply (Code: %02d)", msg_code); @@ -387,7 +391,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 2: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Set Wait Port (Code: %02d)", msg_code); @@ -398,7 +402,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 3: - if (check_slsk_format(tvb, offset, "isii")) { + if (check_slsk_format(tvb, pinfo, offset, "isii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Peer Address Reply (Code: %02d)", msg_code); @@ -410,7 +414,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_port, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "is")) { + else if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Peer Address (Code: %02d)", msg_code); @@ -421,7 +425,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 4: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Shared File List (Code: %02d)", msg_code); @@ -430,7 +434,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 5: - if (check_slsk_format(tvb, offset, "isb")) { + if (check_slsk_format(tvb, pinfo, offset, "isb")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Exists Reply (Code: %02d)", msg_code); @@ -440,7 +444,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_user_exists, tvb, offset, 1, ENC_NA); offset += 1; } - else if (check_slsk_format(tvb, offset, "is")) { + else if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Exists Request (Code: %02d)", msg_code); @@ -448,7 +452,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_username, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "i*")) { + else if (check_slsk_format(tvb, pinfo, offset, "i*")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Shared File List (Code: %02d)", msg_code); @@ -478,11 +482,11 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, add_new_data_source(pinfo, uncompr_tvb, "Uncompressed SoulSeek data"); uncompr_tvb_offset = 0; - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "i*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "i*")) { proto_tree_add_item_ret_int(slsk_compr_packet_tree, hf_slsk_num_directories, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j); uncompr_tvb_offset += 4; for (i = 0; i < j; i++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "si*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "si*")) { start_offset = uncompr_tvb_offset; subtree = proto_tree_add_subtree_format(slsk_compr_packet_tree, uncompr_tvb, uncompr_tvb_offset, 1, ett_slsk_directory, &ti_subtree, "Directory #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_directory_name, uncompr_tvb, uncompr_tvb_offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -490,7 +494,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(subtree, hf_slsk_num_files, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j2); uncompr_tvb_offset += 4; for (i2 = 0; i2 < j2; i2++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "bsiisi*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "bsiisi*")) { start_offset2 = uncompr_tvb_offset; subtree2 = proto_tree_add_subtree_format(subtree, uncompr_tvb, uncompr_tvb_offset, 1, ett_slsk_file, &ti_subtree2, "File #%d", i2+1); proto_tree_add_item(subtree2, hf_slsk_file_code, uncompr_tvb, uncompr_tvb_offset, 1, ENC_NA); @@ -506,7 +510,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(subtree2, hf_slsk_file_num_attributes, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j3); uncompr_tvb_offset += 4; for (i3 = 0; i3 < j3; i3++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "ii*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "ii*")) { subtree3 = proto_tree_add_subtree_format(subtree2, uncompr_tvb, uncompr_tvb_offset, 8, ett_slsk_file_attribute, NULL, "Attribute #%d", i3+1); proto_tree_add_item(subtree3, hf_slsk_file_attribute_type, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN); uncompr_tvb_offset += 4; @@ -539,7 +543,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 7: - if (check_slsk_format(tvb, offset, "isi")) { + if (check_slsk_format(tvb, pinfo, offset, "isi")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get User Status Reply (Code: %02d)", msg_code); @@ -549,7 +553,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_status_code, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "is")) { + else if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get User Status (Code: %02d)", msg_code); @@ -560,7 +564,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 9: - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "File Search Result (Code: %02d)", msg_code); @@ -592,7 +596,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, add_new_data_source(pinfo, uncompr_tvb, "Uncompressed SoulSeek data"); uncompr_tvb_offset = 0; - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "sii*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "sii*")) { proto_tree_add_item_ret_length(slsk_compr_packet_tree, hf_slsk_username, uncompr_tvb, uncompr_tvb_offset, 4, ENC_ASCII|ENC_NA, &str_len); uncompr_tvb_offset += str_len; proto_tree_add_item(slsk_compr_packet_tree, hf_slsk_token, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN); @@ -600,7 +604,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(slsk_compr_packet_tree, hf_slsk_num_files, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j); uncompr_tvb_offset += 4; for (i = 0; i < j; i++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "bsiisi*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "bsiisi*")) { start_offset2 = uncompr_tvb_offset; subtree2 = proto_tree_add_subtree_format(slsk_compr_packet_tree, uncompr_tvb, uncompr_tvb_offset, 1, ett_slsk_file, &ti_subtree2, "File #%d", i+1); proto_tree_add_item(subtree2, hf_slsk_file_code, uncompr_tvb, uncompr_tvb_offset, 1, ENC_NA); @@ -616,7 +620,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(subtree2, hf_slsk_file_num_attributes, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j2); uncompr_tvb_offset += 4; for (i2 = 0; i2 < j2; i2++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "ii*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "ii*")) { subtree3 = proto_tree_add_subtree_format(subtree2, uncompr_tvb, uncompr_tvb_offset, 8, ett_slsk_file_attribute, NULL, "Attribute #%d", i2+1); proto_tree_add_item(subtree3, hf_slsk_file_attribute_type, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN); uncompr_tvb_offset += 4; @@ -650,7 +654,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 13: - if (check_slsk_format(tvb, offset, "isss")) { + if (check_slsk_format(tvb, pinfo, offset, "isss")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Say ChatRoom (Code: %02d)", msg_code); @@ -662,7 +666,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_chat_message, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "iss")) { + else if (check_slsk_format(tvb, pinfo, offset, "iss")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Say ChatRoom (Code: %02d)", msg_code); @@ -675,7 +679,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 14: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Join/Add Room (Code: %02d)", msg_code); @@ -683,7 +687,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_room, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "isi*")) { + else if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Join Room User List (Code: %02d)", msg_code); @@ -695,20 +699,20 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { proto_tree_add_item_ret_length(slsk_tree, hf_slsk_user, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } else { break; /* invalid format */ } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item(slsk_tree, hf_slsk_status_code, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } else { @@ -716,13 +720,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "iiiii*")) { + if (check_slsk_format(tvb, pinfo, offset, "iiiii*")) { subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 20, ett_slsk_user, NULL, "User #%d", i+1); proto_tree_add_item(subtree, hf_slsk_average_speed, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -739,13 +743,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_num_slotsfull_records, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 4, ett_slsk_user, NULL, "User #%d", i+1); proto_tree_add_item(subtree, hf_slsk_slotsfull, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -758,7 +762,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 15: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server & Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Leave Room (Code: %02d)", msg_code); @@ -766,7 +770,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_room, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "i")) { + else if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Info Request (Code: %02d)", msg_code); @@ -775,7 +779,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 16: - if (check_slsk_format(tvb, offset, "issiiiiiii")) { + if (check_slsk_format(tvb, pinfo, offset, "issiiiiiii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Joined Room (Code: %02d)", msg_code); @@ -799,7 +803,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_slotsfull, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "isbiib") || check_slsk_format(tvb, offset, "isbsiib")) { + else if (check_slsk_format(tvb, pinfo, offset, "isbiib") || check_slsk_format(tvb, pinfo, offset, "isbsiib")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Info Reply (Code: %02d)", msg_code); @@ -822,7 +826,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 17: - if (check_slsk_format(tvb, offset, "iss")) { + if (check_slsk_format(tvb, pinfo, offset, "iss")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "User Left Room (Code: %02d)", msg_code); @@ -835,7 +839,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 18: - if (check_slsk_format(tvb, offset, "iiss")) { + if (check_slsk_format(tvb, pinfo, offset, "iiss")) { /* Client-to-Server */ guint32 len; @@ -853,7 +857,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, format_text(pinfo->pool, str, len)); offset += 4+len; } - else if (check_slsk_format(tvb, offset, "issiii")) { + else if (check_slsk_format(tvb, pinfo, offset, "issiii")) { /* Server-to-Client */ guint32 len; @@ -878,7 +882,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 22: - if (check_slsk_format(tvb, offset, "iss")) { + if (check_slsk_format(tvb, pinfo, offset, "iss")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Message User Send (Code: %02d)", msg_code); @@ -888,7 +892,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_chat_message, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "iiiss")) { + else if (check_slsk_format(tvb, pinfo, offset, "iiiss")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Message User Receive (Code: %02d)", msg_code); @@ -905,7 +909,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 23: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Message User Receive Ack (Code: %02d)", msg_code); @@ -916,7 +920,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 26: - if (check_slsk_format(tvb, offset, "iis")) { + if (check_slsk_format(tvb, pinfo, offset, "iis")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "File Search (Code: %02d)", msg_code); @@ -929,7 +933,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 28: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Set Status (Code: %02d)", msg_code); @@ -940,7 +944,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 32: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Ping (Code: %02d)", msg_code); @@ -949,7 +953,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 34: - if (check_slsk_format(tvb, offset, "isi")) { + if (check_slsk_format(tvb, pinfo, offset, "isi")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Update Upload Speed (Code: %02d)", msg_code); @@ -962,7 +966,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 35: - if (check_slsk_format(tvb, offset, "iii")) { + if (check_slsk_format(tvb, pinfo, offset, "iii")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Shared Files & Folders (Code: %02d)", msg_code); @@ -975,7 +979,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 36: - if (check_slsk_format(tvb, offset, "isiiiii")) { + if (check_slsk_format(tvb, pinfo, offset, "isiiiii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get User Stats Reply (Code: %02d)", msg_code); @@ -993,7 +997,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_directories, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "is")) { + else if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Client */ /* Client-to-Server: send after login successful */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, @@ -1002,7 +1006,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_username, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "iis")) { + else if (check_slsk_format(tvb, pinfo, offset, "iis")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Folder Contents Request (Code: %02d)", msg_code); @@ -1015,7 +1019,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 37: - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Folder Contents Response (Code: %02d)", msg_code); @@ -1045,7 +1049,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, add_new_data_source(pinfo, uncompr_tvb, "Uncompressed SoulSeek data"); uncompr_tvb_offset = 0; - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "isi*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "isi*")) { guint32 len; proto_tree_add_item(slsk_compr_packet_tree, hf_slsk_token, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN); @@ -1056,7 +1060,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(slsk_compr_packet_tree, hf_slsk_num_directories, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j); uncompr_tvb_offset += 4; for (i = 0; i < j; i++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "si*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "si*")) { start_offset = uncompr_tvb_offset; subtree = proto_tree_add_subtree_format(slsk_compr_packet_tree, uncompr_tvb, uncompr_tvb_offset, 1, ett_slsk_directory, &ti_subtree, "Directory #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_directory_name, uncompr_tvb, uncompr_tvb_offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1064,7 +1068,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(subtree, hf_slsk_num_files, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j2); uncompr_tvb_offset += 4; for (i2 = 0; i2 < j2; i2++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "bsiisi*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "bsiisi*")) { start_offset2 = uncompr_tvb_offset; subtree2 = proto_tree_add_subtree_format(subtree, uncompr_tvb, uncompr_tvb_offset, 1, ett_slsk_file, &ti_subtree2, "File #%d", i2+1); proto_tree_add_item(subtree2, hf_slsk_file_code, uncompr_tvb, uncompr_tvb_offset, 1, ENC_NA); @@ -1080,7 +1084,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_int(subtree2, hf_slsk_file_num_attributes, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN, &j3); uncompr_tvb_offset += 4; for (i3 = 0; i3 < j3; i3++) { - if (check_slsk_format(uncompr_tvb, uncompr_tvb_offset, "ii*")) { + if (check_slsk_format(uncompr_tvb, pinfo, uncompr_tvb_offset, "ii*")) { subtree3 = proto_tree_add_subtree_format(subtree2, uncompr_tvb, uncompr_tvb_offset, 8, ett_slsk_file_attribute, NULL, "Attribute #%d", i3+1); proto_tree_add_item(subtree3, hf_slsk_file_attribute_type, uncompr_tvb, uncompr_tvb_offset, 4, ENC_LITTLE_ENDIAN); uncompr_tvb_offset += 4; @@ -1113,7 +1117,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 40: - if (check_slsk_format(tvb, offset, "isi")) { + if (check_slsk_format(tvb, pinfo, offset, "isi")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Queued Downloads (Code: %02d)", msg_code); @@ -1123,7 +1127,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_slotsfull, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "iiis") || check_slsk_format(tvb, offset, "iiisii")) { + else if (check_slsk_format(tvb, pinfo, offset, "iiis") || check_slsk_format(tvb, pinfo, offset, "iiisii")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Transfer Request (Code: %02d)", msg_code); @@ -1145,7 +1149,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 41: - if (check_slsk_format(tvb, offset, "iibs") || check_slsk_format(tvb, offset, "iibii") || check_slsk_format(tvb, offset, "iib")) { + if (check_slsk_format(tvb, pinfo, offset, "iibs") || check_slsk_format(tvb, pinfo, offset, "iibii") || check_slsk_format(tvb, pinfo, offset, "iib")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Transfer Response (Code: %02d)", msg_code); @@ -1170,7 +1174,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 42: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Placehold Upload (Code: %02d)", msg_code); @@ -1181,7 +1185,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 43: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Queue Upload (Code: %02d)", msg_code); @@ -1192,7 +1196,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 44: - if (check_slsk_format(tvb, offset, "isi")) { + if (check_slsk_format(tvb, pinfo, offset, "isi")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Place In Queue (Code: %02d)", msg_code); @@ -1205,7 +1209,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 46: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Upload Failed (Code: %02d)", msg_code); @@ -1216,7 +1220,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 50: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Make Own Recommendation (Code: %02d)", msg_code); @@ -1224,7 +1228,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "isi")) { + else if (check_slsk_format(tvb, pinfo, offset, "isi")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Remove Own Recommendation (Code: %02d)", msg_code); @@ -1234,7 +1238,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_ranking, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } - else if (check_slsk_format(tvb, offset, "iss")) { + else if (check_slsk_format(tvb, pinfo, offset, "iss")) { /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Queue Failed (Code: %02d)", msg_code); @@ -1247,7 +1251,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 51: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server: "Add Things I like" */ /* Client-to-Client: "Place In Queue Request" */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, @@ -1259,7 +1263,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 52: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Remove Things I like (Code: %02d)", msg_code); @@ -1270,13 +1274,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 54: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Recommendations (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii*")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Recommendations Reply (Code: %02d)", msg_code); @@ -1286,7 +1290,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "si*")) { + if (check_slsk_format(tvb, pinfo, offset, "si*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_recommendation, &ti_subtree, "Recommendation #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1302,7 +1306,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 55: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Type 55 (Code: %02d)", msg_code); @@ -1311,13 +1315,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 56: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Global Rankings (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii*")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Global Rankings Reply (Code: %02d)", msg_code); @@ -1327,7 +1331,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "si*")) { + if (check_slsk_format(tvb, pinfo, offset, "si*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_recommendation, &ti_subtree, "Recommendation #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1343,7 +1347,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 57: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get User Recommendations (Code: %02d)", msg_code); @@ -1351,7 +1355,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_username, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "isi*")) { + else if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get User Recommendations Reply (Code: %02d)", msg_code); @@ -1363,7 +1367,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_recommendation, &ti_subtree, "Recommendation #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1377,7 +1381,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 58: - if (check_slsk_format(tvb, offset, "isi*")) { + if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Admin Command (Code: %02d)", msg_code); @@ -1389,7 +1393,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_string, &ti_subtree, "String #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_string, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1403,7 +1407,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 60: - if (check_slsk_format(tvb, offset, "isii")) { + if (check_slsk_format(tvb, pinfo, offset, "isii")) { /* Client-to-Server & Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Place In Line Response (Code: %02d)", msg_code); @@ -1418,7 +1422,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 62: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Room Added (Code: %02d)", msg_code); @@ -1429,7 +1433,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 63: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Room Removed (Code: %02d)", msg_code); @@ -1440,13 +1444,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 64: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Room List Request (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii*")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Room List (Code: %02d)", msg_code); @@ -1456,7 +1460,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_room, &ti_subtree, "Room #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_room, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1466,11 +1470,11 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; /* invalid format */ } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 4, ett_slsk_room, &ti_subtree, "Room #%d", i+1); proto_tree_add_item(subtree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -1483,7 +1487,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 65: - if (check_slsk_format(tvb, offset, "isissiii")) { + if (check_slsk_format(tvb, pinfo, offset, "isissiii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Exact File Search (Code: %02d)", msg_code); @@ -1499,7 +1503,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(slsk_tree, hf_slsk_bytes, tvb, offset, 16, ENC_NA); offset += 12; } - else if (check_slsk_format(tvb, offset, "iissiiib")) { + else if (check_slsk_format(tvb, pinfo, offset, "iissiiib")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Exact File Search (Code: %02d)", msg_code); @@ -1516,7 +1520,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 66: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Admin Message (Code: %02d)", msg_code); @@ -1527,13 +1531,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 67: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Global User List Request (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "isi*")) { /* same as case 14 */ + else if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* same as case 14 */ /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Global User List (Code: %02d)", msg_code); @@ -1545,18 +1549,18 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { proto_tree_add_item_ret_length(slsk_tree, hf_slsk_user, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } else { break; /* invalid format */ } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item(slsk_tree, hf_slsk_status_code, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; } else { @@ -1564,13 +1568,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "iiiii*")) { + if (check_slsk_format(tvb, pinfo, offset, "iiiii*")) { subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 20, ett_slsk_user, NULL, "User #%d", i+1); proto_tree_add_item(subtree, hf_slsk_average_speed, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -1587,13 +1591,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } } } - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { proto_tree_add_item_ret_int(slsk_tree, hf_slsk_num_slotsfull_records, tvb, offset, 4, ENC_LITTLE_ENDIAN, &j); offset += 4; if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "i*")) { + if (check_slsk_format(tvb, pinfo, offset, "i*")) { subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 4, ett_slsk_user, NULL, "User #%d", i+1); proto_tree_add_item(subtree, hf_slsk_slotsfull, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -1606,7 +1610,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 68: - if (check_slsk_format(tvb, offset, "isiiiis")) { + if (check_slsk_format(tvb, pinfo, offset, "isiiiis")) { proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Tunneled Message (Code: %02d)", msg_code); offset += 4; @@ -1626,13 +1630,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 69: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Privileged User List Request (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii*")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Privileged User List (Code: %02d)", msg_code); @@ -1642,7 +1646,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { proto_tree_add_item_ret_length(slsk_tree, hf_slsk_user, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } else { @@ -1653,7 +1657,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 71: - if (check_slsk_format(tvb, offset, "ib")) { + if (check_slsk_format(tvb, pinfo, offset, "ib")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Parent List (Code: %02d)", msg_code); @@ -1664,7 +1668,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 73: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Type 73 (Code: %02d)", msg_code); @@ -1675,7 +1679,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 83: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Parent Min Speed (Code: %02d)", msg_code); @@ -1686,7 +1690,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 84: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Parent Speed Connection Ratio (Code: %02d)", msg_code); @@ -1697,7 +1701,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 86: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Parent Inactivity Before Disconnect (Code: %02d)", msg_code); @@ -1708,7 +1712,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 87: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Server Inactivity Before Disconnect (Code: %02d)", msg_code); @@ -1719,7 +1723,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 88: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Nodes In Cache Before Disconnect (Code: %02d)", msg_code); @@ -1730,7 +1734,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 90: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Seconds Before Ping Children (Code: %02d)", msg_code); @@ -1741,7 +1745,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 91: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Add To Privileged (Code: %02d)", msg_code); @@ -1752,13 +1756,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 92: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Check Privileges (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Check Privileges Reply (Code: %02d)", msg_code); @@ -1769,7 +1773,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 93: - if (check_slsk_format(tvb, offset, "ibisis")) { + if (check_slsk_format(tvb, pinfo, offset, "ibisis")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Embedded Message (Code: %02d)", msg_code); @@ -1792,7 +1796,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 100: - if (check_slsk_format(tvb, offset, "ib")) { + if (check_slsk_format(tvb, pinfo, offset, "ib")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Become Parent (Code: %02d)", msg_code); @@ -1803,7 +1807,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 102: - if (check_slsk_format(tvb, offset, "ii*")) { + if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Random Parent Addresses (Code: %02d)", msg_code); @@ -1813,7 +1817,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "sii*")) { + if (check_slsk_format(tvb, pinfo, offset, "sii*")) { proto_tree_add_item_ret_length(slsk_tree, hf_slsk_user, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; @@ -1829,7 +1833,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 103: - if (check_slsk_format(tvb, offset, "iis")) { + if (check_slsk_format(tvb, pinfo, offset, "iis")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Send Wishlist Entry (Code: %02d)", msg_code); @@ -1842,7 +1846,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 104: - if (check_slsk_format(tvb, offset, "ii")) { + if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Type 104 (Code: %02d)", msg_code); @@ -1853,13 +1857,13 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 110: - if (check_slsk_format(tvb, offset, "i")) { + if (check_slsk_format(tvb, pinfo, offset, "i")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Similar Users (Code: %02d)", msg_code); offset += 4; } - else if (check_slsk_format(tvb, offset, "ii*")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Similar Users Reply (Code: %02d)", msg_code); @@ -1869,7 +1873,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "si*")) { + if (check_slsk_format(tvb, pinfo, offset, "si*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 4, ett_slsk_user, &ti_subtree, "User #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_user, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1885,7 +1889,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 111: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Recommendations for Item (Code: %02d)", msg_code); @@ -1893,7 +1897,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "isi*")) { + else if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Recommendations for Item Reply (Code: %02d)", msg_code); @@ -1905,7 +1909,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "si*")) { + if (check_slsk_format(tvb, pinfo, offset, "si*")) { start_offset = offset; subtree = proto_tree_add_subtree_format(slsk_tree, tvb, offset, 1, ett_slsk_recommendation, &ti_subtree, "Recommendation #%d", i+1); proto_tree_add_item_ret_length(subtree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); @@ -1921,7 +1925,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 112: - if (check_slsk_format(tvb, offset, "is")) { + if (check_slsk_format(tvb, pinfo, offset, "is")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Similar Users for Item (Code: %02d)", msg_code); @@ -1929,7 +1933,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_recommendation, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "isi*")) { + else if (check_slsk_format(tvb, pinfo, offset, "isi*")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Get Similar Users for Item Reply (Code: %02d)", msg_code); @@ -1941,7 +1945,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (j > tvb_reported_length_remaining(tvb, offset)) break; for (i = 0; i < j; i++) { - if (check_slsk_format(tvb, offset, "s*")) { + if (check_slsk_format(tvb, pinfo, offset, "s*")) { proto_tree_add_item_ret_length(slsk_tree, hf_slsk_username, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } else { @@ -1952,7 +1956,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; case 1001: - if (check_slsk_format(tvb, offset, "iis")) { + if (check_slsk_format(tvb, pinfo, offset, "iis")) { /* Client-to-Server */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Can't Connect To Peer (Code: %02d)", msg_code); @@ -1962,7 +1966,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item_ret_length(slsk_tree, hf_slsk_username, tvb, offset, 4, ENC_ASCII|ENC_LITTLE_ENDIAN, &str_len); offset += str_len; } - else if (check_slsk_format(tvb, offset, "ii")) { + else if (check_slsk_format(tvb, pinfo, offset, "ii")) { /* Server-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 4, msg_code, "Can't Connect To Peer (Code: %02d)", msg_code); @@ -1973,7 +1977,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, break; default: - if (check_slsk_format(tvb, offset, "bisis")) { + if (check_slsk_format(tvb, pinfo, offset, "bisis")) { if ( tvb_get_guint8(tvb, offset) == 3 ){ /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 1, msg_code, @@ -1989,7 +1993,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += str_len; } } - else if (check_slsk_format(tvb, offset, "bssi")) { + else if (check_slsk_format(tvb, pinfo, offset, "bssi")) { if ( tvb_get_guint8(tvb, offset) == 1 ){ /* Client-to-Client */ guint32 len; @@ -2009,7 +2013,7 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 4; } } - else if (check_slsk_format(tvb, offset, "bi")) { + else if (check_slsk_format(tvb, pinfo, offset, "bi")) { if ( tvb_get_guint8(tvb, offset) == 0 ){ /* Client-to-Client */ proto_tree_add_uint_format_value(slsk_tree, hf_slsk_message_code, tvb, offset, 1, msg_code, diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c index 6dbf0e41..55acb2a8 100644 --- a/epan/dissectors/packet-smb2.c +++ b/epan/dissectors/packet-smb2.c @@ -3843,6 +3843,7 @@ dissect_smb2_STATUS_STOPPED_ON_SYMLINK(tvbuff_t *tvb, packet_info *pinfo _U_, pr } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_smb2_error_context(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int offset, smb2_info_t *si _U_) { proto_tree *tree; @@ -3871,6 +3872,7 @@ dissect_smb2_error_context(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *pa * Assumes it is being called with a sub-tvb (dissects at offsets 0) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_smb2_error_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *parent_tree, int error_context_count, int error_id, smb2_info_t *si _U_) @@ -3901,8 +3903,11 @@ dissect_smb2_error_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *paren break; } } else { - for (i = 0; i < error_context_count; i++) + increment_dissection_depth(pinfo); + for (i = 0; i < error_context_count; i++) { offset += dissect_smb2_error_context(tvb, pinfo, tree, offset, si); + } + decrement_dissection_depth(pinfo); } } @@ -7212,6 +7217,7 @@ dissect_windows_sockaddr_storage(tvbuff_t *tvb, packet_info *pinfo, proto_tree * #define NETWORK_INTERFACE_CAP_RDMA 0x00000002 static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) { guint32 next_offset; @@ -7293,7 +7299,9 @@ dissect_smb2_NETWORK_INTERFACE_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tre next_tvb = tvb_new_subset_remaining(tvb, next_offset); /* next extra info */ + increment_dissection_depth(pinfo); dissect_smb2_NETWORK_INTERFACE_INFO(next_tvb, pinfo, parent_tree); + decrement_dissection_depth(pinfo); } } @@ -9102,6 +9110,7 @@ get_create_context_data_tag_dissectors(const char *tag) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_smb2_create_extra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, smb2_info_t *si) { offset_length_buffer_t tag_olb; @@ -9177,7 +9186,9 @@ dissect_smb2_create_extra_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pa chain_tvb = tvb_new_subset_remaining(tvb, chain_offset); /* next extra info */ + increment_dissection_depth(pinfo); dissect_smb2_create_extra_info(chain_tvb, pinfo, parent_tree, si); + decrement_dissection_depth(pinfo); } } @@ -10958,6 +10969,7 @@ dissect_smb2_signature(packet_info *pinfo, tvbuff_t *tvb, int offset, proto_tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolean first_in_chain) { int msg_type; @@ -11001,6 +11013,8 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea break; } + increment_dissection_depth(pinfo); + /* find which conversation we are part of and get the data for that * conversation */ @@ -11315,6 +11329,7 @@ dissect_smb2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, gboolea offset = dissect_smb2(next_tvb, pinfo, parent_tree, FALSE); } + decrement_dissection_depth(pinfo); return offset; } diff --git a/epan/dissectors/packet-sml.c b/epan/dissectors/packet-sml.c index 8051f340..d1830ee4 100644 --- a/epan/dissectors/packet-sml.c +++ b/epan/dissectors/packet-sml.c @@ -1224,6 +1224,7 @@ static void TupleEntryTree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *procPa proto_item_set_end(TupleEntry, tvb, *offset); } +// NOLINTNEXTLINE(misc-no-recursion) static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tree, guint *offset, guint *data, guint *length){ proto_item *parameterName; proto_item *procParValue; @@ -1388,7 +1389,9 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre tree_Entry_list = proto_tree_add_subtree(child_list, tvb, *offset, -1, ett_sml_tree_Entry, &tree_Entry, "tree_Entry"); *offset+=1; + increment_dissection_depth(pinfo); child_tree(tvb, pinfo,tree_Entry_list, offset, data, length); + decrement_dissection_depth(pinfo); proto_item_set_end(tree_Entry, tvb, *offset); proto_item_set_end(child, tvb, *offset); @@ -1412,7 +1415,9 @@ static void child_tree(tvbuff_t *tvb, packet_info *pinfo, proto_tree *insert_tre } *offset+=1; + increment_dissection_depth(pinfo); child_tree(tvb, pinfo, tree_Entry_list, offset, data, length); + decrement_dissection_depth(pinfo); proto_item_set_end(tree_Entry, tvb, *offset); } proto_item_set_end(child, tvb, *offset); diff --git a/epan/dissectors/packet-sna.c b/epan/dissectors/packet-sna.c index cdf6bfdb..c8a9dab8 100644 --- a/epan/dissectors/packet-sna.c +++ b/epan/dissectors/packet-sna.c @@ -2220,6 +2220,7 @@ dissect_rh(tvbuff_t *tvb, int offset, proto_tree *tree) */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_control_05hpr(tvbuff_t *tvb, proto_tree *tree, int hpr, enum parse parse) { @@ -2246,6 +2247,7 @@ dissect_control_05hpr(tvbuff_t *tvb, proto_tree *tree, int hpr, len = tvb_get_guint8(tvb, offset+1); } if (len) { + // We recurse here, but we'll run out of packet before we run out of stack. dissect_sna_control(tvb, offset, len, tree, hpr, parse); pad = (len+3) & 0xfffc; if (pad > len) { @@ -2285,6 +2287,7 @@ dissect_control_0e(tvbuff_t *tvb, proto_tree *tree) } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_sna_control(tvbuff_t *parent_tvb, int offset, int control_len, proto_tree *tree, int hpr, enum parse parse) { @@ -2351,6 +2354,7 @@ dissect_sna_control(tvbuff_t *parent_tvb, int offset, int control_len, switch(key) { case 0x05: if (hpr) + // We recurse here, but we'll run out of packet before we run out of stack. dissect_control_05hpr(tvb, sub_tree, hpr, parse); else @@ -3447,8 +3451,7 @@ proto_register_sna(void) }; module_t *sna_module; - proto_sna = proto_register_protocol("Systems Network Architecture", - "SNA", "sna"); + proto_sna = proto_register_protocol("Systems Network Architecture", "SNA", "sna"); proto_register_field_array(proto_sna, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); sna_handle = register_dissector("sna", dissect_sna, proto_sna); diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index eac17af6..fcfc78dd 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -498,12 +498,9 @@ snmp_match_request_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, { proto_item *it; - // if it is a request - if (srrp->request_frame_id == pinfo->fd->num) + // if it is the response + if (srrp->response_frame_id == pinfo->fd->num) { - it=proto_tree_add_uint(tree, hf_snmp_response_in, tvb, 0, 0, srrp->response_frame_id); - proto_item_set_generated(it); - } else { nstime_t ns; it=proto_tree_add_uint(tree, hf_snmp_response_to, tvb, 0, 0, srrp->request_frame_id); proto_item_set_generated(it); @@ -512,6 +509,9 @@ snmp_match_request_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item_set_generated(it); return srrp; + } else { + it=proto_tree_add_uint(tree, hf_snmp_response_in, tvb, 0, 0, srrp->response_frame_id); + proto_item_set_generated(it); } } diff --git a/epan/dissectors/packet-snort-config.c b/epan/dissectors/packet-snort-config.c index 9bd345b2..bea33e24 100644 --- a/epan/dissectors/packet-snort-config.c +++ b/epan/dissectors/packet-snort-config.c @@ -503,6 +503,7 @@ static gboolean delete_string_entry(gpointer key, } /* See if this is an include line, if it is open the file and call parse_config_file() */ +// NOLINTNEXTLINE(misc-no-recursion) static gboolean parse_include_file(SnortConfig_t *snort_config, char *line, const char *config_directory, int recursion_level) { int length; @@ -841,6 +842,7 @@ static gboolean delete_rule(gpointer key _U_, /* Parse this file, adding details to snort_config. */ /* N.B. using recursion_level to limit stack depth. */ #define MAX_CONFIG_FILE_RECURSE_DEPTH 8 +// NOLINTNEXTLINE(misc-no-recursion) static void parse_config_file(SnortConfig_t *snort_config, FILE *config_file_fd, const char *filename, const char *dirname, int recursion_level) { diff --git a/epan/dissectors/packet-socketcan.c b/epan/dissectors/packet-socketcan.c index 90cf2bf7..fc450d67 100644 --- a/epan/dissectors/packet-socketcan.c +++ b/epan/dissectors/packet-socketcan.c @@ -74,6 +74,13 @@ static int hf_can_err_trx_canl = -1; static int hf_can_err_ctrl_specific = -1; +static int hf_canxl_priority = -1; +static int hf_canxl_vcid = -1; +static int hf_canxl_secflag = -1; +static int hf_canxl_sdu_type = -1; +static int hf_canxl_len = -1; +static int hf_canxl_acceptance_field = -1; + static expert_field ei_can_err_dlc_mismatch = EI_INIT; static int hf_canfd_brsflag = -1; @@ -81,9 +88,11 @@ static int hf_canfd_esiflag = -1; static gint ett_can = -1; static gint ett_can_fd = -1; +static gint ett_can_xl = -1; static int proto_can = -1; static int proto_canfd = -1; +static int proto_canxl = -1; static gboolean byte_swap = FALSE; static gboolean heuristic_first = FALSE; @@ -103,11 +112,16 @@ static heur_dtbl_entry_t *heur_dtbl_entry; #define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */ #define CANFD_ESI 0x02 /* error state indicator of the transmitting node */ +#define CANXL_LEN_OFFSET 6 +#define CANXL_DATA_OFFSET 12 + static dissector_table_t can_id_dissector_table = NULL; static dissector_table_t can_extended_id_dissector_table = NULL; static dissector_table_t subdissector_table = NULL; +static dissector_table_t canxl_sdu_type_dissector_table = NULL; static dissector_handle_t socketcan_classic_handle; static dissector_handle_t socketcan_fd_handle; +static dissector_handle_t socketcan_xl_handle; static dissector_handle_t socketcan_bigendian_handle; @@ -154,6 +168,19 @@ static const value_string can_err_trx_canl_vals[] = { { 0, NULL } }; +static const value_string canxl_sdu_type_vals[] = { + { 0x00, "Reserved" }, + { CANXL_SDU_TYPE_CONTENT_BASED_ADDRESSING, "Content-based Addressing" }, + { 0x02, "Reserved for future use" }, + { CANXL_SDU_TYPE_CLASSICAL_CAN_AND_CAN_FD_MAPPED_TUNNELING, "Classical CAN/CAN FD mapped tunneling" }, + { CANXL_SDU_TYPE_IEEE_802_3_MAC_FRAME_TUNNELLING, "IEEE 802.3 (MAC frame) tunneling" }, + { CANXL_SDU_TYPE_IEEE_802_3_MAC_FRAME_MAPPED_TUNNELING, "IEEE 802.3 (MAC frame) mapped tunneling" }, + { CANXL_SDU_TYPE_CLASSICAL_CAN_MAPPED_TUNNELING, "Classical CAN mapped tunneling" }, + { CANXL_SDU_TYPE_CAN_FD_MAPPED_TUNNELING, "CAN FD mapped tunneling" }, + { 0xFF, "Reserved" }, + { 0, NULL } +}; + /********* UATs *********/ /* Interface Config UAT */ @@ -486,45 +513,50 @@ socketcan_call_subdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree * 2) a given SocketCAN frame is known to contain a CAN FD * packet based on information outside the SocketCAN header; * - * 3) we don't know whether the given SocketCAN frame is a - * classic CAN packet or a CAN FD packet, and will have - * to check the CANFD_FDF bit in the "FD flags" field of - * the SocketCAN header to determine that. + * 3) a given SocketCAN frame is known to contain a CAN XL + * packet based on information outside the SocketCAN header; + * + * 4) we don't know whether the given SocketCAN frame is a + * classic CAN packet, a CAN FD packet, or a CAN XL packet, + * and will have to check the CANXL_XLF bit in the "Frame Length" + * field and the CANFD_FDF bit in the "FD flags" field of the + * SocketCAN header to determine that. */ typedef enum { PACKET_TYPE_CAN, PACKET_TYPE_CAN_FD, + PACKET_TYPE_CAN_XL, PACKET_TYPE_UNKNOWN } can_packet_type_t; static int -dissect_socketcan_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint encoding, can_packet_type_t can_packet_type) { +dissect_socketcan_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint encoding, guint xl_encoding, can_packet_type_t can_packet_type) { proto_tree *can_tree; proto_item *ti; guint8 frame_type; can_info_t can_info; - int * const *can_flags; + int * const *can_flags_id; - static int * const can_std_flags[] = { + static int * const can_std_flags_id[] = { &hf_can_infoent_std, &hf_can_extflag, &hf_can_rtrflag, &hf_can_errflag, NULL, }; - static int * const can_ext_flags[] = { + static int * const can_ext_flags_id[] = { &hf_can_infoent_ext, &hf_can_extflag, &hf_can_rtrflag, &hf_can_errflag, NULL, }; - static int * const can_std_flags_fd[] = { + static int * const canfd_std_flags_id[] = { &hf_can_infoent_std, &hf_can_extflag, NULL, }; - static int * const can_ext_flags_fd[] = { + static int * const canfd_ext_flags_id[] = { &hf_can_infoent_ext, &hf_can_extflag, NULL, @@ -548,9 +580,15 @@ dissect_socketcan_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu &hf_can_err_reserved, NULL, }; - - can_info.id = tvb_get_guint32(tvb, 0, encoding); - can_info.len = tvb_get_guint8(tvb, CAN_LEN_OFFSET); + static int * const canxl_prio_vcid_fields[] = { + &hf_canxl_priority, + &hf_canxl_vcid, + NULL, + }; + static int * const canxl_flag_fields[] = { + &hf_canxl_secflag, + NULL, + }; /* * If we weren't told the type of this frame, check @@ -573,141 +611,236 @@ dissect_socketcan_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu * the code is older code that didn't support CAN FD. */ if (can_packet_type == PACKET_TYPE_UNKNOWN) { + guint8 frame_length; guint8 fd_flags; - fd_flags = tvb_get_guint8(tvb, CANFD_FLAG_OFFSET); - - if ((fd_flags & CANFD_FDF) && ((fd_flags & ~(CANFD_BRS | CANFD_ESI | CANFD_FDF)) == 0) && - tvb_get_guint8(tvb, CANFD_FLAG_OFFSET + 1) == 0 && - tvb_get_guint8(tvb, CANFD_FLAG_OFFSET + 2) == 0) { - can_packet_type = PACKET_TYPE_CAN_FD; + /* + * Check whether the frame has the CANXL_XLF flag set in what + * is in the location of the frame length field of a CAN classic + * or CAN FD frame; if so, then it's a CAN XL frame (and that + * field is the flags field of that frame). + */ + frame_length = tvb_get_guint8(tvb, CAN_LEN_OFFSET); + if (frame_length & CANXL_XLF) { + can_packet_type = PACKET_TYPE_CAN_XL; } else { - can_packet_type = PACKET_TYPE_CAN; + /* + * This is a CAN classic or CAN FD frame. + * Check whether the flags field has the CANFD_FDF + * flag set, has no unknown flag bits set, and has + * no bits set in the two reserved fields. If so, + * it's a CAN FD frame; otherwise, it's either a + * CAN classic frame, or a frame where the CANFD_FDF + * flag is set but where that might just be because + * that field contains uninitialized junk rather + * than because it's a CAN FD frame, so we treat it + * as a CAN classic frame. + */ + fd_flags = tvb_get_guint8(tvb, CANFD_FLAG_OFFSET); + + if ((fd_flags & CANFD_FDF) && + ((fd_flags & ~(CANFD_BRS | CANFD_ESI | CANFD_FDF)) == 0) && + tvb_get_guint8(tvb, CANFD_FLAG_OFFSET + 1) == 0 && + tvb_get_guint8(tvb, CANFD_FLAG_OFFSET + 2) == 0) { + can_packet_type = PACKET_TYPE_CAN_FD; + } else { + if (tvb_reported_length(tvb) == 72) + can_packet_type = PACKET_TYPE_CAN_FD; + else + can_packet_type = PACKET_TYPE_CAN; + } } } - can_info.fd = (can_packet_type == PACKET_TYPE_CAN_FD); can_info.bus_id = get_bus_id(pinfo); - /* Error Message Frames are only encapsulated in Classic CAN frames */ - if (can_packet_type == PACKET_TYPE_CAN && (can_info.id & CAN_ERR_FLAG)) { - frame_type = LINUX_CAN_ERR; - can_flags = can_err_flags; - } else if (can_info.id & CAN_EFF_FLAG) { - frame_type = LINUX_CAN_EXT; - can_info.id &= (CAN_EFF_MASK | CAN_FLAG_MASK); - can_flags = (can_packet_type == PACKET_TYPE_CAN_FD) ? can_ext_flags_fd : can_ext_flags; - } else { - frame_type = LINUX_CAN_STD; - can_info.id &= (CAN_SFF_MASK | CAN_FLAG_MASK); - can_flags = (can_packet_type == PACKET_TYPE_CAN_FD) ? can_std_flags_fd : can_std_flags; - } + if (can_packet_type == PACKET_TYPE_CAN_XL) { + can_info.fd = CAN_TYPE_CAN_XL; + col_set_str(pinfo->cinfo, COL_PROTOCOL, "CANXL"); + col_clear(pinfo->cinfo, COL_INFO); + + can_info.id = 0; /* XXX - is there an "ID" for XL frames? */ + + ti = proto_tree_add_item(tree, proto_can, tvb, 0, -1, ENC_NA); + proto_item_set_hidden(ti); + ti = proto_tree_add_item(tree, proto_canxl, tvb, 0, -1, ENC_NA); + can_tree = proto_item_add_subtree(ti, ett_can_xl); + + guint32 proto_vcid; + + /* + * The priority/VCID field is big-endian in LINKTYPE_CAN_SOCKETCAN + * captures, for historical reasons. It's host-endian in + * Linux cooked captures. This means we use the non-XL encoding. + */ + proto_tree_add_bitmask_list(can_tree, tvb, 0, 4, canxl_prio_vcid_fields, encoding); + proto_vcid = tvb_get_guint32(tvb, 0, encoding); + col_add_fstr(pinfo->cinfo, COL_INFO, "Priority: %u (0x%03x), VCID: %u (0x%02X)", proto_vcid & 0x7FF, proto_vcid & 0x7FF, (proto_vcid >> 16) & 0xFF, (proto_vcid >> 16) & 0xFF); + proto_item_append_text(can_tree, ", Priority: %u (0x%03x), VCID: %u (0x%02X)", proto_vcid & 0x7FF, proto_vcid & 0x7FF, (proto_vcid >> 16) & 0xFF, (proto_vcid >> 16) & 0xFF); + proto_tree_add_bitmask_list(can_tree, tvb, 4, 1, canxl_flag_fields, xl_encoding); + + socketcan_set_source_and_destination_columns(pinfo, &can_info); + + guint32 sdu_type; + + /* + * These fields are, if multi-byte, little-endian in + * LINKTYPE_CAN_SOCKETCAN captures, so use xl_encoding. + */ + proto_tree_add_item_ret_uint(can_tree, hf_canxl_sdu_type, tvb, 5, 1, ENC_NA, &sdu_type); + proto_tree_add_item_ret_uint(can_tree, hf_canxl_len, tvb, CANXL_LEN_OFFSET, 2, xl_encoding, &can_info.len); + col_append_fstr(pinfo->cinfo, COL_INFO, ", Length: %u", can_info.len); + proto_item_append_text(can_tree, ", Length: %u", can_info.len); + proto_tree_add_item(can_tree, hf_canxl_acceptance_field, tvb, CANXL_LEN_OFFSET+2, 4, xl_encoding); - col_set_str(pinfo->cinfo, COL_PROTOCOL, (can_packet_type == PACKET_TYPE_CAN_FD) ? "CANFD" : "CAN"); - col_clear(pinfo->cinfo, COL_INFO); + tvbuff_t *next_tvb; - guint32 effective_can_id = (can_info.id & CAN_EFF_FLAG) ? can_info.id & CAN_EFF_MASK : can_info.id & CAN_SFF_MASK; - char *id_name = (can_info.id & CAN_EFF_FLAG) ? "Ext. ID" : "ID"; - col_add_fstr(pinfo->cinfo, COL_INFO, "%s: %d (0x%" PRIx32 "), Length: %d", id_name, effective_can_id, effective_can_id, can_info.len); + next_tvb = tvb_new_subset_length(tvb, CANXL_DATA_OFFSET, can_info.len); - socketcan_set_source_and_destination_columns(pinfo, &can_info); + if (!dissector_try_uint_new(canxl_sdu_type_dissector_table, sdu_type, next_tvb, pinfo, tree, TRUE, &can_info)) { + call_data_dissector(next_tvb, pinfo, tree); + } - ti = proto_tree_add_item(tree, (can_packet_type == PACKET_TYPE_CAN_FD) ? proto_canfd : proto_can, tvb, 0, -1, ENC_NA); - can_tree = proto_item_add_subtree(ti, (can_packet_type == PACKET_TYPE_CAN_FD) ? ett_can_fd : ett_can); + if (tvb_captured_length_remaining(tvb, CANXL_DATA_OFFSET+can_info.len) > 0) { + proto_tree_add_item(can_tree, hf_can_padding, tvb, CANXL_DATA_OFFSET+can_info.len, -1, ENC_NA); + } + } else { + if (can_packet_type == PACKET_TYPE_CAN_FD) { + can_info.fd = CAN_TYPE_CAN_FD; + col_set_str(pinfo->cinfo, COL_PROTOCOL, "CANFD"); + } else { + can_info.fd = CAN_TYPE_CAN_CLASSIC; + col_set_str(pinfo->cinfo, COL_PROTOCOL, "CAN"); + } + col_clear(pinfo->cinfo, COL_INFO); - proto_item_append_text(can_tree, ", %s: %d (0x%" PRIx32 "), Length: %d", id_name, effective_can_id, effective_can_id, can_info.len); + ti = proto_tree_add_item(tree, proto_can, tvb, 0, -1, ENC_NA); + if (can_packet_type == PACKET_TYPE_CAN_FD) { + proto_item_set_hidden(ti); + ti = proto_tree_add_item(tree, proto_canfd, tvb, 0, -1, ENC_NA); + } + can_tree = proto_item_add_subtree(ti, (can_packet_type == PACKET_TYPE_CAN_FD) ? ett_can_fd : ett_can); + + /* Get the ID and flags field */ + can_info.id = tvb_get_guint32(tvb, 0, encoding); + + /* Error Message Frames are only encapsulated in Classic CAN frames */ + if (can_packet_type == PACKET_TYPE_CAN && (can_info.id & CAN_ERR_FLAG)) { + frame_type = LINUX_CAN_ERR; + can_flags_id = can_err_flags; + } else if (can_info.id & CAN_EFF_FLAG) { + frame_type = LINUX_CAN_EXT; + can_info.id &= (CAN_EFF_MASK | CAN_FLAG_MASK); + can_flags_id = (can_packet_type == PACKET_TYPE_CAN_FD) ? canfd_ext_flags_id : can_ext_flags_id; + } else { + frame_type = LINUX_CAN_STD; + can_info.id &= (CAN_SFF_MASK | CAN_FLAG_MASK); + can_flags_id = (can_packet_type == PACKET_TYPE_CAN_FD) ? canfd_std_flags_id : can_std_flags_id; + } - proto_tree_add_bitmask_list(can_tree, tvb, 0, 4, can_flags, encoding); - proto_tree_add_item(can_tree, hf_can_len, tvb, CAN_LEN_OFFSET, 1, ENC_NA); + socketcan_set_source_and_destination_columns(pinfo, &can_info); - if (frame_type == LINUX_CAN_ERR && can_info.len != CAN_ERR_DLC) { - proto_tree_add_expert(tree, pinfo, &ei_can_err_dlc_mismatch, tvb, CAN_LEN_OFFSET, 1); - } + proto_tree_add_bitmask_list(can_tree, tvb, 0, 4, can_flags_id, encoding); + if (can_info.id & CAN_EFF_FLAG) { + col_add_fstr(pinfo->cinfo, COL_INFO, "Ext. ID: %u (0x%08x)", can_info.id & CAN_EFF_MASK, can_info.id & CAN_EFF_MASK); + proto_item_append_text(can_tree, ", Ext. ID: %u (0x%08x)", can_info.id & CAN_EFF_MASK, can_info.id & CAN_EFF_MASK); + } else { + col_add_fstr(pinfo->cinfo, COL_INFO, "ID: %u (0x%03x)", can_info.id & CAN_SFF_MASK, can_info.id & CAN_SFF_MASK); + proto_item_append_text(can_tree, ", ID: %u (0x%03x)", can_info.id & CAN_SFF_MASK, can_info.id & CAN_SFF_MASK); + } + proto_tree_add_item_ret_uint(can_tree, hf_can_len, tvb, CAN_LEN_OFFSET, 1, ENC_NA, &can_info.len); + col_append_fstr(pinfo->cinfo, COL_INFO, ", Length: %u", can_info.len); + proto_item_append_text(can_tree, ", Length: %u", can_info.len); - if (can_packet_type == PACKET_TYPE_CAN_FD) { - proto_tree_add_bitmask_list(can_tree, tvb, CANFD_FLAG_OFFSET, 1, canfd_flag_fields, ENC_NA); - proto_tree_add_item(can_tree, hf_can_reserved, tvb, CANFD_FLAG_OFFSET+1, 2, ENC_NA); - } else { - proto_tree_add_item(can_tree, hf_can_reserved, tvb, CANFD_FLAG_OFFSET, 3, ENC_NA); - } + if (frame_type == LINUX_CAN_ERR && can_info.len != CAN_ERR_DLC) { + proto_tree_add_expert(tree, pinfo, &ei_can_err_dlc_mismatch, tvb, CAN_LEN_OFFSET, 1); + } - if (frame_type == LINUX_CAN_ERR) { - int * const *flag; - const char *sepa = ": "; + if (can_packet_type == PACKET_TYPE_CAN_FD) { + proto_tree_add_bitmask_list(can_tree, tvb, CANFD_FLAG_OFFSET, 1, canfd_flag_fields, ENC_NA); + proto_tree_add_item(can_tree, hf_can_reserved, tvb, CANFD_FLAG_OFFSET+1, 2, ENC_NA); + } else { + proto_tree_add_item(can_tree, hf_can_reserved, tvb, CANFD_FLAG_OFFSET, 3, ENC_NA); + } - col_set_str(pinfo->cinfo, COL_INFO, "ERR"); + if (frame_type == LINUX_CAN_ERR) { + int * const *flag; + const char *sepa = ": "; - for (flag = can_err_flags; *flag; flag++) { - header_field_info *hfi; + col_set_str(pinfo->cinfo, COL_INFO, "ERR"); - hfi = proto_registrar_get_nth(**flag); - if (!hfi) - continue; + for (flag = can_err_flags; *flag; flag++) { + header_field_info *hfi; - if ((can_info.id & hfi->bitmask & ~CAN_FLAG_MASK) == 0) - continue; + hfi = proto_registrar_get_nth(**flag); + if (!hfi) + continue; - col_append_sep_str(pinfo->cinfo, COL_INFO, sepa, hfi->name); - sepa = ", "; - } + if ((can_info.id & hfi->bitmask & ~CAN_FLAG_MASK) == 0) + continue; - if (can_info.id & CAN_ERR_LOSTARB) { - proto_tree_add_item(can_tree, hf_can_err_lostarb_bit_number, tvb, CAN_DATA_OFFSET + 0, 1, ENC_NA); - } + col_append_sep_str(pinfo->cinfo, COL_INFO, sepa, hfi->name); + sepa = ", "; + } - if (can_info.id & CAN_ERR_CTRL) { - static int * const can_err_ctrl_flags[] = { - &hf_can_err_ctrl_rx_overflow, - &hf_can_err_ctrl_tx_overflow, - &hf_can_err_ctrl_rx_warning, - &hf_can_err_ctrl_tx_warning, - &hf_can_err_ctrl_rx_passive, - &hf_can_err_ctrl_tx_passive, - &hf_can_err_ctrl_active, - NULL, - }; - - proto_tree_add_bitmask_list(can_tree, tvb, CAN_DATA_OFFSET+1, 1, can_err_ctrl_flags, ENC_NA); - } + if (can_info.id & CAN_ERR_LOSTARB) { + proto_tree_add_item(can_tree, hf_can_err_lostarb_bit_number, tvb, CAN_DATA_OFFSET + 0, 1, ENC_NA); + } - if (can_info.id & CAN_ERR_PROT) { - static int * const can_err_prot_error_type_flags[] = { - &hf_can_err_prot_error_type_bit, - &hf_can_err_prot_error_type_form, - &hf_can_err_prot_error_type_stuff, - &hf_can_err_prot_error_type_bit0, - &hf_can_err_prot_error_type_bit1, - &hf_can_err_prot_error_type_overload, - &hf_can_err_prot_error_type_active, - &hf_can_err_prot_error_type_tx, - NULL - }; - proto_tree_add_bitmask_list(can_tree, tvb, CAN_DATA_OFFSET+2, 1, can_err_prot_error_type_flags, ENC_NA); - proto_tree_add_item(can_tree, hf_can_err_prot_error_location, tvb, CAN_DATA_OFFSET+3, 1, ENC_NA); - } + if (can_info.id & CAN_ERR_CTRL) { + static int * const can_err_ctrl_flags[] = { + &hf_can_err_ctrl_rx_overflow, + &hf_can_err_ctrl_tx_overflow, + &hf_can_err_ctrl_rx_warning, + &hf_can_err_ctrl_tx_warning, + &hf_can_err_ctrl_rx_passive, + &hf_can_err_ctrl_tx_passive, + &hf_can_err_ctrl_active, + NULL, + }; + + proto_tree_add_bitmask_list(can_tree, tvb, CAN_DATA_OFFSET+1, 1, can_err_ctrl_flags, ENC_NA); + } + + if (can_info.id & CAN_ERR_PROT) { + static int * const can_err_prot_error_type_flags[] = { + &hf_can_err_prot_error_type_bit, + &hf_can_err_prot_error_type_form, + &hf_can_err_prot_error_type_stuff, + &hf_can_err_prot_error_type_bit0, + &hf_can_err_prot_error_type_bit1, + &hf_can_err_prot_error_type_overload, + &hf_can_err_prot_error_type_active, + &hf_can_err_prot_error_type_tx, + NULL + }; + proto_tree_add_bitmask_list(can_tree, tvb, CAN_DATA_OFFSET+2, 1, can_err_prot_error_type_flags, ENC_NA); + proto_tree_add_item(can_tree, hf_can_err_prot_error_location, tvb, CAN_DATA_OFFSET+3, 1, ENC_NA); + } - if (can_info.id & CAN_ERR_TRX) { - proto_tree_add_item(can_tree, hf_can_err_trx_canh, tvb, CAN_DATA_OFFSET+4, 1, ENC_NA); - proto_tree_add_item(can_tree, hf_can_err_trx_canl, tvb, CAN_DATA_OFFSET+4, 1, ENC_NA); - } + if (can_info.id & CAN_ERR_TRX) { + proto_tree_add_item(can_tree, hf_can_err_trx_canh, tvb, CAN_DATA_OFFSET+4, 1, ENC_NA); + proto_tree_add_item(can_tree, hf_can_err_trx_canl, tvb, CAN_DATA_OFFSET+4, 1, ENC_NA); + } - proto_tree_add_item(can_tree, hf_can_err_ctrl_specific, tvb, CAN_DATA_OFFSET+5, 3, ENC_NA); - } else { - tvbuff_t *next_tvb; + proto_tree_add_item(can_tree, hf_can_err_ctrl_specific, tvb, CAN_DATA_OFFSET+5, 3, ENC_NA); + } else { + tvbuff_t *next_tvb; - if (can_info.id & CAN_RTR_FLAG) { - col_append_str(pinfo->cinfo, COL_INFO, "(Remote Transmission Request)"); - } + if (can_info.id & CAN_RTR_FLAG) { + col_append_str(pinfo->cinfo, COL_INFO, "(Remote Transmission Request)"); + } - next_tvb = tvb_new_subset_length(tvb, CAN_DATA_OFFSET, can_info.len); + next_tvb = tvb_new_subset_length(tvb, CAN_DATA_OFFSET, can_info.len); - if (!socketcan_call_subdissectors(next_tvb, pinfo, tree, &can_info, heuristic_first)) { - call_data_dissector(next_tvb, pinfo, tree); + if (!socketcan_call_subdissectors(next_tvb, pinfo, tree, &can_info, heuristic_first)) { + call_data_dissector(next_tvb, pinfo, tree); + } } - } - if (tvb_captured_length_remaining(tvb, CAN_DATA_OFFSET+can_info.len) > 0) { - proto_tree_add_item(can_tree, hf_can_padding, tvb, CAN_DATA_OFFSET+can_info.len, -1, ENC_NA); + if (tvb_captured_length_remaining(tvb, CAN_DATA_OFFSET+can_info.len) > 0) { + proto_tree_add_item(can_tree, hf_can_padding, tvb, CAN_DATA_OFFSET+can_info.len, -1, ENC_NA); + } } return tvb_captured_length(tvb); @@ -716,19 +849,33 @@ dissect_socketcan_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu static int dissect_socketcan_bigendian(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { return dissect_socketcan_common(tvb, pinfo, tree, - byte_swap ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN, PACKET_TYPE_UNKNOWN); + byte_swap ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN, + ENC_LITTLE_ENDIAN, + PACKET_TYPE_UNKNOWN); } static int dissect_socketcan_classic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { return dissect_socketcan_common(tvb, pinfo, tree, - byte_swap ? ENC_ANTI_HOST_ENDIAN : ENC_HOST_ENDIAN, PACKET_TYPE_CAN); + byte_swap ? ENC_ANTI_HOST_ENDIAN : ENC_HOST_ENDIAN, + ENC_HOST_ENDIAN, /* Not used, as this is CAN classic, not CAN XL */ + PACKET_TYPE_CAN); } static int dissect_socketcan_fd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { return dissect_socketcan_common(tvb, pinfo, tree, - byte_swap ? ENC_ANTI_HOST_ENDIAN : ENC_HOST_ENDIAN, PACKET_TYPE_CAN_FD); + byte_swap ? ENC_ANTI_HOST_ENDIAN : ENC_HOST_ENDIAN, + ENC_HOST_ENDIAN, /* Not used, as this is CAN FD, not CAN XL */ + PACKET_TYPE_CAN_FD); +} + +static int +dissect_socketcan_xl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { + return dissect_socketcan_common(tvb, pinfo, tree, + byte_swap ? ENC_ANTI_HOST_ENDIAN : ENC_HOST_ENDIAN, + ENC_HOST_ENDIAN, + PACKET_TYPE_CAN_XL); } void @@ -814,6 +961,18 @@ proto_register_socketcan(void) { "Transceiver CANL status", "can.err.trx.canl", FT_UINT8, BASE_DEC, VALS(can_err_trx_canl_vals), 0xF0, NULL, HFILL } }, { &hf_can_err_ctrl_specific, { "Controller specific data", "can.err.ctrl_specific", FT_BYTES, SEP_SPACE, NULL, 0, NULL, HFILL } }, + { &hf_canxl_priority, { + "Priority", "canxl.priority", FT_UINT32, BASE_DEC, NULL, 0x0000FFFF, NULL, HFILL } }, + { &hf_canxl_vcid, { + "VCID", "canxl.vcid", FT_UINT32, BASE_DEC, NULL, 0x00FF0000, NULL, HFILL } }, + { &hf_canxl_secflag, { + "Simple Extended Context", "canxl.flags.sec", FT_BOOLEAN, 8, NULL, CANXL_SEC, NULL, HFILL } }, + { &hf_canxl_sdu_type, { + "SDU type", "canxl.sdu_type", FT_UINT8, BASE_HEX, VALS(canxl_sdu_type_vals), 0, NULL, HFILL } }, + { &hf_canxl_len, { + "Frame-Length", "canxl.len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, + { &hf_canxl_acceptance_field, { + "Acceptance field", "canxl.acceptance_field", FT_UINT32, BASE_DEC_HEX, NULL, 0, NULL, HFILL } }, }; uat_t *can_interface_uat = NULL; @@ -822,7 +981,8 @@ proto_register_socketcan(void) { /* Setup protocol subtree array */ static gint *ett[] = { &ett_can, - &ett_can_fd + &ett_can_fd, + &ett_can_xl }; static ei_register_info ei[] = { @@ -841,6 +1001,11 @@ proto_register_socketcan(void) { * or Busmaster capture that was saved as a pcap or pcapng file, * as those use a linktype of LINKTYPE_WIRESHARK_UPPER_PDU with * "can-hostendian" as the dissector name. + * + * "can-bigendian" is also a legacy name (fpr CAN XL frames, the + * fields in the header are in *little-endian* order); we keep it + * around for the same reason. It's used for the dissector for + * LINKTYPE_CAN_SOCKETCAN. */ socketcan_classic_handle = register_dissector("can-hostendian", dissect_socketcan_classic, proto_can); socketcan_bigendian_handle = register_dissector("can-bigendian", dissect_socketcan_bigendian, proto_can); @@ -848,6 +1013,9 @@ proto_register_socketcan(void) { proto_canfd = proto_register_protocol("Controller Area Network FD", "CANFD", "canfd"); socketcan_fd_handle = register_dissector("canfd", dissect_socketcan_fd, proto_canfd); + proto_canxl = proto_register_protocol("Controller Area Network XL", "CANXL", "canxl"); + socketcan_xl_handle = register_dissector("canxl", dissect_socketcan_xl, proto_canxl); + proto_register_field_array(proto_can, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -858,7 +1026,7 @@ proto_register_socketcan(void) { prefs_register_obsolete_preference(can_module, "protocol"); prefs_register_bool_preference(can_module, "byte_swap", "Byte-swap the CAN ID/flags field", - "Whether the CAN ID/flags field should be byte-swapped", + "Whether the CAN ID/flags field should be byte-swapped in CAN classic and CAN FD packets", &byte_swap); prefs_register_bool_preference(can_module, "try_heuristic_first", "Try heuristic sub-dissectors first", @@ -871,6 +1039,8 @@ proto_register_socketcan(void) { subdissector_table = register_decode_as_next_proto(proto_can, "can.subdissector", "CAN next level dissector", NULL); + canxl_sdu_type_dissector_table = register_dissector_table("canxl.sdu_type", "CAN XL SDU type", proto_canxl, FT_UINT8, BASE_HEX); + heur_subdissector_list = register_heur_dissector_list("can", proto_can); static uat_field_t can_interface_mapping_uat_fields[] = { @@ -933,6 +1103,7 @@ proto_reg_handoff_socketcan(void) { dissector_add_uint("sll.ltype", LINUX_SLL_P_CAN, socketcan_classic_handle); dissector_add_uint("sll.ltype", LINUX_SLL_P_CANFD, socketcan_fd_handle); + dissector_add_uint("sll.ltype", LINUX_SLL_P_CANXL, socketcan_xl_handle); } /* diff --git a/epan/dissectors/packet-socketcan.h b/epan/dissectors/packet-socketcan.h index 49a77224..f053dfa2 100644 --- a/epan/dissectors/packet-socketcan.h +++ b/epan/dissectors/packet-socketcan.h @@ -14,16 +14,48 @@ #include <epan/packet_info.h> #include <epan/proto.h> -/* Flags for CAN FD frames. */ +/* + * Flags for CAN FD frames. + * They are in the FD Flags field of a CAN FD frame. + * + * CANFD_FDF is in that field. and always set, as well as being present + * but *never* set in what's at the location corresponding to that field + * in a CAN classic frame, so we can distingish between CAN classic and + * CAN FD frames by testing that bit. + */ #define CANFD_BRS 0x01 /* Bit Rate Switch (second bitrate for payload data) */ #define CANFD_ESI 0x02 /* Error State Indicator of the transmitting node */ #define CANFD_FDF 0x04 /* FD flag - if set, this is an FD frame */ +/* + * Flags for CAN XL frames. + * They are in the Flags field of a CAN XL frame. + * + * CANXL_XLF is in that field, and always set. as well as being present + * but *never* set in what's the location corresponding to that field + * in a CAN classic or CAN FD frame, so we can distinguish between CAN + * XL and CAN classic/CAN FD frames by testing that bit. + */ +#define CANXL_XLF 0x80 /* XL flag - if set, this is an XL frame */ +#define CANXL_SEC 0x01 /* Simple Extended Content */ + +/* + * CAN frame type. + * + * CAN_TYPE_CAN_CLASSIC is 0, and CAN_TYPE_CAN_FD is 1, so that the + * fd field behaves, for CAN classic and CAN FD frames, the same way + * that it did when it was a gboolean field that was FALSE for CAN classic + * frames and TRUE for CAN FD frames. + */ +#define CAN_TYPE_CAN_CLASSIC 0 +#define CAN_TYPE_CAN_FD 1 +#define CAN_TYPE_CAN_XL 2 + /* Structure that gets passed between dissectors. */ typedef struct can_info { guint32 id; guint32 len; - gboolean fd; + guint fd; guint16 bus_id; } can_info_t; @@ -92,6 +124,16 @@ typedef struct can_info { gboolean socketcan_call_subdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, struct can_info *can_info, const gboolean use_heuristics_first); gboolean socketcan_set_source_and_destination_columns(packet_info* pinfo, can_info_t *caninfo); +/* + * CAN XL SDU types. + */ +#define CANXL_SDU_TYPE_CONTENT_BASED_ADDRESSING 0x01 +#define CANXL_SDU_TYPE_CLASSICAL_CAN_AND_CAN_FD_MAPPED_TUNNELING 0x03 +#define CANXL_SDU_TYPE_IEEE_802_3_MAC_FRAME_TUNNELLING 0x04 +#define CANXL_SDU_TYPE_IEEE_802_3_MAC_FRAME_MAPPED_TUNNELING 0x05 +#define CANXL_SDU_TYPE_CLASSICAL_CAN_MAPPED_TUNNELING 0x06 +#define CANXL_SDU_TYPE_CAN_FD_MAPPED_TUNNELING 0x07 + #endif /* __PACKET_SOCKETCAN_H__ */ /* diff --git a/epan/dissectors/packet-socks.c b/epan/dissectors/packet-socks.c index f84c3411..f96a1790 100644 --- a/epan/dissectors/packet-socks.c +++ b/epan/dissectors/packet-socks.c @@ -484,6 +484,7 @@ display_socks_v4(tvbuff_t *tvb, int offset, packet_info *pinfo, } static void +// NOLINTNEXTLINE(misc-no-recursion) client_display_socks_v5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, socks_hash_entry_t *hash_info, sock_state_t* state_info) { @@ -535,7 +536,9 @@ client_display_socks_v5(tvbuff_t *tvb, int offset, packet_info *pinfo, (tvb_get_guint8(tvb, offset + 2) == 0) && (tvb_reported_length_remaining(tvb, offset + 2 + num_auth_methods) > 0)) { new_state_info.client = clientV5Command; + increment_dissection_depth(pinfo); client_display_socks_v5(tvb, offset, pinfo, tree, hash_info, &new_state_info); + decrement_dissection_depth(pinfo); } } else if (state_info->client == clientV5Command) { @@ -763,6 +766,7 @@ state_machine_v4( socks_hash_entry_t *hash_info, tvbuff_t *tvb, } static void +// NOLINTNEXTLINE(misc-no-recursion) client_state_machine_v5( socks_hash_entry_t *hash_info, tvbuff_t *tvb, int offset, packet_info *pinfo, gboolean start_of_frame) { @@ -788,7 +792,9 @@ client_state_machine_v5( socks_hash_entry_t *hash_info, tvbuff_t *tvb, /* No authentication needed */ hash_info->clientState = clientV5Command; if (tvb_reported_length_remaining(tvb, offset + 2 + num_auth_methods) > 0) { + increment_dissection_depth(pinfo); client_state_machine_v5(hash_info, tvb, offset + 2 + num_auth_methods, pinfo, FALSE); + decrement_dissection_depth(pinfo); } } else { hash_info->clientState = clientWaitForAuthReply; diff --git a/epan/dissectors/packet-solaredge.c b/epan/dissectors/packet-solaredge.c index 34e81c78..04b05e81 100644 --- a/epan/dissectors/packet-solaredge.c +++ b/epan/dissectors/packet-solaredge.c @@ -1029,6 +1029,7 @@ void solaredge_decrypt(const guint8 *in, gint length, guint8 *out, gcry_cipher_h } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_solaredge_devicedata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint length) { gint current_offset; @@ -1054,6 +1055,7 @@ dissect_solaredge_devicedata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree current_offset = offset + SOLAREDGE_POST_HEADER_LENGTH; col_append_str(pinfo->cinfo, COL_INFO, " "); + increment_dissection_depth(pinfo); switch(device_header.type) { case SOLAREDGE_DEVICETYPE_OPTIMIZER: col_append_str(pinfo->cinfo, COL_INFO, "Optimizer"); @@ -1218,6 +1220,7 @@ dissect_solaredge_devicedata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree current_offset += device_header.device_length; break; } + decrement_dissection_depth(pinfo); if (current_offset < length) { col_append_str(pinfo->cinfo, COL_INFO, ", "); @@ -1227,6 +1230,7 @@ dissect_solaredge_devicedata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_solaredge_recursive(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data _U_, gint ett, conversation_t *conv) { proto_item *ti; @@ -1276,6 +1280,7 @@ dissect_solaredge_recursive(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree current_offset += 2; col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const(header.command_type, solaredge_packet_commandtypes, "Unknown command")); + increment_dissection_depth(pinfo); switch (header.command_type) { case SOLAREDGE_COMMAND_MISC_ENCRYPTED: proto_tree_add_item(solaredge_header_tree, hf_solaredge_payload_type, tvb, current_offset, header.length, ENC_NA); @@ -1335,6 +1340,7 @@ dissect_solaredge_recursive(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree current_offset += header.length; break; } + decrement_dissection_depth(pinfo); /* Validate CRC */ proto_tree_add_checksum(solaredge_header_tree, tvb, SOLAREDGE_HEADER_LENGTH + header.length, hf_solaredge_crc_type, hf_solaredge_crc_status_type, &ei_solaredge_invalid_crc, pinfo, calculate_crc(&header, tvb_get_ptr(tvb, SOLAREDGE_HEADER_LENGTH, header.length), header.length), ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_VERIFY); @@ -1653,11 +1659,7 @@ proto_register_solaredge(void) &ett_solaredge_packet_post_device }; - proto_solaredge = proto_register_protocol ( - "SolarEdge monitoring protocol", - "SolarEdge", - "solaredge" - ); + proto_solaredge = proto_register_protocol ("SolarEdge monitoring protocol", "SolarEdge", "solaredge"); solaredge_handle = register_dissector("solaredge", dissect_solaredge, proto_solaredge); module_t * module_solaredge = prefs_register_protocol(proto_solaredge, NULL); diff --git a/epan/dissectors/packet-someip.c b/epan/dissectors/packet-someip.c index 97cc36cc..b6cc40eb 100644 --- a/epan/dissectors/packet-someip.c +++ b/epan/dissectors/packet-someip.c @@ -2962,6 +2962,7 @@ dissect_someip_payload_string(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset_orig, guint32 id, gchar *name, gint wtlv_offset) { someip_payload_parameter_struct_t *config = NULL; @@ -3021,6 +3022,7 @@ dissect_someip_payload_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_typedef(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint32 id, gchar *name _U_, int *hf_id, gint wtlv_offset) { someip_payload_parameter_typedef_t *config = NULL; @@ -3075,6 +3077,7 @@ dissect_someip_payload_array_dim_length(tvbuff_t *tvb, packet_info *pinfo, proto /* returns bytes parsed, length needs to be gint to encode "non-existing" as -1 */ static gint +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_array_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset_orig, gint length, gint lower_limit, gint upper_limit, someip_parameter_array_t *config) { tvbuff_t *subtvb = NULL; @@ -3123,6 +3126,7 @@ dissect_someip_payload_array_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tr } static gint +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_array_dim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset_orig, gint length, gint lower_limit, gint upper_limit, someip_parameter_array_t *config, guint current_dim, gchar *name, guint32 length_of_length) { proto_item *ti = NULL; proto_tree *subtree = NULL; @@ -3171,6 +3175,7 @@ dissect_someip_payload_array_dim(tvbuff_t *tvb, packet_info *pinfo, proto_tree * } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset_orig, guint32 id, gchar *name, gint wtlv_offset) { someip_parameter_array_t *config = NULL; @@ -3222,6 +3227,7 @@ dissect_someip_payload_array(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_union(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset_orig, guint32 id, gchar *name, gint wtlv_offset) { someip_parameter_union_t *config = NULL; someip_parameter_union_item_t *item = NULL; @@ -3301,9 +3307,11 @@ dissect_someip_payload_union(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, guint8 data_type, guint32 idref, gchar *name, int *hf_id_ptr, gint wtlv_offset) { gint bytes_parsed = 0; + increment_dissection_depth(pinfo); switch (data_type) { case SOMEIP_PAYLOAD_PARAMETER_DATA_TYPE_TYPEDEF: bytes_parsed = dissect_someip_payload_typedef(tvb, pinfo, tree, offset, idref, name, hf_id_ptr, wtlv_offset); @@ -3331,6 +3339,7 @@ dissect_someip_payload_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree * col_append_str(pinfo->cinfo, COL_INFO, " [SOME/IP: Payload Config Error]"); break; } + decrement_dissection_depth(pinfo); return bytes_parsed; } @@ -3412,6 +3421,7 @@ static int dissect_someip_payload_peek_length_of_length(proto_tree *tree, packet } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_someip_payload_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, someip_payload_parameter_item_t *items, guint32 num_of_items, gboolean wtlv) { someip_payload_parameter_item_t *item; @@ -3513,17 +3523,6 @@ dissect_someip_payload(tvbuff_t* tvb, packet_info* pinfo, proto_item *ti, guint1 proto_tree *tree = NULL; - /* TAP */ - if (have_tap_listener(tap_someip_messages)) { - someip_messages_tap_t *data = wmem_alloc(pinfo->pool, sizeof(someip_messages_tap_t)); - data->service_id = serviceid; - data->method_id = methodid; - data->interface_version = version; - data->message_type = msgtype; - - tap_queue_packet(tap_someip_messages, pinfo, data); - } - length = tvb_captured_length_remaining(tvb, 0); tree = proto_item_add_subtree(ti, ett_someip_payload); paramlist = get_parameter_config(serviceid, methodid, version, msgtype); @@ -3738,7 +3737,18 @@ dissect_someip_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void subtvb = tvb_new_subset_length(tvb, SOMEIP_HDR_LEN, someip_payload_length); } - if (subtvb!=NULL) { + if (subtvb != NULL) { + /* TAP */ + if (have_tap_listener(tap_someip_messages)) { + someip_messages_tap_t *stats_data = wmem_alloc(pinfo->pool, sizeof(someip_messages_tap_t)); + stats_data->service_id = (guint16)someip_serviceid; + stats_data->method_id = (guint16)someip_methodid; + stats_data->interface_version = (guint8)version; + stats_data->message_type = (guint8)(~SOMEIP_MSGTYPE_TP_MASK) & msgtype; + + tap_queue_packet(tap_someip_messages, pinfo, stats_data); + } + tvb_length = tvb_captured_length_remaining(subtvb, 0); if (tvb_length > 0) { tmp = dissector_try_uint_new(someip_dissector_table, someip_messageid, subtvb, pinfo, tree, FALSE, &someip_data); diff --git a/epan/dissectors/packet-sua.c b/epan/dissectors/packet-sua.c index 18768d94..56266e28 100644 --- a/epan/dissectors/packet-sua.c +++ b/epan/dissectors/packet-sua.c @@ -808,6 +808,7 @@ dissect_correlation_id_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_ } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_registration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -817,6 +818,7 @@ dissect_registration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinf } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_deregistration_result_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -917,6 +919,7 @@ static const value_string routing_indicator_values[] = { #define ADDRESS_SSN_BITMASK 0x0001 static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_source_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, guint8 *ssn) { proto_tree *address_indicator_tree; @@ -938,6 +941,7 @@ dissect_source_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, pr } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_destination_address_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, guint8 *ssn) { proto_tree *address_indicator_tree; @@ -1179,6 +1183,7 @@ dissect_network_appearance_parameter(tvbuff_t *parameter_tvb, proto_tree *parame } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_routing_key_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -1221,6 +1226,7 @@ dissect_tid_label_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) #define ADDRESS_RANGE_ADDRESS_PARAMETERS_OFFSET PARAMETER_VALUE_OFFSET static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_address_range_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree) { tvbuff_t *parameters_tvb; @@ -1610,6 +1616,7 @@ static const value_string v8_parameter_tag_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_v8_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, tvbuff_t **data_tvb, guint8 *source_ssn, guint8 *dest_ssn) { guint16 tag, length, padding_length; @@ -1642,6 +1649,7 @@ dissect_v8_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr && tag != V8_SUBSYSTEM_NUMBER_PARAMETER_TAG) return; + increment_dissection_depth(pinfo); switch(tag) { case V8_DATA_PARAMETER_TAG: dissect_data_parameter(parameter_tvb, parameter_tree, parameter_item, data_tvb); @@ -1786,7 +1794,9 @@ dissect_v8_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tr default: dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item); break; - }; + } + decrement_dissection_depth(pinfo); + if (parameter_tree && (padding_length > 0)) proto_tree_add_item(parameter_tree, hf_sua_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA); } @@ -1888,6 +1898,7 @@ static const value_string parameter_tag_values[] = { { 0, NULL } }; static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree, tvbuff_t **data_tvb, guint8 *source_ssn, guint8 *dest_ssn) { guint16 tag, length, padding_length; @@ -1937,6 +1948,7 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree && tag != SUBSYSTEM_NUMBER_PARAMETER_TAG) return; /* Nothing to do here */ + increment_dissection_depth(pinfo); switch(tag) { case DATA_PARAMETER_TAG: dissect_data_parameter(parameter_tvb, parameter_tree, parameter_item, data_tvb); @@ -2090,12 +2102,15 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *tree default: dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item); break; - }; + } + decrement_dissection_depth(pinfo); + if (parameter_tree && (padding_length > 0)) proto_tree_add_item(parameter_tree, hf_sua_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA); } static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree, tvbuff_t **data_tvb, guint8 *source_ssn, guint8 *dest_ssn) { gint offset, length, total_length, remaining_length; diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c index 45127cde..00bd9c22 100644 --- a/epan/dissectors/packet-t38.c +++ b/epan/dissectors/packet-t38.c @@ -280,6 +280,7 @@ void t38_add_address(packet_info *pinfo, p_conversation_data->setup_frame_number = setup_frame_number; p_conversation_data->src_t38_info.reass_ID = 0; p_conversation_data->src_t38_info.reass_start_seqnum = -1; + p_conversation_data->src_t38_info.reass_start_data_field = 0; p_conversation_data->src_t38_info.reass_data_type = 0; p_conversation_data->src_t38_info.last_seqnum = -1; p_conversation_data->src_t38_info.packet_lost = 0; @@ -291,6 +292,7 @@ void t38_add_address(packet_info *pinfo, p_conversation_data->dst_t38_info.reass_ID = 0; p_conversation_data->dst_t38_info.reass_start_seqnum = -1; + p_conversation_data->dst_t38_info.reass_start_data_field = 0; p_conversation_data->dst_t38_info.reass_data_type = 0; p_conversation_data->dst_t38_info.last_seqnum = -1; p_conversation_data->dst_t38_info.packet_lost = 0; @@ -353,8 +355,9 @@ force_reassemble_seq(reassembly_table *table, packet_info *pinfo, guint32 id) last_fd=fd_i; } - data = (guint8 *) wmem_alloc(pinfo->pool, size); + data = (guint8 *) g_malloc(size); fd_head->tvb_data = tvb_new_real_data(data, size, size); + tvb_set_free_cb(fd_head->tvb_data, g_free); fd_head->len = size; /* record size for caller */ /* add all data fragments */ diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c index 2f6a4d3e..f134e298 100644 --- a/epan/dissectors/packet-tcap.c +++ b/epan/dissectors/packet-tcap.c @@ -3654,6 +3654,7 @@ static void cleanup_tcap(void) } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset) { gint tag_offset, saved_offset, len_offset; @@ -3696,7 +3697,9 @@ dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset if (len-(2*ind_field)) /*should always be positive unless we get an empty contructor pointless? */ { next_tvb = tvb_new_subset_length(tvb, offset, len-(2*ind_field)); + increment_dissection_depth(actx->pinfo); dissect_tcap_param(actx, subtree,next_tvb,0); + decrement_dissection_depth(actx->pinfo); } if (ind_field) diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c index 4d10cf6f..aca6596e 100644 --- a/epan/dissectors/packet-tcp.c +++ b/epan/dissectors/packet-tcp.c @@ -5687,7 +5687,7 @@ static gboolean tcp_ignore_timestamps = FALSE; static int dissect_tcpopt_timestamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { - proto_item *ti; + proto_item *ti, *tsval_ti; proto_tree *ts_tree; proto_item *length_item; int offset = 0; @@ -5706,7 +5706,7 @@ dissect_tcpopt_timestamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo if (!tcp_option_len_check(length_item, pinfo, len, TCPOLEN_TIMESTAMP)) return tvb_captured_length(tvb); - ti = proto_tree_add_item_ret_uint(ts_tree, hf_tcp_option_timestamp_tsval, tvb, offset, + tsval_ti = proto_tree_add_item_ret_uint(ts_tree, hf_tcp_option_timestamp_tsval, tvb, offset, 4, ENC_BIG_ENDIAN, &ts_val); proto_tree_add_item_ret_uint(ts_tree, hf_tcp_option_timestamp_tsecr, tvb, offset + 4, @@ -5720,7 +5720,7 @@ dissect_tcpopt_timestamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo if (read_seq_as_syn_cookie) { proto_item_append_text(ti, " (syn cookie)"); - proto_item* syncookie_ti = proto_item_add_subtree(ti, ett_tcp_syncookie_option); + proto_item* syncookie_ti = proto_item_add_subtree(tsval_ti, ett_tcp_syncookie_option); guint32 timestamp = tvb_get_bits32(tvb, offset * 8, 26, ENC_NA) << 6; proto_tree_add_uint_bits_format_value(syncookie_ti, hf_tcp_syncookie_option_timestamp, tvb, offset * 8, 26, timestamp, ENC_TIME_SECS, "%s", abs_time_secs_to_str(pinfo->pool, timestamp, ABSOLUTE_TIME_LOCAL, TRUE)); diff --git a/epan/dissectors/packet-teap.c b/epan/dissectors/packet-teap.c index ac24f8cf..701e3389 100644 --- a/epan/dissectors/packet-teap.c +++ b/epan/dissectors/packet-teap.c @@ -256,6 +256,7 @@ static int dissect_teap_tlv_pac(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint16 len); static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_pac_attr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) { guint16 type; @@ -330,17 +331,21 @@ dissect_pac_attr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_teap_tlv_pac(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, guint16 len) { int start_offset = offset; + increment_dissection_depth(pinfo); while (offset - start_offset < len) { offset += dissect_pac_attr(tvb, pinfo, tree, offset); } + decrement_dissection_depth(pinfo); return offset - start_offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_teap_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean top) { int start_offset = offset; @@ -393,7 +398,9 @@ dissect_teap_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset if (len > 6) { next_tvb = tvb_new_subset_length(tvb, offset, len - 6); + increment_dissection_depth(pinfo); offset += dissect_teap(next_tvb, pinfo, tlv_tree, NULL); + decrement_dissection_depth(pinfo); } break; @@ -518,6 +525,7 @@ dissect_teap_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_teap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { proto_tree *ti; diff --git a/epan/dissectors/packet-tecmp.c b/epan/dissectors/packet-tecmp.c index e7689e76..d46b293d 100644 --- a/epan/dissectors/packet-tecmp.c +++ b/epan/dissectors/packet-tecmp.c @@ -1817,7 +1817,7 @@ dissect_tecmp_log_or_replay_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree payload_tvb = tvb_new_subset_length(sub_tvb, offset2, length2); offset2 += length2; - can_info.fd = (data_type == TECMP_DATA_TYPE_CAN_FD_DATA); + can_info.fd = (data_type == TECMP_DATA_TYPE_CAN_FD_DATA) ? CAN_TYPE_CAN_FD : CAN_TYPE_CAN_CLASSIC; can_info.len = length2; can_info.bus_id = ht_interface_config_to_bus_id(interface_id); diff --git a/epan/dissectors/packet-tftp.c b/epan/dissectors/packet-tftp.c index e543ea88..075e754e 100644 --- a/epan/dissectors/packet-tftp.c +++ b/epan/dissectors/packet-tftp.c @@ -588,11 +588,22 @@ static void dissect_tftp_message(tftp_conv_info_t *tftp_info, tftp_info->is_simple_file /* This is a simple file */ && filename != NULL /* There is a file name */ && !tftp_info->blocks_missing /* No missing blocks */ - && tftp_info->last_package_available /* Last package known */ + && (tftp_info->last_package_available || !PINFO_FD_VISITED(pinfo)) + /* If this is the first pass (i.e., this is tshark one-pass + * mode and we're tapping), then we can't know if the last + * block is present in the file yet. */ ) { - if (blocknum == 1 && !tftp_info->payload_data) { + if (PINFO_FD_VISITED(pinfo)) { + if (blocknum == 1 && !tftp_info->payload_data) { tftp_info->payload_data = (guint8 *)g_try_malloc((gsize)tftp_info->file_length); + } + } else { + /* We allocate this in file scope so that it doesn't leak if it + * turns out we don't have all the blocks so we never send this + * to the tap. + */ + tftp_info->payload_data = (guint8 *)wmem_realloc(wmem_file_scope(), tftp_info->payload_data, (gsize)tftp_info->file_length); } if (tftp_info->payload_data == NULL || @@ -779,7 +790,7 @@ is_valid_request_body(tvbuff_t *tvb) guint len = tvb_strsize(tvb, offset); const gchar* mode = tvb_format_stringzpad(wmem_packet_scope(), tvb, offset, len); - const gchar* modes[] = {"netscii", "octet", "mail"}; + const gchar* modes[] = {"netascii", "octet", "mail"}; for(guint i = 0; i < array_length(modes); ++i) { if (g_ascii_strcasecmp(mode, modes[i]) == 0) return TRUE; } diff --git a/epan/dissectors/packet-thread.c b/epan/dissectors/packet-thread.c index dfed394d..7c11f97e 100644 --- a/epan/dissectors/packet-thread.c +++ b/epan/dissectors/packet-thread.c @@ -1859,6 +1859,7 @@ dissect_thread_mc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thread_nwd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { proto_item *proto_root; @@ -1874,6 +1875,7 @@ dissect_thread_nwd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da thread_nwd_tree = proto_item_add_subtree(proto_root, ett_thread_nwd); /* Thread Network Data TLVs */ + increment_dissection_depth(pinfo); while (tvb_offset_exists(tvb, offset)) { /* Get the length ahead of time to pass to next function so we can highlight @@ -2093,6 +2095,7 @@ dissect_thread_nwd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da offset += tlv_len; } } + decrement_dissection_depth(pinfo); return tvb_captured_length(tvb); } diff --git a/epan/dissectors/packet-thrift.c b/epan/dissectors/packet-thrift.c index 9f03f0dd..a266c446 100644 --- a/epan/dissectors/packet-thrift.c +++ b/epan/dissectors/packet-thrift.c @@ -605,6 +605,12 @@ dissect_thrift_field_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* Create the field header sub-tree if requested only. */ if (tree != NULL) { + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + header->fh_tree = proto_tree_add_subtree_format(tree, tvb, header->type_offset, *offset - header->type_offset, ett_thrift_field, NULL, "Field Header #%" PRId64, header->field_id); if (thrift_opt->tprotocol & PROTO_THRIFT_COMPACT) { @@ -1237,6 +1243,7 @@ dissect_thrift_t_string_enc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* Simple dispatch function for lists, sets, maps, and structs internal elements to avoid code duplication. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_t_member(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, const thrift_member_t *elt) { switch (elt->type) { @@ -1293,6 +1300,7 @@ dissect_thrift_t_member(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int * so it's easy to use the same code and handle the additional elements only when necessary. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_b_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *key, const thrift_member_t *val, thrift_type_enum_t expected) { proto_item *container_pi = NULL; @@ -1300,6 +1308,7 @@ dissect_thrift_b_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int proto_tree *sub_tree; gint32 key_type, val_type; gint32 length; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); /* Get the current state of dissection. */ DISSECTOR_ASSERT(thrift_opt); @@ -1312,6 +1321,11 @@ dissect_thrift_b_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int } /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_id, tvb, offset, -1, ENC_BIG_ENDIAN); sub_tree = proto_item_add_subtree(container_pi, ett_id); ABORT_SUBDISSECTION_ON_ISSUE(offset); @@ -1386,6 +1400,7 @@ dissect_thrift_b_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int if (container_pi && offset > 0) { proto_item_set_end(container_pi, tvb, offset); } + p_set_proto_depth(pinfo, proto_thrift, nested_count); return offset; } @@ -1394,6 +1409,7 @@ dissect_thrift_b_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int * this prevents code duplication. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_c_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *elt, gboolean is_list) { proto_item *container_pi; @@ -1408,6 +1424,7 @@ dissect_thrift_c_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i int hf_num_item = hf_thrift_num_set_item; int hf_pos_item = hf_thrift_num_set_pos; thrift_type_enum_t expected = DE_THRIFT_T_SET; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); if (is_list) { hf_num_item = hf_thrift_num_list_item; @@ -1430,6 +1447,11 @@ dissect_thrift_c_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i } /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_id, tvb, offset, -1, ENC_BIG_ENDIAN); sub_tree = proto_item_add_subtree(container_pi, ett_id); @@ -1490,10 +1512,12 @@ dissect_thrift_c_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i if (container_pi && offset > 0) { proto_item_set_end(container_pi, tvb, offset); } + p_set_proto_depth(pinfo, proto_thrift, nested_count); return offset; } int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_t_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *elt) { int result; @@ -1510,6 +1534,7 @@ dissect_thrift_t_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o } int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_t_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *elt) { int result; @@ -1526,6 +1551,7 @@ dissect_thrift_t_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of } int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_t_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *key, const thrift_member_t *value) { int result; @@ -1544,6 +1570,7 @@ dissect_thrift_t_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of gint32 len_offset = offset; thrift_compact_type_enum_t ktype, vtype; guint64 varint; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); /* Dissect field header if necessary. */ if (is_field) { @@ -1576,12 +1603,18 @@ dissect_thrift_t_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of } /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_id, tvb, len_offset, -1, ENC_BIG_ENDIAN); sub_tree = proto_item_add_subtree(container_pi, ett_id); if (container_len == 0) { proto_item_set_end(container_pi, tvb, offset); proto_item_append_text(container_pi, " (Empty)"); + p_set_proto_depth(pinfo, proto_thrift, nested_count); return offset; } @@ -1628,6 +1661,7 @@ dissect_thrift_t_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of proto_item_set_end(container_pi, tvb, offset); } result = offset; + p_set_proto_depth(pinfo, proto_thrift, nested_count); } if (is_field) { @@ -1643,6 +1677,7 @@ dissect_thrift_t_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_t_struct_expert(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, thrift_option_data_t *thrift_opt, gboolean is_field, int field_id, gint hf_id, gint ett_id, const thrift_member_t *seq, expert_field* ei) { thrift_field_header_t field_header; @@ -1650,6 +1685,7 @@ dissect_thrift_t_struct_expert(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr proto_item *type_pi = NULL; gboolean enable_subtree = (ett_id != DISABLE_SUBTREE) || (hf_id != DISABLE_SUBTREE); + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); /* Get the current state of dissection. */ DISSECTOR_ASSERT(thrift_opt); @@ -1670,6 +1706,11 @@ dissect_thrift_t_struct_expert(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr /* Create the sub-tree, if not explicitly refused. */ if (enable_subtree) { /* Add the struct to the tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count--); type_pi = proto_tree_add_item(tree, hf_id, tvb, offset, -1, ENC_BIG_ENDIAN); sub_tree = proto_item_add_subtree(type_pi, ett_id); } else { @@ -1763,6 +1804,7 @@ dissect_thrift_t_struct_expert(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr if (is_field) { thrift_opt->previous_field_id = field_id; } + p_set_proto_depth(pinfo, proto_thrift, nested_count); return offset; } /*=====END SUB-DISSECTION=====*/ @@ -1841,6 +1883,7 @@ dissect_thrift_binary_binary(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt, thrift_type_enum_t expected) { /* Binary protocol list and set (5 bytes + elements): @@ -1868,6 +1911,7 @@ dissect_thrift_binary_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree int hf_num_item = -1; int hf_vtype = hf_thrift_type; int min_len = TBP_THRIFT_LINEAR_LEN; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); /* Set the different hf_id & ett depending on effective type. */ switch (expected) { @@ -1895,6 +1939,11 @@ dissect_thrift_binary_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ABORT_ON_INCOMPLETE_PDU(min_len); /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_container, tvb, *offset, -1, ENC_NA); sub_tree = proto_item_add_subtree(container_pi, ett); @@ -1925,28 +1974,33 @@ dissect_thrift_binary_linear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } proto_item_set_end(container_pi, tvb, *offset); + p_set_proto_depth(pinfo, proto_thrift, nested_count); return *offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { return dissect_thrift_binary_linear(tvb, pinfo, tree, offset, thrift_opt, DE_THRIFT_T_LIST); } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { return dissect_thrift_binary_linear(tvb, pinfo, tree, offset, thrift_opt, DE_THRIFT_T_SET); } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { return dissect_thrift_binary_linear(tvb, pinfo, tree, offset, thrift_opt, DE_THRIFT_T_MAP); } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_fields(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { /* @@ -1992,6 +2046,7 @@ dissect_thrift_binary_fields(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { /* This function only creates the "Struct" sub-tree @@ -1999,8 +2054,14 @@ dissect_thrift_binary_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree */ proto_tree *sub_tree; proto_item *pi; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); ABORT_ON_INCOMPLETE_PDU(TBP_THRIFT_STRUCT_LEN); + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); pi = proto_tree_add_item(tree, hf_thrift_struct, tvb, *offset, -1, ENC_NA); sub_tree = proto_item_add_subtree(pi, ett_thrift_struct); @@ -2009,19 +2070,14 @@ dissect_thrift_binary_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } else { proto_item_set_end(pi, tvb, *offset); } + p_set_proto_depth(pinfo, proto_thrift, nested_count); return *offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_binary_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt, proto_tree *header_tree, int type, proto_item *type_pi) { - guint nested_count = p_get_proto_depth(pinfo, proto_thrift); - if (++nested_count > thrift_opt->nested_type_depth) { - expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); - return THRIFT_REQUEST_REASSEMBLY; - } - p_set_proto_depth(pinfo, proto_thrift, nested_count); - switch (type) { case DE_THRIFT_T_BOOL: ABORT_ON_INCOMPLETE_PDU(TBP_THRIFT_BOOL_LEN); @@ -2089,7 +2145,6 @@ dissect_thrift_binary_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, return THRIFT_REQUEST_REASSEMBLY; } - p_set_proto_depth(pinfo, proto_thrift, --nested_count); return *offset; } /*=====END BINARY GENERIC DISSECTION=====*/ @@ -2156,6 +2211,7 @@ dissect_thrift_compact_binary(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt, gboolean is_list) { /* Compact protocol list/set (short form, 1 byte): @@ -2183,6 +2239,7 @@ dissect_thrift_compact_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t int hf_container = hf_thrift_set; int hf_num_item = hf_thrift_num_set_item; int hf_pos_item = hf_thrift_num_set_pos; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); ABORT_ON_INCOMPLETE_PDU(TBP_THRIFT_TYPE_LEN); /* Set the different hf_id & ett depending on effective type. */ @@ -2194,6 +2251,11 @@ dissect_thrift_compact_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t } /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_container, tvb, *offset, -1, ENC_NA); sub_tree = proto_item_add_subtree(container_pi, ett); @@ -2244,22 +2306,26 @@ dissect_thrift_compact_list_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t } proto_item_set_end(container_pi, tvb, *offset); + p_set_proto_depth(pinfo, proto_thrift, nested_count); return *offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { return dissect_thrift_compact_list_set(tvb, pinfo, tree, offset, thrift_opt, TRUE); } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { return dissect_thrift_compact_list_set(tvb, pinfo, tree, offset, thrift_opt, FALSE); } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { /* Compact protocol map header (1 byte, empty map): @@ -2284,9 +2350,15 @@ dissect_thrift_compact_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 types, ktype, vtype; gint32 container_len, len_len, i; guint64 varint; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); ABORT_ON_INCOMPLETE_PDU(TCP_THRIFT_MIN_VARINT_LEN); /* Create the sub-tree. */ + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); container_pi = proto_tree_add_item(tree, hf_thrift_map, tvb, *offset, -1, ENC_NA); sub_tree = proto_item_add_subtree(container_pi, ett_thrift_map); @@ -2338,10 +2410,12 @@ dissect_thrift_compact_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } proto_item_set_end(container_pi, tvb, *offset); + p_set_proto_depth(pinfo, proto_thrift, nested_count); return *offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_fields(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { /* @@ -2395,6 +2469,7 @@ dissect_thrift_compact_fields(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt) { /* This function only creates the "Struct" sub-tree @@ -2402,8 +2477,14 @@ dissect_thrift_compact_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre */ proto_tree *sub_tree; proto_item *pi; + guint nested_count = p_get_proto_depth(pinfo, proto_thrift); ABORT_ON_INCOMPLETE_PDU(TCP_THRIFT_STRUCT_LEN); + if (nested_count >= thrift_opt->nested_type_depth) { + expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); + return THRIFT_REQUEST_REASSEMBLY; + } + p_set_proto_depth(pinfo, proto_thrift, nested_count + 1); pi = proto_tree_add_item(tree, hf_thrift_struct, tvb, *offset, -1, ENC_NA); sub_tree = proto_item_add_subtree(pi, ett_thrift_struct); @@ -2412,6 +2493,7 @@ dissect_thrift_compact_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre } else { proto_item_set_end(pi, tvb, *offset); } + p_set_proto_depth(pinfo, proto_thrift, nested_count); return *offset; } @@ -2422,15 +2504,9 @@ dissect_thrift_compact_struct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre * the bool type which is encoded in the same way as BOOL_FALSE (2). */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_thrift_compact_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int *offset, thrift_option_data_t *thrift_opt, proto_tree *header_tree, int type, proto_item *type_pi) { - guint nested_count = p_get_proto_depth(pinfo, proto_thrift); - if (++nested_count > thrift_opt->nested_type_depth) { - expert_add_info(pinfo, proto_tree_get_parent(tree), &ei_thrift_too_many_subtypes); - return THRIFT_REQUEST_REASSEMBLY; - } - p_set_proto_depth(pinfo, proto_thrift, nested_count); - switch (type) { case DE_THRIFT_C_BOOL_FALSE: ABORT_ON_INCOMPLETE_PDU(TBP_THRIFT_BOOL_LEN); @@ -2504,7 +2580,6 @@ dissect_thrift_compact_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, return THRIFT_REQUEST_REASSEMBLY; } - p_set_proto_depth(pinfo, proto_thrift, --nested_count); return *offset; } /*=====END COMPACT GENERIC DISSECTION=====*/ diff --git a/epan/dissectors/packet-tls-utils.c b/epan/dissectors/packet-tls-utils.c index c30d57f2..a2572b7b 100644 --- a/epan/dissectors/packet-tls-utils.c +++ b/epan/dissectors/packet-tls-utils.c @@ -1508,7 +1508,7 @@ const value_string tls_cert_status_type[] = { }; /* Generated by tools/make-tls-ct-logids.py - * Last-Modified Sun, 19 Nov 2023 13:18:00 GMT, 137 entries. */ + * Last-Modified Sat, 27 Jan 2024 13:28:00 GMT, 138 entries. */ static const bytes_string ct_logids[] = { { (const uint8_t[]){ 0xb2, 0x1e, 0x05, 0xcc, 0x8b, 0xa2, 0xcd, 0x8a, 0x20, 0x4e, 0x87, @@ -2027,6 +2027,12 @@ static const bytes_string ct_logids[] = { }, 32, "Sectigo 'Mammoth2024h1'" }, { (const uint8_t[]){ + 0x50, 0x85, 0x01, 0x58, 0xdc, 0xb6, 0x05, 0x95, 0xc0, 0x0e, 0x92, + 0xa8, 0x11, 0x02, 0xec, 0xcd, 0xfe, 0x3f, 0x6b, 0x78, 0x58, 0x42, + 0x9f, 0x57, 0x98, 0x35, 0x38, 0xc9, 0xda, 0x52, 0x50, 0x63, + }, + 32, "Sectigo 'Mammoth2024h1b'" }, + { (const uint8_t[]){ 0xdf, 0xe1, 0x56, 0xeb, 0xaa, 0x05, 0xaf, 0xb5, 0x9c, 0x0f, 0x86, 0x71, 0x8d, 0xa8, 0xc0, 0x32, 0x4e, 0xae, 0x56, 0xd9, 0x6e, 0xa7, 0xf5, 0xa5, 0x6a, 0x01, 0xd1, 0xc1, 0x3b, 0xbe, 0x52, 0x5c, diff --git a/epan/dissectors/packet-tn5250.c b/epan/dissectors/packet-tn5250.c index 52e58d3c..c799dade 100644 --- a/epan/dissectors/packet-tn5250.c +++ b/epan/dissectors/packet-tn5250.c @@ -4917,6 +4917,7 @@ dissect_tn5250_data_until_next_command(proto_tree *tn5250_tree, tvbuff_t *tvb, g #endif static guint32 +// NOLINTNEXTLINE(misc-no-recursion) dissect_outbound_stream(proto_tree *tn5250_tree, packet_info *pinfo, tvbuff_t *tvb, gint offset) { gint command_code; @@ -4964,7 +4965,9 @@ dissect_outbound_stream(proto_tree *tn5250_tree, packet_info *pinfo, tvbuff_t *t break; case RESTORE_SCREEN: while (tvb_reported_length_remaining(tvb, offset) > 0) { + increment_dissection_depth(pinfo); offset += dissect_outbound_stream(cc_tree, pinfo, tvb, offset); + decrement_dissection_depth(pinfo); } break; case WRITE_ERROR_CODE_TO_WINDOW: diff --git a/epan/dissectors/packet-usb-hid.c b/epan/dissectors/packet-usb-hid.c index afd4bfd8..9a402ee8 100644 --- a/epan/dissectors/packet-usb-hid.c +++ b/epan/dissectors/packet-usb-hid.c @@ -4330,6 +4330,7 @@ dissect_usb_hid_report_localitem_data(packet_info *pinfo, proto_tree *tree, tvbu /* Dissector for individual HID report items. Recursive. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_usb_hid_report_item(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, usb_conv_info_t *usb_conv_info _U_, const struct usb_hid_global_state *global) { proto_item *subitem; @@ -4409,7 +4410,9 @@ dissect_usb_hid_report_item(packet_info *pinfo _U_, proto_tree *parent_tree, tvb if (bType == USBHID_ITEMTYPE_MAIN) { if (bTag == USBHID_MAINITEM_TAG_COLLECTION) { /* Begin collection, nest following elements under us */ + increment_dissection_depth(pinfo); offset = dissect_usb_hid_report_item(pinfo, subtree, tvb, offset, usb_conv_info, &cur_global); + decrement_dissection_depth(pinfo); proto_item_set_len(subitem, offset-old_offset); } else if (bTag == USBHID_MAINITEM_TAG_ENDCOLLECTION) { /* End collection, break out to parent tree item */ diff --git a/epan/dissectors/packet-usb-video.c b/epan/dissectors/packet-usb-video.c index 5e9d632c..42aaf0b6 100644 --- a/epan/dissectors/packet-usb-video.c +++ b/epan/dissectors/packet-usb-video.c @@ -1582,8 +1582,9 @@ get_control_selector_values(guint8 entity_id, usb_conv_info_t *usb_conv_info) video_entity_t *entity = NULL; value_string_ext *selectors = NULL; - if (usb_conv_info == NULL) + if (usb_conv_info == NULL || usb_conv_info->class_data_type != USB_CONV_VIDEO) { return NULL; + } video_conv_info = (video_conv_info_t *)usb_conv_info->class_data; if (video_conv_info) diff --git a/epan/dissectors/packet-vp9.c b/epan/dissectors/packet-vp9.c index cab0ad31..7f34fafd 100644 --- a/epan/dissectors/packet-vp9.c +++ b/epan/dissectors/packet-vp9.c @@ -235,7 +235,7 @@ dissect_vp9(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, void *data V: | N_S |Y|G|-|-|-| +-+-+-+-+-+-+-+-+ */ - guint8 n_s = tvb_get_guint8(tvb, offset) & (VP9_3_BITS_MASK); + guint8 n_s = (tvb_get_guint8(tvb, offset) & (VP9_3_BITS_MASK)) >> 5; guint8 y = tvb_get_guint8(tvb, offset) & (VP9_1_BIT_MASK >> 3); guint8 g = tvb_get_guint8(tvb, offset) & (VP9_1_BIT_MASK >> 4); proto_tree_add_item(vp9_descriptor_tree, hf_vp9_pld_n_s_bits, tvb, offset, 1, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-wassp.c b/epan/dissectors/packet-wassp.c index 7b78b353..595bf021 100644 --- a/epan/dissectors/packet-wassp.c +++ b/epan/dissectors/packet-wassp.c @@ -4736,6 +4736,7 @@ static int decode_lbs_tag_header(proto_tree *tree, tvbuff_t *tvb, int offset) +// NOLINTNEXTLINE(misc-no-recursion) int dissect_wassp_sub_tlv(proto_tree *wassp_tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int in_len, int which_tab, int ru_msg_type) { proto_item *tlvi; @@ -4921,9 +4922,11 @@ int dissect_wassp_sub_tlv(proto_tree *wassp_tree, tvbuff_t *tvb, packet_info *pi tableNo = WASSP_SUBTLV_GET_ENTRY_IDX_TABIDX(tmp_decr, tlv_type); if ((tableNo == RADIO_CONFIG_BLOCK) && (ru_msg_type == WASSP_RU_Ack)) { + // We recurse here, but we'll run out of packet before we run out of stack. offset = dissect_wassp_sub_tlv(tmp_tree, tvb, pinfo, offset + TLV_VALUE, length - TLV_VALUE, TAB_RU_ACK_RADIO_CONFIG, ru_msg_type); } else + // We recurse here, but we'll run out of packet before we run out of stack. offset = dissect_wassp_sub_tlv(tmp_tree, tvb, pinfo, offset + TLV_VALUE, length - TLV_VALUE, tableNo, ru_msg_type); } diff --git a/epan/dissectors/packet-windows-common.c b/epan/dissectors/packet-windows-common.c index 1ccba706..b591d8d8 100644 --- a/epan/dissectors/packet-windows-common.c +++ b/epan/dissectors/packet-windows-common.c @@ -1980,7 +1980,8 @@ dissect_nt_ace_system_resource_attribute(tvbuff_t *tvb, int offset, guint16 size /* Dissect Condition ACE token, see [MS-DTYP] v20180912 section 2.4.4.17.4 */ static int -dissect_nt_conditional_ace_token(tvbuff_t *tvb, int offset, guint16 size, proto_tree *parent_tree) +// NOLINTNEXTLINE(misc-no-recursion) +dissect_nt_conditional_ace_token(tvbuff_t *tvb, packet_info *pinfo, int offset, guint16 size, proto_tree *parent_tree) { int start_offset = offset; proto_tree *tree = parent_tree; @@ -2092,8 +2093,11 @@ dissect_nt_conditional_ace_token(tvbuff_t *tvb, int offset, guint16 size, proto_ int remaining = size - (offset - start_offset); if (remaining >= (int)len) { int end_offset = offset + len; - while (offset < end_offset) - offset = dissect_nt_conditional_ace_token(tvb, offset, remaining, tree); + increment_dissection_depth(pinfo); + while (offset < end_offset) { + offset = dissect_nt_conditional_ace_token(tvb, pinfo, offset, remaining, tree); + } + decrement_dissection_depth(pinfo); } else { /* malformed: composite len is longer * than the remaining data in the ace @@ -2161,7 +2165,7 @@ dissect_nt_conditional_ace_token(tvbuff_t *tvb, int offset, guint16 size, proto_ /* Dissect Conditional ACE (if present), see [MS-DTYP] v20180912 section 2.4.4.17.4 */ static int -dissect_nt_conditional_ace(tvbuff_t *tvb, int offset, guint16 size, proto_tree *parent_tree) +dissect_nt_conditional_ace(tvbuff_t *tvb, packet_info *pinfo, int offset, guint16 size, proto_tree *parent_tree) { int start_offset = offset; @@ -2183,7 +2187,7 @@ dissect_nt_conditional_ace(tvbuff_t *tvb, int offset, guint16 size, proto_tree * remaining = size - (offset - start_offset); if (remaining <= 0) break; - offset = dissect_nt_conditional_ace_token(tvb, offset, remaining, parent_tree); + offset = dissect_nt_conditional_ace_token(tvb, pinfo, offset, remaining, parent_tree); } } } @@ -2746,7 +2750,7 @@ dissect_nt_v2_ace(tvbuff_t *tvb, int offset, packet_info *pinfo, case ACE_TYPE_ACCESS_DENIED_CALLBACK_OBJECT: case ACE_TYPE_SYSTEM_AUDIT_CALLBACK: case ACE_TYPE_SYSTEM_AUDIT_CALLBACK_OBJECT: - dissect_nt_conditional_ace(tvb, offset, data_size, tree); + dissect_nt_conditional_ace(tvb, pinfo, offset, data_size, tree); break; case ACE_TYPE_SYSTEM_RESOURCE_ATTRIBUTE: diff --git a/epan/dissectors/packet-wlccp.c b/epan/dissectors/packet-wlccp.c index 9fe1a946..6b20011c 100644 --- a/epan/dissectors/packet-wlccp.c +++ b/epan/dissectors/packet-wlccp.c @@ -1795,6 +1795,7 @@ static guint dissect_wlccp_mip_msg(proto_tree *_tree _U_, tvbuff_t *_tvb _U_, gu /***************************************************************************************************/ +// NOLINTNEXTLINE(misc-no-recursion) static guint dissect_wlccp_tlvs( proto_tree *_tree, tvbuff_t *_tvb, guint _offset, guint _depth) { @@ -1993,6 +1994,7 @@ static guint dissect_wlccp_tlvs( proto_tree *_tree, tvbuff_t *_tvb, guint _offse while (_offset < _tlv_end) { _old_offset = _offset; + // We recurse here, but we'll run out of packet before we run out of stack. _offset = dissect_wlccp_tlvs(_tlv_tree, _tvb, _offset, _depth++); DISSECTOR_ASSERT(_offset > _old_offset); } /* while bytes_left >= 4*/ diff --git a/epan/dissectors/packet-wow.c b/epan/dissectors/packet-wow.c index c6725341..80aa430d 100644 --- a/epan/dissectors/packet-wow.c +++ b/epan/dissectors/packet-wow.c @@ -460,7 +460,6 @@ parse_logon_reconnect_challenge_server_to_client(tvbuff_t *tvb, proto_tree *wow_ static void parse_logon_challenge_client_to_server(packet_info *pinfo, tvbuff_t *tvb, proto_tree *wow_tree, guint32 offset) { guint8 srp_i_len; - char buffer[5]; gchar *string; proto_tree_add_item(wow_tree, hf_wow_protocol_version, tvb, @@ -471,10 +470,16 @@ parse_logon_challenge_client_to_server(packet_info *pinfo, tvbuff_t *tvb, proto_ tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - tvb_get_raw_bytes_as_string(tvb, offset, buffer, 5); - string = get_ascii_string(pinfo->pool, g_strreverse(buffer), 4); + string = tvb_get_string_enc(pinfo->pool, tvb, offset, 4, ENC_ASCII); + /* g_utf8_strreverse handles the REPLACMENT CHARACTERs. + * It would handle embedded NULs correctly if we passed in the + * byte length after conversion, but we need to change the API + * to use counted strings in more places. + */ + string = g_utf8_strreverse(string, -1); proto_tree_add_string(wow_tree, hf_wow_gamename, tvb, offset, 4, string); + g_free(string); offset += 4; @@ -498,22 +503,25 @@ parse_logon_challenge_client_to_server(packet_info *pinfo, tvbuff_t *tvb, proto_ offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - tvb_get_raw_bytes_as_string(tvb, offset, buffer, 5); - string = get_ascii_string(pinfo->pool, g_strreverse(buffer), 4); + string = tvb_get_string_enc(pinfo->pool, tvb, offset, 4, ENC_ASCII); + string = g_utf8_strreverse(string, -1); proto_tree_add_string(wow_tree, hf_wow_platform, tvb, offset, 4, string); + g_free(string); offset += 4; - tvb_get_raw_bytes_as_string(tvb, offset, buffer, 5); - string = get_ascii_string(pinfo->pool, g_strreverse(buffer), 4); + string = tvb_get_string_enc(pinfo->pool, tvb, offset, 4, ENC_ASCII); + string = g_utf8_strreverse(string, -1); proto_tree_add_string(wow_tree, hf_wow_os, tvb, offset, 4, string); + g_free(string); offset += 4; - tvb_get_raw_bytes_as_string(tvb, offset, buffer, 5); - string = get_ascii_string(pinfo->pool, g_strreverse(buffer), 4); + string = tvb_get_string_enc(pinfo->pool, tvb, offset, 4, ENC_ASCII); + string = g_utf8_strreverse(string, -1); proto_tree_add_string(wow_tree, hf_wow_country, tvb, offset, 4, string); + g_free(string); offset += 4; proto_tree_add_item(wow_tree, diff --git a/epan/dissectors/packet-wtp.c b/epan/dissectors/packet-wtp.c index 5a46af12..bda20ab7 100644 --- a/epan/dissectors/packet-wtp.c +++ b/epan/dissectors/packet-wtp.c @@ -287,6 +287,7 @@ wtp_handle_tpi(proto_tree *tree, tvbuff_t *tvb) /* Code to actually dissect the packets */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_wtp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { char *szInfo; @@ -359,6 +360,7 @@ dissect_wtp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } /* Skip the length field for the WTP sub-tvb */ wtp_tvb = tvb_new_subset_length(tvb, offCur + c_fieldlen, c_pdulen); + // We recurse here, but we'll run out of packet before we run out of stack. dissect_wtp_common(wtp_tvb, pinfo, wtp_tree); offCur += c_fieldlen + c_pdulen; i++; diff --git a/epan/dissectors/packet-x11.c b/epan/dissectors/packet-x11.c index c4dcf9b4..1c520cde 100644 --- a/epan/dissectors/packet-x11.c +++ b/epan/dissectors/packet-x11.c @@ -3689,32 +3689,24 @@ static void dissect_x11_request(tvbuff_t *tvb, packet_info *pinfo, case X_ConfigureWindow: { guint16 bitmask16; - static int * const window_attributes_flags[] = { - &hf_x11_window_value_mask_background_pixmap, - &hf_x11_window_value_mask_background_pixel, - &hf_x11_window_value_mask_border_pixmap, - &hf_x11_window_value_mask_border_pixel, - &hf_x11_window_value_mask_bit_gravity, - &hf_x11_window_value_mask_win_gravity, - &hf_x11_window_value_mask_backing_store, - &hf_x11_window_value_mask_backing_planes, - &hf_x11_window_value_mask_backing_pixel, - &hf_x11_window_value_mask_override_redirect, - &hf_x11_window_value_mask_save_under, - &hf_x11_window_value_mask_event_mask, - &hf_x11_window_value_mask_do_not_propagate_mask, - &hf_x11_window_value_mask_colormap, - &hf_x11_window_value_mask_cursor, + static int * const configure_window_mask_flags[] = { + &hf_x11_configure_window_mask_x, + &hf_x11_configure_window_mask_y, + &hf_x11_configure_window_mask_width, + &hf_x11_configure_window_mask_height, + &hf_x11_configure_window_mask_border_width, + &hf_x11_configure_window_mask_sibling, + &hf_x11_configure_window_mask_stack_mode, NULL }; proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, 1, ENC_NA); *offsetp += 1; requestLength(tvb, offsetp, t, byte_order); - proto_tree_add_item(t, hf_x11_window, tvb, *offsetp, 1, byte_order); + proto_tree_add_item(t, hf_x11_window, tvb, *offsetp, 4, byte_order); *offsetp += 4; bitmask16 = tvb_get_guint16(tvb, *offsetp, byte_order); - proto_tree_add_bitmask(t, tvb, *offsetp, hf_x11_configure_window_mask, ett_x11_configure_window_mask, window_attributes_flags, byte_order); + proto_tree_add_bitmask(t, tvb, *offsetp, hf_x11_configure_window_mask, ett_x11_configure_window_mask, configure_window_mask_flags, byte_order); *offsetp += 2; proto_tree_add_item(t, hf_x11_unused, tvb, *offsetp, 2, ENC_NA); *offsetp += 2; diff --git a/epan/dissectors/packet-x509if.c b/epan/dissectors/packet-x509if.c index 31cf56d7..25bed90c 100644 --- a/epan/dissectors/packet-x509if.c +++ b/epan/dissectors/packet-x509if.c @@ -316,7 +316,6 @@ x509if_frame_end(void) /*int dissect_x509if_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -1048,16 +1047,15 @@ static const ber_choice_t Refinement_choice[] = { int dissect_x509if_Refinement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Refinement → Refinement/and → Refinement + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Refinement_choice, hf_index, ett_x509if_Refinement, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1493,16 +1491,15 @@ static const ber_choice_t ContextCombination_choice[] = { int dissect_x509if_ContextCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ContextCombination → ContextCombination/and → ContextCombination + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, ContextCombination_choice, hf_index, ett_x509if_ContextCombination, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -1618,16 +1615,15 @@ static const ber_choice_t AttributeCombination_choice[] = { int dissect_x509if_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // AttributeCombination → AttributeCombination/and → AttributeCombination + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, AttributeCombination_choice, hf_index, ett_x509if_AttributeCombination, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-x509sat.c b/epan/dissectors/packet-x509sat.c index 6704d950..260e1d5f 100644 --- a/epan/dissectors/packet-x509sat.c +++ b/epan/dissectors/packet-x509sat.c @@ -258,7 +258,6 @@ static gint ett_x509sat_LocaleContextSyntax = -1; /*int dissect_x509sat_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -433,16 +432,15 @@ static const ber_choice_t Criteria_choice[] = { int dissect_x509sat_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // Criteria → Criteria/and → Criteria + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, Criteria_choice, hf_index, ett_x509sat_Criteria, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-x75.c b/epan/dissectors/packet-x75.c index 82386795..df491b5c 100644 --- a/epan/dissectors/packet-x75.c +++ b/epan/dissectors/packet-x75.c @@ -232,8 +232,6 @@ void proto_reg_handoff_x75(void) { data_handle = find_dissector("data"); - - dissector_add_uint("wtap_encap", WTAP_ENCAP_LAPB, x75_handle); } /* diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c index a2edca83..e7a7a960 100644 --- a/epan/dissectors/packet-xml.c +++ b/epan/dissectors/packet-xml.c @@ -1119,6 +1119,7 @@ static gchar *fully_qualified_name(GPtrArray *hier, gchar *name, gchar *proto_na } +// NOLINTNEXTLINE(misc-no-recursion) static xml_ns_t *make_xml_hier(gchar *elem_name, xml_ns_t *root, wmem_map_t *elements, @@ -1145,6 +1146,11 @@ static xml_ns_t *make_xml_hier(gchar *elem_name, return NULL; } + if (hier->len >= prefs.gui_max_tree_depth) { + g_string_append_printf(error, "hierarchy too deep: %u\n", hier->len); + return NULL; + } + for (i = 0; i < hier->len; i++) { if( (elem_name) && (strcmp(elem_name, (gchar *) g_ptr_array_index(hier, i) ) == 0 )) { recurred = TRUE; diff --git a/epan/dissectors/packet-xmpp-utils.c b/epan/dissectors/packet-xmpp-utils.c index 1f095a76..d8c6cf2c 100644 --- a/epan/dissectors/packet-xmpp-utils.c +++ b/epan/dissectors/packet-xmpp-utils.c @@ -189,6 +189,7 @@ xmpp_ibb_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_inf } static void +// NOLINTNEXTLINE(misc-no-recursion) xmpp_unknown_items(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element, guint level) { GList *childs = element->elements; @@ -522,10 +523,11 @@ xmpp_element_t_cleanup(void* userdata) Function converts xml_frame_t structure to xmpp_element_t (simpler representation) */ xmpp_element_t* -xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb) +// NOLINTNEXTLINE(misc-no-recursion) +xmpp_xml_frame_to_element_t(packet_info *pinfo, xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb) { xml_frame_t *child; - xmpp_element_t *node = wmem_new0(pool, xmpp_element_t); + xmpp_element_t *node = wmem_new0(pinfo->pool, xmpp_element_t); tvbparse_t* tt; tvbparse_elem_t* elem; @@ -536,7 +538,7 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp node->was_read = FALSE; node->default_ns_abbrev = NULL; - node->name = wmem_strdup(pool, xml_frame->name_orig_case); + node->name = wmem_strdup(pinfo->pool, xml_frame->name_orig_case); node->offset = 0; node->length = 0; @@ -558,11 +560,11 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp */ CLEANUP_PUSH(xmpp_element_t_cleanup, node); - tt = tvbparse_init(pool, tvb,node->offset,-1,NULL,want_ignore); + tt = tvbparse_init(pinfo->pool, tvb,node->offset,-1,NULL,want_ignore); if((elem = tvbparse_get(tt,want_stream_end_with_ns))!=NULL) { - node->default_ns_abbrev = tvb_get_string_enc(pool, elem->sub->tvb, elem->sub->offset, elem->sub->len, ENC_ASCII); + node->default_ns_abbrev = tvb_get_string_enc(pinfo->pool, elem->sub->tvb, elem->sub->offset, elem->sub->len, ENC_ASCII); } child = xml_frame->first_child; @@ -577,21 +579,21 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp gchar *value = NULL; const gchar *xmlns_needle = NULL; - xmpp_attr_t *attr = wmem_new(pool, xmpp_attr_t); + xmpp_attr_t *attr = wmem_new(pinfo->pool, xmpp_attr_t); attr->length = 0; attr->offset = 0; attr->was_read = FALSE; if (child->value != NULL) { l = tvb_reported_length(child->value); - value = (gchar *)wmem_alloc0(pool, l + 1); + value = (gchar *)wmem_alloc0(pinfo->pool, l + 1); tvb_memcpy(child->value, value, 0, l); } attr->offset = child->start_offset; attr->length = child->length; attr->value = value; - attr->name = wmem_strdup(pool, child->name_orig_case); + attr->name = wmem_strdup(pinfo->pool, child->name_orig_case); g_hash_table_insert(node->attrs,(gpointer)attr->name,(gpointer)attr); @@ -602,10 +604,10 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp { if(attr->name[5] == ':' && strlen(attr->name) > 6) { - g_hash_table_insert(node->namespaces, (gpointer)wmem_strdup(pool, &attr->name[6]), (gpointer)wmem_strdup(pool, attr->value)); + g_hash_table_insert(node->namespaces, (gpointer)wmem_strdup(pinfo->pool, &attr->name[6]), (gpointer)wmem_strdup(pinfo->pool, attr->value)); } else if(attr->name[5] == '\0') { - g_hash_table_insert(node->namespaces, (gpointer)"", (gpointer)wmem_strdup(pool, attr->value)); + g_hash_table_insert(node->namespaces, (gpointer)"", (gpointer)wmem_strdup(pinfo->pool, attr->value)); } } @@ -617,13 +619,13 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp gint l; gchar* value = NULL; - data = wmem_new(pool, xmpp_data_t); + data = wmem_new(pinfo->pool, xmpp_data_t); data->length = 0; data->offset = 0; if (child->value != NULL) { l = tvb_reported_length(child->value); - value = (gchar *)wmem_alloc0(pool, l + 1); + value = (gchar *)wmem_alloc0(pinfo->pool, l + 1); tvb_memcpy(child->value, value, 0, l); } @@ -635,7 +637,9 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp } } else { - node->elements = g_list_append(node->elements,(gpointer)xmpp_xml_frame_to_element_t(pool, child, node,tvb)); + increment_dissection_depth(pinfo); + node->elements = g_list_append(node->elements,(gpointer)xmpp_xml_frame_to_element_t(pinfo, child, node,tvb)); + decrement_dissection_depth(pinfo); } child = child->next_sibling; @@ -647,6 +651,7 @@ xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp } void +// NOLINTNEXTLINE(misc-no-recursion) xmpp_element_t_tree_free(xmpp_element_t *root) { GList *childs = root->elements; @@ -658,6 +663,7 @@ xmpp_element_t_tree_free(xmpp_element_t *root) { xmpp_element_t *child = (xmpp_element_t *)childs->data; + // Our depth should be limited by the check in xmpp_xml_frame_to_element_t xmpp_element_t_tree_free(child); childs = childs->next; } diff --git a/epan/dissectors/packet-xmpp-utils.h b/epan/dissectors/packet-xmpp-utils.h index 34214086..cf54f9f5 100644 --- a/epan/dissectors/packet-xmpp-utils.h +++ b/epan/dissectors/packet-xmpp-utils.h @@ -158,7 +158,7 @@ extern void xmpp_simple_cdata_elem(proto_tree *tree, tvbuff_t *tvb, packet_info /** Converts xml_frame_t struct to xmpp_element_t. Should be call with parent==NULL. */ -extern xmpp_element_t* xmpp_xml_frame_to_element_t(wmem_allocator_t *pool, xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb); +extern xmpp_element_t* xmpp_xml_frame_to_element_t(packet_info *pinfo, xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb); /** Frees all GLib structs in xmpp_element_t struct. Should be call only for root element. * It works recursively. diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c index 08cd1748..7bc9bd47 100644 --- a/epan/dissectors/packet-xmpp.c +++ b/epan/dissectors/packet-xmpp.c @@ -479,7 +479,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ while(xml_frame) { - packet = xmpp_xml_frame_to_element_t(pinfo->pool, xml_frame, NULL, tvb); + packet = xmpp_xml_frame_to_element_t(pinfo, xml_frame, NULL, tvb); DISSECTOR_ASSERT(packet); CLEANUP_PUSH(cleanup_xmpp, packet); diff --git a/epan/dissectors/packet-yami.c b/epan/dissectors/packet-yami.c index eaa2e757..539350df 100644 --- a/epan/dissectors/packet-yami.c +++ b/epan/dissectors/packet-yami.c @@ -83,6 +83,7 @@ static int ett_yami_msg_data = -1; static int ett_yami_param = -1; static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_yami_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, proto_item *par_ti) { const int orig_offset = offset; @@ -364,7 +365,9 @@ dissect_yami_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int proto_item_append_text(ti, ", Type: nested, %u parameters: ", count); for (i = 0; i < count; i++) { + increment_dissection_depth(pinfo); offset = dissect_yami_parameter(tvb, pinfo, yami_param, offset, ti); + decrement_dissection_depth(pinfo); /* smth went wrong */ if (offset == -1) return -1; diff --git a/epan/dissectors/packet-z3950.c b/epan/dissectors/packet-z3950.c index dda2a489..417481f1 100644 --- a/epan/dissectors/packet-z3950.c +++ b/epan/dissectors/packet-z3950.c @@ -2070,7 +2070,6 @@ static int dissect_z3950_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, i static int dissect_z3950_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen. static int @@ -3032,16 +3031,15 @@ static const ber_choice_t RPNStructure_choice[] = { static int dissect_z3950_RPNStructure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 3; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // RPNStructure → RPNStructure/rpnRpnOp → RPNStructure + actx->pinfo->dissection_depth += 2; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_choice(actx, tree, tvb, offset, RPNStructure_choice, hf_index, ett_z3950_RPNStructure, NULL); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 2; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -6543,15 +6541,14 @@ static const ber_sequence_t ElementInfo_sequence[] = { static int dissect_z3950_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // ElementInfo → ElementDataType → ElementDataType/structured → ElementInfo + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, ElementInfo_sequence, hf_index, ett_z3950_ElementInfo); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } @@ -8024,15 +8021,14 @@ static const ber_sequence_t TaggedElement_sequence[] = { static int dissect_z3950_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = 4; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // TaggedElement → ElementData → ElementData/subtree → TaggedElement + actx->pinfo->dissection_depth += 3; + increment_dissection_depth(actx->pinfo); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, TaggedElement_sequence, hf_index, ett_z3950_TaggedElement); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + actx->pinfo->dissection_depth -= 3; + decrement_dissection_depth(actx->pinfo); return offset; } diff --git a/epan/dissectors/packet-zbee-nwk-gp.c b/epan/dissectors/packet-zbee-nwk-gp.c index 5d6e8276..25dc8e03 100644 --- a/epan/dissectors/packet-zbee-nwk-gp.c +++ b/epan/dissectors/packet-zbee-nwk-gp.c @@ -1502,8 +1502,11 @@ static guint dissect_zbee_nwk_gp_cmd_move_up_down(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, zbee_nwk_green_power_packet *packet _U_, guint offset) { - proto_tree_add_item(tree, hf_zbee_nwk_gp_cmd_move_up_down_rate, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset += 1; + /* Optional rate field. */ + if (tvb_reported_length(tvb) - offset >= 1) { + proto_tree_add_item(tree, hf_zbee_nwk_gp_cmd_move_up_down_rate, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + } return offset; } /* dissect_zbee_nwk_gp_cmd_move_up_down */ @@ -1549,8 +1552,11 @@ dissect_zbee_nwk_gp_cmd_step_up_down(tvbuff_t *tvb, packet_info *pinfo _U_, prot { proto_tree_add_item(tree, hf_zbee_nwk_gp_cmd_step_up_down_step_size, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; - proto_tree_add_item(tree, hf_zbee_nwk_gp_cmd_step_up_down_transition_time, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; + /* Optional time field. */ + if (tvb_reported_length(tvb) - offset >= 2) { + proto_tree_add_item(tree, hf_zbee_nwk_gp_cmd_step_up_down_transition_time, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + } return offset; } /* dissect_zbee_nwk_gp_cmd_step_up_down */ diff --git a/epan/dissectors/packet-zbee-zcl.c b/epan/dissectors/packet-zbee-zcl.c index f9bd5f64..a4a11e4f 100644 --- a/epan/dissectors/packet-zbee-zcl.c +++ b/epan/dissectors/packet-zbee-zcl.c @@ -1991,6 +1991,7 @@ static void dissect_zcl_attr_data_general(tvbuff_t *tvb, proto_tree *tree, guint *@param offset into the tvb to begin dissection. *@param client_attr ZCL client */ +// NOLINTNEXTLINE(misc-no-recursion) void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint data_type, gboolean client_attr) { guint attr_uint; @@ -2004,6 +2005,7 @@ void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint nstime_t attr_time; /* Dissect attribute data type and data */ + // We can recurse here, but we should run out of packet before we run out of stack. switch ( data_type ) { case ZBEE_ZCL_NO_DATA: break; @@ -2416,6 +2418,7 @@ guint dissect_zcl_attr_uint8(tvbuff_t *tvb, proto_tree *tree, guint *offset, int *@param client_attr ZCL client */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_zcl_array_type(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint8 elements_type, guint16 elements_num, gboolean client_attr) { proto_tree *sub_tree; @@ -2457,6 +2460,7 @@ dissect_zcl_array_type(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint8 el *@param client_attr ZCL client */ static void +// NOLINTNEXTLINE(misc-no-recursion) dissect_zcl_set_type(tvbuff_t *tvb, proto_tree *tree, guint *offset, guint8 elements_type, guint16 elements_num, gboolean client_attr) { proto_tree *sub_tree; diff --git a/epan/dissectors/usb.c b/epan/dissectors/usb.c index 0c2283f4..1f830e38 100644 --- a/epan/dissectors/usb.c +++ b/epan/dissectors/usb.c @@ -37,6 +37,7 @@ static const value_string usb_vendors_vals[] = { { 0x0003, "Club Mac" }, { 0x0004, "Nebraska Furniture Mart" }, { 0x0011, "Unknown" }, + { 0x001f, "Walmart" }, { 0x0040, "Anyware Corporation" }, { 0x0042, "DMT" }, { 0x0053, "Planex" }, @@ -1226,6 +1227,7 @@ static const value_string usb_vendors_vals[] = { { 0x0a2c, "AK-Modul-Bus Computer GmbH" }, { 0x0a34, "TG3 Electronics, Inc." }, { 0x0a35, "Radikal Technologies" }, + { 0x0a38, "IRIS sa" }, { 0x0a39, "Gilat Satellite Networks, Ltd" }, { 0x0a3a, "PentaMedia Co., Ltd" }, { 0x0a3c, "NTT DoCoMo, Inc." }, @@ -3463,6 +3465,7 @@ static const value_string usb_products_vals[] = { { 0x00020002, "passport00" }, { 0x00027007, "HPRT XT300" }, { 0x00117788, "counterfeit flash drive" }, + { 0x001f0b21, "AB13X Headset Adapter" }, { 0x0040073d, "Mini Multimedia 2.4GHz Wireless Keyboard with Touch Pad" }, { 0x00535301, "GW-US54ZGL 802.11bg" }, { 0x00780006, "Joystick" }, @@ -3608,6 +3611,7 @@ static const value_string usb_products_vals[] = { { 0x03f00012, "DeskJet 1125C Printer Port" }, { 0x03f00024, "KU-0316 Keyboard" }, { 0x03f0002a, "LaserJet P1102" }, + { 0x03f00036, "CCID Smartcard Keyboard KUS0133" }, { 0x03f00053, "DeskJet 2620 All-in-One Printer" }, { 0x03f00101, "ScanJet 4100c" }, { 0x03f00102, "PhotoSmart S20" }, @@ -4175,9 +4179,9 @@ static const value_string usb_products_vals[] = { { 0x03f3008c, "AVC-2310 Device" }, { 0x03f30094, "eHome Infrared Receiver" }, { 0x03f3009b, "AVC-1410 GameBridge TV NTSC" }, - { 0x03f32000, "USBXchange" }, + { 0x03f32000, "USBXchange Firmware Loader" }, { 0x03f32001, "USBXchange Adapter" }, - { 0x03f32002, "USB2-Xchange" }, + { 0x03f32002, "USB2-Xchange Firmware Loader" }, { 0x03f32003, "USB2-Xchange Adapter" }, { 0x03f34000, "4-port hub" }, { 0x03f3adcc, "Composite Device Support" }, @@ -4233,6 +4237,9 @@ static const value_string usb_products_vals[] = { { 0x0403601f, "FT601 32-bit FIFO IC" }, { 0x04036ee0, "EZO Carrier Board" }, { 0x04036f70, "HB-RF-USB" }, + { 0x04037150, "FT2232x wired for MPSSE+UART" }, + { 0x04037151, "FT2232x wired for MPSSE+UART" }, + { 0x04037152, "FreeCalypso dual UART with boot control" }, { 0x04037be8, "FT232R" }, { 0x04038028, "Dev board JTAG (FT232H based)" }, { 0x04038040, "4 Port Hub" }, @@ -5176,6 +5183,7 @@ static const value_string usb_products_vals[] = { { 0x04243fcc, "RME MADIface" }, { 0x04244041, "Hub and media card controller" }, { 0x04244060, "Ultra Fast Media Reader" }, + { 0x04244063, "xD/SD/MS/MMC Reader" }, { 0x04244064, "Ultra Fast Media Reader" }, { 0x04244712, "USB4712 high-speed hub" }, { 0x04244713, "USB4715 high-speed hub (2 ports disabled)" }, @@ -5411,6 +5419,8 @@ static const value_string usb_products_vals[] = { { 0x043e9800, "Remote Control Receiver_iMON" }, { 0x043e9803, "eHome Infrared Receiver" }, { 0x043e9804, "DMB Receiver Control" }, + { 0x043e9a10, "34UC88-B" }, + { 0x043e9a11, "34UC88-B" }, { 0x043e9a39, "27UP850 - WK.AEUDCSN - External Monitor 4K" }, { 0x043e9c01, "LGE Sync" }, { 0x04411456, "Hub" }, @@ -5803,6 +5813,8 @@ static const value_string usb_products_vals[] = { { 0x045e02e6, "Xbox Wireless Adapter for Windows" }, { 0x045e02ea, "Xbox One Controller" }, { 0x045e02fd, "Xbox One S Controller [Bluetooth]" }, + { 0x045e02fe, "Xbox Wireless Adapter for Windows" }, + { 0x045e0306, "Surface Pro 7 SD Card Reader" }, { 0x045e0400, "Windows Powered Pocket PC 2002" }, { 0x045e0401, "Windows Powered Pocket PC 2002" }, { 0x045e0402, "Windows Powered Pocket PC 2002" }, @@ -5980,6 +5992,7 @@ static const value_string usb_products_vals[] = { { 0x045e0800, "Wireless keyboard (All-in-One-Media)" }, { 0x045e0810, "LifeCam HD-3000" }, { 0x045e0823, "Classic IntelliMouse" }, + { 0x045e082a, "Pro Intellimouse" }, { 0x045e0900, "Surface Dock Hub" }, { 0x045e0901, "Surface Dock Hub" }, { 0x045e0902, "Surface Dock Hub" }, @@ -6535,10 +6548,10 @@ static const value_string usb_products_vals[] = { { 0x046dc52b, "Unifying Receiver" }, { 0x046dc52d, "R700 Remote Presenter receiver" }, { 0x046dc52e, "MK260 Wireless Combo Receiver" }, - { 0x046dc52f, "Unifying Receiver" }, + { 0x046dc52f, "Nano Receiver" }, { 0x046dc531, "C-U0007 [Unifying Receiver]" }, { 0x046dc532, "Unifying Receiver" }, - { 0x046dc534, "Unifying Receiver" }, + { 0x046dc534, "Nano Receiver" }, { 0x046dc537, "Cordless Mouse Receiver" }, { 0x046dc539, "Lightspeed Receiver" }, { 0x046dc53a, "PowerPlay Wireless Charging System" }, @@ -6942,6 +6955,7 @@ static const value_string usb_products_vals[] = { { 0x04835720, "Mass Storage Device" }, { 0x04835721, "Interrupt Demo" }, { 0x04835722, "Bulk Demo" }, + { 0x0483572a, "STM32F401 microcontroller [ARM Cortex M4] [CDC/ACM serial port]" }, { 0x04835730, "Audio Speaker" }, { 0x04835731, "Microphone" }, { 0x04835740, "Virtual COM Port" }, @@ -6980,7 +6994,7 @@ static const value_string usb_products_vals[] = { { 0x0489e07a, "Broadcom BCM20702A1 Bluetooth" }, { 0x0489e0c8, "MediaTek MT7921 Bluetooth" }, { 0x0489e0cd, "MediaTek Bluetooth Adapter" }, - { 0x0489e0d8, "Bluetooth Adapter" }, + { 0x0489e0d8, "Bluetooth 5.2 Adapter [MediaTek MT7922]" }, { 0x0489e111, "Foxconn (for Lenovo) IdeaTab A2109/A2110/Medion LIFETAB S9714" }, { 0x048d1165, "IT1165 Flash Controller" }, { 0x048d1172, "Flash Drive" }, @@ -8538,6 +8552,11 @@ static const value_string usb_products_vals[] = { { 0x04bf0320, "Bluetooth Adapter" }, { 0x04bf0321, "Bluetooth Device" }, { 0x04bf0a28, "INDI AV-IN Device" }, + { 0x04bf1301, "Network Controller" }, + { 0x04bf1302, "i3 Gateway" }, + { 0x04bf1303, "3 Micro Module" }, + { 0x04bf1304, "i3 Module" }, + { 0x04bf1305, "i3 Multi Sensing Module" }, { 0x04c10020, "56K Voice Pro" }, { 0x04c10022, "56K Voice Pro" }, { 0x04c1007e, "ISDN TA" }, @@ -8590,6 +8609,7 @@ static const value_string usb_products_vals[] = { { 0x04c8072c, "Revio KD20M" }, { 0x04c8072d, "Revio KD410Z" }, { 0x04ca0020, "USB Keyboard" }, + { 0x04ca003a, "Multimedia Keyboard" }, { 0x04ca004b, "Keyboard" }, { 0x04ca004f, "SK-9020 keyboard" }, { 0x04ca008a, "Acer Wired Mouse Model SM-9023" }, @@ -8763,6 +8783,7 @@ static const value_string usb_products_vals[] = { { 0x04cb02f0, "Fuji Fujifilm X-H2S" }, { 0x04cb02f2, "Fuji Fujifilm X-H2" }, { 0x04cb02fc, "Fuji Fujifilm X-T5" }, + { 0x04cb0305, "Fuji Fujifilm X100VI" }, { 0x04cb5006, "ASK-300" }, { 0x04cb5007, "DX100" }, { 0x04cc1122, "Hub" }, @@ -8857,6 +8878,7 @@ static const value_string usb_products_vals[] = { { 0x04d91400, "PS/2 keyboard + mouse controller" }, { 0x04d91503, "Keyboard" }, { 0x04d91603, "Keyboard" }, + { 0x04d91605, "Keyboard" }, { 0x04d91702, "Keyboard LKS02" }, { 0x04d91818, "Keyboard [Diatec Filco Majestouch 2]" }, { 0x04d92011, "Keyboard [Diatec Filco Majestouch 1]" }, @@ -9470,6 +9492,7 @@ static const value_string usb_products_vals[] = { { 0x04f2b681, "ThinkPad T490 Webcam" }, { 0x04f2b71a, "Integrated IR Camera" }, { 0x04f2b76b, "SunplusIT Inc [HP HD Camera]" }, + { 0x04f2b7b4, "Integrated Camera (1920x1080)" }, { 0x04f3000a, "Touchscreen" }, { 0x04f30103, "ActiveJet K-2024 Multimedia Keyboard" }, { 0x04f3016f, "Touchscreen" }, @@ -10081,6 +10104,8 @@ static const value_string usb_products_vals[] = { { 0x04fcffff, "PureDigital Ritz Disposable" }, { 0x04fd0003, "Smart Card Reader II" }, { 0x04fe0006, "Happy Hacking Keyboard Lite2" }, + { 0x04fe0020, "HHKB-Classic" }, + { 0x04fe0021, "Happy Hacking Keyboard Professional HYBRID Type-S" }, { 0x05000001, "DART Keyboard Mouse" }, { 0x05000002, "DART-2 Keyboard" }, { 0x05020001, "Handheld" }, @@ -10175,6 +10200,7 @@ static const value_string usb_products_vals[] = { { 0x050d0081, "F8T001v2 Bluetooth" }, { 0x050d0083, "Bluetooth Device" }, { 0x050d0084, "F8T003v2 Bluetooth" }, + { 0x050d008a, "6-in-1 Multiport Adapter" }, { 0x050d0102, "Flip KVM" }, { 0x050d0103, "F5U103 Serial Adapter [etek]" }, { 0x050d0106, "VideoBus II Adapter, Video" }, @@ -10620,6 +10646,7 @@ static const value_string usb_products_vals[] = { { 0x054c0568, "DSC-H100 in Mass Storage mode" }, { 0x054c0574, "Sony SLT-A65V" }, { 0x054c0577, "Sony SLT-A77V" }, + { 0x054c0579, "Sony NEX-5N" }, { 0x054c057d, "Sony NEX-7" }, { 0x054c059a, "Sony NWZ-B163F" }, { 0x054c05a6, "Sony NWZ-E464" }, @@ -10637,6 +10664,7 @@ static const value_string usb_products_vals[] = { { 0x054c0675, "Sony SLT-A99v" }, { 0x054c0678, "Sony NEX-6" }, { 0x054c0689, "Sony NWZ-B173F" }, + { 0x054c068c, "UP-D711" }, { 0x054c06a9, "Sony NWZ-E474" }, { 0x054c06ac, "Sony Xperia Tablet S - SGPT12" }, { 0x054c06bb, "WALKMAN NWZ-F805" }, @@ -11075,10 +11103,17 @@ static const value_string usb_products_vals[] = { { 0x056a03ac, "DTH-W1620 [MobileStudio Pro 16] touchscreen" }, { 0x056a03b2, "DTH167 [Cintiq Pro 16] tablet" }, { 0x056a03b3, "DTH167 [Cintiq Pro 16] touchscreen" }, + { 0x056a03c0, "DTH271 [Cintiq Pro 27] touchscreen" }, + { 0x056a03c4, "DTH172 [Cintiq Pro 17]" }, { 0x056a03c5, "CTL-4100WL [Intuos BT (S)]" }, { 0x056a03c7, "CTL-6100WL [Intuos BT (M)]" }, + { 0x056a03cb, "DTH134 [Wacom One 13] touchscreen" }, + { 0x056a03ce, "DTC121 [Wacom One 12] touchscreen" }, + { 0x056a03d0, "DTH227 [Cintiq Pro 22]" }, { 0x056a03dc, "PTH-460 [Intuos Pro (S)] tablet" }, { 0x056a03dd, "PTH-460 [Intuos Pro BT (S)] tablet" }, + { 0x056a03ec, "DTH134 [DTH134] touchscreen" }, + { 0x056a03ed, "DTC121 [DTC121] touchscreen" }, { 0x056a0400, "PenPartner 4x5" }, { 0x056a4001, "TPC4001" }, { 0x056a4004, "TPC4004" }, @@ -11095,19 +11130,22 @@ static const value_string usb_products_vals[] = { { 0x056d0002, "HID Monitor Controls" }, { 0x056d0003, "Device Bay Controller" }, { 0x056d4000, "FlexScan EV3237" }, - { 0x056d4001, "Monitor" }, - { 0x056d4002, "USB HID Monitor" }, + { 0x056d4001, "FlexScan EV2450" }, + { 0x056d4002, "FlexScan EV2455" }, { 0x056d4014, "FlexScan EV2750" }, { 0x056d4026, "FlexScan EV2451" }, { 0x056d4027, "FlexScan EV2456" }, + { 0x056d402b, "FlexScan EV2780" }, { 0x056d4036, "FlexScan EV2785" }, { 0x056d4037, "FlexScan EV3285" }, { 0x056d4044, "FlexScan EV2457" }, { 0x056d4059, "FlexScan EV2760" }, { 0x056d405a, "FlexScan EV2360" }, { 0x056d405b, "FlexScan EV2460" }, + { 0x056d405e, "FlexScan EV2495" }, { 0x056d405f, "FlexScan EV2795" }, { 0x056d4065, "FlexScan EV3895" }, + { 0x056d406a, "FlexScan EV2480" }, { 0x056e0002, "29UO Mouse" }, { 0x056e0057, "Micro Grast Pop M-PGDL" }, { 0x056e005c, "Micro Grast Pop M-PG2DL" }, @@ -11831,6 +11869,7 @@ static const value_string usb_products_vals[] = { { 0x059f1093, "Rugged" }, { 0x059f1094, "Rugged THB" }, { 0x059f1095, "Rugged" }, + { 0x059f1105, "Mobile Drive (RLSD: 2022)" }, { 0x059fa601, "HardDrive" }, { 0x059fa602, "CD R/W" }, { 0x05a38388, "Marvell 88W8388 802.11a/b/g WLAN" }, @@ -12595,6 +12634,7 @@ static const value_string usb_products_vals[] = { { 0x05e3f12a, "Digital Microscope" }, { 0x05e3fd21, "3M TL20 Temperature Logger" }, { 0x05e3fe00, "Razer Mouse" }, + { 0x05e63390, "3390 Arbitrary Waveform Generator" }, { 0x05e90008, "KL5KUSB101B Ethernet [klsi]" }, { 0x05e90009, "Sony 10Mbps Ethernet [pegasus]" }, { 0x05e9000c, "USB-to-RS-232" }, @@ -12744,6 +12784,8 @@ static const value_string usb_products_vals[] = { { 0x06380a41, "Avision AM3000/MF3000 Series" }, { 0x06380f01, "fi-4010CU" }, { 0x06384004, "Minolta Dimage Scan Elite II AF-2920 (2888)" }, + { 0x06397213, "CH7213" }, + { 0x06397231, "CH7213" }, { 0x06400026, "LPC-Stick" }, { 0x06440000, "Floppy" }, { 0x06440200, "All-In-One Multi-Card Reader CA200/B/S" }, @@ -13382,6 +13424,7 @@ static const value_string usb_products_vals[] = { { 0x06cb00bd, "Prometheus MIS Touch Fingerprint Reader" }, { 0x06cb00c7, "TouchPad" }, { 0x06cb00cb, "Fingerprint scanner" }, + { 0x06cb00fc, "Prometheus Fingerprint Reader" }, { 0x06cb0ac3, "Large Touch Screen" }, { 0x06cb2970, "touchpad" }, { 0x06cc0101, "Cable Modem" }, @@ -13436,7 +13479,9 @@ static const value_string usb_products_vals[] = { { 0x06d3038c, "CP900DW(ID) Port" }, { 0x06d30393, "CP9500D/DW Port" }, { 0x06d30394, "CP9000D/DW Port" }, + { 0x06d30395, "CP9000DW" }, { 0x06d30398, "P93D" }, + { 0x06d3039e, "CP9500DW-S" }, { 0x06d303a1, "CP9550D/DW Port" }, { 0x06d303a5, "CP9550DW-S" }, { 0x06d303a9, "CP-9600DW" }, @@ -13447,7 +13492,9 @@ static const value_string usb_products_vals[] = { { 0x06d30f10, "Hori/Namco FlightStick 2" }, { 0x06d321ba, "FOMA D905i" }, { 0x06d33b10, "P95D" }, + { 0x06d33b20, "CP9820DW Series" }, { 0x06d33b21, "CP-9810D/DW" }, + { 0x06d33b2f, "LS9820A" }, { 0x06d33b30, "CP-D70DW / CP-D707DW" }, { 0x06d33b31, "CP-K60DW-S" }, { 0x06d33b36, "CP-D80DW" }, @@ -14440,6 +14487,7 @@ static const value_string usb_products_vals[] = { { 0x07cec007, "DPB-4000" }, { 0x07cec009, "DPB-6000" }, { 0x07cec010, "CPB-7000" }, + { 0x07cec011, "ASK-2500" }, { 0x07cf1001, "QV-8000SX/5700/3000EX Digicam; Exilim EX-M20" }, { 0x07cf1003, "Exilim EX-S500" }, { 0x07cf1004, "Exilim EX-Z120" }, @@ -14549,8 +14597,11 @@ static const value_string usb_products_vals[] = { { 0x07fd0000, "FastLane MIDI Interface" }, { 0x07fd0001, "MIDI Interface" }, { 0x07fd0002, "MOTU Audio for 64 bit" }, - { 0x07fd0004, "MicroBook" }, + { 0x07fd0004, "Microbook I/II/IIc" }, { 0x07fd0008, "M Series" }, + { 0x07fd0009, "M Series (firmware update mode)" }, + { 0x07fd000b, "M Series" }, + { 0x07fd000d, "M Series (firmware update mode)" }, { 0x07ff00ff, "Portable Hard Drive" }, { 0x07ffffff, "Mad Catz Gamepad" }, { 0x08010001, "Mini Swipe Reader (Keyboard Emulation)" }, @@ -14589,6 +14640,7 @@ static const value_string usb_products_vals[] = { { 0x081edf00, "Handheld" }, { 0x081fe401, "gamepad" }, { 0x08222001, "IRXpress Infrared Device" }, + { 0x0828a003, "WS408 Label Printer" }, { 0x082d0100, "Visor" }, { 0x082d0200, "Treo" }, { 0x082d0300, "Treo 600" }, @@ -15111,6 +15163,12 @@ static const value_string usb_products_vals[] = { { 0x090804b2, "NC interface" }, { 0x090804b3, "keyboard front panel Cockpit" }, { 0x090804b4, "SCR_CCID" }, + { 0x090804b5, "Camera" }, + { 0x090804b6, "Cockpit Touchkeypad" }, + { 0x090804b7, "Cockpit Touchkeypad Bootloader" }, + { 0x090804b8, "MediSET USB4-W" }, + { 0x090804b9, "MediSET USB4-R" }, + { 0x090804ba, "MediSET USB4-G" }, { 0x09082701, "ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA" }, { 0x0909001b, "ATR2100-USB" }, { 0x0909001c, "AT2020USB+" }, @@ -15125,6 +15183,7 @@ static const value_string usb_products_vals[] = { { 0x090c037c, "300k Pixel Camera" }, { 0x090c1000, "Flash Drive" }, { 0x090c1132, "5-in-1 Card Reader" }, + { 0x090c2000, "Disk" }, { 0x090c337b, "Silicon Motion Camera" }, { 0x090c3710, "Silicon Motion Camera" }, { 0x090c3720, "Silicon Motion Camera" }, @@ -15239,6 +15298,7 @@ static const value_string usb_products_vals[] = { { 0x091e50a1, "Garmin Forerunner 265" }, { 0x091e50db, "Garmin Forerunner 965" }, { 0x091e5116, "Garmin Fenix 7s pro sapphire solar" }, + { 0x09205550, "U60 FT Network Interface" }, { 0x09207500, "Network Interface" }, { 0x09211001, "GoCOM232 Serial" }, { 0x09220007, "LabelWriter 330" }, @@ -15439,6 +15499,7 @@ static const value_string usb_products_vals[] = { { 0x0944010f, "nanoKONTROL studio controller" }, { 0x09440117, "nanoKONTROL2 MIDI Controller" }, { 0x0944012f, "SQ-1" }, + { 0x09440203, "KRONOS" }, { 0x09440f03, "K-Series K61P MIDI studio controller" }, { 0x09480301, "USB Pro (24/48)" }, { 0x09480302, "USB Pro (24/96 playback)" }, @@ -15504,6 +15565,8 @@ static const value_string usb_products_vals[] = { { 0x09557140, "T124 [Tegra K1/Logan 32-bit]" }, { 0x09557210, "SHIELD Controller" }, { 0x09557321, "Switch [Tegra Erista] recovery mode" }, + { 0x09557323, "T234 [Orin NX 16GB] recovery mode" }, + { 0x09557423, "T234 [Orin NX 8GB] recovery mode" }, { 0x09557721, "nVidia Jetson TX1" }, { 0x09557820, "T20 [Tegra 2] recovery mode" }, { 0x09557c18, "T186 [TX2 Tegra Parker] recovery mode" }, @@ -15516,13 +15579,18 @@ static const value_string usb_products_vals[] = { { 0x0955cf07, "nVidia Shield Tablet (MTP)" }, { 0x0955cf08, "SHIELD Tablet" }, { 0x0955cf09, "SHIELD Tablet" }, + { 0x09570007, "82357A GPIB Interface Firmware loader" }, + { 0x09570107, "82357A GPIB Interface" }, { 0x09570200, "E-Video DC-350 Camera" }, { 0x09570202, "E-Video DC-350 Camera" }, { 0x09570407, "33220A Waveform Generator" }, - { 0x09570518, "82357B GPIB Interface" }, + { 0x09570518, "82357B GPIB Interface Firmware loader" }, + { 0x09570607, "34410A Multimeter" }, + { 0x09570718, "82357B GPIB Interface" }, { 0x09570a07, "34411A Multimeter" }, { 0x09571507, "33210A Waveform Generator" }, { 0x09571745, "Test and Measurement Device (IVI)" }, + { 0x09571907, "53230A Frequency Counter" }, { 0x09571f01, "N5181A MXG Analog Signal Generator" }, { 0x09572918, "U2702A oscilloscope" }, { 0x0957fb18, "LC Device" }, @@ -15571,6 +15639,7 @@ static const value_string usb_products_vals[] = { { 0x099a6330, "SANWA Supply Inc. Slim Keyboard" }, { 0x099a713a, "WK-713 Multimedia Keyboard" }, { 0x099a7160, "Hyper Slim Keyboard" }, + { 0x099a7202, "Enermax Aurora Micro Wireless Receiver" }, { 0x09a68001, "Mass Storage Device" }, { 0x09aa1000, "Prism GT 802.11b/g Adapter" }, { 0x09aa3642, "Prism 2.x 802.11b Adapter" }, @@ -15628,12 +15697,15 @@ static const value_string usb_products_vals[] = { { 0x09d70100, "GPS/GNSS/SPAN sensor" }, { 0x09d80320, "TWN3 Multi125" }, { 0x09d80406, "TWN4 MIFARE NFC" }, + { 0x09d80410, "TWN4 HID" }, + { 0x09d80420, "TWN4 CDC" }, { 0x09da0006, "Optical Mouse WOP-35 / Trust 450L Optical Mouse" }, { 0x09da000a, "Optical Mouse Opto 510D / OP-620D" }, { 0x09da000e, "X-F710F Optical Mouse 3xFire Gaming Mouse" }, { 0x09da0018, "Trust Human Interface Device" }, { 0x09da001a, "Wireless Mouse & RXM-15 Receiver" }, { 0x09da002a, "Wireless Optical Mouse NB-30" }, + { 0x09da0103, "Oscar X-710BK Gaming Mouse" }, { 0x09da022b, "Wireless Mouse (Battery Free)" }, { 0x09da024f, "RF Receiver and G6-20D Wireless Optical Mouse" }, { 0x09da0260, "KV-300H Isolation Keyboard" }, @@ -15641,12 +15713,16 @@ static const value_string usb_products_vals[] = { { 0x09da09da, "Bloody V8 Mouse" }, { 0x09da1068, "Bloody A90 Mouse" }, { 0x09da112c, "Bloody V5 Mouse" }, + { 0x09da2268, "Keyboard (FK11)" }, + { 0x09da2690, "PK-635G" }, { 0x09da3a60, "Bloody V8M Core 2 Mouse" }, { 0x09da8090, "X-718BK Oscar Optical Gaming Mouse" }, { 0x09da9033, "X-718BK Optical Mouse" }, { 0x09da9066, "F3 V-Track Gaming Mouse" }, - { 0x09da9090, "XL-730K / XL-750BK / XL-755BK Mice" }, + { 0x09da9090, "XL-730K / XL-747H / XL-750BK / XL-755BK Mice" }, { 0x09daf613, "Bloody V7M Mouse" }, + { 0x09daf6cc, "B314 Light Strike Gaming Keyboard" }, + { 0x09dafa44, "B930 Light Strike RGB Mechanical Gaming Keyboard" }, { 0x09db0075, "MiniLab 1008" }, { 0x09db0076, "PMD-1024" }, { 0x09db007a, "PMD-1208LS" }, @@ -15654,11 +15730,13 @@ static const value_string usb_products_vals[] = { { 0x09db0082, "USB-1208FS" }, { 0x09db0088, "USB-1616FS internal hub" }, { 0x09e15121, "MicroLink dLAN" }, + { 0x09e80029, "APC40 mkII" }, { 0x09e80045, "MPK Mini Mk II MIDI Controller" }, { 0x09e80062, "MPD16 MIDI Pad Controller Unit" }, { 0x09e8006d, "EWI electronic wind instrument" }, { 0x09e80071, "MPK25 MIDI Keyboard" }, { 0x09e80076, "LPK25 MIDI Keyboard" }, + { 0x09e8007c, "MPK Mini MIDI Controller" }, { 0x09eb4331, "iRhythm Tuner Remote" }, { 0x09ef0101, "MD-Port DG2 MiniDisc Interface" }, { 0x09f30018, "GF-46 Multi-Mode Display Module" }, @@ -15702,6 +15780,9 @@ static const value_string usb_products_vals[] = { { 0x0a121010, "Bluetooth Device" }, { 0x0a121011, "Bluetooth Device" }, { 0x0a121012, "Bluetooth Device" }, + { 0x0a121243, "CSRA64210 [TaoTronics Headset BH-22 in charging mode]" }, + { 0x0a124007, "Mpow HC5 Headset in charging mode - HID / Mass Storage" }, + { 0x0a124010, "Mpow HC5 Headset in charging mode - USB Hub" }, { 0x0a12ffff, "USB Bluetooth Device in DFU State" }, { 0x0a161111, "ThumbDrive" }, { 0x0a168888, "IBM USB Memory Key" }, @@ -15835,6 +15916,7 @@ static const value_string usb_products_vals[] = { { 0x0a5c217f, "BCM2045B (BDC-2.1)" }, { 0x0a5c2198, "Bluetooth 3.0 Device" }, { 0x0a5c219b, "Bluetooth 2.1 Device" }, + { 0x0a5c219c, "BCM2070 Bluetooth" }, { 0x0a5c21b1, "HP Bluetooth Module" }, { 0x0a5c21b4, "BCM2070 Bluetooth 2.1 + EDR" }, { 0x0a5c21b9, "BCM2070 Bluetooth 2.1 + EDR" }, @@ -15858,6 +15940,7 @@ static const value_string usb_products_vals[] = { { 0x0a5c5802, "BCM5880 Secure Applications Processor with fingerprint touch sensor" }, { 0x0a5c5803, "BCM5880 Secure Applications Processor with secure keyboard" }, { 0x0a5c5804, "BCM5880 Secure Applications Processor with fingerprint swipe sensor" }, + { 0x0a5c5832, "BCM5880 Secure Applications Processor Smartcard reader" }, { 0x0a5c6300, "Pirelli Remote NDIS Device" }, { 0x0a5c6410, "BCM20703A1 Bluetooth 4.1 + LE" }, { 0x0a5cbd11, "BCM4320 802.11bg Wireless Adapter" }, @@ -23311,6 +23394,8 @@ static const value_string usb_products_vals[] = { { 0x20870b03, "Multi Touch Panel" }, { 0x20a00006, "flirc" }, { 0x20a04107, "GPF Crypto Stick V1.2" }, + { 0x20a04108, "Nitrokey Pro" }, + { 0x20a04109, "Nitrokey Storage" }, { 0x20a04123, "IKALOGIC SCANALOGIC 2" }, { 0x20a0414a, "MDE SPI Interface" }, { 0x20a0415a, "OpenPilot" }, @@ -23319,7 +23404,16 @@ static const value_string usb_products_vals[] = { { 0x20a041e5, "BlinkStick" }, { 0x20a04211, "Nitrokey Start" }, { 0x20a04223, "ATSAMD21 [castAR]" }, + { 0x20a04230, "Nitrokey HSM" }, + { 0x20a04287, "Nitrokey FIDO U2F" }, { 0x20a0428d, "Electrosense wideband converter" }, + { 0x20a042b1, "Nitrokey FIDO2" }, + { 0x20a042b2, "Nitrokey 3A Mini/3A NFC/3C NFC" }, + { 0x20a042b4, "Nitrokey Pro Bootloader" }, + { 0x20a042da, "MuteMe" }, + { 0x20a042dd, "Nitrokey 3A NFC Bootloader/3C NFC Bootloader" }, + { 0x20a042e8, "Nitrokey 3A Mini Bootloader" }, + { 0x20a042ec, "RP2040 [PicoWifi]" }, { 0x20b110ad, "XUSB Loader" }, { 0x20b1f7d1, "XTAG2 - JTAG Adapter" }, { 0x20b30a18, "10.1 Touch screen overlay" }, @@ -23950,7 +24044,7 @@ static const value_string usb_products_vals[] = { { 0x25784168, "2.4GHZ Wireless Arc Folding Mouse" }, { 0x25811807, "Generic HID Smartcard" }, { 0x25811808, "WinUSB Smartcard" }, - { 0x2581f1d0, "FIDO U2F Security Key" }, + { 0x2581f1d0, "Nitrokey U2F" }, { 0x25a72410, "Laser mouse" }, { 0x25a7fa23, "2.4G Receiver" }, { 0x25a7fa61, "Elecom Co., Ltd MR-K013 Multicard Reader" }, @@ -24665,6 +24759,7 @@ static const value_string usb_products_vals[] = { { 0x33840000, "Thelio Io (thelio-io)" }, { 0x33840001, "Launch Configurable Keyboard (launch_1)" }, { 0x339b107d, "Honor X8/X9 5G" }, + { 0x33a20136, "Olympus OM-1MarkII" }, { 0x348f2322, "Wireless Presenter" }, { 0x3504f110, "Security Key" }, { 0x35380001, "Travel Flash" }, diff --git a/epan/enterprises.c b/epan/enterprises.c index b6ef8f77..ec8cd0a0 100644 --- a/epan/enterprises.c +++ b/epan/enterprises.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ -/* (last updated 2023-12-26) */ +/* (last updated 2024-03-22) */ #include "config.h" @@ -19,12 +19,12 @@ typedef struct { uint32_t max_idx; - const char* values[61328]; + const char* values[61692]; } global_enterprises_table_t; static global_enterprises_table_t table = { - 61327, + 61691, { "Reserved", // 0 "NxNetworks", // 1 @@ -3024,7 +3024,7 @@ static global_enterprises_table_t table = "AcuComm, Inc.", // 2995 "SpectraWorks Inc.", // 2996 "RedTitan", // 2997 - "Anderson Consulting", // 2998 + "Wire-Tap, Inc.", // 2998 "American Family Insurance", // 2999 "IDB Systems, a Division of WorldCom Inc.", // 3000 "BAILO", // 3001 @@ -3371,7 +3371,7 @@ static global_enterprises_table_t table = "MachOne Communications Inc.", // 3342 "Philips Digital Video Systems Harry", // 3343 "Helsinki Televisio Oy", // 3344 - "Nemetschek AG", // 3345 + "Nemetschek SE", // 3345 "Vocom", // 3346 "Hitachi Kokusai Electric Inc.", // 3347 "Reliable Network Solutions", // 3348 @@ -3422,7 +3422,7 @@ static global_enterprises_table_t table = "SandS International", // 3393 "NeTrue Communications", // 3394 "Certicom Corp.", // 3395 - "DICOS GmbH Kommunikationssysteme Stephan", // 3396 + "DICOS GmbH Kommunikationssysteme", // 3396 "Border Blues Productions", // 3397 "Fieldbus Foundation", // 3398 "Olencom Electronics Ltd.", // 3399 @@ -11176,7 +11176,7 @@ static global_enterprises_table_t table = "SVTO Hewlett-Packard", // 11147 "Swan Systems", // 11148 "TI, d.o.o.", // 11149 - "Roamware Inc.", // 11150 + "Mobileum Inc.", // 11150 "Urschel Laboratories Incorporated", // 11151 "Vocalcom", // 11152 "WebWear", // 11153 @@ -13747,7 +13747,7 @@ static global_enterprises_table_t table = "CCITRIAD", // 13718 "CEGETEL SI", // 13719 "CoreMedia AG", // 13720 - "Corning Cable Systems", // 13721 + "Corning Optical Communications", // 13721 "deot.net", // 13722 "Division of BITL", // 13723 "Erasmus University Rotterdam", // 13724 @@ -14158,7 +14158,7 @@ static global_enterprises_table_t table = "Sevan Networks, Inc.", // 14129 "Bifco", // 14130 "Ifoundry Systems", // 14131 - "CS Systemes d'Information", // 14132 + "CS GROUP", // 14132 "Buergernetz Weihenstephan e.V.", // 14133 "University of Szeged", // 14134 "SysDM", // 14135 @@ -22248,7 +22248,7 @@ static global_enterprises_table_t table = "BoreNet AB", // 22219 "LACNIC", // 22220 "Wescom GmbH", // 22221 - "ProaXial", // 22222 + "Gericos", // 22222 "IntelliCal LLC", // 22223 "Queensland Treasury", // 22224 "Huazhong University of Science and Technology", // 22225 @@ -22413,7 +22413,7 @@ static global_enterprises_table_t table = "Benedikt Heinen", // 22384 "Houston Academy of Medicine-Texas Medical Center Library", // 22385 "ionflux.org", // 22386 - "InSync Technology Ltd", // 22387 + "InSync Technology Limited", // 22387 "SENTELCO", // 22388 "IRIS Corporation Berhad", // 22389 "Parsek Corporation Ltd.", // 22390 @@ -23809,7 +23809,7 @@ static global_enterprises_table_t table = "Prose Consulting Ltd.", // 23780 "Albertslund Ungdomsboliger", // 23781 "ASN", // 23782 - "iTellus Holdings, Inc.", // 23783 + "Planet Networks, Inc.", // 23783 "StrataLight Communications", // 23784 "CIC/CAFMICRO", // 23785 "DS DATA SYSTEMS GmbH", // 23786 @@ -25149,7 +25149,7 @@ static global_enterprises_table_t table = "SAGUAPAC", // 25120 "Temex Sync", // 25121 "Hauk & Sasko GmbH", // 25122 - "Barco Orthogon GmbH", // 25123 + "Frequentis Orthogon GmbH", // 25123 "Trade-On-Technology Holdings", // 25124 "ALWIL Software", // 25125 "Jackson State University", // 25126 @@ -28000,7 +28000,7 @@ static global_enterprises_table_t table = "China Infosec Technologies Co.,Ltd.", // 27971 "Mac Papers, Inc.", // 27972 "Open Finance, LLC", // 27973 - "MCS GROUPE", // 27974 + "PONTILLO.EU", // 27974 "Centec Networks Inc.", // 27975 "GEO CONCEPT SA", // 27976 "Genex", // 27977 @@ -30522,7 +30522,7 @@ static global_enterprises_table_t table = "Digitek spa", // 30493 "Microlink Telecom", // 30494 "RoundTrip Systems", // 30495 - "E-Smart Systems d.o.o.", // 30496 + "E-Smart Systems d.o.o. Beograd", // 30496 "Beijing EaseSea Interman Technology Co.,", // 30497 "AeroScout", // 30498 "Design 2000 Pvt Ltd", // 30499 @@ -33158,7 +33158,7 @@ static global_enterprises_table_t table = "ENTEREST GmbH", // 33129 "Virtual Instruments Corporation", // 33130 "Drexel University", // 33131 - "Lichti² GbR", // 33132 + "Kaiserpfalz EDV-Service", // 33132 "Daedalus Software, Inc.", // 33133 "LS ELECTRIC Co.,Ltd.", // 33134 "PeakSystems", // 33135 @@ -43776,7 +43776,7 @@ static global_enterprises_table_t table = "MaterialApps", // 43747 "ARES Conocimiento de Negocio, SL", // 43748 "Country Bright Company Ltd.", // 43749 - "Jabil Circuit, Inc", // 43750 + "Jabil Inc", // 43750 "Shenzhen TG-NET Botone Technology CO. Ltd.", // 43751 "China Film Equipment Co. Ltd.", // 43752 "Kyriasis", // 43753 @@ -44072,7 +44072,7 @@ static global_enterprises_table_t table = "BSG-IT Kft.", // 44043 "SETCCE", // 44044 "Dos al Cubo", // 44045 - "POK Power of Knowledge", // 44046 + "POK AG Schweiz", // 44046 "Schreiber Foods Inc", // 44047 "Instytut Hodowli i Aklimatyzacji Roslin - Panstwowy Instytut Badawczy", // 44048 "Cloud2Ground Technologies Div. Digital Multimedia, LLC", // 44049 @@ -45763,7 +45763,7 @@ static global_enterprises_table_t table = "STARNET s.r.o.", // 45734 "easyset", // 45735 "Utilisoft Ltd", // 45736 - "shah-network.com", // 45737 + "brokentech.ca", // 45737 "Aspirational Cognition LLC", // 45738 "winfonet.eu", // 45739 "Cirrus Identity, Inc", // 45740 @@ -48528,7 +48528,7 @@ static global_enterprises_table_t table = "inovex GmbH", // 48499 "Ventilatorenfabrik Oelde GmbH", // 48500 "Wilmers Messtechnik GmbH", // 48501 - "Startups, Inc.", // 48502 + "Startups Venture", // 48502 "Magrathea Laboratories e.V.", // 48503 "Pulselight Inc", // 48504 "AI2Co", // 48505 @@ -48587,7 +48587,7 @@ static global_enterprises_table_t table = "Trinity Grammar School", // 48558 "Rosenberger Technologies Co., Ltd.", // 48559 "Almnäs Bruk AB", // 48560 - "Ahlstrom-Munksjö AB", // 48561 + "Ahlstrom Group", // 48561 "KENDRIS AG", // 48562 "ANEXIA Internetdienstleistungs GmbH", // 48563 "Autoland Deutschland Inh. Wilfried Wilhelm Anclam, e. K.", // 48564 @@ -49040,7 +49040,7 @@ static global_enterprises_table_t table = "Tanium Inc.", // 49011 "Indasys", // 49012 "Choice Cancer Care", // 49013 - "Sörmlands Printing Solutions AB", // 49014 + "Stibo Complete AB", // 49014 "HEXBITS TECNOLOGIA LTDA", // 49015 "Build Informed GmbH", // 49016 "Yukoo Limited", // 49017 @@ -49821,7 +49821,7 @@ static global_enterprises_table_t table = "HDS a.s.", // 49792 "Persson Invest skog AB", // 49793 "M2MSOFT", // 49794 - "Navitel", // 49795 + "Navitel sp. z o.o.", // 49795 "ARH Inc.", // 49796 "RideOnTrack", // 49797 "BVZ Holding AG", // 49798 @@ -50650,7 +50650,7 @@ static global_enterprises_table_t table = "Golage Inc", // 50621 "EQS Group AG", // 50622 "South Jersey Industries", // 50623 - "Hill-Rom, Inc.", // 50624 + "Baxter Healthcare Products", // 50624 "Agari Data, Inc.", // 50625 "Concentric Media Sdn Bhd", // 50626 "Rosenberger Hochfrequenztechnik GmbH & Co KG", // 50627 @@ -50756,7 +50756,7 @@ static global_enterprises_table_t table = "Civil Aviation University of China", // 50727 "Nemon", // 50728 "Stichting Groningen Groningen Declaration Network", // 50729 - "TELCAT MULTICOM GmbH", // 50730 + "Salzgitter Digital Solutions GmbH", // 50730 "NAES Corporation", // 50731 "HIAG Data", // 50732 "bluebyteIT Sven Treiber", // 50733 @@ -53619,7 +53619,7 @@ static global_enterprises_table_t table = "Eastone Century Technology Co,.Ltd.", // 53590 "TERAPRO", // 53591 "K M B systems, s.r.o.", // 53592 - "Highways England", // 53593 + "National Highways", // 53593 "Protocol Labs", // 53594 "Lookback Inc", // 53595 "Cumulus Cloud Software and Consulting", // 53596 @@ -54533,7 +54533,7 @@ static global_enterprises_table_t table = "Warsaw University of Technology", // 54504 "Transcelestial Technologies PTE LTD", // 54505 "Intereuropa d.d.", // 54506 - "IdeaData", // 54507 + "CySight", // 54507 "Deutsche Telekom - Access 4.0", // 54508 "iCE - Intelligent Controlled Environments", // 54509 "Noscendo GmbH", // 54510 @@ -56062,7 +56062,7 @@ static global_enterprises_table_t table = "Die Autobahn GmbH des Bundes", // 56033 "ALS Laboratory Group", // 56034 "GALDERMA S.A.", // 56035 - "Gentlent, Inc.", // 56036 + "Gentlent UG (haftungsbeschränkt)", // 56036 "Argo AI", // 56037 "Nroad", // 56038 "Bold City Tech", // 56039 @@ -56329,7 +56329,7 @@ static global_enterprises_table_t table = "STAUFEN.AG", // 56300 "IOIT", // 56301 "Narodni agentura pro komunikacni a informacni technologie, s. p.", // 56302 - "marcusfolkesson", // 56303 + "MFOConsulting AB", // 56303 "Infrastructures Technologiques Quebec", // 56304 "ParaFlare Pty Ltd", // 56305 "Centro Oncológico Figueroa-Cabrera", // 56306 @@ -57786,7 +57786,7 @@ static global_enterprises_table_t table = "MOST", // 57757 "Stadtverwaltung Burgdorf", // 57758 "Sam Brittingham", // 57759 - "Big Boy Entertainment", // 57760 + "Awesomentertainment", // 57760 "VSENS", // 57761 "Kowloonbia International Limited", // 57762 "Vollmergruppe", // 57763 @@ -58360,7 +58360,7 @@ static global_enterprises_table_t table = "Three Z Printing", // 58331 "Eagle's Flight", // 58332 "T Pieters", // 58333 - "GEWIS", // 58334 + "Gemeenschap van Wiskunde en Informatica Studenten (GEWIS)", // 58334 "Capitol Broadcasting Company", // 58335 "Tekkgear", // 58336 "runZero, Inc", // 58337 @@ -58749,7 +58749,7 @@ static global_enterprises_table_t table = "Orthopedic and Sports Medicine Specialist of Green Bay, SC", // 58720 "it-economics GmbH", // 58721 "Maximilian Kapra", // 58722 - "Shanghai AssembleAuth Coroutine Technology Co., Ltd", // 58723 + "TrusAuth Inc", // 58723 "Monban Project", // 58724 NULL, // 58725 "CIS", // 58726 @@ -59202,7 +59202,7 @@ static global_enterprises_table_t table = "CSL Dualcom Ltd", // 59173 "Primoris Services Corporation", // 59174 "Azdio", // 59175 - "PowerLerder Computer Systems Co., LTD", // 59176 + "PowerLeader Computer Systems Co., LTD", // 59176 "Asio", // 59177 "Indiana Foot & Ankle Specialists LLC", // 59178 "USSOCOM", // 59179 @@ -60374,7 +60374,7 @@ static global_enterprises_table_t table = "Open industrial PKI", // 60345 "Voelkl Sports GmbH", // 60346 "Lutech SpA", // 60347 - "Aretiico PLC", // 60348 + "Aretiico Group PLC", // 60348 "Barbaros Catkan", // 60349 "Settels Savenije Group of Companies", // 60350 "ITSEC RND MICHAŁ LESZCZYŃSKI", // 60351 @@ -60759,7 +60759,7 @@ static global_enterprises_table_t table = "Georg Roth Stiftung & Co. Lebensmittelfilialbetrieb KG", // 60730 "RationalCore LLC", // 60731 "Sigenergy", // 60732 - "Hanwha solutions, SW development center", // 60733 + "Hanwha Solutions Corporation, SW development center", // 60733 "Callisto Inc.", // 60734 "Procono, S.A.", // 60735 "Curtis Vaughn Thompson © The Edinburgh Originale -O.E. ™", // 60736 @@ -61108,7 +61108,7 @@ static global_enterprises_table_t table = "RUAG AG", // 61079 "Lemon Network Technology Co.,Ltd", // 61080 "DsNetwork", // 61081 - "Klavis Kripta Inovasi", // 61082 + "Klavis Kripta", // 61082 "Marcel Metzen", // 61083 "Cleverbase", // 61084 "Terra Sound", // 61085 @@ -61353,7 +61353,371 @@ static global_enterprises_table_t table = "feibra GmbH", // 61324 "Vid vitenskapelige høgskole", // 61325 "Mikroszerviz SP Ltd", // 61326 - "CSConsult" // 61327 + "CSConsult", // 61327 + "Robinson Lighting Ltd", // 61328 + "People's Technology Co., Ltd.", // 61329 + "Janelle Lynette Guidry", // 61330 + "Forgital Italy S.p.A.", // 61331 + "Research Institute for Road Safety of MPS", // 61332 + "Shenzhen Goodtime Technology Co. ,Ltd", // 61333 + "Cryptob3auty", // 61334 + "Michael C Pergolese", // 61335 + "RASEKO", // 61336 + "BrainGu", // 61337 + "EFit partners", // 61338 + "VTech Telecommunications Limited", // 61339 + "VB-Tech", // 61340 + "Ideal Credit Union", // 61341 + "Mote Enterprises Inc.", // 61342 + "iTran", // 61343 + "Juel Group", // 61344 + "Marshall Health Network", // 61345 + "LLC «P C Most»", // 61346 + "Kirill Sluzhaev", // 61347 + "Limited Liability Company ""Thunder Soft""", // 61348 + "北京中科恒伦科技有限公司 (Beijing Zhongke Henglun Technology Co., Ltd.)", // 61349 + "SMARTGEN(ZHENGZHOU) TECHNOLOGY CO.,LTD", // 61350 + "Telekomi Kosoves", // 61351 + "Parta Networks", // 61352 + "Polar Wind Medical Center, Inc.", // 61353 + "Blackbaud Global", // 61354 + "SHANDONG LURUAN DIGITAL TECHNOLOGY CO., LTD. SMART ENERGY BRANCH", // 61355 + "NOSSAMAN LLP", // 61356 + "Cobram Anglican Grammar School", // 61357 + "Hochschule für Grafik und Buchkunst Leipzig", // 61358 + "Private Tech, Inc", // 61359 + "Ediciones Kimün SpA", // 61360 + "Mental Health Innovation SpA", // 61361 + "Partner-ed Colaborativa SpA", // 61362 + "Health-ed SpA", // 61363 + "Corporación de Derecho Privado I`+DEA", // 61364 + "HONGTAO", // 61365 + "Tung You Yu", // 61366 + "Big Ticket Solutions LLC", // 61367 + "Subledger", // 61368 + "CV Bilişim Teknoloji Ticaret Ltd.", // 61369 + "Big Geek Computer Sales and Service", // 61370 + "BAW SAS", // 61371 + "Fritz Kübler GmbH", // 61372 + "JetStream Software Inc.", // 61373 + "spaixx AG", // 61374 + "learnitlessons.com", // 61375 + "IT-Consulting Kinner", // 61376 + "Ningbo Deye Inverter Technology Co., Ltd.", // 61377 + "Chinese Army Factory No. 6909", // 61378 + "Appleby Westward Group Limited", // 61379 + "Vitamin IT Limited", // 61380 + "Clipsal Cortex", // 61381 + "Squirrel Energy Pty Ltd", // 61382 + "Jeremy D. Pavleck", // 61383 + "SWARCO FUTURIT Verkehrssignalsysteme Ges.m.b.H", // 61384 + "Dongdong Wen", // 61385 + "ELIM Co., Ltd", // 61386 + "Verbandsgemeindeverwaltung Vallendar", // 61387 + "Sinai Health System", // 61388 + "Wesley College", // 61389 + "ANSART B.V.", // 61390 + "NEXT TELEKOM", // 61391 + "Estado Maior das Forças Armadas", // 61392 + "Goosnet", // 61393 + "iDCmini", // 61394 + "UNIVERSAL INFORMATION SYSTEM TECHNOLOGIES LAB", // 61395 + "Avernis Communications GmbH", // 61396 + "Brett Eisenberg", // 61397 + "Wohler Technologies Inc.", // 61398 + "SIGENERGY AUSTRALIA PTY LTD", // 61399 + "CPI International, Inc.", // 61400 + "Family Walk In Clinic of Mountain Grove Inc", // 61401 + "Raw TV Ltd", // 61402 + "Nursyafiqah Mohdfaudzi", // 61403 + "ABB Robotics", // 61404 + "Universitätsklinikum Erlangen Gebäudeleittechnik", // 61405 + "TOOSIGN", // 61406 + "MULTITECH ENGINEERING LLC", // 61407 + "Kompas", // 61408 + "Bavarian Centre for Families and Social Affairs (ZBFS)", // 61409 + "Name Start", // 61410 + "GVTel Co. Ltd.", // 61411 + "John Dowling", // 61412 + "EPRI", // 61413 + "Innspark Solutions Private Limited", // 61414 + "ZASP", // 61415 + "SINET", // 61416 + "Emerald", // 61417 + "Emerald.local", // 61418 + "The Based Department", // 61419 + "Capricorn Identity Services Private Limited.", // 61420 + "Plantynet", // 61421 + "OPSWAT INC.", // 61422 + "BioComputing UP", // 61423 + "D&D Nilsson AB", // 61424 + "Xtend Technologies Pvt. Ltd.", // 61425 + "Salzburger Sand- und Kieswerk GmbH", // 61426 + "Synthesis Health Intelligence Inc.", // 61427 + "AGILTECH", // 61428 + "Xi'an THRN Technology Co., Ltd", // 61429 + "Powerex Corp.", // 61430 + "Woolworths Group", // 61431 + "Selectronic Australia Pty Ltd", // 61432 + "HydroExceed GmbH", // 61433 + "Product Marketing Service LLC", // 61434 + "BY Kalim", // 61435 + "Tessenderlo Kerley Inc.", // 61436 + "State of Nevada", // 61437 + "Sierra Vista Hospital", // 61438 + "Meade's PC Repair Shop, Inc.", // 61439 + "Basalt AB", // 61440 + "TELETECNICA s.r.l.", // 61441 + "Netgroot Infotech Private Limited", // 61442 + "CommuniGate Software Development & Licensing SA", // 61443 + "IMESO-IT GmbH", // 61444 + "Siemens SI GSW IT GC RAIL", // 61445 + "PT Bank Jago Tbk", // 61446 + "Shenzhen Beilai Technology Co.,Ltd.", // 61447 + "Ooredoo Oman", // 61448 + "Zesp", // 61449 + "AGENCE FRANCAISE DE DEVELOPPEMENT (AFD)", // 61450 + "Schloss Tempelhof eG", // 61451 + "Paul Hagedorn", // 61452 + "Cybernop, LLC", // 61453 + "Shawna Odom-Burgower", // 61454 + "Leonardo (Digital Platform)", // 61455 + "Inferno Communications", // 61456 + "Marcelo Augusto Garbuli", // 61457 + "Northern Schools Trust", // 61458 + "天磊卫士(深圳)科技有限公司 (Tianlei Guardian (Shenzhen) Technology Co., Ltd.)", // 61459 + "PT Sentra Vidya Utama", // 61460 + "Excellent Entertainment AG", // 61461 + "4Links", // 61462 + "Zühlke Engineering AG", // 61463 + "De Vaere Solutions", // 61464 + "Armstrong Equipment, Inc", // 61465 + "Connecticut Criminal Justice Information System Governing Board", // 61466 + "Roland Rechtsschutz Versicherungs AG", // 61467 + "Mobius Networks Limited", // 61468 + "Lagardere Travel Retail sp. z o.o.", // 61469 + "LXDEV Technologies", // 61470 + "Conexys S.R.L.", // 61471 + "Swistec GmbH", // 61472 + "Alliance Transport Bois", // 61473 + "Mthokozisi", // 61474 + "Shenzhen Eybond Co., Ltd", // 61475 + "Götalands Logistik & Transport AB", // 61476 + "Marcelo Estriga", // 61477 + "Blep.cz, z. s.", // 61478 + "Euro-Alkohol GmbH", // 61479 + "BRUNATA Wärmemesser Hagen GmbH & Co. KG", // 61480 + "idesis GmbH", // 61481 + "Amica Senior Lifestyles", // 61482 + "Pirelli Tyre Russia", // 61483 + "Daniel Fisher", // 61484 + "Enet Dev", // 61485 + "Evgeny Leontyev", // 61486 + "宁波市商沃通信科技有限公司 (Ningbo Shangwo Communication Technology Co., Ltd.)", // 61487 + "NotalVision, Inc.", // 61488 + "SGNT - Sibneftetransproekt", // 61489 + "Integrated Technical Vision Ltd.", // 61490 + "Akleza", // 61491 + "Energy Development Corporation Limited", // 61492 + "Aviler SARL", // 61493 + "MWZCONNECT LLC", // 61494 + "Festival de Cannes", // 61495 + "Aleksandr Loktev", // 61496 + "Conor DeCamp", // 61497 + "RWB PrivateCapital Emissionshaus AG", // 61498 + "steute Technologies GmbH & Co. KG", // 61499 + "APL Red Team", // 61500 + "Malayan Banking Berhad", // 61501 + "Stadt Nuernberg", // 61502 + "Delta, LLC", // 61503 + "PT. Satata Neka Tama", // 61504 + "Glier's Meats, Inc.", // 61505 + "Popli Design Group", // 61506 + "Armstrong Group International, Inc", // 61507 + "IdentiTek sh.a", // 61508 + "no42.org", // 61509 + "Oficiul National al Registrului Comertului", // 61510 + "J.H. Bennett & Company, Inc.", // 61511 + "Crump Homelab", // 61512 + "SondeHub", // 61513 + "Valley Metro", // 61514 + "Xian Stannard", // 61515 + "CooperVision Specialty Eyecare", // 61516 + "Digit'Eaux", // 61517 + "Tout Pareil Corp.", // 61518 + "TDK Sensors AG & Co. KG", // 61519 + "Abbott LLC", // 61520 + "llang.at - IT-Dienstleistungen", // 61521 + "Perryton Equity Exchange", // 61522 + "EQUIRON", // 61523 + "Research and Production Association named after A.S. Popov", // 61524 + "Darletto", // 61525 + "Dmitry Vorobiev", // 61526 + "Alexander R Craven", // 61527 + "MOORNET SOLUTIONS LLC", // 61528 + "REC SYSTEM co.,ltd", // 61529 + "G & X Services", // 61530 + "Layer9.space", // 61531 + "ServerStep Technology", // 61532 + "ComroeStudios LLC", // 61533 + "Envirovision Solutions Systems", // 61534 + "Groupe Hospitalier Nord-Essonne", // 61535 + "Polyphony", // 61536 + "BAE Systems Air Sector (TEST)", // 61537 + "Brookhaven Surgical Services, PC D/B/A MY Health Long Island Frank Sconzo MD", // 61538 + "Bidwells LLP", // 61539 + "Flowbix", // 61540 + "Anton Luka Šijanec", // 61541 + "Danilo Klug", // 61542 + "Isfahan University", // 61543 + "Flick Gocke Schaumburg Partnerschaft mbB", // 61544 + "Shanghai Yunsilicon Technology Co.,Ltd.", // 61545 + "MATTR LIMITED", // 61546 + "INNIO Jenbacher GmbH & Co OG", // 61547 + "Schwarz Produktion Stiftung & Co. KG - SPW Papier", // 61548 + "Sierra Management Services", // 61549 + "Kyle Ellis", // 61550 + "Equinox Power Innovations Inc", // 61551 + "ABSULT-Group", // 61552 + "Lindinger IT-Services KG", // 61553 + "Kosmos Infrastructure Foundation", // 61554 + "HYCU Support Lab (support.hycu.work)", // 61555 + "Rail Safety Systems Pty Ltd", // 61556 + "Futurex Inc.", // 61557 + "Viana & Dias", // 61558 + "Sweetondale LLC", // 61559 + "Muon Space, Inc.", // 61560 + "Thomas Ford Roofing Inc", // 61561 + "Cisco Flex Platform", // 61562 + "EnerSys Sp. z o.o.", // 61563 + "nexo-standards", // 61564 + "flucon fluid control GmbH", // 61565 + "VAV Versicherungs AG", // 61566 + "Sydostskog AB", // 61567 + "Shanghai Pingbo Info & Tech Ltd.", // 61568 + "Matthew Gardner", // 61569 + "Bence Skorka", // 61570 + "Asseco SEE d.o.o Beograd", // 61571 + "BNGSOFT ltd.", // 61572 + "Code Fox", // 61573 + "Stadt Troisdorf", // 61574 + "Hylte Paper AB", // 61575 + "Exportkreditnämnden", // 61576 + "Coastal Enterprises, Inc.", // 61577 + "Linknat.com", // 61578 + "TBC Kredit", // 61579 + "GIRASOL PE S.R.L", // 61580 + "Hangzhou Huite Technology CO.,Ltd", // 61581 + "RedEarth Energy Storage Pty Ltd", // 61582 + "Telenor Pakistan", // 61583 + "MAPAL Dr. Kress KG", // 61584 + "Apollo Infoways PVT LTD", // 61585 + "Kumi Systems e.U.", // 61586 + "David Emett", // 61587 + "EKSELANS by ITS · ITS PARTNER O.B.S. S.L.", // 61588 + "Tii Technologies Inc.", // 61589 + "TrusAuth Inc", // 61590 + "JKiene", // 61591 + "GSW Frankfurt GmbH", // 61592 + "Apollo Care", // 61593 + "Hartono Consulting", // 61594 + "AISWEI PTY LTD", // 61595 + "Exail Aerospace", // 61596 + "Overseas Family School", // 61597 + "Wavetel Technology Limited", // 61598 + "Benjamin Parzella", // 61599 + "Lion Energy", // 61600 + "Aurora Innovation, Inc.", // 61601 + "EHOOME IOT PRIVATE LIMITED", // 61602 + "Bundesanzeiger Verlag GmbH", // 61603 + "Raytheon UK", // 61604 + "Amdocs IOT", // 61605 + "Tosee Enteghal Dade Aryan (TED Aryan)", // 61606 + "Rolls-Royce Solutions GmbH", // 61607 + "Stichting Esdégé-Reigersdaal", // 61608 + "System Admins ApS", // 61609 + "Firda", // 61610 + "KYLink", // 61611 + "Beijing 3CAVI Tech Co.,Ltd", // 61612 + "Trophy Fish Outdoors", // 61613 + "La MicroMega Srl", // 61614 + "Thomas Blome", // 61615 + "EUROCOLOR Sp. z o.o.", // 61616 + "Zipit Wireless, Inc.", // 61617 + "PPDAC LTD", // 61618 + "AGGRECOST OF NORTH AMERICA BENEFIT CORP", // 61619 + "BYLT OF NORTH AMERICA BENEFIT CORP", // 61620 + "xD OF NORTH AMERICA BENEFIT CORP", // 61621 + "Beep Telecommunications & Computing Ltd.", // 61622 + "Grundio cPlc.", // 61623 + "Two Degrees Mobile", // 61624 + "Phrygian Solutions", // 61625 + "Asmo Advanced Logistics Services Co.", // 61626 + "Studierendenwerk Bremen AöR", // 61627 + "Staatliche Hochschule für Musik und Darstellende Kunst Mannheim", // 61628 + "上海鑫融网络科技股份有限公司 (Shanghai Xinrong Network Technology Co., Ltd.)", // 61629 + "Everfox Holdings LLC", // 61630 + "Ibermutua, Mutua Colaboradora con la Seguridad Social nº 274", // 61631 + "Westnetz GmbH", // 61632 + "Alysse Gapsis", // 61633 + "Cooley LLP", // 61634 + "Tårnby Kommune", // 61635 + "U.T.E. Electronic GmbH & Co. KG", // 61636 + "eSystems MTG GmbH", // 61637 + "Mecc Alte SPA", // 61638 + "Metal Service Center Sp. z o. o.", // 61639 + "SIPEARL SAS", // 61640 + "Resource Management Associates, Inc.", // 61641 + "Honeybadger Industries", // 61642 + "Provide Datenverarbeitung GmbH", // 61643 + "Lunner.Kommune.no", // 61644 + "Dyagsys Karya Informatika", // 61645 + "Région Réunion", // 61646 + "Fractal Energy Pty Ltd", // 61647 + "Norcal Ambulance", // 61648 + "Citykinect Inc", // 61649 + "Semco Maritime A/S", // 61650 + "PA Technology Solutions Limited", // 61651 + "America's First Responders Network", // 61652 + "DDL-Engineering", // 61653 + "Digitaltomass", // 61654 + "CV TRENINDO CIPTA MANDIRI", // 61655 + "Information Softworks., Inc", // 61656 + "ArtiVisi Intermedia", // 61657 + "Equalx Technologies Private Limited", // 61658 + "xk-image", // 61659 + "PrecisionX Technology LLC", // 61660 + "AISWEI Technology Co., Ltd.", // 61661 + "Community Health & Emergency Services Inc.", // 61662 + "Monolit IT Sp. z o.o.", // 61663 + "Etihad Etisalat Company (Mobily)", // 61664 + "Aleko Embedded", // 61665 + "Tunstall Systems", // 61666 + "Anastasios Mavrommatis - IT Lösungen", // 61667 + "PT Sinar Baru Rajawali", // 61668 + "Noark Australia Pty Ltd", // 61669 + "OneTv S.r.l.", // 61670 + "Gemeinnützige Industrie- Wohnungsaktiengesellschaft", // 61671 + "Creative Liquid Coatings", // 61672 + "Concrete Genius Manufacturing Inc.", // 61673 + "Coridyan", // 61674 + "Hangzhou Bingte Technology Co., Ltd", // 61675 + "Wha Yu Industrial Co., Ltd.", // 61676 + "BxC GmbH & Co. KG", // 61677 + "FIMER S.p.A", // 61678 + "Hellenic National Defense General Staff (HNDGS)", // 61679 + "Troglodyte.io", // 61680 + "Joe Sniderman & Associates, LLC", // 61681 + "Kontrolnext Technology", // 61682 + "Hoffmann Group Engineering GmbH", // 61683 + "Beutlhauser Holding GmbH", // 61684 + "Orxcel Co.,Limited", // 61685 + "Athens-Limestone Hospital", // 61686 + "Mani Raju (LcDigital)", // 61687 + "oruga.de", // 61688 + "Ricon İletişim AŞ", // 61689 + "ThinkCloud", // 61690 + "Public Joint Stock Company Mobile TeleSystems (PJSC MTS)" // 61691 } }; diff --git a/epan/epan.c b/epan/epan.c index f6659832..43d1f080 100644 --- a/epan/epan.c +++ b/epan/epan.c @@ -444,17 +444,17 @@ epan_cleanup(void) except_deinit(); addr_resolv_cleanup(); -#ifdef HAVE_PLUGINS - plugins_cleanup(libwireshark_plugins); - libwireshark_plugins = NULL; -#endif - if (pinfo_pool_cache != NULL) { wmem_destroy_allocator(pinfo_pool_cache); pinfo_pool_cache = NULL; } wmem_cleanup_scopes(); + +#ifdef HAVE_PLUGINS + plugins_cleanup(libwireshark_plugins); + libwireshark_plugins = NULL; +#endif } struct epan_session { diff --git a/epan/manuf-data.c b/epan/manuf-data.c index cce93ed8..ed5992ff 100644 --- a/epan/manuf-data.c +++ b/epan/manuf-data.c @@ -26,6 +26,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x04, 0xD1, 0x6E }, MA_M }, { { 0x04, 0xEE, 0xE8 }, MA_M }, { { 0x08, 0x26, 0xAE }, MA_M }, + { { 0x08, 0x63, 0x32 }, MA_M }, { { 0x08, 0xED, 0x02 }, MA_M }, { { 0x08, 0xF8, 0x0D }, MA_M }, { { 0x0C, 0x5C, 0xB5 }, MA_M }, @@ -92,6 +93,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x34, 0x00, 0x8A }, MA_M }, { { 0x34, 0x04, 0x9E }, MA_M }, { { 0x34, 0x29, 0x8F }, MA_M }, + { { 0x34, 0xC8, 0xD6 }, MA_M }, { { 0x34, 0xD0, 0xB8 }, MA_M }, { { 0x34, 0xE1, 0xD1 }, MA_M }, { { 0x38, 0x1F, 0x26 }, MA_M }, @@ -121,6 +123,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x48, 0x0B, 0xB2 }, MA_M }, { { 0x48, 0x65, 0xEE }, MA_M }, { { 0x48, 0xDA, 0x35 }, MA_M }, + { { 0x48, 0xE6, 0x63 }, MA_M }, { { 0x4C, 0x4B, 0xF9 }, MA_M }, { { 0x4C, 0x65, 0xA8 }, MA_M }, { { 0x4C, 0x74, 0xA7 }, MA_M }, @@ -153,6 +156,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x5C, 0xF8, 0x38 }, MA_M }, { { 0x60, 0x15, 0x92 }, MA_M }, { { 0x60, 0x95, 0xCE }, MA_M }, + { { 0x60, 0xA4, 0x34 }, MA_M }, { { 0x60, 0xD7, 0xE3 }, MA_M }, { { 0x64, 0x31, 0x39 }, MA_M }, { { 0x64, 0x33, 0xB5 }, MA_M }, @@ -197,6 +201,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x80, 0x02, 0xF4 }, MA_M }, { { 0x80, 0x0A, 0x80 }, MA_M }, { { 0x80, 0x7B, 0x85 }, MA_M }, + { { 0x80, 0xA5, 0x79 }, MA_M }, { { 0x80, 0xE4, 0xDA }, MA_M }, { { 0x84, 0x11, 0xC2 }, MA_M }, { { 0x84, 0x39, 0xBE }, MA_M }, @@ -222,6 +227,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0x8C, 0xA6, 0x82 }, MA_M }, { { 0x8C, 0xAE, 0x49 }, MA_M }, { { 0x8C, 0xC8, 0xF4 }, MA_M }, + { { 0x90, 0x15, 0x64 }, MA_M }, { { 0x90, 0x4E, 0x91 }, MA_M }, { { 0x90, 0xA9, 0xF7 }, MA_M }, { { 0x90, 0xC6, 0x82 }, MA_M }, @@ -290,6 +296,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0xC4, 0x98, 0x94 }, MA_M }, { { 0xC4, 0xA1, 0x0E }, MA_M }, { { 0xC4, 0xA5, 0x59 }, MA_M }, + { { 0xC4, 0xCC, 0x37 }, MA_M }, { { 0xC4, 0xFF, 0xBC }, MA_M }, { { 0xC8, 0x2C, 0x2B }, MA_M }, { { 0xC8, 0x5C, 0xE2 }, MA_M }, @@ -298,6 +305,7 @@ static const manuf_registry_t ieee_registry_table[] = { { { 0xC8, 0x8E, 0xD1 }, MA_M }, { { 0xC8, 0x98, 0xDB }, MA_M }, { { 0xC8, 0xF5, 0xD6 }, MA_M }, + { { 0xC8, 0xFF, 0xBF }, MA_M }, { { 0xCC, 0x1B, 0xE0 }, MA_M }, { { 0xCC, 0x22, 0x37 }, MA_M }, { { 0xCC, 0x4F, 0x5C }, MA_M }, @@ -1766,7 +1774,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x05, 0x7B }, "ChungNamElec", "Chung Nam Electronic Co., Ltd." }, { { 0x00, 0x05, 0x7C }, "RCOSecurity", "RCO Security AB" }, { { 0x00, 0x05, 0x7D }, "SunCommunica", "Sun Communications, Inc." }, - { { 0x00, 0x05, 0x7E }, "EckelmannSte", "Eckelmann Steuerungstechnik GmbH" }, + { { 0x00, 0x05, 0x7E }, "Eckelmann", "Eckelmann AG" }, { { 0x00, 0x05, 0x7F }, "AcqisTechnol", "Acqis Technology" }, { { 0x00, 0x05, 0x80 }, "FibroLAN", "FibroLAN Ltd." }, { { 0x00, 0x05, 0x81 }, "Snell", "Snell" }, @@ -4573,7 +4581,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x10, 0x99 }, "InnoMedia", "InnoMedia, Inc." }, { { 0x00, 0x10, 0x9A }, "Netline", "Netline" }, { { 0x00, 0x10, 0x9B }, "Emulex", "Emulex Corporation" }, - { { 0x00, 0x10, 0x9C }, "MSystem", "M-System Co., Ltd." }, + { { 0x00, 0x10, 0x9C }, "MG", "MG Co., Ltd." }, { { 0x00, 0x10, 0x9D }, "Clarinet", "Clarinet Systems, Inc." }, { { 0x00, 0x10, 0x9E }, "Aware", "Aware, Inc." }, { { 0x00, 0x10, 0x9F }, "Pavo", "Pavo, Inc." }, @@ -5497,7 +5505,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x14, 0x35 }, "CityCom", "CityCom Corp." }, { { 0x00, 0x14, 0x36 }, "QwertyElektr", "Qwerty Elektronik AB" }, { { 0x00, 0x14, 0x37 }, "GSTeletech", "GSTeletech Co.,Ltd." }, - { { 0x00, 0x14, 0x38 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x00, 0x14, 0x38 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x00, 0x14, 0x39 }, "BlonderTongu", "Blonder Tongue Laboratories, Inc" }, { { 0x00, 0x14, 0x3A }, "RaytalkInter", "Raytalk International Srl" }, { { 0x00, 0x14, 0x3B }, "Sensovation", "Sensovation AG" }, @@ -7646,7 +7654,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x1C, 0x9E }, "DualtechIT", "Dualtech IT AB" }, { { 0x00, 0x1C, 0x9F }, "Razorstream", "Razorstream, LLC" }, { { 0x00, 0x1C, 0xA0 }, "ProductionRe", "Production Resource Group, LLC" }, - { { 0x00, 0x1C, 0xA1 }, "AkamaiTechno", "Akamai Technologies, Inc." }, + { { 0x00, 0x1C, 0xA1 }, "AkamaiTechno", "Akamai Technologies Inc." }, { { 0x00, 0x1C, 0xA2 }, "ADBBroadband", "ADB Broadband Italia" }, { { 0x00, 0x1C, 0xA3 }, "Terra", "Terra" }, { { 0x00, 0x1C, 0xA4 }, "Sony", "Sony Corporation" }, @@ -9044,7 +9052,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x22, 0x15 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x00, 0x22, 0x16 }, "ShibauraVend", "Shibaura Vending Machine Corporation" }, { { 0x00, 0x22, 0x17 }, "NeatElectron", "Neat Electronics" }, - { { 0x00, 0x22, 0x18 }, "AkamaiTechno", "Akamai Technologies Inc" }, + { { 0x00, 0x22, 0x18 }, "AkamaiTechno", "Akamai Technologies Inc." }, { { 0x00, 0x22, 0x19 }, "Dell", "Dell Inc." }, { { 0x00, 0x22, 0x1A }, "AudioPrecisi", "Audio Precision" }, { { 0x00, 0x22, 0x1B }, "Morega", "Morega Systems" }, @@ -10329,6 +10337,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x2A, 0x6A }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x2A, 0xAF }, "LARsysAutoma", "LARsys-Automation GmbH" }, { { 0x00, 0x2B, 0x67 }, "LCFCElectron", "LCFC(HeFei) Electronics Technology co., ltd" }, + { { 0x00, 0x2B, 0x70 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x00, 0x2B, 0xF5 }, "Buffalo", "Buffalo.Inc" }, { { 0x00, 0x2C, 0xC8 }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x2D, 0x76 }, "TITECH", "TITECH GmbH" }, @@ -10907,7 +10916,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x4C, 0xE5 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x00, 0x4D, 0x32 }, "AndonHealth", "Andon Health Co.,Ltd." }, { { 0x00, 0x4E, 0x01 }, "Dell", "Dell Inc." }, - { { 0x00, 0x4E, 0x35 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x00, 0x4E, 0x35 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x00, 0x4F, 0x1A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x00, 0x50, 0x00 }, "NexoCommunic", "Nexo Communications, Inc." }, { { 0x00, 0x50, 0x01 }, "Yamashita", "Yamashita Systems Corp." }, @@ -11746,6 +11755,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0x80, 0xFD }, "ExsceedCorpr", "Exsceed Corpration" }, { { 0x00, 0x80, 0xFE }, "AzureTechnol", "Azure Technologies, Inc." }, { { 0x00, 0x80, 0xFF }, "SocDeTeleinf", "Soc. De Teleinformatique Rtc" }, + { { 0x00, 0x81, 0x2A }, "Apple", "Apple, Inc." }, { { 0x00, 0x81, 0xC4 }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x81, 0xF9 }, "TexasInstrum", "Texas Instruments" }, { { 0x00, 0x84, 0x1E }, "CiscoMeraki", "Cisco Meraki" }, @@ -12324,6 +12334,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0xAA, 0x3C }, "OlivettiTele", "Olivetti Telecom Spa (Olteco)" }, { { 0x00, 0xAA, 0x6E }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0xAA, 0x70 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, + { { 0x00, 0xAA, 0xFD }, "TexasInstrum", "Texas Instruments" }, { { 0x00, 0xAB, 0x48 }, "eero", "eero inc." }, { { 0x00, 0xAC, 0xE0 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x00, 0xAD, 0x24 }, "DLinkInterna", "D-Link International" }, @@ -12960,6 +12971,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0xD4, 0x9E }, "Intel", "Intel Corporate" }, { { 0x00, 0xD5, 0x98 }, "BopelMobileT", "Bopel Mobile Technology Co.,Limited" }, { { 0x00, 0xD6, 0x32 }, "GEEnergy", "GE Energy" }, + { { 0x00, 0xD6, 0xCB }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x00, 0xD6, 0xFE }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0xD7, 0x6D }, "Intel", "Intel Corporate" }, { { 0x00, 0xD7, 0x8F }, "Cisco", "Cisco Systems, Inc" }, @@ -13304,7 +13316,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x00, 0xFC, 0x8D }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0x00, 0xFC, 0xBA }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0xFD, 0x22 }, "Cisco", "Cisco Systems, Inc" }, - { { 0x00, 0xFD, 0x45 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x00, 0xFD, 0x45 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x00, 0xFD, 0x4C }, "Nevatec", "Nevatec" }, { { 0x00, 0xFE, 0xC8 }, "Cisco", "Cisco Systems, Inc" }, { { 0x02, 0x07, 0x01 }, "RacalDatacom", "Racal-Datacom" }, @@ -13330,7 +13342,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x04, 0x04, 0xEA }, "ValensSemico", "Valens Semiconductor Ltd." }, { { 0x04, 0x05, 0xDD }, "CultraviewDi", "Shenzhen Cultraview Digital Technology Co., Ltd" }, { { 0x04, 0x07, 0x2E }, "VTechElectro", "VTech Electronics Ltd." }, - { { 0x04, 0x09, 0x73 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x04, 0x09, 0x73 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x04, 0x09, 0x86 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x04, 0x09, 0xA5 }, "HFR", "HFR, Inc." }, { { 0x04, 0x0A, 0x83 }, "AlcatelLucen", "Alcatel-Lucent" }, @@ -13362,6 +13374,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x04, 0x21, 0x44 }, "SunitecEnter", "Sunitec Enterprise Co.,Ltd" }, { { 0x04, 0x21, 0x4C }, "InsightEnerg", "Insight Energy Ventures LLC" }, { { 0x04, 0x22, 0x34 }, "WirelessStan", "Wireless Standard Extensions" }, + { { 0x04, 0x23, 0x22 }, "TexasInstrum", "Texas Instruments" }, { { 0x04, 0x25, 0xC5 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x04, 0x25, 0xE0 }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0x04, 0x25, 0xE8 }, "TexasInstrum", "Texas Instruments" }, @@ -13396,6 +13409,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x04, 0x3F, 0x72 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0x04, 0x40, 0xA9 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x04, 0x41, 0x69 }, "GoPro", "GoPro" }, + { { 0x04, 0x41, 0xA5 }, "Apple", "Apple, Inc." }, { { 0x04, 0x42, 0x1A }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x04, 0x43, 0xFD }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x04, 0x44, 0xA1 }, "TeleconGalic", "Telecon Galicia,S.A." }, @@ -13911,6 +13925,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0x40, 0xF3 }, "TendaTechnol", "Tenda Technology Co.,Ltd.Dongguan branch" }, { { 0x08, 0x42, 0x18 }, "Asyril", "Asyril SA" }, { { 0x08, 0x42, 0x96 }, "MobileTechno", "Mobile Technology Solutions LLC" }, + { { 0x08, 0x44, 0x73 }, "zte", "zte corporation" }, { { 0x08, 0x45, 0xD1 }, "Cisco", "Cisco Systems, Inc" }, { { 0x08, 0x46, 0x56 }, "VeoLabs", "Veo-Labs" }, { { 0x08, 0x46, 0xC7 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -13927,6 +13942,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0x51, 0x14 }, "QingdaoTopsc", "Qingdao Topscomm Communication Co., Ltd" }, { { 0x08, 0x51, 0x2E }, "OrionDiagnos", "Orion Diagnostica Oy" }, { { 0x08, 0x52, 0x40 }, "EbVElektroni", "EbV Elektronikbau- und Vertriebs GmbH" }, + { { 0x08, 0x52, 0x4E }, "FangchengBai", "Shenzhen Fangcheng Baiyi Technology Co., Ltd." }, { { 0x08, 0x54, 0x11 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x08, 0x54, 0xBB }, "ChuangweiRgb", "Shenzhen Chuangwei-Rgb Electronics Co.,Ltd" }, { { 0x08, 0x55, 0x31 }, "Routerboardc", "Routerboard.com" }, @@ -14013,7 +14029,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0x95, 0x42 }, "Apple", "Apple, Inc." }, { { 0x08, 0x96, 0xAD }, "Cisco", "Cisco Systems, Inc" }, { { 0x08, 0x96, 0xD7 }, "AVM", "AVM GmbH" }, - { { 0x08, 0x97, 0x34 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x08, 0x97, 0x34 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x08, 0x97, 0x58 }, "StrongRising", "Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary" }, { { 0x08, 0x97, 0x98 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, { { 0x08, 0x99, 0xE8 }, "KEMAS", "KEMAS GmbH" }, @@ -14032,6 +14048,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0xA5, 0xC8 }, "SunnovoInter", "Sunnovo International Limited" }, { { 0x08, 0xA5, 0xDF }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x08, 0xA6, 0xBC }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0x08, 0xA6, 0xF7 }, "Espressif", "Espressif Inc." }, { { 0x08, 0xA7, 0xC0 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x08, 0xA8, 0x42 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x08, 0xA8, 0xA1 }, "Cyclotronics", "Cyclotronics Power Concepts, Inc" }, @@ -14055,6 +14072,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0xB7, 0xEC }, "WirelessSeis", "Wireless Seismic" }, { { 0x08, 0xBA, 0x22 }, "Swaive", "Swaive Corporation" }, { { 0x08, 0xBA, 0x5F }, "QingdaoHisen", "Qingdao Hisense Electronics Co.,Ltd." }, + { { 0x08, 0xBA, 0xB7 }, "CeragonNetwo", "Ceragon Networks Ltd." }, { { 0x08, 0xBB, 0x3C }, "FlextronicsT", "Flextronics Tech.(Ind) Pvt Ltd" }, { { 0x08, 0xBB, 0xCC }, "AKNORDEDVVER", "AK-NORD EDV VERTRIEBSGES. mbH" }, { { 0x08, 0xBC, 0x20 }, "RoyalCloudTe", "Hangzhou Royal Cloud Technology Co., Ltd" }, @@ -14093,6 +14111,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0xD5, 0x9D }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x08, 0xD5, 0xC0 }, "SeersTechnol", "Seers Technology Co., Ltd" }, { { 0x08, 0xD8, 0x33 }, "RFTechnology", "Shenzhen RF Technology Co., Ltd" }, + { { 0x08, 0xDD, 0xEB }, "SiliconLabor", "Silicon Laboratories" }, { { 0x08, 0xDF, 0x1F }, "Bose", "Bose Corporation" }, { { 0x08, 0xDF, 0xCB }, "SystromeNetw", "Systrome Networks" }, { { 0x08, 0xE0, 0x21 }, "HonorDevice", "Honor Device Co., Ltd." }, @@ -14121,9 +14140,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0xEF, 0x3B }, "MCSLogic", "MCS Logic Inc." }, { { 0x08, 0xEF, 0xAB }, "SaymeWireles", "Sayme Wireless Sensor Network" }, { { 0x08, 0xF0, 0x1E }, "eero", "eero inc." }, + { { 0x08, 0xF0, 0xB6 }, "EdifierInter", "Edifier International" }, { { 0x08, 0xF1, 0xB3 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x08, 0xF1, 0xB7 }, "TowerstreamC", "Towerstream Corpration" }, - { { 0x08, 0xF1, 0xEA }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x08, 0xF1, 0xEA }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x08, 0xF2, 0xF4 }, "NetOnePartne", "Net One Partners Co.,Ltd." }, { { 0x08, 0xF3, 0xFB }, "Cisco", "Cisco Systems, Inc" }, { { 0x08, 0xF4, 0x58 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -14145,10 +14165,12 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x08, 0xFF, 0x24 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0x08, 0xFF, 0x44 }, "Apple", "Apple, Inc." }, { { 0x0A, 0x2A, 0x33 }, "Digistor", "Digistor" }, + { { 0x0A, 0x35, 0xF2 }, "IntegratedTe", "Integrated Technical Vision Ltd" }, { { 0x0A, 0x36, 0x1C }, "Smardii", "Smardii" }, { { 0x0A, 0x87, 0x36 }, "IEEE1901Work", "IEEE 1901 Working Group" }, { { 0x0A, 0x8E, 0x62 }, "DeltaSolutio", "Delta Solutions LLC" }, { { 0x0A, 0xA2, 0x3B }, "Vitex", "Vitex LLC" }, + { { 0x0A, 0xAB, 0x8C }, "MidwestMicro", "Midwest Microwave Solutions Inc." }, { { 0x0A, 0xCD, 0x8F }, "CiscoNorway", "Cisco Systems Norway" }, { { 0x0A, 0xD9, 0xC4 }, "CraftDesigns", "Craft Designs, Inc" }, { { 0x0A, 0xE4, 0x71 }, "Caterpillar", "Caterpillar Inc." }, @@ -14161,6 +14183,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x0C, 0x04, 0x00 }, "Jantardoo", "Jantar d.o.o." }, { { 0x0C, 0x05, 0x35 }, "Juniper", "Juniper Systems" }, { { 0x0C, 0x08, 0xB4 }, "HUMAX", "HUMAX Co., Ltd." }, + { { 0x0C, 0x0A, 0xDF }, "TexasInstrum", "Texas Instruments" }, { { 0x0C, 0x0E, 0x76 }, "DLinkInterna", "D-Link International" }, { { 0x0C, 0x11, 0x05 }, "AkuvoxNetwor", "Akuvox (Xiamen) Networks Co., Ltd" }, { { 0x0C, 0x11, 0x67 }, "Cisco", "Cisco Systems, Inc" }, @@ -14187,6 +14210,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x0C, 0x20, 0xD3 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x0C, 0x21, 0x38 }, "Hengstler", "Hengstler GmbH" }, { { 0x0C, 0x23, 0x69 }, "HoneywellSPS", "Honeywell SPS" }, + { { 0x0C, 0x23, 0x8D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x0C, 0x25, 0x76 }, "LongcheerTel", "Longcheer Telecommunication Limited" }, { { 0x0C, 0x27, 0x24 }, "Cisco", "Cisco Systems, Inc" }, { { 0x0C, 0x27, 0x55 }, "ValuableTech", "Valuable Techologies Limited" }, @@ -14229,6 +14253,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x0C, 0x49, 0x33 }, "SichuanJiuzh", "Sichuan Jiuzhou Electronic Technology Co., Ltd." }, { { 0x0C, 0x4B, 0x48 }, "Nokia", "Nokia" }, { { 0x0C, 0x4B, 0x54 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, + { { 0x0C, 0x4B, 0xEE }, "TexasInstrum", "Texas Instruments" }, { { 0x0C, 0x4C, 0x39 }, "MitraStarTec", "MitraStar Technology Corp." }, { { 0x0C, 0x4D, 0xE9 }, "Apple", "Apple, Inc." }, { { 0x0C, 0x4E, 0xC0 }, "Maxlinear", "Maxlinear Inc" }, @@ -14264,6 +14289,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x0C, 0x67, 0x14 }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, { { 0x0C, 0x67, 0x43 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x0C, 0x68, 0x03 }, "Cisco", "Cisco Systems, Inc" }, + { { 0x0C, 0x68, 0x25 }, "SuzhouHYCtec", "Suzhou HYC technology Co., Ltd." }, { { 0x0C, 0x6A, 0xBC }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x0C, 0x6A, 0xC4 }, "Apple", "Apple, Inc." }, { { 0x0C, 0x6A, 0xE6 }, "StanleySecur", "Stanley Security Solutions" }, @@ -14449,6 +14475,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x0C, 0xEC, 0x80 }, "TexasInstrum", "Texas Instruments" }, { { 0x0C, 0xEC, 0x84 }, "TINNOMobileT", "Shenzhen TINNO Mobile Technology Corp." }, { { 0x0C, 0xEC, 0x8D }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, + { { 0x0C, 0xED, 0xC8 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x0C, 0xEE, 0x99 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x0C, 0xEE, 0xE6 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x0C, 0xEF, 0x7C }, "AnaCom", "AnaCom Inc" }, @@ -14543,7 +14570,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0x2E, 0x00 }, "Intel", "Intel Corporate" }, { { 0x10, 0x2E, 0xAF }, "TexasInstrum", "Texas Instruments" }, { { 0x10, 0x2F, 0x6B }, "Microsoft", "Microsoft Corporation" }, + { { 0x10, 0x2F, 0x6E }, "SundrayTechn", "Shenzhen Sundray Technologies Company Limited" }, { { 0x10, 0x2F, 0xA3 }, "UvisiontechT", "Shenzhen Uvision-tech Technology Co.Ltd" }, + { { 0x10, 0x2F, 0xF8 }, "Vicoretek", "Vicoretek (Nanjing) Co.,Ltd." }, { { 0x10, 0x30, 0x25 }, "Apple", "Apple, Inc." }, { { 0x10, 0x30, 0x34 }, "Cara", "Cara Systems" }, { { 0x10, 0x30, 0x47 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -14608,6 +14637,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0x5D, 0xDC }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x10, 0x5F, 0x06 }, "ActiontecEle", "Actiontec Electronics, Inc" }, { { 0x10, 0x5F, 0x49 }, "CiscoSPVTG", "Cisco SPVTG" }, + { { 0x10, 0x5F, 0xAD }, "Intel", "Intel Corporate" }, { { 0x10, 0x5F, 0xD4 }, "Tendyron", "Tendyron Corporation" }, { { 0x10, 0x60, 0x4B }, "HewlettPacka", "Hewlett Packard" }, { { 0x10, 0x62, 0xC9 }, "Adatis", "Adatis GmbH & Co. KG" }, @@ -14657,6 +14687,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0x82, 0x3D }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, { { 0x10, 0x82, 0x86 }, "LuxsharePrec", "Luxshare Precision Industry Co.,Ltd" }, { { 0x10, 0x82, 0xD7 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, + { { 0x10, 0x83, 0xB4 }, "Sidora", "Sidora Srl" }, { { 0x10, 0x83, 0xD2 }, "Microseven", "Microseven Systems, LLC" }, { { 0x10, 0x86, 0x8C }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x10, 0x88, 0x0F }, "DarumaTeleco", "Daruma Telecomunicações e Informática S.A." }, @@ -14681,6 +14712,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0x96, 0x1A }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Corp." }, { { 0x10, 0x96, 0x93 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x10, 0x97, 0xBD }, "Espressif", "Espressif Inc." }, + { { 0x10, 0x98, 0x19 }, "Dell", "Dell Inc." }, { { 0x10, 0x98, 0x26 }, "Nokia", "Nokia" }, { { 0x10, 0x98, 0x36 }, "Dell", "Dell Inc." }, { { 0x10, 0x98, 0xC3 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, @@ -14695,6 +14727,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0x9F, 0x4F }, "NewH3CIntell", "New H3C Intelligence Terminal Co., Ltd." }, { { 0x10, 0x9F, 0xA9 }, "ActiontecEle", "Actiontec Electronics, Inc" }, { { 0x10, 0xA1, 0x3B }, "FujikuraRubb", "Fujikura Rubber Ltd." }, + { { 0x10, 0xA1, 0x45 }, "nexzoindia", "nexzo india pvt ltd" }, { { 0x10, 0xA2, 0x4E }, "Gold3LinkEle", "Gold3Link Electronics Co., Ltd" }, { { 0x10, 0xA2, 0xD3 }, "Apple", "Apple, Inc." }, { { 0x10, 0xA3, 0xB8 }, "Iskrateldoo", "Iskratel d.o.o." }, @@ -14785,6 +14818,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x10, 0xE1, 0x77 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x10, 0xE2, 0xC9 }, "Apple", "Apple, Inc." }, { { 0x10, 0xE2, 0xD5 }, "QiHardware", "Qi Hardware Inc." }, + { { 0x10, 0xE3, 0x76 }, "Cisco", "Cisco Systems, Inc" }, { { 0x10, 0xE3, 0xC7 }, "SeohwaTeleco", "Seohwa Telecom" }, { { 0x10, 0xE4, 0xAF }, "Apr", "Apr, Llc" }, { { 0x10, 0xE4, 0xC2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -14828,7 +14862,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0x00, 0xE9 }, "MitelNetwork", "Mitel Networks Corporation" }, { { 0x14, 0x01, 0x52 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x14, 0x01, 0x9C }, "Ubyon", "Ubyon Inc." }, - { { 0x14, 0x02, 0xEC }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x14, 0x02, 0xEC }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x14, 0x04, 0x67 }, "SNKTechnolog", "SNK Technologies Co.,Ltd." }, { { 0x14, 0x06, 0x4C }, "VoglElectron", "Vogl Electronic GmbH" }, { { 0x14, 0x07, 0x08 }, "CpPlus", "Cp Plus Gmbh & Co. Kg" }, @@ -14867,6 +14901,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0x1A, 0xA3 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x14, 0x1A, 0xAA }, "MetalWork", "Metal Work SpA" }, { { 0x14, 0x1B, 0x30 }, "YipingfangNe", "Shenzhen Yipingfang Network Technology Co., Ltd." }, + { { 0x14, 0x1B, 0xA0 }, "Apple", "Apple, Inc." }, { { 0x14, 0x1B, 0xBD }, "Volex", "Volex Inc." }, { { 0x14, 0x1B, 0xF0 }, "Intellimedia", "Intellimedia Systems Ltd" }, { { 0x14, 0x1F, 0x78 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -14879,6 +14914,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0x23, 0xD7 }, "Eutronix", "Eutronix Co., Ltd." }, { { 0x14, 0x23, 0xF2 }, "Broadcom", "Broadcom Limited" }, { { 0x14, 0x24, 0x75 }, "4DReplay", "4DReplay, Inc" }, + { { 0x14, 0x28, 0x76 }, "Apple", "Apple, Inc." }, { { 0x14, 0x28, 0x82 }, "MidicomElect", "Midicom Electronics Co.Ltd" }, { { 0x14, 0x29, 0x71 }, "NemoaElectro", "Nemoa Electronics (Hk) Co. Ltd" }, { { 0x14, 0x2A, 0x14 }, "SelenviewDig", "ShenZhen Selenview Digital Technology Co.,Ltd" }, @@ -14903,6 +14939,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0x34, 0xF6 }, "LvSolutionSd", "Lv Solution Sdn. Bhd." }, { { 0x14, 0x35, 0x8B }, "MediabridgeP", "Mediabridge Products, LLC." }, { { 0x14, 0x35, 0xB3 }, "FutureDesign", "Future Designs, Inc." }, + { { 0x14, 0x35, 0xB7 }, "Apple", "Apple, Inc." }, { { 0x14, 0x36, 0x05 }, "Nokia", "Nokia Corporation" }, { { 0x14, 0x36, 0xC6 }, "LenovoMobile", "Lenovo Mobile Communication Technology Ltd." }, { { 0x14, 0x37, 0x19 }, "PTPrakarsaVi", "PT Prakarsa Visi Valutama" }, @@ -14991,6 +15028,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0x7E, 0xA1 }, "BritaniaElet", "Britania Eletrônicos S.A." }, { { 0x14, 0x7F, 0x0F }, "TexasInstrum", "Texas Instruments" }, { { 0x14, 0x7F, 0x67 }, "LGInnotek", "LG Innotek" }, + { { 0x14, 0x7F, 0xCE }, "Apple", "Apple, Inc." }, { { 0x14, 0x82, 0x5B }, "HefeiRadioCo", "Hefei Radio Communication Technology Co., Ltd" }, { { 0x14, 0x84, 0x30 }, "MitacComputi", "Mitac Computing Technology Corporation" }, { { 0x14, 0x84, 0x73 }, "Cisco", "Cisco Systems, Inc" }, @@ -15119,6 +15157,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x14, 0xDD, 0xA9 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x14, 0xDD, 0xE5 }, "Mpmkvvcl", "Mpmkvvcl" }, { { 0x14, 0xDE, 0x39 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x14, 0xE0, 0x1D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x14, 0xE4, 0xEC }, "mLogic", "mLogic LLC" }, { { 0x14, 0xE6, 0xE4 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x14, 0xE7, 0xC8 }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, @@ -15152,6 +15191,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0x02, 0xAE }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x18, 0x03, 0x73 }, "Dell", "Dell Inc." }, { { 0x18, 0x03, 0xFA }, "IBTInterface", "IBT Interfaces" }, + { { 0x18, 0x04, 0x03 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x18, 0x04, 0xED }, "TexasInstrum", "Texas Instruments" }, { { 0x18, 0x06, 0x75 }, "DilaxIntelco", "Dilax Intelcom GmbH" }, { { 0x18, 0x06, 0xF5 }, "RADDataCommu", "RAD Data Communications, Ltd." }, @@ -15160,6 +15200,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0x0B, 0x52 }, "NanotronTech", "Nanotron Technologies GmbH" }, { { 0x18, 0x0C, 0x14 }, "iSonea", "iSonea Limited" }, { { 0x18, 0x0C, 0x77 }, "Westinghouse", "Westinghouse Electric Company, LLC" }, + { { 0x18, 0x0C, 0x7A }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x18, 0x0C, 0xAC }, "Canon", "Canon Inc." }, { { 0x18, 0x0D, 0x2C }, "Intelbras", "Intelbras" }, { { 0x18, 0x0E, 0xAC }, "FastTechnolo", "Shenzhen Fast Technologies Co.,Ltd" }, @@ -15176,7 +15217,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0x16, 0xE8 }, "SiliconwareP", "Siliconware Precision Industries Co., Ltd." }, { { 0x18, 0x17, 0x14 }, "Daewoois", "Daewoois" }, { { 0x18, 0x17, 0x25 }, "CameoCommuni", "Cameo Communications, Inc." }, - { { 0x18, 0x18, 0x8B }, "FcntLmited", "Fcnt Lmited" }, + { { 0x18, 0x18, 0x8B }, "Fcnt", "Fcnt Llc" }, { { 0x18, 0x19, 0x3F }, "Tamtron", "Tamtron Oy" }, { { 0x18, 0x19, 0xD6 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x18, 0x1B, 0xEB }, "ActiontecEle", "Actiontec Electronics, Inc" }, @@ -15335,6 +15376,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0x80, 0xCE }, "BarberrySolu", "Barberry Solutions Ltd" }, { { 0x18, 0x80, 0xF5 }, "AlcatelLucen", "Alcatel-Lucent Shanghai Bell Co., Ltd" }, { { 0x18, 0x81, 0x0E }, "Apple", "Apple, Inc." }, + { { 0x18, 0x81, 0xED }, "TeracomTelem", "Teracom Telematica S.A" }, { { 0x18, 0x82, 0x19 }, "AlibabaCloud", "Alibaba Cloud Computing Ltd." }, { { 0x18, 0x82, 0x8C }, "Arcadyan", "Arcadyan Corporation" }, { { 0x18, 0x83, 0x31 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -15373,6 +15415,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0x9C, 0x27 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x18, 0x9C, 0x5D }, "Cisco", "Cisco Systems, Inc" }, { { 0x18, 0x9E, 0x2C }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x18, 0x9E, 0x2D }, "AllwinnerTec", "Allwinner Technology Co., Ltd" }, { { 0x18, 0x9E, 0xAD }, "ChengqianInf", "Shenzhen Chengqian Information Technology Co., Ltd" }, { { 0x18, 0x9E, 0xFC }, "Apple", "Apple, Inc." }, { { 0x18, 0xA2, 0x8A }, "EsselT", "Essel-T Co., Ltd" }, @@ -15482,6 +15525,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x18, 0xEE, 0x86 }, "NovatelWirel", "Novatel Wireless Solutions, Inc." }, { { 0x18, 0xEF, 0x3A }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0x18, 0xEF, 0x63 }, "Cisco", "Cisco Systems, Inc" }, + { { 0x18, 0xEF, 0xC0 }, "SercommJapan", "Sercomm Japan Corporation" }, { { 0x18, 0xF0, 0xE4 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x18, 0xF1, 0x45 }, "NetCommWirel", "NetComm Wireless Limited" }, { { 0x18, 0xF1, 0x8E }, "ChipERTechno", "ChipER Technology co. ltd" }, @@ -15518,6 +15562,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x08, 0xC1 }, "LGInnotek", "LG Innotek" }, { { 0x1C, 0x0B, 0x52 }, "Epicom", "Epicom S.A" }, { { 0x1C, 0x0D, 0x7D }, "Apple", "Apple, Inc." }, + { { 0x1C, 0x0E, 0xC2 }, "Apple", "Apple, Inc." }, { { 0x1C, 0x0E, 0xD3 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x1C, 0x0F, 0xAF }, "LucidVisionL", "Lucid Vision Labs" }, { { 0x1C, 0x0F, 0xCF }, "SyproOptics", "Sypro Optics GmbH" }, @@ -15527,6 +15572,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x12, 0xB0 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x1C, 0x13, 0x38 }, "KimballElect", "Kimball Electronics Group, LLC" }, { { 0x1C, 0x13, 0x86 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x1C, 0x13, 0xFA }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x1C, 0x14, 0x48 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x1C, 0x14, 0xB3 }, "AirwireTechn", "Airwire Technologies" }, { { 0x1C, 0x15, 0x1F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -15583,6 +15629,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x3B, 0x62 }, "HMDGlobal", "HMD Global Oy" }, { { 0x1C, 0x3B, 0x8F }, "Selve", "Selve GmbH & Co. KG" }, { { 0x1C, 0x3B, 0xF3 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, + { { 0x1C, 0x3C, 0x78 }, "Apple", "Apple, Inc." }, { { 0x1C, 0x3C, 0xD4 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x1C, 0x3D, 0x2F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x1C, 0x3D, 0xE7 }, "SigmaKoki", "Sigma Koki Co.,Ltd." }, @@ -15648,6 +15695,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x63, 0xB7 }, "OpenProducts", "OpenProducts 237 AB" }, { { 0x1C, 0x63, 0xBF }, "BroadtelTele", "Shenzhen Broadtel Telecom Co.,Ltd" }, { { 0x1C, 0x64, 0x99 }, "Comtrend", "Comtrend Corporation" }, + { { 0x1C, 0x64, 0xF0 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x1C, 0x65, 0x9D }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x1C, 0x66, 0x6D }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x1C, 0x66, 0xAA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -15655,6 +15703,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x67, 0x58 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x1C, 0x67, 0x60 }, "Phonesuite", "Phonesuite" }, { { 0x1C, 0x68, 0x7E }, "QihuIntellig", "Shenzhen Qihu Intelligent Technology Company Limited" }, + { { 0x1C, 0x69, 0x20 }, "Espressif", "Espressif Inc." }, { { 0x1C, 0x69, 0x7A }, "EliteGroupCo", "EliteGroup Computer Systems Co., LTD" }, { { 0x1C, 0x69, 0xA5 }, "BlackBerryRT", "BlackBerry RTS" }, { { 0x1C, 0x6A, 0x76 }, "Apple", "Apple, Inc." }, @@ -15679,6 +15728,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x77, 0xF6 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x1C, 0x78, 0x39 }, "TencentCompu", "Shenzhen Tencent Computer System Co., Ltd." }, { { 0x1C, 0x78, 0x4E }, "ChinaMobileI", "China Mobile Iot Limited company" }, + { { 0x1C, 0x7A, 0x43 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x1C, 0x7A, 0xCF }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x1C, 0x7B, 0x21 }, "Sony", "Sony Corporation" }, { { 0x1C, 0x7B, 0x23 }, "QingdaoHisen", "Qingdao Hisense Communications Co.,Ltd." }, @@ -15721,7 +15771,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0x97, 0xC5 }, "Ynomia", "Ynomia Pty Ltd" }, { { 0x1C, 0x97, 0xFB }, "CoolBitX", "CoolBitX Ltd." }, { { 0x1C, 0x98, 0xC1 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, - { { 0x1C, 0x98, 0xEC }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x1C, 0x98, 0xEC }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x1C, 0x99, 0x4C }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x1C, 0x99, 0x57 }, "Intel", "Intel Corporate" }, { { 0x1C, 0x9C, 0x26 }, "ZoovelTechno", "Zoovel Technologies" }, @@ -15800,6 +15850,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0xDF, 0x52 }, "TexasInstrum", "Texas Instruments" }, { { 0x1C, 0xE1, 0x65 }, "Marshal", "Marshal Corporation" }, { { 0x1C, 0xE1, 0x92 }, "Qisda", "Qisda Corporation" }, + { { 0x1C, 0xE2, 0x09 }, "Apple", "Apple, Inc." }, { { 0x1C, 0xE2, 0xCC }, "TexasInstrum", "Texas Instruments" }, { { 0x1C, 0xE5, 0x04 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x1C, 0xE5, 0x7F }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -15809,6 +15860,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0xE6, 0xAD }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x1C, 0xE6, 0xC7 }, "Cisco", "Cisco Systems, Inc" }, { { 0x1C, 0xE8, 0x5D }, "Cisco", "Cisco Systems, Inc" }, + { { 0x1C, 0xE8, 0x9E }, "Sjit", "Sjit" }, { { 0x1C, 0xEA, 0x0B }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0x1C, 0xEA, 0x1B }, "Nokia", "Nokia" }, { { 0x1C, 0xEC, 0x72 }, "Allradio", "Allradio Co., Ltd" }, @@ -15830,6 +15882,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x1C, 0xFE, 0xA7 }, "IDentytechSo", "IDentytech Solutins Ltd." }, { { 0x1C, 0xFF, 0x59 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x20, 0x01, 0x4F }, "LineaResearc", "Linea Research Ltd" }, + { { 0x20, 0x01, 0x9C }, "BigleafNetwo", "Bigleaf Networks Inc." }, { { 0x20, 0x02, 0xAF }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x20, 0x02, 0xFE }, "DangbeiNetwo", "Hangzhou Dangbei Network Technology Co., Ltd" }, { { 0x20, 0x04, 0x0F }, "Dell", "Dell Inc." }, @@ -15866,6 +15919,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x17, 0x42 }, "LGElectronic", "LG Electronics" }, { { 0x20, 0x17, 0x46 }, "Paradromics", "Paradromics, Inc." }, { { 0x20, 0x18, 0x0E }, "SunchipTechn", "Shenzhen Sunchip Technology Co., Ltd" }, + { { 0x20, 0x18, 0x5B }, "JingxunTechn", "Shenzhen Jingxun Technology Co., Ltd." }, { { 0x20, 0x1A, 0x06 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, { { 0x20, 0x1A, 0x94 }, "Apple", "Apple, Inc." }, { { 0x20, 0x1B, 0x88 }, "DongguanLies", "Dongguan Liesheng Electronic Co., Ltd." }, @@ -15940,6 +15994,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x4E, 0x71 }, "JuniperNetwo", "Juniper Networks" }, { { 0x20, 0x4E, 0x7F }, "Netgear", "Netgear" }, { { 0x20, 0x4E, 0xF6 }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0x20, 0x50, 0x0F }, "FiberGroep", "Fiber Groep B.V." }, { { 0x20, 0x50, 0xE7 }, "AMPAKTechnol", "AMPAK Technology,Inc." }, { { 0x20, 0x53, 0x83 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x20, 0x53, 0xCA }, "RiskTechnolo", "Risk Technology Ltd" }, @@ -15956,6 +16011,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x5A, 0x1D }, "zte", "zte corporation" }, { { 0x20, 0x5B, 0x5E }, "WonheTechnol", "Shenzhen Wonhe Technology Co., Ltd" }, { { 0x20, 0x5C, 0xFA }, "YangzhouChan", "Yangzhou ChangLian Network Technology Co,ltd." }, + { { 0x20, 0x5D, 0x0D }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x20, 0x5D, 0x47 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x20, 0x5E, 0x64 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x20, 0x5E, 0x97 }, "Nokia", "Nokia" }, @@ -15970,7 +16026,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x65, 0x8E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x20, 0x66, 0xCF }, "FreeboxSas", "Freebox Sas" }, { { 0x20, 0x66, 0xFD }, "Constell8", "Constell8 Nv" }, - { { 0x20, 0x67, 0x7C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x20, 0x67, 0x7C }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x20, 0x67, 0xB1 }, "Pluto", "Pluto inc." }, { { 0x20, 0x67, 0xE0 }, "iCommSemicon", "Shenzhen iComm Semiconductor CO.,LTD" }, { { 0x20, 0x68, 0x9D }, "LiteonTechno", "Liteon Technology Corporation" }, @@ -15978,6 +16034,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x6A, 0x8A }, "WistronInfoc", "Wistron Infocomm (Zhongshan) Corporation" }, { { 0x20, 0x6A, 0x94 }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0x20, 0x6A, 0xFF }, "AtlasElektro", "Atlas Elektronik UK Limited" }, + { { 0x20, 0x6B, 0xD5 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x20, 0x6B, 0xE7 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x20, 0x6B, 0xF4 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x20, 0x6C, 0x8A }, "ExtremeNetwo", "Extreme Networks Headquarters" }, @@ -16031,6 +16088,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0x96, 0x8A }, "ChinaMobileI", "China Mobile (Hangzhou) Information Technology Co., Ltd." }, { { 0x20, 0x97, 0x27 }, "TeltonikaNet", "Teltonika Networks Uab" }, { { 0x20, 0x98, 0xD8 }, "YingdakangTe", "Shenzhen Yingdakang Technology CO., LTD" }, + { { 0x20, 0x98, 0xED }, "AltoBeam", "AltoBeam Inc." }, { { 0x20, 0x9A, 0x7D }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x20, 0x9A, 0xE9 }, "Volacomm", "Volacomm Co., Ltd" }, { { 0x20, 0x9B, 0xA5 }, "JIAXINGGLEAD", "JIAXING GLEAD Electronics Co.,Ltd" }, @@ -16045,7 +16103,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0xA5, 0xCB }, "Apple", "Apple, Inc." }, { { 0x20, 0xA6, 0x0C }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x20, 0xA6, 0x80 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, - { { 0x20, 0xA6, 0xCD }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x20, 0xA6, 0xCD }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x20, 0xA7, 0x66 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x20, 0xA7, 0x83 }, "miControl", "miControl GmbH" }, { { 0x20, 0xA7, 0x87 }, "BointecTaiwa", "Bointec Taiwan Corporation Limited" }, @@ -16133,6 +16191,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0xEE, 0xC6 }, "ElefirstScie", "Elefirst Science & Tech Co., ltd" }, { { 0x20, 0xEF, 0xBD }, "Roku", "Roku, Inc" }, { { 0x20, 0xF0, 0x02 }, "MTDataDevelo", "MTData Developments Pty. Ltd." }, + { { 0x20, 0xF0, 0x94 }, "Google", "Google, Inc." }, { { 0x20, 0xF1, 0x7C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x20, 0xF1, 0x9E }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x20, 0xF3, 0x75 }, "ARRISGroup", "ARRIS Group, Inc." }, @@ -16147,6 +16206,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x20, 0xF7, 0x7C }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x20, 0xF8, 0x3B }, "NabuCasa", "Nabu Casa, Inc." }, { { 0x20, 0xF8, 0x5E }, "DeltaElectro", "Delta Electronics" }, + { { 0x20, 0xFA, 0x85 }, "Apple", "Apple, Inc." }, { { 0x20, 0xFA, 0xBB }, "CambridgeExe", "Cambridge Executive Limited" }, { { 0x20, 0xFA, 0xDB }, "HuahaoKunpen", "Huahao Kunpeng Technology (chengDu) Co.,Ltd." }, { { 0x20, 0xFD, 0xF1 }, "3ComEurope", "3Com Europe Ltd" }, @@ -16213,6 +16273,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x24, 0x21, 0xAB }, "Sony", "Sony Corporation" }, { { 0x24, 0x23, 0x61 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x24, 0x24, 0x0E }, "Apple", "Apple, Inc." }, + { { 0x24, 0x24, 0xB7 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x24, 0x26, 0x42 }, "SHARP", "SHARP Corporation." }, { { 0x24, 0x26, 0xBA }, "ToptelTechno", "Shenzhen Toptel Technology Co., Ltd." }, { { 0x24, 0x26, 0xD6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -16268,6 +16329,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x24, 0x59, 0x0B }, "WhiteSky", "White Sky Inc. Limited" }, { { 0x24, 0x59, 0xE5 }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, { { 0x24, 0x5A, 0x4C }, "Ubiquiti", "Ubiquiti Inc" }, + { { 0x24, 0x5A, 0x5F }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x24, 0x5A, 0xB5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x24, 0x5B, 0x83 }, "RenesasElect", "Renesas Electronics (Penang) Sdn. Bhd." }, { { 0x24, 0x5B, 0xA7 }, "Apple", "Apple, Inc." }, @@ -16376,6 +16438,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x24, 0xB1, 0x05 }, "PramaHikvisi", "Prama Hikvision India Private Limited" }, { { 0x24, 0xB2, 0x09 }, "Avaya", "Avaya Inc" }, { { 0x24, 0xB2, 0xDE }, "Espressif", "Espressif Inc." }, + { { 0x24, 0xB3, 0x39 }, "Apple", "Apple, Inc." }, { { 0x24, 0xB6, 0x57 }, "Cisco", "Cisco Systems, Inc" }, { { 0x24, 0xB6, 0xB8 }, "Friem", "Friem Spa" }, { { 0x24, 0xB6, 0xFD }, "Dell", "Dell Inc." }, @@ -16457,18 +16520,20 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x24, 0xEA, 0x40 }, "Helmholz", "Helmholz GmbH & Co. KG" }, { { 0x24, 0xEB, 0x65 }, "SAETIS", "SAET I.S. S.r.l." }, { { 0x24, 0xEB, 0xED }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x24, 0xEC, 0x4A }, "Espressif", "Espressif Inc." }, { { 0x24, 0xEC, 0x51 }, "ADFTechnolog", "ADF Technologies Sdn Bhd" }, { { 0x24, 0xEC, 0x99 }, "AskeyCompute", "Askey Computer Corp" }, { { 0x24, 0xEC, 0xD6 }, "CSGScienceTe", "CSG Science & Technology Co.,Ltd.Hefei" }, { { 0x24, 0xED, 0xFD }, "SiemensCanad", "Siemens Canada Limited" }, { { 0x24, 0xEE, 0x3A }, "YingjiElectr", "Chengdu Yingji Electronic Hi-tech Co Ltd" }, { { 0x24, 0xEE, 0x9A }, "Intel", "Intel Corporate" }, + { { 0x24, 0xEF, 0xB4 }, "NeardiTechno", "Shanghai Neardi Technologies Co. Ltd." }, { { 0x24, 0xF0, 0x94 }, "Apple", "Apple, Inc." }, { { 0x24, 0xF0, 0xD3 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x24, 0xF0, 0xFF }, "GHT", "GHT Co., Ltd." }, { { 0x24, 0xF1, 0x28 }, "Telstra", "Telstra" }, { { 0x24, 0xF1, 0x50 }, "GuangzhouQia", "Guangzhou Qi'an Technology Co., Ltd." }, - { { 0x24, 0xF2, 0x7F }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x24, 0xF2, 0x7F }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x24, 0xF2, 0xDD }, "RadiantZemax", "Radiant Zemax LLC" }, { { 0x24, 0xF5, 0x7E }, "Hwh", "Hwh Co., Ltd." }, { { 0x24, 0xF5, 0xA2 }, "BelkinIntern", "Belkin International Inc." }, @@ -16516,11 +16581,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x16, 0xA8 }, "Microsoft", "Microsoft Corporation" }, { { 0x28, 0x16, 0xAD }, "Intel", "Intel Corporate" }, { { 0x28, 0x17, 0x09 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x28, 0x17, 0xCB }, "SoftwareFree", "Software Freedom Conservancy" }, { { 0x28, 0x17, 0xCE }, "Omnisense", "Omnisense Ltd" }, { { 0x28, 0x18, 0x78 }, "Microsoft", "Microsoft Corporation" }, { { 0x28, 0x18, 0xFD }, "AdityaInfote", "Aditya Infotech Ltd." }, { { 0x28, 0x1B, 0x04 }, "Zalliant", "Zalliant LLC" }, { { 0x28, 0x1D, 0x21 }, "InOneSmartTe", "In One Smart Technology(H,K,)Limited" }, + { { 0x28, 0x1D, 0xFB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x28, 0x22, 0x1E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x28, 0x22, 0x46 }, "SinoixCommun", "Beijing Sinoix Communication Co., LTD" }, { { 0x28, 0x23, 0x73 }, "Digita", "Digita" }, { { 0x28, 0x23, 0xF5 }, "ChinaMobileI", "China Mobile (Hangzhou) Information Technology Co., Ltd." }, @@ -16551,12 +16619,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x34, 0xA2 }, "Cisco", "Cisco Systems, Inc" }, { { 0x28, 0x34, 0xFF }, "Apple", "Apple, Inc." }, { { 0x28, 0x35, 0x45 }, "ChuangweiRgb", "Shenzhen Chuangwei-Rgb Electronics Co.,Ltd" }, + { { 0x28, 0x36, 0xF0 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x28, 0x37, 0x13 }, "3NodDigitalT", "Shenzhen 3Nod Digital Technology Co., Ltd." }, { { 0x28, 0x37, 0x37 }, "Apple", "Apple, Inc." }, { { 0x28, 0x38, 0x5C }, "Flextronics", "Flextronics" }, { { 0x28, 0x38, 0xCF }, "Gen2wave", "Gen2wave" }, { { 0x28, 0x39, 0x26 }, "CyberTANTech", "CyberTAN Technology Inc." }, { { 0x28, 0x39, 0x5E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x28, 0x39, 0x84 }, "QidiTechnolo", "Qidi Technology (shanghai) Co.,Ltd." }, { { 0x28, 0x39, 0xE7 }, "PrecenoTechn", "Preceno Technology Pte.Ltd." }, { { 0x28, 0x3A, 0x4D }, "CloudNetwork", "Cloud Network Technology (Samoa) Limited" }, { { 0x28, 0x3B, 0x82 }, "DLinkInterna", "D-Link International" }, @@ -16564,6 +16634,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x3C, 0x90 }, "TexasInstrum", "Texas Instruments" }, { { 0x28, 0x3C, 0xE4 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x28, 0x3D, 0xC2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x28, 0x3D, 0xE8 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0x28, 0x3E, 0x0C }, "PreferredRob", "Preferred Robotics, Inc." }, { { 0x28, 0x3E, 0x76 }, "CommonNetwor", "Common Networks" }, { { 0x28, 0x3F, 0x69 }, "Sony", "Sony Corporation" }, @@ -16605,6 +16676,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x64, 0xEF }, "FsanIntellig", "Shenzhen Fsan Intelligent Technology Co.,Ltd" }, { { 0x28, 0x65, 0x6B }, "KeystoneMicr", "Keystone Microtech Corporation" }, { { 0x28, 0x66, 0xE3 }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0x28, 0x68, 0x47 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x28, 0x68, 0xD2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x28, 0x6A, 0xB8 }, "Apple", "Apple, Inc." }, { { 0x28, 0x6A, 0xBA }, "Apple", "Apple, Inc." }, @@ -16653,6 +16725,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x8E, 0xB9 }, "Wacom", "Wacom Co.,Ltd." }, { { 0x28, 0x8E, 0xEC }, "Apple", "Apple, Inc." }, { { 0x28, 0x8F, 0xF6 }, "Apple", "Apple, Inc." }, + { { 0x28, 0x91, 0x76 }, "IndymeSoluti", "Indyme Solutions, LLC" }, { { 0x28, 0x91, 0xD0 }, "StageTecEntw", "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH" }, { { 0x28, 0x92, 0x4A }, "HewlettPacka", "Hewlett Packard" }, { { 0x28, 0x93, 0x7D }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, @@ -16672,6 +16745,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0x9E, 0xDF }, "DanfossTurbo", "Danfoss Turbocor Compressors, Inc" }, { { 0x28, 0x9E, 0xFC }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x28, 0xA0, 0x2B }, "Apple", "Apple, Inc." }, + { { 0x28, 0xA0, 0x6B }, "Intel", "Intel Corporate" }, { { 0x28, 0xA1, 0x83 }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x28, 0xA1, 0x86 }, "enblink", "enblink" }, { { 0x28, 0xA1, 0x92 }, "GERPSolution", "GERP Solution" }, @@ -16746,6 +16820,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0xCF, 0x51 }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x28, 0xCF, 0xDA }, "Apple", "Apple, Inc." }, { { 0x28, 0xCF, 0xE9 }, "Apple", "Apple, Inc." }, + { { 0x28, 0xD0, 0x43 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x28, 0xD0, 0x44 }, "Xinyintechno", "Shenzhen Xinyin technology company" }, { { 0x28, 0xD0, 0xCB }, "Adtran", "Adtran Inc" }, { { 0x28, 0xD0, 0xEA }, "Intel", "Intel Corporate" }, @@ -16763,6 +16838,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x28, 0xD9, 0x97 }, "YuduanMobile", "Yuduan Mobile Co., Ltd." }, { { 0x28, 0xDB, 0x81 }, "GuaoElectron", "Shanghai Guao Electronic Technology Co., Ltd" }, { { 0x28, 0xDB, 0xA7 }, "SiliconLabor", "Silicon Laboratories" }, + { { 0x28, 0xDE, 0x59 }, "DomusNTW", "Domus NTW CORP." }, { { 0x28, 0xDE, 0x65 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x28, 0xDE, 0xA8 }, "zte", "zte corporation" }, { { 0x28, 0xDE, 0xE5 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -16848,6 +16924,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x2C, 0x08, 0xB4 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x2C, 0x09, 0x4D }, "RaptorEngine", "Raptor Engineering, LLC" }, { { 0x2C, 0x09, 0xCB }, "Cobs", "Cobs Ab" }, + { { 0x2C, 0x0B, 0x97 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x2C, 0x0B, 0xAB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x2C, 0x0B, 0xE9 }, "Cisco", "Cisco Systems, Inc" }, { { 0x2C, 0x0D, 0xA7 }, "Intel", "Intel Corporate" }, @@ -16901,6 +16978,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x2C, 0x34, 0x27 }, "ErcoGener", "Erco & Gener" }, { { 0x2C, 0x35, 0x57 }, "ELIIYPower", "ELIIY Power CO., Ltd." }, { { 0x2C, 0x36, 0xA0 }, "Capisco", "Capisco Limited" }, + { { 0x2C, 0x36, 0xF2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x2C, 0x36, 0xF8 }, "Cisco", "Cisco Systems, Inc" }, { { 0x2C, 0x37, 0x31 }, "YifangDigita", "Shenzhen Yifang Digital Technology Co.,Ltd." }, { { 0x2C, 0x37, 0x96 }, "Cybo", "Cybo Co.,Ltd." }, @@ -17084,6 +17162,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x2C, 0xB2, 0x1A }, "Phicomm", "Phicomm (Shanghai) Co., Ltd." }, { { 0x2C, 0xB3, 0x01 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0x2C, 0xB4, 0x3A }, "Apple", "Apple, Inc." }, + { { 0x2C, 0xB6, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x2C, 0xB6, 0x93 }, "Radware", "Radware" }, { { 0x2C, 0xB6, 0x9D }, "REDDigitalCi", "RED Digital Cinema" }, { { 0x2C, 0xB6, 0xC8 }, "RaisecomTech", "Raisecom Technology CO., LTD" }, @@ -17091,6 +17170,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x2C, 0xBA, 0xBA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x2C, 0xBA, 0xCA }, "CosonicElect", "Cosonic Electroacoustic Technology Co., Ltd." }, { { 0x2C, 0xBC, 0x87 }, "Apple", "Apple, Inc." }, + { { 0x2C, 0xBC, 0xBB }, "Espressif", "Espressif Inc." }, { { 0x2C, 0xBE, 0x08 }, "Apple", "Apple, Inc." }, { { 0x2C, 0xBE, 0x97 }, "Ingenieurbue", "Ingenieurbuero Bickele und Buehler GmbH" }, { { 0x2C, 0xBE, 0xEB }, "NothingTechn", "Nothing Technology Limited" }, @@ -17114,6 +17194,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x2C, 0xCD, 0x69 }, "Aqavicom", "Aqavi.com" }, { { 0x2C, 0xCE, 0x1E }, "Cloudtronics", "Cloudtronics Pty Ltd" }, { { 0x2C, 0xCF, 0x58 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x2C, 0xCF, 0x67 }, "RaspberryPi", "Raspberry Pi (Trading) Ltd" }, { { 0x2C, 0xD0, 0x2D }, "Cisco", "Cisco Systems, Inc" }, { { 0x2C, 0xD0, 0x5A }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x2C, 0xD0, 0x66 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -17188,6 +17269,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0x10, 0xB3 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x30, 0x10, 0xE4 }, "Apple", "Apple, Inc." }, { { 0x30, 0x13, 0x89 }, "SiemensAutom", "Siemens AG, Automations & Drives," }, + { { 0x30, 0x13, 0x8B }, "HP", "HP Inc." }, { { 0x30, 0x14, 0x2D }, "Piciorgros", "Piciorgros GmbH" }, { { 0x30, 0x14, 0x4A }, "WistronNeweb", "Wistron Neweb Corporation" }, { { 0x30, 0x15, 0x18 }, "UbiquitousCo", "Ubiquitous Communication Co. ltd." }, @@ -17234,14 +17316,16 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0x39, 0x55 }, "JinhengjiaEl", "Shenzhen Jinhengjia Electronic Co., Ltd." }, { { 0x30, 0x39, 0xA9 }, "HongshanInfo", "Hongshan Information Science and Technology (HangZhou) Co.,Ltd." }, { { 0x30, 0x39, 0xF2 }, "ADBBroadband", "ADB Broadband Italia" }, + { { 0x30, 0x3A, 0x4A }, "eero", "eero inc." }, { { 0x30, 0x3A, 0x64 }, "Intel", "Intel Corporate" }, { { 0x30, 0x3A, 0xBA }, "GuangzhouBao", "Guangzhou BaoLun Electronics Co., Ltd" }, + { { 0x30, 0x3B, 0x7C }, "Apple", "Apple, Inc." }, { { 0x30, 0x3D, 0x08 }, "GlinttTes", "Glintt Tes S.A." }, { { 0x30, 0x3E, 0xA7 }, "Intel", "Intel Corporate" }, { { 0x30, 0x3E, 0xAD }, "SonavoxCanad", "Sonavox Canada Inc" }, { { 0x30, 0x3F, 0x5D }, "PtHanSungEle", "Pt Han Sung Electoronics Indonesia" }, { { 0x30, 0x3F, 0x7B }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, - { { 0x30, 0x3F, 0xBB }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x30, 0x3F, 0xBB }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x30, 0x40, 0x74 }, "zte", "zte corporation" }, { { 0x30, 0x41, 0x74 }, "AltecLansing", "Altec Lansing Llc" }, { { 0x30, 0x42, 0x25 }, "BurgWächter", "Burg-Wächter Kg" }, @@ -17267,6 +17351,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0x50, 0xF1 }, "Ennoconn", "Ennoconn Corporation." }, { { 0x30, 0x50, 0xFD }, "SkyworthDigi", "Skyworth Digital Technology(Shenzhen) Co.,Ltd" }, { { 0x30, 0x51, 0xF8 }, "BYKGardner", "BYK-Gardner GmbH" }, + { { 0x30, 0x52, 0x23 }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, { { 0x30, 0x52, 0x5A }, "NST", "NST Co., LTD" }, { { 0x30, 0x52, 0xCB }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x30, 0x53, 0xC1 }, "Cresyn", "Cresyn" }, @@ -17335,6 +17420,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0x89, 0x4A }, "Intel", "Intel Corporate" }, { { 0x30, 0x89, 0x76 }, "DalianLambaT", "Dalian Lamba Technology Co.,Ltd" }, { { 0x30, 0x89, 0x99 }, "EastPower", "Guangdong East Power Co.," }, + { { 0x30, 0x89, 0xA6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x30, 0x89, 0xD3 }, "HongkongUclo", "Hongkong Ucloudlink Network Technology Limited" }, { { 0x30, 0x8A, 0xF7 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x30, 0x8B, 0xB2 }, "Cisco", "Cisco Systems, Inc" }, @@ -17367,6 +17453,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0xA2, 0x43 }, "PrifoxInnova", "Shenzhen Prifox Innovation Technology Co., Ltd." }, { { 0x30, 0xA2, 0xC2 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x30, 0xA3, 0x0F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x30, 0xA3, 0xB5 }, "JiangsuBestT", "Jiangsu Best Tone Information Service Co., Ltd" }, { { 0x30, 0xA4, 0x52 }, "ArrivalEleme", "Arrival Elements BV" }, { { 0x30, 0xA6, 0x12 }, "HugsunTechno", "ShenZhen Hugsun Technology Co.,Ltd." }, { { 0x30, 0xA8, 0x89 }, "DecimatorDes", "Decimator Design" }, @@ -17406,6 +17493,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0xC3, 0xD9 }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x30, 0xC5, 0x07 }, "ECITelecom", "ECI Telecom Ltd." }, { { 0x30, 0xC5, 0x0F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x30, 0xC6, 0xAB }, "zte", "zte corporation" }, { { 0x30, 0xC6, 0xD7 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x30, 0xC6, 0xF7 }, "Espressif", "Espressif Inc." }, { { 0x30, 0xC7, 0x50 }, "MICTechnolog", "MIC Technology Group" }, @@ -17425,6 +17513,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0xD3, 0x57 }, "Logosol", "Logosol, Inc." }, { { 0x30, 0xD3, 0x86 }, "zte", "zte corporation" }, { { 0x30, 0xD4, 0x6A }, "Autosales", "Autosales Incorporated" }, + { { 0x30, 0xD4, 0xE2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x30, 0xD5, 0x3E }, "Apple", "Apple, Inc." }, { { 0x30, 0xD5, 0x87 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x30, 0xD6, 0x59 }, "MergingTechn", "Merging Technologies SA" }, @@ -17463,6 +17552,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x30, 0xF3, 0x35 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x30, 0xF3, 0x3A }, "plugg", "+plugg srl" }, { { 0x30, 0xF4, 0x2F }, "Esp", "Esp" }, + { { 0x30, 0xF6, 0x00 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x30, 0xF6, 0xB9 }, "EcocentricEn", "Ecocentric Energy" }, { { 0x30, 0xF6, 0xEF }, "Intel", "Intel Corporate" }, { { 0x30, 0xF7, 0x0D }, "Cisco", "Cisco Systems, Inc" }, @@ -17509,12 +17599,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0x13, 0x43 }, "GELighting", "GE Lighting" }, { { 0x34, 0x13, 0xA8 }, "Mediplan", "Mediplan Limited" }, { { 0x34, 0x13, 0xE8 }, "Intel", "Intel Corporate" }, + { { 0x34, 0x14, 0x53 }, "GantnerElect", "Gantner Electronic GmbH" }, { { 0x34, 0x14, 0x5F }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0x14, 0xB5 }, "TexasInstrum", "Texas Instruments" }, { { 0x34, 0x15, 0x13 }, "TexasInstrum", "Texas Instruments" }, { { 0x34, 0x15, 0x93 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x34, 0x15, 0x9E }, "Apple", "Apple, Inc." }, { { 0x34, 0x17, 0xEB }, "Dell", "Dell Inc." }, + { { 0x34, 0x19, 0x4D }, "Arcadyan", "Arcadyan Corporation" }, { { 0x34, 0x1A, 0x35 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x34, 0x1A, 0x4C }, "WeibuElectro", "Shenzhen Weibu Electronics Co.,Ltd." }, { { 0x34, 0x1B, 0x22 }, "GrandbeingTe", "Grandbeing Technology Co., Ltd" }, @@ -17596,6 +17688,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0x58, 0x40 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x34, 0x58, 0x7C }, "MiraeInforma", "Mirae Information Technology Co., Ltd." }, { { 0x34, 0x5A, 0x06 }, "SHARP", "SHARP Corporation" }, + { { 0x34, 0x5A, 0x18 }, "AlignmentEng", "Alignment Engine Inc." }, { { 0x34, 0x5A, 0xBA }, "tcloudintell", "tcloud intelligence" }, { { 0x34, 0x5B, 0x11 }, "EviHeat", "Evi Heat Ab" }, { { 0x34, 0x5B, 0x98 }, "EMMicroelect", "EM Microelectronic" }, @@ -17606,6 +17699,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0x5D, 0xA8 }, "Cisco", "Cisco Systems, Inc" }, { { 0x34, 0x5E, 0x08 }, "Roku", "Roku, Inc" }, { { 0x34, 0x5E, 0xE7 }, "ChengFengErL", "Hangzhou ChengFengErLai Digial Technology Co.,Ltd." }, + { { 0x34, 0x5F, 0x45 }, "Espressif", "Espressif Inc." }, { { 0x34, 0x60, 0xF9 }, "TPLink", "TP-Link Corporation Limited" }, { { 0x34, 0x61, 0x78 }, "Boeing", "The Boeing Company" }, { { 0x34, 0x62, 0x88 }, "Cisco", "Cisco Systems, Inc" }, @@ -17659,6 +17753,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0x82, 0xC5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0x82, 0xDE }, "Kiio", "Kiio Inc" }, { { 0x34, 0x83, 0x02 }, "iFORCOM", "iFORCOM Co., Ltd" }, + { { 0x34, 0x83, 0xD5 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x34, 0x84, 0x46 }, "Ericsson", "Ericsson AB" }, { { 0x34, 0x84, 0xE4 }, "TexasInstrum", "Texas Instruments" }, { { 0x34, 0x85, 0x11 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, @@ -17704,6 +17799,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0xA5, 0xB4 }, "NavtechPte", "Navtech Pte Ltd" }, { { 0x34, 0xA5, 0xE1 }, "SensoristApS", "Sensorist ApS" }, { { 0x34, 0xA6, 0x8C }, "ShineProfitD", "Shine Profit Development Limited" }, + { { 0x34, 0xA6, 0xEF }, "PhatenTech", "Shenzhen Phaten Tech. LTD" }, { { 0x34, 0xA7, 0x09 }, "Trevil", "Trevil srl" }, { { 0x34, 0xA7, 0xBA }, "FischerInter", "Fischer International Systems Corporation" }, { { 0x34, 0xA8, 0x43 }, "KYOCERADispl", "KYOCERA Display Corporation" }, @@ -17753,6 +17849,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0xC5, 0x15 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x34, 0xC5, 0xD0 }, "HagleitnerHy", "Hagleitner Hygiene International GmbH" }, { { 0x34, 0xC6, 0x9A }, "Enecsys", "Enecsys Ltd" }, + { { 0x34, 0xC6, 0xDD }, "EzvizSoftwar", "Hangzhou Ezviz Software Co.,Ltd." }, { { 0x34, 0xC7, 0x31 }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x34, 0xC7, 0xE9 }, "Google", "Google, Inc." }, { { 0x34, 0xC8, 0x03 }, "Nokia", "Nokia Corporation" }, @@ -17768,6 +17865,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0xCE, 0x69 }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0x34, 0xCE, 0x94 }, "Parsec", "Parsec (Pty) Ltd" }, { { 0x34, 0xCF, 0x6C }, "Tailiwireles", "Hangzhou Taili wireless communication equipment Co.,Ltd" }, + { { 0x34, 0xCF, 0xB5 }, "Roboticdoo", "Robotic d.o.o." }, { { 0x34, 0xCF, 0xF6 }, "Intel", "Intel Corporate" }, { { 0x34, 0xD0, 0x9B }, "MobilMAXTech", "MobilMAX Technology Inc." }, { { 0x34, 0xD2, 0x62 }, "SzDjiTechnol", "Sz Dji Technology Co.,Ltd" }, @@ -17798,6 +17896,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0xE2, 0xFD }, "Apple", "Apple, Inc." }, { { 0x34, 0xE3, 0x80 }, "Genexis", "Genexis B.V." }, { { 0x34, 0xE3, 0xDA }, "HovalAktieng", "Hoval Aktiengesellschaft" }, + { { 0x34, 0xE3, 0xFB }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0xE4, 0x2A }, "AutomaticBar", "Automatic Bar Controls Inc." }, { { 0x34, 0xE5, 0xEC }, "PaloAltoNetw", "Palo Alto Networks" }, { { 0x34, 0xE6, 0xAD }, "Intel", "Intel Corporate" }, @@ -17835,7 +17934,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x34, 0xFA, 0x9F }, "RuckusWirele", "Ruckus Wireless" }, { { 0x34, 0xFC, 0x6F }, "Alcea", "Alcea" }, { { 0x34, 0xFC, 0xA1 }, "Micronetunio", "Micronet union Technology(Chengdu)Co., Ltd." }, - { { 0x34, 0xFC, 0xB9 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x34, 0xFC, 0xB9 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x34, 0xFC, 0xEF }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x34, 0xFD, 0x6A }, "Apple", "Apple, Inc." }, { { 0x34, 0xFE, 0x1C }, "ChoungHwaTec", "Choung Hwa Tech Co.,Ltd" }, @@ -17879,7 +17978,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x38, 0x16, 0xD1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x38, 0x17, 0x30 }, "UlrichLipper", "Ulrich Lippert GmbH & Co KG" }, { { 0x38, 0x17, 0x66 }, "Promzakaz", "Promzakaz Ltd." }, - { { 0x38, 0x17, 0xC3 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x38, 0x17, 0xC3 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x38, 0x17, 0xE1 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x38, 0x18, 0x4C }, "SonyHomeEnte", "Sony Home Entertainment&Sound Products Inc" }, { { 0x38, 0x19, 0x2F }, "Nokia", "Nokia Corporation" }, @@ -17995,9 +18094,11 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x38, 0x76, 0x05 }, "Inogeni", "Inogeni" }, { { 0x38, 0x76, 0xCA }, "SmartIntelli", "Shenzhen Smart Intelligent Technology Co.Ltd" }, { { 0x38, 0x76, 0xD1 }, "Euronda", "Euronda SpA" }, + { { 0x38, 0x77, 0xCD }, "KokusaiElect", "Kokusai Electric Corporation" }, { { 0x38, 0x78, 0x62 }, "Sony", "Sony Corporation" }, { { 0x38, 0x7A, 0x0E }, "Intel", "Intel Corporate" }, { { 0x38, 0x7A, 0x3C }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, + { { 0x38, 0x7B, 0x01 }, "MiaoMingInte", "Shenzhen MiaoMing Intelligent Technology Co.,Ltd" }, { { 0x38, 0x7B, 0x47 }, "AKELA", "AKELA, Inc." }, { { 0x38, 0x7C, 0x76 }, "UniversalGlo", "Universal Global Scientific Industrial Co., Ltd." }, { { 0x38, 0x80, 0xDF }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, @@ -18063,6 +18164,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x38, 0xAB, 0x16 }, "NpoRtt", "Npo Rtt Llc" }, { { 0x38, 0xAB, 0x41 }, "TexasInstrum", "Texas Instruments" }, { { 0x38, 0xAC, 0x3D }, "Nephos", "Nephos Inc" }, + { { 0x38, 0xAC, 0xDD }, "Valenco", "Valenco GmbH" }, { { 0x38, 0xAD, 0x2B }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0x38, 0xAD, 0x8E }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x38, 0xAD, 0xBE }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, @@ -18121,6 +18223,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x38, 0xDE, 0x60 }, "Mohlenhoff", "Mohlenhoff GmbH" }, { { 0x38, 0xDE, 0xAD }, "Intel", "Intel Corporate" }, { { 0x38, 0xE0, 0x8E }, "MitsubishiEl", "Mitsubishi Electric Corporation" }, + { { 0x38, 0xE1, 0x3D }, "Apple", "Apple, Inc." }, { { 0x38, 0xE1, 0xAA }, "zte", "zte corporation" }, { { 0x38, 0xE1, 0xF4 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x38, 0xE2, 0x6E }, "SweetRainEle", "ShenZhen Sweet Rain Electronics Co.,Ltd." }, @@ -18146,6 +18249,8 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x38, 0xF0, 0x98 }, "VaporStoneRa", "Vapor Stone Rail Systems" }, { { 0x38, 0xF0, 0xC8 }, "Logitech", "Logitech" }, { { 0x38, 0xF1, 0x35 }, "SensorTecCan", "SensorTec-Canada" }, + { { 0x38, 0xF1, 0x8F }, "TechnicolorT", "Technicolor (China) Technology Co., Ltd." }, + { { 0x38, 0xF1, 0x95 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x38, 0xF2, 0x3E }, "MicrosoftMob", "Microsoft Mobile Oy" }, { { 0x38, 0xF3, 0x2E }, "Skullcandy", "Skullcandy" }, { { 0x38, 0xF3, 0x3F }, "Tatsuno", "Tatsuno Corporation" }, @@ -18205,9 +18310,11 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0x07, 0x54 }, "Apple", "Apple, Inc." }, { { 0x3C, 0x07, 0x71 }, "Sony", "Sony Corporation" }, { { 0x3C, 0x08, 0x1E }, "YupontElectr", "Beijing Yupont Electric Power Technology Co.,Ltd" }, + { { 0x3C, 0x08, 0x68 }, "PowerPlusCom", "Power Plus Communications AG" }, { { 0x3C, 0x08, 0xCD }, "JuniperNetwo", "Juniper Networks" }, { { 0x3C, 0x08, 0xF6 }, "Cisco", "Cisco Systems, Inc" }, { { 0x3C, 0x09, 0x6D }, "PowerhouseDy", "Powerhouse Dynamics" }, + { { 0x3C, 0x0A, 0x7A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x3C, 0x0A, 0xF3 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0x3C, 0x0B, 0x4F }, "IntertechSer", "Intertech Services AG" }, { { 0x3C, 0x0C, 0x48 }, "Servergy", "Servergy, Inc." }, @@ -18273,6 +18380,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0x33, 0x00 }, "Bilianelectr", "Shenzhen Bilian electronic CO.,LTD" }, { { 0x3C, 0x33, 0x32 }, "DLink", "D-Link Corporation" }, { { 0x3C, 0x35, 0x56 }, "Cognitec", "Cognitec Systems GmbH" }, + { { 0x3C, 0x35, 0x76 }, "ItelMobile", "Itel Mobile Limited" }, { { 0x3C, 0x36, 0x3D }, "Nokia", "Nokia Corporation" }, { { 0x3C, 0x36, 0x6A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x3C, 0x36, 0xE4 }, "ARRISGroup", "ARRIS Group, Inc." }, @@ -18403,6 +18511,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0x97, 0x7E }, "IPSTechnolog", "IPS Technology Limited" }, { { 0x3C, 0x98, 0x72 }, "Sercomm", "Sercomm Corporation." }, { { 0x3C, 0x98, 0xBF }, "QuestControl", "Quest Controls, Inc." }, + { { 0x3C, 0x99, 0x6D }, "MarelliEurop", "Marelli Europe s.p.a." }, { { 0x3C, 0x99, 0x8C }, "HouwaSystemD", "Houwa System Design Corp." }, { { 0x3C, 0x99, 0xF7 }, "Lansentechno", "Lansentechnology AB" }, { { 0x3C, 0x9A, 0x77 }, "VantivaUSA", "Vantiva USA LLC" }, @@ -18413,6 +18522,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0x9E, 0xC7 }, "SkyUk", "Sky Uk Limited" }, { { 0x3C, 0x9F, 0x81 }, "CATICBitComm", "Shenzhen CATIC Bit Communications Technology Co.,Ltd" }, { { 0x3C, 0x9F, 0xC3 }, "SineadTechno", "Beijing Sinead Technology Co., Ltd." }, + { { 0x3C, 0x9F, 0xCD }, "NeowayTechno", "Shenzhen Neoway Technology Co.,Ltd." }, { { 0x3C, 0xA0, 0x67 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x3C, 0xA1, 0x0D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x3C, 0xA1, 0x61 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -18435,6 +18545,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0xAA, 0x3F }, "iKey", "iKey, Ltd." }, { { 0x3C, 0xAB, 0x8E }, "Apple", "Apple, Inc." }, { { 0x3C, 0xAE, 0x69 }, "ESAElektrosc", "ESA Elektroschaltanlagen Grimma GmbH" }, + { { 0x3C, 0xAF, 0xB7 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x3C, 0xB0, 0x7E }, "AroundsIntel", "Arounds Intelligent Equipment Co., Ltd." }, { { 0x3C, 0xB0, 0xED }, "NothingTechn", "Nothing Technology Limited" }, { { 0x3C, 0xB1, 0x5B }, "Avaya", "Avaya Inc" }, @@ -18465,6 +18576,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x3C, 0xC2, 0xE1 }, "XinhuaContro", "Xinhua Control Engineering Co.,Ltd" }, { { 0x3C, 0xC7, 0x86 }, "DongguanHuar", "Dongguan Huarong Communication Technologies Co.,Ltd." }, { { 0x3C, 0xC9, 0x9E }, "HuiyangTechn", "Huiyang Technology Co., Ltd" }, + { { 0x3C, 0xCA, 0x61 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0x3C, 0xCA, 0x87 }, "Iders", "Iders Incorporated" }, { { 0x3C, 0xCB, 0x4D }, "Avikus", "Avikus Co., Ltd" }, { { 0x3C, 0xCB, 0x7C }, "TCTmobile", "TCT mobile ltd" }, @@ -18591,6 +18703,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0x2E, 0x71 }, "TexasInstrum", "Texas Instruments" }, { { 0x40, 0x2F, 0x86 }, "LGInnotek", "LG Innotek" }, { { 0x40, 0x30, 0x04 }, "Apple", "Apple, Inc." }, + { { 0x40, 0x30, 0x59 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x40, 0x30, 0x67 }, "Conlog", "Conlog (Pty) Ltd" }, { { 0x40, 0x31, 0x3C }, "XIAOMIElectr", "XIAOMI Electronics,CO.,LTD" }, { { 0x40, 0x32, 0x9D }, "UnionImage", "Union Image Co.,Ltd" }, @@ -18709,6 +18822,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0x8E, 0x2C }, "Microsoft", "Microsoft Corporation" }, { { 0x40, 0x8E, 0xDF }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x40, 0x8E, 0xF6 }, "Infinixmobil", "Infinix mobility limited" }, + { { 0x40, 0x8F, 0x9A }, "KanELSweden", "KanEL Sweden AB" }, { { 0x40, 0x8F, 0x9D }, "JuniperNetwo", "Juniper Networks" }, { { 0x40, 0x91, 0x51 }, "Espressif", "Espressif Inc." }, { { 0x40, 0x92, 0x1A }, "Apple", "Apple, Inc." }, @@ -18722,6 +18836,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0x98, 0xAD }, "Apple", "Apple, Inc." }, { { 0x40, 0x99, 0x22 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x40, 0x99, 0xE3 }, "GuangzhouMud", "Guangzhou Mudi Information Technology Co., Ltd" }, + { { 0x40, 0x99, 0xF6 }, "TelinkSemico", "Telink Semiconductor(Shanghai) Co.,Ltd" }, { { 0x40, 0x9A, 0x30 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0x40, 0x9B, 0x0D }, "YourfKwanInd", "Shenzhen Yourf Kwan Industrial Co., Ltd" }, { { 0x40, 0x9B, 0x21 }, "Nokia", "Nokia" }, @@ -18777,8 +18892,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0xB8, 0x37 }, "Sony", "Sony Corporation" }, { { 0x40, 0xB8, 0x9A }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x40, 0xB8, 0xC2 }, "Osmozis", "Osmozis" }, - { { 0x40, 0xB9, 0x3C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x40, 0xB9, 0x3C }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x40, 0xBA, 0x61 }, "ARIMACommuni", "ARIMA Communications Corp." }, + { { 0x40, 0xBB, 0x56 }, "TeraNXTGloba", "TeraNXT Global India Pvt Ltd." }, { { 0x40, 0xBC, 0x60 }, "Apple", "Apple, Inc." }, { { 0x40, 0xBC, 0x68 }, "FunshionOnli", "Wuhan Funshion Online Technologies Co.,Ltd" }, { { 0x40, 0xBC, 0x73 }, "CronoplastSL", "Cronoplast S.L." }, @@ -18807,6 +18923,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0xCD, 0x3A }, "Z3Technology", "Z3 Technology" }, { { 0x40, 0xCD, 0x7A }, "QingdaoHisen", "Qingdao Hisense Communications Co.,Ltd." }, { { 0x40, 0xCE, 0x24 }, "Cisco", "Cisco Systems, Inc" }, + { { 0x40, 0xD1, 0x60 }, "Apple", "Apple, Inc." }, { { 0x40, 0xD2, 0x5F }, "ItelMobile", "Itel Mobile Limited" }, { { 0x40, 0xD2, 0x8A }, "Nintendo", "Nintendo Co., Ltd." }, { { 0x40, 0xD3, 0x2D }, "Apple", "Apple, Inc." }, @@ -18819,10 +18936,12 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0xD5, 0x63 }, "HANAElectron", "HANA Electronics" }, { { 0x40, 0xD6, 0x3C }, "EquitechIndu", "Equitech Industrial(DongGuan)Co.,Ltd" }, { { 0x40, 0xD9, 0x5A }, "AMPAKTechnol", "AMPAK Technology,Inc." }, + { { 0x40, 0xDA, 0x5C }, "Apple", "Apple, Inc." }, { { 0x40, 0xDC, 0x9D }, "Hajen", "Hajen" }, { { 0x40, 0xDC, 0xA5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x40, 0xDD, 0xD1 }, "BeautifulCar", "Beautiful Card Corporation" }, { { 0x40, 0xDE, 0x17 }, "LanfengTimes", "Shenzhen Lanfeng Times Industrial Co.,Ltd." }, + { { 0x40, 0xDE, 0x24 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x40, 0xDE, 0xAD }, "JuniperNetwo", "Juniper Networks" }, { { 0x40, 0xDF, 0x02 }, "LINEBIZPlus", "LINE BIZ Plus" }, { { 0x40, 0xE1, 0x1C }, "CloudHighCom", "shenzhen Cloud High Communication Technology Co.,Ltd" }, @@ -18841,6 +18960,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x40, 0xED, 0x00 }, "TPLink", "TP-Link Corporation Limited" }, { { 0x40, 0xED, 0xCF }, "Apple", "Apple, Inc." }, { { 0x40, 0xEE, 0x15 }, "ZioncomElect", "Zioncom Electronics (Shenzhen) Ltd." }, + { { 0x40, 0xEE, 0xBE }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, { { 0x40, 0xEE, 0xDD }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x40, 0xEF, 0x4C }, "Fihonestcomm", "Fihonest communication co.,Ltd" }, { { 0x40, 0xF0, 0x2F }, "LiteonTechno", "Liteon Technology Corporation" }, @@ -18960,8 +19080,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x44, 0x47, 0xCC }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x44, 0x48, 0x91 }, "HDMILicensin", "HDMI Licensing, LLC" }, { { 0x44, 0x48, 0xB9 }, "MitraStarTec", "MitraStar Technology Corp." }, - { { 0x44, 0x48, 0xC1 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x44, 0x48, 0xC1 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x44, 0x48, 0xFF }, "QingdaoHaier", "Qingdao Haier Technology Co.,Ltd" }, + { { 0x44, 0x49, 0x63 }, "WovenByToyot", "Woven By Toyota U.S., Inc." }, { { 0x44, 0x49, 0x88 }, "Intel", "Intel Corporate" }, { { 0x44, 0x4A, 0x65 }, "Silverflare", "Silverflare Ltd." }, { { 0x44, 0x4A, 0xB0 }, "ZhejiangMoor", "Zhejiang Moorgen Intelligence Technology Co., Ltd" }, @@ -19023,6 +19144,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x44, 0x70, 0x0B }, "Iffu", "Iffu" }, { { 0x44, 0x70, 0x98 }, "MingHongTech", "Ming Hong Technology (Shen Zhen) Limited" }, { { 0x44, 0x71, 0x47 }, "XiaomiElectr", "Beijing Xiaomi Electronics Co.,Ltd" }, + { { 0x44, 0x71, 0xB3 }, "LogitechFarE", "Logitech Far East" }, { { 0x44, 0x73, 0xD6 }, "Logitech", "Logitech" }, { { 0x44, 0x74, 0x6C }, "Sony", "Sony Corporation" }, { { 0x44, 0x76, 0x54 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -19118,6 +19240,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x44, 0xC3, 0x9B }, "OooRubezhNpo", "Ooo Rubezh Npo" }, { { 0x44, 0xC3, 0xB6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0xC4, 0xA9 }, "OpticomCommu", "Opticom Communication, LLC" }, + { { 0x44, 0xC5, 0x32 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0xC5, 0x6F }, "NGNEasySatfi", "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd" }, { { 0x44, 0xC6, 0x5D }, "Apple", "Apple, Inc." }, { { 0x44, 0xC6, 0x9B }, "FengTianInfo", "Wuhan Feng Tian Information Network CO.,LTD" }, @@ -19195,6 +19318,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x44, 0xF4, 0x59 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x44, 0xF4, 0x77 }, "JuniperNetwo", "Juniper Networks" }, { { 0x44, 0xF4, 0xE7 }, "Cohesity", "Cohesity Inc" }, + { { 0x44, 0xF7, 0x70 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x44, 0xF8, 0x49 }, "UnionPacific", "Union Pacific Railroad" }, { { 0x44, 0xF9, 0x71 }, "MercuryCommu", "Shenzhen Mercury Communication Technologies Co.,Ltd." }, { { 0x44, 0xFA, 0x66 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, @@ -19207,6 +19331,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0x00, 0x31 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x48, 0x00, 0x33 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x48, 0x00, 0x7D }, "DtsElektroni", "Dts Elektronik San. Tic. Ltd. Sti." }, + { { 0x48, 0x00, 0xB3 }, "Cisco", "Cisco Systems, Inc" }, { { 0x48, 0x01, 0xC5 }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x48, 0x02, 0x2A }, "BLinkElectro", "B-Link Electronic Limited" }, { { 0x48, 0x02, 0x86 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, @@ -19271,6 +19396,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0x35, 0x2B }, "Apple", "Apple, Inc." }, { { 0x48, 0x35, 0x2E }, "WolckNetwork", "Shenzhen Wolck Network Product Co.,LTD" }, { { 0x48, 0x35, 0x43 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, + { { 0x48, 0x35, 0x84 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x48, 0x36, 0x5F }, "Wintecronics", "Wintecronics Ltd." }, { { 0x48, 0x38, 0x71 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x48, 0x38, 0xB6 }, "AuhuiTaoyunT", "Auhui Taoyun Technology Co., Ltd" }, @@ -19294,9 +19420,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0x46, 0xF1 }, "Uros", "Uros Oy" }, { { 0x48, 0x46, 0xFB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x48, 0x47, 0x4B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x48, 0x49, 0x82 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x48, 0x49, 0xC7 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x48, 0x4A, 0x30 }, "GeorgeRoboti", "George Robotics Limited" }, - { { 0x48, 0x4A, 0xE9 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x48, 0x4A, 0xE9 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x48, 0x4B, 0xAA }, "Apple", "Apple, Inc." }, { { 0x48, 0x4B, 0xD4 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x48, 0x4C, 0x29 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -19357,6 +19484,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0x73, 0x10 }, "JuniperNetwo", "Juniper Networks" }, { { 0x48, 0x73, 0x97 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x48, 0x73, 0xCB }, "Tiinlab", "Tiinlab Corporation" }, + { { 0x48, 0x74, 0x10 }, "Cisco", "Cisco Systems, Inc" }, { { 0x48, 0x74, 0x12 }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x48, 0x74, 0x6E }, "Apple", "Apple, Inc." }, { { 0x48, 0x75, 0x83 }, "Intellion", "Intellion AG" }, @@ -19419,7 +19547,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0x9D, 0xD1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x48, 0x9E, 0x9D }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x48, 0x9E, 0xBD }, "HP", "HP Inc." }, - { { 0x48, 0x9E, 0xCB }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x48, 0x9E, 0xCB }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x48, 0xA0, 0xF8 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x48, 0xA1, 0x95 }, "Apple", "Apple, Inc." }, { { 0x48, 0xA2, 0x2D }, "HuaxuchangTe", "Shenzhen Huaxuchang Telecom Technology Co.,Ltd" }, @@ -19427,6 +19555,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0xA2, 0xB8 }, "VisionZenith", "Chengdu Vision-Zenith Tech.Co,.Ltd" }, { { 0x48, 0xA2, 0xE6 }, "Resideo", "Resideo" }, { { 0x48, 0xA3, 0x80 }, "GioneeCommun", "Gionee Communication Equipment Co.,Ltd." }, + { { 0x48, 0xA3, 0xBD }, "TexasInstrum", "Texas Instruments" }, { { 0x48, 0xA4, 0x72 }, "Intel", "Intel Corporate" }, { { 0x48, 0xA4, 0x93 }, "TaiyoYuden", "Taiyo Yuden Co.,Ltd" }, { { 0x48, 0xA5, 0x16 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -19504,7 +19633,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0xDD, 0x0C }, "eero", "eero inc." }, { { 0x48, 0xDD, 0x9D }, "ItelMobile", "Itel Mobile Limited" }, { { 0x48, 0xDF, 0x1C }, "NECFibreOpti", "Wuhan NEC Fibre Optic Communications industry Co. Ltd" }, - { { 0x48, 0xDF, 0x37 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x48, 0xDF, 0x37 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x48, 0xE1, 0x5C }, "Apple", "Apple, Inc." }, { { 0x48, 0xE1, 0xAF }, "Vity", "Vity" }, { { 0x48, 0xE1, 0xE9 }, "MerossTechno", "Chengdu Meross Technology Co., Ltd." }, @@ -19515,6 +19644,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x48, 0xE6, 0xC0 }, "SIMComWirele", "SIMCom Wireless Solutions Co.,Ltd." }, { { 0x48, 0xE7, 0x29 }, "Espressif", "Espressif Inc." }, { { 0x48, 0xE7, 0xDA }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0x48, 0xE9, 0xCA }, "creoline", "creoline GmbH" }, { { 0x48, 0xE9, 0xF1 }, "Apple", "Apple, Inc." }, { { 0x48, 0xEA, 0x63 }, "ZhejiangUniv", "Zhejiang Uniview Technologies Co., Ltd." }, { { 0x48, 0xEB, 0x30 }, "EternaTechno", "Eterna Technology, Inc." }, @@ -19581,6 +19711,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x4C, 0x0D, 0xEE }, "JabilCircuit", "Jabil Circuit (Shanghai) Ltd." }, { { 0x4C, 0x0F, 0x6E }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x4C, 0x0F, 0xC7 }, "EardaTechnol", "Earda Technologies co Ltd" }, + { { 0x4C, 0x10, 0xD5 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x4C, 0x11, 0x54 }, "MobiwireMobi", "Mobiwire Mobiles (NingBo) Co., LTD" }, { { 0x4C, 0x11, 0x59 }, "VisionInform", "Vision Information & Communications" }, { { 0x4C, 0x11, 0xAE }, "Espressif", "Espressif Inc." }, @@ -19732,6 +19863,8 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x4C, 0x80, 0x93 }, "Intel", "Intel Corporate" }, { { 0x4C, 0x80, 0xBA }, "TianyuInform", "Wuhan Tianyu Information Industry Co., Ltd." }, { { 0x4C, 0x81, 0x20 }, "TaicangT&WEl", "Taicang T&W Electronics" }, + { { 0x4C, 0x81, 0x25 }, "ZOWEETECHNOL", "ZOWEE TECHNOLOGY(HEYUAN)Co.,Ltd" }, + { { 0x4C, 0x82, 0x37 }, "TelinkMicro", "Telink Micro LLC" }, { { 0x4C, 0x82, 0xA9 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0x4C, 0x82, 0xCF }, "DishTechnolo", "Dish Technologies Corp" }, { { 0x4C, 0x83, 0xDE }, "CiscoSPVTG", "Cisco SPVTG" }, @@ -19779,9 +19912,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x4C, 0xAE, 0x13 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x4C, 0xAE, 0x1C }, "SaiNXTTechno", "SaiNXT Technologies LLP" }, { { 0x4C, 0xAE, 0x31 }, "ShengHaiElec", "ShengHai Electronics (Shenzhen) Ltd" }, - { { 0x4C, 0xAE, 0xA3 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x4C, 0xAE, 0xA3 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x4C, 0xAE, 0xEC }, "Guangzhoulim", "Guangzhou limee technology co.,LTD" }, { { 0x4C, 0xB0, 0x08 }, "GwelltimesTe", "Shenzhen Gwelltimes Technology Co.,Ltd" }, + { { 0x4C, 0xB0, 0x4A }, "Intel", "Intel Corporate" }, { { 0x4C, 0xB0, 0x87 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x4C, 0xB0, 0xE8 }, "RongZhixingh", "Beijing RongZhi xinghua technology co., LTD" }, { { 0x4C, 0xB1, 0x6C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -20031,6 +20165,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x50, 0x5A, 0xC6 }, "SuperTelecom", "Guangdong Super Telecom Co.,Ltd." }, { { 0x50, 0x5B, 0x1D }, "CDataTechnol", "Shenzhen C-Data Technology Co., Ltd." }, { { 0x50, 0x5B, 0xC2 }, "LiteonTechno", "Liteon Technology Corporation" }, + { { 0x50, 0x5C, 0x88 }, "Cisco", "Cisco Systems, Inc" }, { { 0x50, 0x5D, 0x7A }, "zte", "zte corporation" }, { { 0x50, 0x5D, 0xAC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x50, 0x5E, 0x24 }, "zte", "zte corporation" }, @@ -20075,6 +20210,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x50, 0x78, 0xB0 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x50, 0x78, 0xB3 }, "zte", "zte corporation" }, { { 0x50, 0x79, 0x5B }, "InterexportT", "Interexport Telecomunicaciones S.A." }, + { { 0x50, 0x79, 0x73 }, "InagileElect", "Inagile Electronic Technology Co.,LTD." }, { { 0x50, 0x7A, 0x55 }, "Apple", "Apple, Inc." }, { { 0x50, 0x7A, 0xC5 }, "Apple", "Apple, Inc." }, { { 0x50, 0x7B, 0x91 }, "SigmastarTec", "Sigmastar Technology Ltd." }, @@ -20096,6 +20232,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x50, 0x8A, 0x06 }, "TuyaSmart", "Tuya Smart Inc." }, { { 0x50, 0x8A, 0x0F }, "FiseTechnolo", "Shenzhen Fise Technology Holding Co.,Ltd." }, { { 0x50, 0x8A, 0x42 }, "UptmateTechn", "Uptmate Technology Co., LTD" }, + { { 0x50, 0x8A, 0x7F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x50, 0x8A, 0xCB }, "MaxmadeTechn", "Shenzhen Maxmade Technology Co., Ltd." }, { { 0x50, 0x8B, 0xB9 }, "TuyaSmart", "Tuya Smart Inc." }, { { 0x50, 0x8C, 0x77 }, "DIRMEIERScha", "DIRMEIER Schanktechnik GmbH &Co KG" }, @@ -20178,6 +20315,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x50, 0xCD, 0x32 }, "NanJingChaor", "NanJing Chaoran Science & Technology Co.,Ltd." }, { { 0x50, 0xCE, 0x75 }, "MeasyElectro", "Measy Electronics Co., Ltd." }, { { 0x50, 0xCE, 0xE3 }, "Gigafirm", "Gigafirm.co.LTD" }, + { { 0x50, 0xCF, 0x56 }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0x50, 0xD0, 0x65 }, "ESYLUX", "ESYLUX GmbH" }, { { 0x50, 0xD2, 0x13 }, "CviLux", "CviLux Corporation" }, { { 0x50, 0xD2, 0x74 }, "Steffes", "Steffes Corporation" }, @@ -20250,6 +20388,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x02, 0x95 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0x03, 0x84 }, "HongkongNano", "Hongkong Nano IC Technologies Co., Ltd" }, { { 0x54, 0x03, 0xF5 }, "EBNTechnolog", "EBN Technology Corp." }, + { { 0x54, 0x04, 0x63 }, "CigShanghai", "Cig Shanghai Co Ltd" }, { { 0x54, 0x04, 0x96 }, "Gigawave", "Gigawave LTD" }, { { 0x54, 0x04, 0xA6 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x54, 0x05, 0x36 }, "Vivago", "Vivago Oy" }, @@ -20259,6 +20398,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x06, 0x8B }, "NingboDeliKe", "Ningbo Deli Kebei Technology Co.LTD" }, { { 0x54, 0x07, 0x64 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x54, 0x07, 0x7D }, "Netgear", "Netgear" }, + { { 0x54, 0x08, 0x53 }, "QingdaoHaier", "Qingdao Haier Technology Co.,Ltd" }, { { 0x54, 0x09, 0x10 }, "Apple", "Apple, Inc." }, { { 0x54, 0x09, 0x29 }, "InventusPowe", "Inventus Power Eletronica do Brasil LTDA" }, { { 0x54, 0x09, 0x55 }, "zte", "zte corporation" }, @@ -20314,6 +20454,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x2B, 0xDE }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x54, 0x2C, 0xEA }, "Protectron", "Protectron" }, { { 0x54, 0x2F, 0x04 }, "LongcheerTec", "Shanghai Longcheer Technology Co., Ltd." }, + { { 0x54, 0x2F, 0x2B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0x2F, 0x89 }, "EuclidLabora", "Euclid Laboratories, Inc." }, { { 0x54, 0x2F, 0x8A }, "TellescomInd", "Tellescom Industria E Comercio Em Telecomunicacao" }, { { 0x54, 0x31, 0x31 }, "RasterVision", "Raster Vision Ltd" }, @@ -20325,6 +20466,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x34, 0xEF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0x35, 0x30 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x54, 0x35, 0xDF }, "Symeo", "Symeo GmbH" }, + { { 0x54, 0x35, 0xE9 }, "FeitianTechn", "Feitian Technologies Co., Ltd" }, { { 0x54, 0x36, 0x9B }, "1VergeIntern", "1Verge Internet Technology (Beijing) Co., Ltd." }, { { 0x54, 0x37, 0xBB }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0x54, 0x39, 0x68 }, "EdgewaterNet", "Edgewater Networks Inc" }, @@ -20397,13 +20539,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x71, 0xDD }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x54, 0x72, 0x4F }, "Apple", "Apple, Inc." }, { { 0x54, 0x72, 0x5E }, "UnionManTech", "Union Man Technology Co.,Ltd" }, + { { 0x54, 0x72, 0x6E }, "DaimlerTruck", "Daimler Truck AG" }, { { 0x54, 0x73, 0x98 }, "ToyoElectron", "Toyo Electronics Corporation" }, { { 0x54, 0x74, 0xE6 }, "WebtechWirel", "Webtech Wireless" }, { { 0x54, 0x75, 0x95 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x54, 0x75, 0xD0 }, "Cisco", "Cisco Systems, Inc" }, { { 0x54, 0x76, 0xB2 }, "RaisecomTech", "Raisecom Technology CO., LTD" }, { { 0x54, 0x77, 0x87 }, "EardaTechnol", "Earda Technologies co Ltd" }, - { { 0x54, 0x77, 0x8A }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x54, 0x77, 0x8A }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x54, 0x78, 0x1A }, "Cisco", "Cisco Systems, Inc" }, { { 0x54, 0x78, 0x85 }, "GiecDigital", "Shenzhen Giec Digital Co.,Ltd" }, { { 0x54, 0x78, 0xC9 }, "AMPAKTechnol", "AMPAK Technology,Inc." }, @@ -20416,7 +20559,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x54, 0x7F, 0xA8 }, "TELCOsro", "TELCO systems, s.r.o." }, { { 0x54, 0x7F, 0xBC }, "iodyne", "iodyne" }, { { 0x54, 0x7F, 0xEE }, "Cisco", "Cisco Systems, Inc" }, - { { 0x54, 0x80, 0x28 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x54, 0x80, 0x28 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x54, 0x81, 0x2D }, "PAXComputerT", "PAX Computer Technology(Shenzhen) Ltd." }, { { 0x54, 0x81, 0xAD }, "EagleResearc", "Eagle Research Corporation" }, { { 0x54, 0x83, 0x3A }, "ZyxelCommuni", "Zyxel Communications Corporation" }, @@ -20715,6 +20858,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x58, 0x85, 0x6E }, "Qsc", "Qsc Ag" }, { { 0x58, 0x85, 0xA2 }, "RealmeChongq", "Realme Chongqing MobileTelecommunications Corp Ltd" }, { { 0x58, 0x85, 0xE9 }, "RealmeChongq", "Realme Chongqing MobileTelecommunications Corp Ltd" }, + { { 0x58, 0x86, 0x70 }, "JuniperNetwo", "Juniper Networks" }, { { 0x58, 0x86, 0x94 }, "EFMNetworks", "EFM Networks" }, { { 0x58, 0x87, 0x4C }, "LiteOnCleanE", "Lite-On Clean Energy Technology Corp." }, { { 0x58, 0x87, 0x9F }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -20734,6 +20878,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x58, 0x93, 0x51 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x58, 0x93, 0x96 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x58, 0x93, 0xD8 }, "TexasInstrum", "Texas Instruments" }, + { { 0x58, 0x93, 0xE8 }, "Apple", "Apple, Inc." }, { { 0x58, 0x94, 0x6B }, "Intel", "Intel Corporate" }, { { 0x58, 0x94, 0xA2 }, "KETEK", "KETEK GmbH" }, { { 0x58, 0x94, 0xAE }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -20763,6 +20908,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x58, 0xA7, 0x6F }, "iD", "iD corporation" }, { { 0x58, 0xA8, 0x39 }, "Intel", "Intel Corporate" }, { { 0x58, 0xA8, 0x7B }, "Fitbit", "Fitbit, Inc." }, + { { 0x58, 0xA8, 0xE8 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x58, 0xAC, 0x78 }, "Cisco", "Cisco Systems, Inc" }, { { 0x58, 0xAD, 0x12 }, "Apple", "Apple, Inc." }, { { 0x58, 0xAE, 0x2B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -20867,12 +21013,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x58, 0xFD, 0x5D }, "Xinyuntechno", "Hangzhou Xinyun technology Co., Ltd." }, { { 0x58, 0xFD, 0xB1 }, "LGElectronic", "LG Electronics" }, { { 0x58, 0xFD, 0xBE }, "TaikaidaTech", "Shenzhen Taikaida Technology Co., Ltd" }, + { { 0x58, 0xFE, 0x7E }, "zte", "zte corporation" }, { { 0x58, 0xFF, 0xA1 }, "zte", "zte corporation" }, { { 0x5A, 0x03, 0xBA }, "WirelessBroa", "Wireless Broadband Alliance Ltd" }, { { 0x5A, 0x18, 0xFF }, "FiRaConsorti", "FiRa Consortium" }, { { 0x5A, 0x73, 0xCF }, "GogoBusiness", "Gogo Business Aviation" }, { { 0x5A, 0xCB, 0xD3 }, "Simaudio", "Simaudio Ltd" }, { { 0x5A, 0xE6, 0x60 }, "nyantec", "nyantec GmbH" }, + { { 0x5A, 0xED, 0x67 }, "GoldiLinkTec", "GoldiLink Technology Corp." }, { { 0x5C, 0x00, 0x38 }, "ViasatGroup", "Viasat Group S.p.A." }, { { 0x5C, 0x02, 0x14 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x5C, 0x02, 0x6A }, "AppliedVisio", "Applied Vision Corporation" }, @@ -20903,6 +21051,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0x16, 0xC7 }, "AristaNetwor", "Arista Networks" }, { { 0x5C, 0x17, 0x20 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x5C, 0x17, 0x37 }, "IViewNow", "I-View Now, LLC." }, + { { 0x5C, 0x17, 0x83 }, "EdgecoreAmer", "Edgecore Americas Networking Corporation" }, { { 0x5C, 0x17, 0xCF }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x5C, 0x17, 0xD3 }, "Lge", "Lge" }, { { 0x5C, 0x18, 0xB5 }, "TalonCommuni", "Talon Communications" }, @@ -20940,7 +21089,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0x34, 0x00 }, "HisenseElect", "Hisense Electric Co.,Ltd" }, { { 0x5C, 0x34, 0x5B }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x5C, 0x35, 0x3B }, "CompalBroadb", "Compal Broadband Networks, Inc." }, + { { 0x5C, 0x35, 0x48 }, "AdityaInfote", "Aditya Infotech Ltd." }, { { 0x5C, 0x35, 0xDA }, "There", "There Corporation Oy" }, + { { 0x5C, 0x35, 0xFC }, "ActiontecEle", "Actiontec Electronics Inc." }, { { 0x5C, 0x36, 0xB8 }, "TCLKingElect", "TCL King Electrical Appliances (Huizhou) Co., Ltd" }, { { 0x5C, 0x38, 0xE0 }, "SuperElectro", "Shanghai Super Electronics Technology Co.,LTD" }, { { 0x5C, 0x3A, 0x3D }, "zte", "zte corporation" }, @@ -20957,6 +21108,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0x45, 0x27 }, "JuniperNetwo", "Juniper Networks" }, { { 0x5C, 0x46, 0xB0 }, "SIMComWirele", "SIMCom Wireless Solutions Limited" }, { { 0x5C, 0x47, 0x5E }, "Ring", "Ring LLC" }, + { { 0x5C, 0x48, 0x42 }, "AnysoftInfor", "Hangzhou Anysoft Information Technology Co. , Ltd" }, { { 0x5C, 0x49, 0x79 }, "AVMAudiovisu", "AVM Audiovisuelles Marketing und Computersysteme GmbH" }, { { 0x5C, 0x49, 0x7D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x5C, 0x49, 0xFA }, "GuoweiShidai", "Shenzhen Guowei Shidai Communication Equipement Co., Ltd" }, @@ -21059,6 +21211,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0x8F, 0xE0 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0x5C, 0x90, 0x12 }, "OwlCyberDefe", "Owl Cyber Defense Solutions, LLC" }, { { 0x5C, 0x91, 0x57 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x5C, 0x91, 0x75 }, "Apple", "Apple, Inc." }, { { 0x5C, 0x91, 0xFD }, "Jaewoncnc", "Jaewoncnc" }, { { 0x5C, 0x92, 0x5E }, "ZioncomElect", "Zioncom Electronics (Shenzhen) Ltd." }, { { 0x5C, 0x93, 0xA2 }, "LiteonTechno", "Liteon Technology Corporation" }, @@ -21077,7 +21230,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0xA1, 0x78 }, "TableTopMedi", "TableTop Media (dba Ziosk)" }, { { 0x5C, 0xA1, 0xE0 }, "EmbedWayTech", "EmbedWay Technologies" }, { { 0x5C, 0xA3, 0x9D }, "SamsungElect", "Samsung Electro Mechanics Co., Ltd." }, - { { 0x5C, 0xA3, 0xEB }, "Lokelsro", "Lokel s.r.o." }, + { { 0x5C, 0xA3, 0xEB }, "SKODADIGITAL", "SKODA DIGITAL s.r.o." }, { { 0x5C, 0xA4, 0x7D }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x5C, 0xA4, 0x8A }, "Cisco", "Cisco Systems, Inc" }, { { 0x5C, 0xA4, 0xA4 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -21111,12 +21264,13 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0xB6, 0xCC }, "NovaCommTech", "NovaComm Technologies Inc." }, { { 0x5C, 0xB8, 0xCB }, "AllisCommuni", "Allis Communications" }, { { 0x5C, 0xB9, 0x01 }, "HewlettPacka", "Hewlett Packard" }, - { { 0x5C, 0xBA, 0x2C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x5C, 0xBA, 0x2C }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x5C, 0xBA, 0x37 }, "Microsoft", "Microsoft Corporation" }, { { 0x5C, 0xBA, 0xEF }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, { { 0x5C, 0xBB, 0xEE }, "zte", "zte corporation" }, { { 0x5C, 0xBD, 0x9A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x5C, 0xBD, 0x9E }, "HongkongMira", "Hongkong Miracle Eagle Technology(Group) Limited" }, + { { 0x5C, 0xBE, 0x05 }, "Ispec", "Ispec" }, { { 0x5C, 0xC0, 0xA0 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0xC1, 0xD7 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x5C, 0xC2, 0x13 }, "FrSauter", "Fr. Sauter AG" }, @@ -21185,7 +21339,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0xEA, 0x1D }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x5C, 0xEB, 0x4E }, "RSTAHLHMI", "R. STAHL HMI Systems GmbH" }, { { 0x5C, 0xEB, 0x68 }, "CheerstarTec", "Cheerstar Technology Co., Ltd" }, - { { 0x5C, 0xED, 0x8C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x5C, 0xED, 0x8C }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x5C, 0xED, 0xF4 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x5C, 0xEE, 0x79 }, "GlobalDigite", "Global Digitech Co LTD" }, { { 0x5C, 0xF2, 0x07 }, "SpecoTechnol", "Speco Technologies" }, @@ -21206,6 +21360,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x5C, 0xF9, 0xF0 }, "AtomosEngine", "Atomos Engineering P/L" }, { { 0x5C, 0xF9, 0xFD }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0x5C, 0xFA, 0x25 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, + { { 0x5C, 0xFA, 0x5A }, "SinepowerLda", "Sinepower Lda" }, { { 0x5C, 0xFA, 0xFB }, "Acubit", "Acubit" }, { { 0x5C, 0xFB, 0x3A }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, { { 0x5C, 0xFB, 0x7C }, "JingxunSoftw", "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd" }, @@ -21258,6 +21413,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0x1A, 0xC7 }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x60, 0x1B, 0x52 }, "VodafoneItal", "Vodafone Italia S.p.A." }, { { 0x60, 0x1D, 0x0F }, "MidniteSolar", "Midnite Solar" }, + { { 0x60, 0x1D, 0x16 }, "MedEngHoldin", "Med-Eng Holdings ULC" }, { { 0x60, 0x1D, 0x56 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0x60, 0x1D, 0x91 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x60, 0x1D, 0x9D }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, @@ -21286,6 +21442,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0x32, 0xB1 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x60, 0x32, 0xF0 }, "Mplustechnol", "Mplus technology" }, { { 0x60, 0x33, 0x4B }, "Apple", "Apple, Inc." }, + { { 0x60, 0x34, 0x57 }, "HPTuners", "HP Tuners LLC" }, { { 0x60, 0x35, 0x53 }, "BuwonTechnol", "Buwon Technology" }, { { 0x60, 0x35, 0x73 }, "EardaTechnol", "Earda Technologies co Ltd" }, { { 0x60, 0x35, 0xC0 }, "Sfr", "Sfr" }, @@ -21352,6 +21509,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0x65, 0x25 }, "Apple", "Apple, Inc." }, { { 0x60, 0x66, 0x82 }, "AtekoPhotoel", "Shenzhen Ateko Photoelectricity Co.,Ltd" }, { { 0x60, 0x67, 0x20 }, "Intel", "Intel Corporate" }, + { { 0x60, 0x68, 0x32 }, "SeneasyIntel", "Guangdong Seneasy Intelligent Technology Co., Ltd." }, { { 0x60, 0x68, 0x4E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x60, 0x69, 0x44 }, "Apple", "Apple, Inc." }, { { 0x60, 0x69, 0x9B }, "isepos", "isepos GmbH" }, @@ -21374,6 +21532,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0x73, 0x5C }, "Cisco", "Cisco Systems, Inc" }, { { 0x60, 0x73, 0xBC }, "zte", "zte corporation" }, { { 0x60, 0x74, 0x8D }, "AtmacaElektr", "Atmaca Elektronik" }, + { { 0x60, 0x74, 0xB1 }, "HomeControlS", "Home Control Singapore Pte Ltd" }, { { 0x60, 0x76, 0x23 }, "ESuperlinkTe", "Shenzhen E-Superlink Technology Co., Ltd" }, { { 0x60, 0x76, 0x88 }, "Velodyne", "Velodyne" }, { { 0x60, 0x77, 0x71 }, "TexasInstrum", "Texas Instruments" }, @@ -21390,6 +21549,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0x83, 0x34 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x60, 0x83, 0x73 }, "Apple", "Apple, Inc." }, { { 0x60, 0x83, 0xB2 }, "GkWareeK", "GkWare e.K." }, + { { 0x60, 0x83, 0xE7 }, "TpLinkPte", "Tp-Link Corporation Pte. Ltd." }, { { 0x60, 0x84, 0x3B }, "Soladigm", "Soladigm, Inc." }, { { 0x60, 0x84, 0xBD }, "Buffalo", "Buffalo.Inc" }, { { 0x60, 0x86, 0x45 }, "AveryWeighTr", "Avery Weigh-Tronix, LLC" }, @@ -21470,6 +21630,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0xC0, 0x1E }, "V&GInformati", "V&G Information System Co.,Ltd" }, { { 0x60, 0xC0, 0xBF }, "ONSemiconduc", "ON Semiconductor" }, { { 0x60, 0xC1, 0xCB }, "FujianGreatP", "Fujian Great Power PLC Equipment Co.,Ltd" }, + { { 0x60, 0xC2, 0x2A }, "AllwinnerTec", "Allwinner Technology Co., Ltd" }, { { 0x60, 0xC3, 0x97 }, "2Wire", "2Wire Inc" }, { { 0x60, 0xC5, 0x47 }, "Apple", "Apple, Inc." }, { { 0x60, 0xC5, 0xA8 }, "LTHonwayTech", "Beijing LT Honway Technology Co.,Ltd" }, @@ -21500,6 +21661,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0xD2, 0xDD }, "BaitongPutia", "Shenzhen Baitong Putian Technology Co.,Ltd." }, { { 0x60, 0xD3, 0x0A }, "Quatius", "Quatius Limited" }, { { 0x60, 0xD4, 0xE9 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, + { { 0x60, 0xD5, 0x1B }, "Fujitsu", "Fujitsu Limited" }, { { 0x60, 0xD7, 0x55 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x60, 0xD8, 0x19 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x60, 0xD8, 0x9C }, "HMDGlobal", "HMD Global Oy" }, @@ -21522,6 +21684,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x60, 0xE3, 0x27 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x60, 0xE3, 0x2B }, "Intel", "Intel Corporate" }, { { 0x60, 0xE3, 0xAC }, "LGElectronic", "LG Electronics (Mobile Communications)" }, + { { 0x60, 0xE5, 0xD8 }, "zte", "zte corporation" }, { { 0x60, 0xE6, 0xBC }, "SinoTelecomT", "Sino-Telecom Technology Co.,Ltd." }, { { 0x60, 0xE6, 0xF0 }, "WistronNeweb", "Wistron Neweb Corporation" }, { { 0x60, 0xE7, 0x01 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -21579,6 +21742,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0x09, 0xAC }, "TCTmobile", "TCT mobile ltd" }, { { 0x64, 0x0B, 0x4A }, "DigitalTelec", "Digital Telecom Technology Limited" }, { { 0x64, 0x0B, 0xD7 }, "Apple", "Apple, Inc." }, + { { 0x64, 0x0C, 0x91 }, "Apple", "Apple, Inc." }, { { 0x64, 0x0D, 0x22 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x64, 0x0D, 0xCE }, "MercuryCommu", "Shenzhen Mercury Communication Technologies Co.,Ltd." }, { { 0x64, 0x0D, 0xE6 }, "Petra", "Petra Systems" }, @@ -21625,6 +21789,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0x27, 0x53 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x64, 0x29, 0x43 }, "DLink", "D-Link Corporation" }, { { 0x64, 0x29, 0xED }, "AOPKKMilandr", "AO \"PKK Milandr\"" }, + { { 0x64, 0x29, 0xFF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x64, 0x2B, 0x8A }, "ALLBESTIndus", "ALL BEST Industrial Co., Ltd." }, { { 0x64, 0x2C, 0x0F }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x64, 0x2C, 0xAC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -21650,6 +21815,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0x43, 0x46 }, "QuickNetwork", "GuangDong Quick Network Computer CO.,LTD" }, { { 0x64, 0x44, 0xD5 }, "TDTech", "TD Tech" }, { { 0x64, 0x47, 0xE0 }, "FeitianTechn", "Feitian Technologies Co., Ltd" }, + { { 0x64, 0x48, 0x42 }, "Apple", "Apple, Inc." }, { { 0x64, 0x49, 0x7D }, "Intel", "Intel Corporate" }, { { 0x64, 0x4B, 0xC3 }, "WOASiSTeleco", "Shanghai WOASiS Telecommunications Ltd., Co." }, { { 0x64, 0x4B, 0xF0 }, "CalDigit", "CalDigit, Inc" }, @@ -21723,6 +21889,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0x6E, 0xEA }, "Iskrateldoo", "Iskratel d.o.o." }, { { 0x64, 0x70, 0x02 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x64, 0x70, 0x33 }, "Apple", "Apple, Inc." }, + { { 0x64, 0x70, 0x60 }, "TexasInstrum", "Texas Instruments" }, { { 0x64, 0x72, 0xD8 }, "GooWiTechnol", "GooWi Technology Co.,Limited" }, { { 0x64, 0x73, 0x66 }, "SieraTechnol", "Shenzhen Siera Technology Ltd" }, { { 0x64, 0x73, 0xE2 }, "Arbiter", "Arbiter Systems, Inc." }, @@ -21753,6 +21920,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0x8C, 0xBB }, "TexasInstrum", "Texas Instruments" }, { { 0x64, 0x8D, 0x9E }, "IVTElectroni", "IVT Electronic Co.,Ltd" }, { { 0x64, 0x8F, 0x3E }, "Cisco", "Cisco Systems, Inc" }, + { { 0x64, 0x8F, 0xDB }, "HuaqinTechno", "Huaqin Technology Co.LTD" }, { { 0x64, 0x90, 0xC1 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x64, 0x95, 0x6C }, "LGElectronic", "LG Electronics" }, { { 0x64, 0x97, 0x14 }, "eero", "eero inc." }, @@ -21807,6 +21975,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0xB8, 0x53 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x64, 0xB9, 0x4E }, "DellTechnolo", "Dell Technologies" }, { { 0x64, 0xB9, 0xE8 }, "Apple", "Apple, Inc." }, + { { 0x64, 0xBA, 0xA4 }, "zte", "zte corporation" }, { { 0x64, 0xBA, 0xBD }, "SDJTechnolog", "SDJ Technologies, Inc." }, { { 0x64, 0xBB, 0x1E }, "EardaTechnol", "Earda Technologies co Ltd" }, { { 0x64, 0xBC, 0x0C }, "LGElectronic", "LG Electronics (Mobile Communications)" }, @@ -21914,6 +22083,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x64, 0xFC, 0x8C }, "Zonar", "Zonar Systems" }, { { 0x64, 0xFD, 0x29 }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, { { 0x64, 0xFD, 0x96 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, + { { 0x64, 0xFE, 0x15 }, "FlaircommMic", "Flaircomm Microelectronics,Inc." }, { { 0x64, 0xFF, 0x0A }, "WistronNeweb", "Wistron Neweb Corporation" }, { { 0x68, 0x02, 0x35 }, "KontenNetwor", "Konten Networks Inc." }, { { 0x68, 0x02, 0xB8 }, "CompalBroadb", "Compal Broadband Networks, Inc." }, @@ -21970,6 +22140,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0x31, 0xFE }, "Teladin", "Teladin Co.,Ltd." }, { { 0x68, 0x33, 0x2C }, "KenstelNetwo", "Kenstel Networks Limited" }, { { 0x68, 0x33, 0xEE }, "ARRISGroup", "ARRIS Group, Inc." }, + { { 0x68, 0x34, 0x21 }, "Intel", "Intel Corporate" }, { { 0x68, 0x34, 0x89 }, "LEAProfessio", "LEA Professional" }, { { 0x68, 0x35, 0x63 }, "LiownElectro", "Shenzhen Liown Electronics Co.,Ltd." }, { { 0x68, 0x36, 0xB5 }, "DriveScale", "DriveScale, Inc." }, @@ -21989,6 +22160,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0x3F, 0x7D }, "IngramMicroS", "Ingram Micro Services" }, { { 0x68, 0x40, 0x3C }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x68, 0x41, 0x8F }, "Telechips", "Telechips, Inc." }, + { { 0x68, 0x42, 0x16 }, "SteplockAcce", "Steplock Access AB" }, { { 0x68, 0x43, 0x52 }, "Bhuu", "Bhuu Limited" }, { { 0x68, 0x43, 0xD7 }, "AgilecomPhot", "Agilecom Photonics Solutions Guangdong Limited" }, { { 0x68, 0x45, 0x71 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -22005,6 +22177,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0x4A, 0xE9 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x68, 0x4B, 0x88 }, "GaltronicsTe", "Galtronics Telemetry Inc." }, { { 0x68, 0x4C, 0xA8 }, "HerotelTech", "Shenzhen Herotel Tech. Co., Ltd." }, + { { 0x68, 0x4D, 0xB6 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x68, 0x4E, 0x05 }, "HunanFnLinkT", "Hunan Fn-Link Technology Limited" }, { { 0x68, 0x4F, 0x64 }, "Dell", "Dell Inc." }, { { 0x68, 0x50, 0x5D }, "HaloTechnolo", "Halo Technologies" }, @@ -22118,6 +22291,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0xA0, 0x3E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x68, 0xA0, 0xF6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x68, 0xA1, 0xB7 }, "HonghaoMingc", "Honghao Mingchuan Technology (Beijing) CO.,Ltd." }, + { { 0x68, 0xA2, 0xAA }, "AcresManufac", "Acres Manufacturing" }, { { 0x68, 0xA3, 0x78 }, "FreeboxSas", "Freebox Sas" }, { { 0x68, 0xA3, 0xC4 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x68, 0xA4, 0x0E }, "BSHHausgerät", "BSH Hausgeräte GmbH" }, @@ -22141,6 +22315,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0xAF, 0xFF }, "CambriconInf", "Shanghai Cambricon Information Technology Co., Ltd." }, { { 0x68, 0xB0, 0x94 }, "InesaElectro", "Inesa Electron Co.,Ltd" }, { { 0x68, 0xB3, 0x5E }, "NeostraTechn", "Shenzhen Neostra Technology Co.Ltd" }, + { { 0x68, 0xB4, 0x1E }, "ZeasnTechnol", "Zeasn Technology Private Limited" }, { { 0x68, 0xB4, 0x3A }, "WaterFurnace", "WaterFurnace International, Inc." }, { { 0x68, 0xB5, 0x99 }, "HewlettPacka", "Hewlett Packard" }, { { 0x68, 0xB6, 0x91 }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -22198,6 +22373,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x68, 0xE7, 0x4A }, "TexasInstrum", "Texas Instruments" }, { { 0x68, 0xE7, 0xC2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x68, 0xE8, 0xEB }, "LinktelTechn", "Linktel Technologies Co.,Ltd" }, + { { 0x68, 0xE9, 0x05 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x68, 0xEB, 0xAE }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x68, 0xEB, 0xC5 }, "AngstremTele", "Angstrem Telecom" }, { { 0x68, 0xEC, 0x62 }, "YODOTechnolo", "YODO Technology Corp. Ltd." }, @@ -22343,6 +22519,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x6C, 0x45, 0x98 }, "AntexElectro", "Antex Electronic Corp." }, { { 0x6C, 0x45, 0xC4 }, "Cloudflare", "Cloudflare, Inc." }, { { 0x6C, 0x47, 0x60 }, "SunitecEnter", "Sunitec Enterprise Co.,Ltd" }, + { { 0x6C, 0x48, 0x3F }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x6C, 0x48, 0xA6 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x6C, 0x49, 0xC1 }, "o2ones", "o2ones Co., Ltd." }, { { 0x6C, 0x4A, 0x39 }, "Bita", "Bita" }, @@ -22379,6 +22556,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x6C, 0x5E, 0x3B }, "Cisco", "Cisco Systems, Inc" }, { { 0x6C, 0x5E, 0x7A }, "UbiquitousIn", "Ubiquitous Internet Telecom Co., Ltd" }, { { 0x6C, 0x5F, 0x1C }, "LenovoMobile", "Lenovo Mobile Communication Technology Ltd." }, + { { 0x6C, 0x60, 0x16 }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x6C, 0x60, 0xD0 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x6C, 0x60, 0xEB }, "ZhiYuanElect", "Zhi Yuan Electronics Co., Limited" }, { { 0x6C, 0x61, 0x26 }, "RinicomHoldi", "Rinicom Holdings" }, @@ -22415,6 +22593,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x6C, 0x79, 0xB8 }, "TexasInstrum", "Texas Instruments" }, { { 0x6C, 0x7E, 0x67 }, "Apple", "Apple, Inc." }, { { 0x6C, 0x7F, 0x0C }, "CiscoMeraki", "Cisco Meraki" }, + { { 0x6C, 0x80, 0xAB }, "ifanr", "ifanr Inc" }, { { 0x6C, 0x81, 0xFE }, "Mitsuba", "Mitsuba Corporation" }, { { 0x6C, 0x83, 0x36 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x6C, 0x83, 0x38 }, "Ubihere", "Ubihere" }, @@ -22511,6 +22690,8 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x6C, 0xC2, 0x42 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0x6C, 0xC2, 0x6B }, "Apple", "Apple, Inc." }, { { 0x6C, 0xC3, 0x74 }, "TexasInstrum", "Texas Instruments" }, + { { 0x6C, 0xC3, 0xB2 }, "CiscoMeraki", "Cisco Meraki" }, + { { 0x6C, 0xC4, 0x1E }, "NEXSEC", "NEXSEC Incorporated" }, { { 0x6C, 0xC4, 0x9F }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x6C, 0xC4, 0xD5 }, "HMDGlobal", "HMD Global Oy" }, { { 0x6C, 0xC6, 0x3B }, "TaicangT&WEl", "Taicang T&W Electronics" }, @@ -22561,9 +22742,11 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x6C, 0xEC, 0xEB }, "TexasInstrum", "Texas Instruments" }, { { 0x6C, 0xED, 0x51 }, "NEXCONTROL", "NEXCONTROL Co.,Ltd" }, { { 0x6C, 0xEE, 0xF7 }, "scodenotechn", "shenzhen scodeno technology co., Ltd." }, + { { 0x6C, 0xEF, 0xBD }, "CiscoMeraki", "Cisco Meraki" }, { { 0x6C, 0xEF, 0xC6 }, "TwowingTechn", "Shenzhen Twowing Technologies Co.,Ltd." }, { { 0x6C, 0xF0, 0x49 }, "GigaByteTech", "Giga-Byte Technology Co.,Ltd." }, { { 0x6C, 0xF1, 0x7E }, "ZhejiangUniv", "Zhejiang Uniview Technologies Co.,Ltd." }, + { { 0x6C, 0xF2, 0xD8 }, "Canon", "Canon Inc." }, { { 0x6C, 0xF3, 0x73 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x6C, 0xF3, 0x7F }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x6C, 0xF5, 0xE8 }, "Mooredoll", "Mooredoll Inc." }, @@ -22591,6 +22774,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x05, 0x14 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x70, 0x06, 0xAC }, "Eastcompeace", "Eastcompeace Technology Co., Ltd" }, { { 0x70, 0x07, 0x77 }, "OnTargetTech", "OnTarget Technologies, Inc" }, + { { 0x70, 0x08, 0x94 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x70, 0x09, 0x71 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x70, 0x0B, 0x01 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x70, 0x0B, 0x4F }, "Cisco", "Cisco Systems, Inc" }, @@ -22599,7 +22783,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x0F, 0xC7 }, "IkinloopTech", "Shenzhen Ikinloop Technology Co.,Ltd." }, { { 0x70, 0x0F, 0xEC }, "Poindus", "Poindus Systems Corp." }, { { 0x70, 0x10, 0x5C }, "Cisco", "Cisco Systems, Inc" }, - { { 0x70, 0x10, 0x6F }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x70, 0x10, 0x6F }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x70, 0x11, 0x0E }, "zte", "zte corporation" }, { { 0x70, 0x11, 0x24 }, "Apple", "Apple, Inc." }, { { 0x70, 0x11, 0x35 }, "Livesecu", "Livesecu co., Ltd" }, @@ -22636,6 +22820,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x29, 0x00 }, "ChipTripTech", "Shenzhen ChipTrip Technology Co,Ltd" }, { { 0x70, 0x2A, 0x7D }, "EpSpot", "EpSpot AB" }, { { 0x70, 0x2A, 0xD5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x70, 0x2A, 0xD7 }, "NewH3CIntell", "New H3C Intelligence Terminal Co., Ltd." }, { { 0x70, 0x2B, 0x1D }, "EDomusIntern", "E-Domus International Limited" }, { { 0x70, 0x2C, 0x09 }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x70, 0x2C, 0x1F }, "Wisol", "Wisol" }, @@ -22684,6 +22869,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x48, 0x0F }, "Apple", "Apple, Inc." }, { { 0x70, 0x48, 0xB5 }, "CTSSystem", "CTS System Co., LTD." }, { { 0x70, 0x48, 0xF7 }, "Nintendo", "Nintendo Co.,Ltd" }, + { { 0x70, 0x49, 0xA2 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x70, 0x4A, 0x0E }, "AMPAKTechnol", "AMPAK Technology,Inc." }, { { 0x70, 0x4A, 0xAE }, "XstreamFlow", "Xstream Flow (Pty) Ltd" }, { { 0x70, 0x4A, 0xE4 }, "Rinstrum", "Rinstrum Pty Ltd" }, @@ -22747,6 +22933,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x6D, 0xEC }, "Wifisoft", "Wifi-soft LLC" }, { { 0x70, 0x6E, 0x6D }, "Cisco", "Cisco Systems, Inc" }, { { 0x70, 0x70, 0x0D }, "Apple", "Apple, Inc." }, + { { 0x70, 0x70, 0x13 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x70, 0x70, 0x4C }, "PurpleCommun", "Purple Communications, Inc" }, { { 0x70, 0x70, 0x8B }, "Cisco", "Cisco Systems, Inc" }, { { 0x70, 0x70, 0xAA }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -22799,6 +22986,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0x8B, 0xCD }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x70, 0x8C, 0xB6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x70, 0x8C, 0xBB }, "Mimodisplayk", "Mimodisplaykorea" }, + { { 0x70, 0x8C, 0xF2 }, "Apple", "Apple, Inc." }, { { 0x70, 0x8D, 0x09 }, "Nokia", "Nokia Corporation" }, { { 0x70, 0x8F, 0x47 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x70, 0x90, 0x41 }, "Mist", "Mist Systems, Inc." }, @@ -22921,6 +23109,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x70, 0xE8, 0x43 }, "C&WOpticalCo", "Beijing C&W Optical Communication Technology Co.,Ltd." }, { { 0x70, 0xEA, 0x1A }, "Cisco", "Cisco Systems, Inc" }, { { 0x70, 0xEA, 0x5A }, "Apple", "Apple, Inc." }, + { { 0x70, 0xEB, 0x74 }, "NingboGoneoE", "Ningbo Goneo Electric Appliance Co., Ltd." }, { { 0x70, 0xEC, 0xE4 }, "Apple", "Apple, Inc." }, { { 0x70, 0xEE, 0x50 }, "Netatmo", "Netatmo" }, { { 0x70, 0xEE, 0xA3 }, "EoptolinkTec", "Eoptolink Technology Inc. Ltd," }, @@ -22983,6 +23172,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x74, 0x20, 0x5F }, "ZhongruixinI", "Shenzhen Zhongruixin Intelligent Technology Co., Ltd." }, { { 0x74, 0x22, 0xBB }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x74, 0x23, 0x44 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, + { { 0x74, 0x23, 0x8D }, "zte", "zte corporation" }, { { 0x74, 0x24, 0x9F }, "TIBRO", "TIBRO Corp." }, { { 0x74, 0x25, 0x8A }, "H3CTechnolog", "Hangzhou H3C Technologies Co., Limited" }, { { 0x74, 0x26, 0xAC }, "Cisco", "Cisco Systems, Inc" }, @@ -23019,6 +23209,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x74, 0x38, 0x22 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x74, 0x38, 0x89 }, "ANNAXAnzeige", "ANNAX Anzeigesysteme GmbH" }, { { 0x74, 0x38, 0xB7 }, "Canon", "Canon Inc." }, + { { 0x74, 0x39, 0x89 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x74, 0x3A, 0x20 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x74, 0x3A, 0x65 }, "NEC", "NEC Corporation" }, { { 0x74, 0x3A, 0xEF }, "KaonGroup", "Kaon Group Co., Ltd." }, @@ -23088,6 +23279,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x74, 0x6A, 0x8F }, "VSVision", "VS Vision Systems GmbH" }, { { 0x74, 0x6B, 0x82 }, "Movek", "Movek" }, { { 0x74, 0x6B, 0xAB }, "EnokCommunic", "Guangdong Enok Communication Co., Ltd" }, + { { 0x74, 0x6D, 0xFA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x74, 0x6E, 0xE4 }, "AsiaVitalCom", "Asia Vital Components Co.,Ltd." }, { { 0x74, 0x6F, 0x19 }, "IcarvisionsT", "Icarvisions (Shenzhen) Technology Co., Ltd." }, { { 0x74, 0x6F, 0x3D }, "Contec", "Contec GmbH" }, @@ -23210,11 +23402,13 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x74, 0xBA, 0xDB }, "LongconnElec", "Longconn Electornics(shenzhen)Co.,Ltd" }, { { 0x74, 0xBB, 0xD3 }, "xemeCommunic", "Shenzhen xeme Communication Co., Ltd." }, { { 0x74, 0xBE, 0x08 }, "ATEKProducts", "ATEK Products, LLC" }, + { { 0x74, 0xBE, 0xF3 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x74, 0xBF, 0xA1 }, "Hyunteck", "Hyunteck" }, { { 0x74, 0xBF, 0xB7 }, "Nusoft", "Nusoft Corporation" }, { { 0x74, 0xBF, 0xC0 }, "Canon", "Canon Inc." }, { { 0x74, 0xC1, 0x4F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x74, 0xC1, 0x7D }, "Infinixmobil", "Infinix mobility limited" }, + { { 0x74, 0xC1, 0x7E }, "LGElectronic", "LG Electronics" }, { { 0x74, 0xC2, 0x46 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x74, 0xC3, 0x30 }, "FastTechnolo", "Shenzhen Fast Technologies Co.,Ltd" }, { { 0x74, 0xC5, 0x30 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, @@ -23468,6 +23662,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x78, 0x65, 0x59 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x78, 0x66, 0x9D }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x78, 0x66, 0xAE }, "ZTECInstrume", "ZTEC Instruments, Inc." }, + { { 0x78, 0x66, 0xF3 }, "worldeliteel", "shenzhen worldelite electronics co., LTD" }, { { 0x78, 0x67, 0x0E }, "WistronNeweb", "Wistron Neweb Corporation" }, { { 0x78, 0x67, 0xD7 }, "Apple", "Apple, Inc." }, { { 0x78, 0x68, 0x29 }, "eero", "eero inc." }, @@ -23490,6 +23685,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x78, 0x7D, 0x48 }, "ItelMobile", "Itel Mobile Limited" }, { { 0x78, 0x7D, 0x53 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0x78, 0x7D, 0xF3 }, "SterliteTech", "Sterlite Technologies Limited" }, + { { 0x78, 0x7E, 0x42 }, "zte", "zte corporation" }, { { 0x78, 0x7E, 0x61 }, "Apple", "Apple, Inc." }, { { 0x78, 0x7F, 0x62 }, "GiKmbH", "GiK mbH" }, { { 0x78, 0x80, 0x38 }, "FunaiElectri", "Funai Electric Co., Ltd." }, @@ -23695,6 +23891,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7A, 0x4B, 0xF3 }, "DilonTechnol", "Dilon Technologies" }, { { 0x7A, 0x4D, 0x2F }, "OpenComputeP", "Open Compute Project" }, { { 0x7A, 0x84, 0xF0 }, "McDowellSign", "McDowell Signal Processing, LLC (dba McDSP)" }, + { { 0x7A, 0x8D, 0xD1 }, "TePSEG", "TePS'EG" }, { { 0x7A, 0xAB, 0x77 }, "Orange", "Orange" }, { { 0x7A, 0xF9, 0x55 }, "Relay", "Relay, Inc." }, { { 0x7A, 0xFD, 0x44 }, "RosenbergerH", "Rosenberger Hochfrequenztechnik GmbH & Co. KG" }, @@ -23719,6 +23916,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0x0B, 0xC6 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x7C, 0x0C, 0x92 }, "SuzhouMobyda", "Suzhou Mobydata Smart System Co.,Ltd." }, { { 0x7C, 0x0C, 0xF6 }, "HuiweiHighte", "Guangdong Huiwei High-tech Co., Ltd." }, + { { 0x7C, 0x0C, 0xFA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x7C, 0x0E, 0xCE }, "Cisco", "Cisco Systems, Inc" }, { { 0x7C, 0x10, 0x15 }, "BrilliantHom", "Brilliant Home Technology, Inc." }, { { 0x7C, 0x10, 0xC9 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, @@ -23818,6 +24016,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0x5A, 0x1C }, "Sophos", "Sophos Ltd" }, { { 0x7C, 0x5A, 0x67 }, "JNC", "JNC Systems, Inc." }, { { 0x7C, 0x5C, 0xF8 }, "Intel", "Intel Corporate" }, + { { 0x7C, 0x5E, 0x98 }, "eero", "eero inc." }, { { 0x7C, 0x60, 0x4A }, "Avelon", "Avelon" }, { { 0x7C, 0x60, 0x97 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x7C, 0x61, 0x30 }, "Apple", "Apple, Inc." }, @@ -23875,6 +24074,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0x7B, 0xE4 }, "ZSedaiKenkyu", "Z'Sedai Kenkyusho Corporation" }, { { 0x7C, 0x7D, 0x3D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x7C, 0x7D, 0x41 }, "JinmuyuElect", "Jinmuyu Electronics Co., Ltd." }, + { { 0x7C, 0x7E, 0xF9 }, "eero", "eero inc." }, { { 0x7C, 0x82, 0x2D }, "Nortec", "Nortec" }, { { 0x7C, 0x82, 0x74 }, "HikeenTechno", "Shenzhen Hikeen Technology CO.,LTD" }, { { 0x7C, 0x83, 0x06 }, "GlenDimplexN", "Glen Dimplex Nordic as" }, @@ -23885,9 +24085,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0x89, 0x31 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x7C, 0x89, 0x56 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x7C, 0x89, 0xC1 }, "PaloAltoNetw", "Palo Alto Networks" }, - { { 0x7C, 0x8A, 0xC0 }, "EVBox", "EVBox BV" }, { { 0x7C, 0x8A, 0xE1 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, { { 0x7C, 0x8B, 0xB5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x7C, 0x8B, 0xC1 }, "Infinixmobil", "Infinix mobility limited" }, { { 0x7C, 0x8B, 0xCA }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x7C, 0x8D, 0x91 }, "HongzhuoInfo", "Shanghai Hongzhuo Information Technology co.,LTD" }, { { 0x7C, 0x8E, 0xE4 }, "TexasInstrum", "Texas Instruments" }, @@ -23901,6 +24101,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0x96, 0xD2 }, "Fihonestcomm", "Fihonest communication co.,Ltd" }, { { 0x7C, 0x97, 0x63 }, "Openmaticssr", "Openmatics s.r.o." }, { { 0x7C, 0x97, 0xE1 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x7C, 0x99, 0x2E }, "Notionlnform", "Shanghai Notion lnformatio Technology Co.,Ltd." }, { { 0x7C, 0x9A, 0x1D }, "Apple", "Apple, Inc." }, { { 0x7C, 0x9A, 0x54 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x7C, 0x9A, 0x9B }, "VSEvalencias", "VSE valencia smart energy" }, @@ -23914,7 +24115,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0xA2, 0x9B }, "DSignT", "D.SignT GmbH & Co. KG" }, { { 0x7C, 0xA4, 0x49 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x7C, 0xA6, 0x1D }, "Mhl", "Mhl, Llc" }, - { { 0x7C, 0xA6, 0x2A }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x7C, 0xA6, 0x2A }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x7C, 0xA7, 0xB0 }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, { { 0x7C, 0xA9, 0x6B }, "SyrotechNetw", "Syrotech Networks. Ltd." }, { { 0x7C, 0xA9, 0x7D }, "Objenious", "Objenious" }, @@ -23937,10 +24138,12 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0xB5, 0x42 }, "ACESTechnolo", "ACES Technology" }, { { 0x7C, 0xB5, 0x66 }, "Intel", "Intel Corporate" }, { { 0x7C, 0xB5, 0x9B }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, + { { 0x7C, 0xB5, 0x9F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x7C, 0xB7, 0x33 }, "AskeyCompute", "Askey Computer Corp" }, { { 0x7C, 0xB7, 0x7B }, "ParadigmElec", "Paradigm Electronics Inc" }, { { 0x7C, 0xB9, 0x4C }, "BouffaloLab", "Bouffalo Lab (Nanjing) Co., Ltd." }, { { 0x7C, 0xB9, 0x60 }, "XChengteleco", "Shanghai X-Cheng telecom LTD" }, + { { 0x7C, 0xBA, 0xC0 }, "EVBox", "EVBox BV" }, { { 0x7C, 0xBB, 0x6F }, "CoscoElectro", "Cosco Electronics Co., Ltd." }, { { 0x7C, 0xBB, 0x8A }, "Nintendo", "Nintendo Co., Ltd." }, { { 0x7C, 0xBD, 0x06 }, "AEREFUsol", "AE REFUsol" }, @@ -23948,6 +24151,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x7C, 0xBF, 0x88 }, "Mobilicom", "Mobilicom LTD" }, { { 0x7C, 0xBF, 0xAE }, "RenesasElect", "Renesas Electronics (Penang) Sdn. Bhd." }, { { 0x7C, 0xBF, 0xB1 }, "ARRISGroup", "ARRIS Group, Inc." }, + { { 0x7C, 0xC0, 0x25 }, "PaloAltoNetw", "Palo Alto Networks" }, { { 0x7C, 0xC0, 0x6F }, "Apple", "Apple, Inc." }, { { 0x7C, 0xC0, 0xAA }, "Microsoft", "Microsoft Corporation" }, { { 0x7C, 0xC1, 0x77 }, "IngramMicroS", "Ingram Micro Services" }, @@ -24098,6 +24302,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0x25, 0x11 }, "ItelMobile", "Itel Mobile Limited" }, { { 0x80, 0x26, 0x89 }, "DLinkInterna", "D-Link International" }, { { 0x80, 0x27, 0x6C }, "Cisco", "Cisco Systems, Inc" }, + { { 0x80, 0x28, 0x3C }, "Sonova", "Sonova AG" }, { { 0x80, 0x29, 0x94 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x80, 0x2A, 0xA8 }, "Ubiquiti", "Ubiquiti Inc" }, { { 0x80, 0x2A, 0xFA }, "Germaneers", "Germaneers GmbH" }, @@ -24110,7 +24315,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0x2F, 0xDE }, "ZurichInstru", "Zurich Instruments AG" }, { { 0x80, 0x30, 0x49 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x80, 0x30, 0xDC }, "TexasInstrum", "Texas Instruments" }, - { { 0x80, 0x30, 0xE0 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x80, 0x30, 0xE0 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x80, 0x31, 0xF0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x80, 0x32, 0x53 }, "Intel", "Intel Corporate" }, { { 0x80, 0x34, 0x28 }, "MicrochipTec", "Microchip Technology Inc." }, @@ -24149,6 +24354,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0x4A, 0xF2 }, "Sonos", "Sonos, Inc." }, { { 0x80, 0x4B, 0x20 }, "VentilationC", "Ventilation Control" }, { { 0x80, 0x4B, 0x50 }, "SiliconLabor", "Silicon Laboratories" }, + { { 0x80, 0x4C, 0x5D }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, { { 0x80, 0x4E, 0x70 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x80, 0x4E, 0x81 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x80, 0x4F, 0x58 }, "ThinkEco", "ThinkEco, Inc." }, @@ -24242,7 +24448,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0x8A, 0xF7 }, "Nanoleaf", "Nanoleaf" }, { { 0x80, 0x8B, 0x5C }, "RunhuichengT", "Shenzhen Runhuicheng Technology Co., Ltd" }, { { 0x80, 0x8C, 0x97 }, "KaonGroup", "Kaon Group Co., Ltd." }, - { { 0x80, 0x8D, 0xB7 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x80, 0x8D, 0xB7 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x80, 0x8F, 0x1D }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x80, 0x8F, 0xE8 }, "Intelbras", "Intelbras" }, { { 0x80, 0x91, 0x2A }, "LihRongelect", "Lih Rong electronic Enterprise Co., Ltd." }, @@ -24278,6 +24484,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0xAC, 0xC8 }, "PhyplusMicro", "Phyplus Microelectronics Limited" }, { { 0x80, 0xAD, 0x16 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x80, 0xAD, 0x67 }, "KasdaNetwork", "Kasda Networks Inc" }, + { { 0x80, 0xAE, 0x54 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x80, 0xAF, 0xCA }, "CudyTechnolo", "Shenzhen Cudy Technology Co., Ltd." }, { { 0x80, 0xB0, 0x3D }, "Apple", "Apple, Inc." }, { { 0x80, 0xB0, 0x7B }, "zte", "zte corporation" }, @@ -24355,6 +24562,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x80, 0xE6, 0x50 }, "Apple", "Apple, Inc." }, { { 0x80, 0xE8, 0x2C }, "HewlettPacka", "Hewlett Packard" }, { { 0x80, 0xE8, 0x6F }, "Cisco", "Cisco Systems, Inc" }, + { { 0x80, 0xE9, 0x4A }, "LEAPSsro", "LEAPS s.r.o." }, { { 0x80, 0xEA, 0x07 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x80, 0xEA, 0x0B }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x80, 0xEA, 0x23 }, "WistronNeweb", "Wistron Neweb Corporation" }, @@ -24403,6 +24611,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x11, 0x9E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x84, 0x13, 0x9F }, "zte", "zte corporation" }, { { 0x84, 0x14, 0x4D }, "Intel", "Intel Corporate" }, + { { 0x84, 0x15, 0x71 }, "TCTmobile", "TCT mobile ltd" }, { { 0x84, 0x15, 0xD3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x84, 0x16, 0x0C }, "Broadcom", "Broadcom Limited" }, { { 0x84, 0x16, 0xF9 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -24447,6 +24656,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x2C, 0x80 }, "SichuanChang", "Sichuan Changhong Electric Ltd." }, { { 0x84, 0x2E, 0x14 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x84, 0x2E, 0x27 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x84, 0x2F, 0x57 }, "Apple", "Apple, Inc." }, { { 0x84, 0x2F, 0x75 }, "InnokasGroup", "Innokas Group" }, { { 0x84, 0x30, 0x95 }, "HonHaiPrecis", "Hon Hai Precision IND.CO.,LTD" }, { { 0x84, 0x30, 0xCE }, "JaguarMicros", "Shenzhen Jaguar Microsystems Co., Ltd" }, @@ -24454,6 +24664,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x31, 0xA8 }, "FunshionOnli", "Wuhan Funshion Online Technologies Co.,Ltd" }, { { 0x84, 0x32, 0x6F }, "GuangzhouAva", "Guangzhou Ava Electronics Technology Co.,Ltd" }, { { 0x84, 0x32, 0xEA }, "AnhuiWanzten", "Anhui Wanzten P&T Co., Ltd" }, + { { 0x84, 0x33, 0xF2 }, "StellamoreTe", "Shenzhen Stellamore Technology Co.,Ltd" }, { { 0x84, 0x34, 0x97 }, "HewlettPacka", "Hewlett Packard" }, { { 0x84, 0x36, 0x11 }, "hyungseulpub", "hyungseul publishing networks" }, { { 0x84, 0x37, 0xD5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -24493,6 +24704,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x56, 0x9C }, "CohoData", "Coho Data, Inc.," }, { { 0x84, 0x57, 0x33 }, "Microsoft", "Microsoft Corporation" }, { { 0x84, 0x57, 0x87 }, "DVRC&C", "DVR C&C Co., Ltd." }, + { { 0x84, 0x57, 0xF7 }, "MetaPlatform", "Meta Platforms Technologies, LLC" }, { { 0x84, 0x5A, 0x3E }, "Cisco", "Cisco Systems, Inc" }, { { 0x84, 0x5A, 0x81 }, "ffly4u", "ffly4u" }, { { 0x84, 0x5B, 0x12 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -24545,6 +24757,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x80, 0x2D }, "Cisco", "Cisco Systems, Inc" }, { { 0x84, 0x80, 0x94 }, "Meter", "Meter, Inc." }, { { 0x84, 0x81, 0x02 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, + { { 0x84, 0x82, 0x1B }, "PROXSGPte", "PROX SG Pte Ltd" }, { { 0x84, 0x82, 0xF4 }, "HuasunUnicre", "Beijing Huasun Unicreate Technology Co., Ltd" }, { { 0x84, 0x83, 0x19 }, "ZeroZeroTech", "Hangzhou Zero Zero Technology Co., Ltd." }, { { 0x84, 0x83, 0x36 }, "Newrun", "Newrun" }, @@ -24582,6 +24795,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0x98, 0x66 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x84, 0x9A, 0x40 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x84, 0x9C, 0x02 }, "DruidSoftwar", "Druid Software" }, + { { 0x84, 0x9C, 0xA4 }, "MimosaNetwor", "Mimosa Networks" }, { { 0x84, 0x9C, 0xA6 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, { { 0x84, 0x9D, 0x64 }, "SMC", "SMC Corporation" }, { { 0x84, 0x9D, 0xC2 }, "MXCHIPInform", "Shanghai MXCHIP Information Technology Co., Ltd." }, @@ -24591,6 +24805,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x84, 0xA1, 0x34 }, "Apple", "Apple, Inc." }, { { 0x84, 0xA1, 0xD1 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x84, 0xA2, 0x4D }, "BirdsEyePriv", "Birds Eye Systems Private Limited" }, + { { 0x84, 0xA3, 0x29 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x84, 0xA3, 0xB5 }, "Propulsion", "Propulsion systems" }, { { 0x84, 0xA4, 0x23 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x84, 0xA4, 0x66 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -24746,6 +24961,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x12, 0x3D }, "SuzhouAquila", "Suzhou Aquila Solutions Inc." }, { { 0x88, 0x12, 0x4E }, "Qualcomm", "Qualcomm Inc." }, { { 0x88, 0x12, 0xAC }, "HunanFnLinkT", "Hunan Fn-Link Technology Limited" }, + { { 0x88, 0x13, 0xBF }, "Espressif", "Espressif Inc." }, { { 0x88, 0x14, 0x2B }, "ProtonicHoll", "Protonic Holland" }, { { 0x88, 0x15, 0x44 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x88, 0x15, 0xC5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -24761,6 +24977,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x1F, 0xA1 }, "Apple", "Apple, Inc." }, { { 0x88, 0x20, 0x0D }, "Apple", "Apple, Inc." }, { { 0x88, 0x20, 0x12 }, "LMITechnolog", "LMI Technologies" }, + { { 0x88, 0x20, 0x67 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x88, 0x21, 0xE3 }, "NebusensSL", "Nebusens, S.L." }, { { 0x88, 0x22, 0xB2 }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Corp." }, { { 0x88, 0x23, 0x1F }, "FibocomWirel", "Fibocom Wireless Inc." }, @@ -24800,6 +25017,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x3C, 0x1C }, "Mercury", "Mercury Corporation" }, { { 0x88, 0x3C, 0x93 }, "AlcatelLucen", "Alcatel-Lucent Enterprise" }, { { 0x88, 0x3D, 0x24 }, "Google", "Google, Inc." }, + { { 0x88, 0x3E, 0x0D }, "HDHyundaiEle", "HD Hyundai Electric" }, { { 0x88, 0x3F, 0x0C }, "systemav", "system a.v. co., ltd." }, { { 0x88, 0x3F, 0x27 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x88, 0x3F, 0x37 }, "Uhtek", "Uhtek Co., Ltd." }, @@ -24850,6 +25068,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x62, 0x5D }, "Bitnetworks", "Bitnetworks Co.,Ltd" }, { { 0x88, 0x63, 0xDF }, "Apple", "Apple, Inc." }, { { 0x88, 0x64, 0x40 }, "Apple", "Apple, Inc." }, + { { 0x88, 0x65, 0x9F }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x88, 0x66, 0x39 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x88, 0x66, 0x5A }, "Apple", "Apple, Inc." }, { { 0x88, 0x66, 0xA5 }, "Apple", "Apple, Inc." }, @@ -24863,6 +25082,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x6B, 0x44 }, "SunnovoInter", "Sunnovo International Limited" }, { { 0x88, 0x6B, 0x6E }, "Apple", "Apple, Inc." }, { { 0x88, 0x6B, 0x76 }, "ChinaHopeful", "China Hopeful Group Hopeful Electric Co.,Ltd" }, + { { 0x88, 0x6B, 0xDB }, "Apple", "Apple, Inc." }, { { 0x88, 0x6C, 0x60 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x88, 0x6D, 0x2D }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x88, 0x6E, 0xDD }, "Micronetunio", "Micronet union Technology(Chengdu)Co., Ltd." }, @@ -24888,6 +25108,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0x7B, 0x2C }, "zte", "zte corporation" }, { { 0x88, 0x7E, 0x25 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0x88, 0x7F, 0x03 }, "ComperTechno", "Comper Technology Investment Limited" }, + { { 0x88, 0x7F, 0xD5 }, "zte", "zte corporation" }, { { 0x88, 0x81, 0x87 }, "UmeoxInnovat", "Umeox Innovations Co.,Ltd" }, { { 0x88, 0x81, 0xB9 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x88, 0x82, 0x79 }, "RBLINKIntell", "Shenzhen RB-LINK Intelligent Technology Co.Ltd" }, @@ -24954,6 +25175,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xAD, 0xD2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x88, 0xAE, 0x07 }, "Apple", "Apple, Inc." }, { { 0x88, 0xAE, 0x1D }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, + { { 0x88, 0xAE, 0x35 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0x88, 0xAE, 0xDD }, "EliteGroupCo", "EliteGroup Computer Systems Co., LTD" }, { { 0x88, 0xAF, 0x7B }, "NanjingPower", "Nanjing Powercore Tech Co.,Ltd" }, { { 0x88, 0xB1, 0x11 }, "Intel", "Intel Corporate" }, @@ -24975,6 +25197,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xB8, 0xD0 }, "DongguanKopp", "Dongguan Koppo Electronic Co.,Ltd" }, { { 0x88, 0xB9, 0x45 }, "Apple", "Apple, Inc." }, { { 0x88, 0xBA, 0x7F }, "Qfiednet", "Qfiednet Co., Ltd." }, + { { 0x88, 0xBC, 0xAC }, "ZebraTechnol", "Zebra Technologies Inc." }, { { 0x88, 0xBC, 0xC1 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x88, 0xBD, 0x45 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x88, 0xBD, 0x78 }, "FlaircommMic", "Flaircomm Microelectronics,Inc." }, @@ -25015,6 +25238,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xD8, 0x2E }, "Intel", "Intel Corporate" }, { { 0x88, 0xD9, 0x62 }, "CanopusUS", "Canopus Systems US LLC" }, { { 0x88, 0xD9, 0x8F }, "JuniperNetwo", "Juniper Networks" }, + { { 0x88, 0xDA, 0x18 }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0x88, 0xDA, 0x1A }, "RedpineSigna", "Redpine Signals, Inc." }, { { 0x88, 0xDA, 0x33 }, "XiaoyuerNetw", "Beijing Xiaoyuer Network Technology Co., Ltd" }, { { 0x88, 0xDC, 0x96 }, "EnGeniusTech", "EnGenius Technologies, Inc." }, @@ -25037,7 +25261,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xE8, 0xF8 }, "YongTaiElect", "Yong Tai Electronic (Dongguan) Ltd." }, { { 0x88, 0xE9, 0x0F }, "innomdlelab", "innomdlelab" }, { { 0x88, 0xE9, 0x17 }, "Tamaggo", "Tamaggo" }, - { { 0x88, 0xE9, 0xA4 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x88, 0xE9, 0xA4 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x88, 0xE9, 0xFE }, "Apple", "Apple, Inc." }, { { 0x88, 0xED, 0x1C }, "CudoCommunic", "Cudo Communication Co., Ltd." }, { { 0x88, 0xEF, 0x16 }, "ARRISGroup", "ARRIS Group, Inc." }, @@ -25048,6 +25272,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xF4, 0x88 }, "celloncommun", "cellon communications technology(shenzhen)Co.,Ltd." }, { { 0x88, 0xF4, 0x90 }, "JetmobilePte", "Jetmobile Pte Ltd" }, { { 0x88, 0xF5, 0x6E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x88, 0xF6, 0xDC }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x88, 0xF7, 0xBF }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x88, 0xF7, 0xC7 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x88, 0xF8, 0x72 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -25057,7 +25282,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x88, 0xFD, 0x15 }, "Lineeye", "Lineeye Co., Ltd" }, { { 0x88, 0xFE, 0xD6 }, "WangYongSoft", "ShangHai WangYong Software Co., Ltd." }, { { 0x8A, 0x00, 0xB0 }, "EoptolinkTec", "Eoptolink Technology Inc. Ltd," }, - { { 0x8A, 0x07, 0x75 }, "LyotechLabs", "Lyotech Labs Llc" }, + { { 0x8A, 0x07, 0x75 }, "HorysTechnol", "Horys Technologies Llc" }, { { 0x8A, 0x0A, 0xF7 }, "MontageTechn", "Montage Technology Co,.LTD" }, { { 0x8A, 0x34, 0xBC }, "FiberworksAS", "Fiberworks AS" }, { { 0x8A, 0x4F, 0x8B }, "Irdeto", "Irdeto" }, @@ -25258,6 +25483,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x8C, 0x86, 0x1E }, "Apple", "Apple, Inc." }, { { 0x8C, 0x86, 0x2A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x8C, 0x87, 0x3B }, "LeicaCamera", "Leica Camera AG" }, + { { 0x8C, 0x87, 0xD0 }, "UascentTechn", "Shenzhen Uascent Technology Co.,Ltd" }, { { 0x8C, 0x88, 0x81 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x8C, 0x89, 0x7A }, "Augtek", "Augtek" }, { { 0x8C, 0x89, 0xA5 }, "MicroStarINT", "Micro-Star INT'L CO., LTD" }, @@ -25327,6 +25553,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x8C, 0xC7, 0xD0 }, "zhejiangeban", "zhejiang ebang communication co.,ltd" }, { { 0x8C, 0xC8, 0x4B }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, { { 0x8C, 0xC8, 0xCD }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x8C, 0xC9, 0xE9 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x8C, 0xCB, 0x14 }, "TBS", "TBS GmbH" }, { { 0x8C, 0xCB, 0xDF }, "FoxconnInter", "Foxconn Interconnect Technology" }, { { 0x8C, 0xCD, 0xA2 }, "ACTP", "ACTP, Inc." }, @@ -25373,6 +25600,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x8C, 0xEA, 0x12 }, "MiaoMingInte", "Shenzhen MiaoMing Intelligent Technology Co.,Ltd" }, { { 0x8C, 0xEA, 0x1B }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0x8C, 0xEA, 0x48 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x8C, 0xEA, 0x88 }, "YoctoCommuni", "Chengdu Yocto Communication Technology Co.Ltd." }, { { 0x8C, 0xEB, 0xC6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x8C, 0xEC, 0x4B }, "Dell", "Dell Inc." }, { { 0x8C, 0xEC, 0x7B }, "Apple", "Apple, Inc." }, @@ -25410,6 +25638,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x90, 0x02, 0x8A }, "ShideanLegra", "Shenzhen Shidean Legrand Electronic Products Co.,Ltd" }, { { 0x90, 0x02, 0xA9 }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, { { 0x90, 0x03, 0x25 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x90, 0x03, 0x71 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x90, 0x03, 0x72 }, "LongnanJunya", "Longnan Junya Digital Technology Co. Ltd." }, { { 0x90, 0x03, 0xB7 }, "Parrot", "Parrot Sa" }, { { 0x90, 0x06, 0x28 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -25454,6 +25683,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x90, 0x20, 0x83 }, "GeneralEngin", "General Engine Management Systems Ltd." }, { { 0x90, 0x20, 0xC2 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x90, 0x21, 0x06 }, "SkyUk", "Sky Uk Limited" }, + { { 0x90, 0x21, 0x2E }, "ApptionLabs", "Apption Labs Ltd" }, { { 0x90, 0x21, 0x55 }, "HTC", "HTC Corporation" }, { { 0x90, 0x21, 0x81 }, "HuaqinTeleco", "Shanghai Huaqin Telecom Technology Co.,Ltd" }, { { 0x90, 0x23, 0x5B }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -25512,7 +25742,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x90, 0x48, 0x9A }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x90, 0x49, 0x92 }, "YSTenTechnol", "YSTen Technology Co.,Ltd" }, { { 0x90, 0x49, 0xFA }, "Intel", "Intel Corporate" }, - { { 0x90, 0x4C, 0x81 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x90, 0x4C, 0x81 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x90, 0x4C, 0xE5 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x90, 0x4D, 0x4A }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x90, 0x4D, 0xC3 }, "Flonidan", "Flonidan A/S" }, @@ -25669,6 +25899,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x90, 0xB1, 0x44 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x90, 0xB1, 0xE0 }, "NebulaLinkTe", "Beijing Nebula Link Technology Co., Ltd" }, { { 0x90, 0xB2, 0x1F }, "Apple", "Apple, Inc." }, + { { 0x90, 0xB4, 0xDD }, "ZptR&D", "Zpt R&D" }, { { 0x90, 0xB5, 0x7F }, "iCommSemicon", "Shenzhen iComm Semiconductor CO.,LTD" }, { { 0x90, 0xB6, 0x22 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x90, 0xB6, 0x7A }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, @@ -25785,7 +26016,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x0B, 0x19 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x94, 0x0B, 0x2D }, "NetViewTechn", "NetView Technologies(Shenzhen) Co., Ltd" }, { { 0x94, 0x0B, 0x83 }, "zte", "zte corporation" }, + { { 0x94, 0x0B, 0xCD }, "Apple", "Apple, Inc." }, { { 0x94, 0x0B, 0xD5 }, "HimaxTechnol", "Himax Technologies, Inc" }, + { { 0x94, 0x0B, 0xFA }, "EMMicroelect", "EM Microelectronic" }, { { 0x94, 0x0C, 0x6D }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x94, 0x0C, 0x98 }, "Apple", "Apple, Inc." }, { { 0x94, 0x0D, 0x2D }, "UniversalEle", "Universal Electronics, Inc." }, @@ -25800,18 +26033,21 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x16, 0x73 }, "PointCore", "Point Core SARL" }, { { 0x94, 0x17, 0x00 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x94, 0x18, 0x65 }, "Netgear", "Netgear" }, - { { 0x94, 0x18, 0x82 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x94, 0x18, 0x82 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x94, 0x19, 0x3A }, "Elvaco", "Elvaco AB" }, { { 0x94, 0x1C, 0x56 }, "ActiontecEle", "Actiontec Electronics, Inc" }, { { 0x94, 0x1D, 0x1C }, "TLabWest", "TLab West Systems AB" }, { { 0x94, 0x1F, 0x3A }, "Ambiq", "Ambiq" }, { { 0x94, 0x1F, 0xA2 }, "YuXinSemicon", "Wuhan YuXin Semiconductor Co., Ltd." }, { { 0x94, 0x20, 0x53 }, "Nokia", "Nokia Corporation" }, + { { 0x94, 0x21, 0x57 }, "Apple", "Apple, Inc." }, { { 0x94, 0x21, 0x97 }, "StalmartTech", "Stalmart Technology Limited" }, { { 0x94, 0x23, 0x6E }, "JunlanElectr", "Shenzhen Junlan Electronic Ltd" }, { { 0x94, 0x24, 0xB8 }, "GreeElectric", "Gree Electric Appliances, Inc. Of Zhuhai" }, { { 0x94, 0x24, 0xE1 }, "AlcatelLucen", "Alcatel-Lucent Enterprise" }, { { 0x94, 0x25, 0x33 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x94, 0x26, 0x1D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x94, 0x27, 0x70 }, "BSHHausgerät", "BSH Hausgeräte GmbH" }, { { 0x94, 0x27, 0x90 }, "TCTmobile", "TCT mobile ltd" }, { { 0x94, 0x28, 0x2E }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x94, 0x28, 0x6F }, "zte", "zte corporation" }, @@ -25833,6 +26069,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x33, 0xDD }, "Taco", "Taco Inc" }, { { 0x94, 0x34, 0x69 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x94, 0x35, 0x0A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x94, 0x35, 0x89 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x94, 0x36, 0xE0 }, "SichuanBihon", "Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd" }, { { 0x94, 0x37, 0xF7 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x94, 0x39, 0xE5 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -25846,10 +26083,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x3E, 0xE4 }, "WiSATechnolo", "WiSA Technologies Inc" }, { { 0x94, 0x3F, 0x0C }, "Genexis", "Genexis B.V." }, { { 0x94, 0x3F, 0xBB }, "JSCRPCIstokn", "JSC RPC Istok named after Shokin" }, - { { 0x94, 0x3F, 0xC2 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x94, 0x3F, 0xC2 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x94, 0x3F, 0xD6 }, "Apple", "Apple, Inc." }, { { 0x94, 0x40, 0xA2 }, "AnywaveCommu", "Anywave Communication Technologies, Inc." }, - { { 0x94, 0x40, 0xC9 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x94, 0x40, 0xC9 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x94, 0x40, 0xF3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x94, 0x41, 0xC1 }, "MiniCam", "Mini-Cam Limited" }, { { 0x94, 0x43, 0x4D }, "Ciena", "Ciena Corporation" }, @@ -25862,6 +26099,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x49, 0x96 }, "WiSilica", "WiSilica Inc" }, { { 0x94, 0x4A, 0x09 }, "BitWiseContr", "BitWise Controls" }, { { 0x94, 0x4A, 0x0C }, "Sercomm", "Sercomm Corporation." }, + { { 0x94, 0x4B, 0xF8 }, "Tozo", "Tozo Inc" }, { { 0x94, 0x4E, 0x5B }, "UbeeInteract", "Ubee Interactive Co., Limited" }, { { 0x94, 0x4F, 0x4C }, "SoundUnited", "Sound United LLC" }, { { 0x94, 0x50, 0x47 }, "Rechnerbetri", "Rechnerbetriebsgruppe" }, @@ -25928,6 +26166,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x8A, 0xC6 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0x94, 0x8B, 0x03 }, "EAGETInnovat", "EAGET Innovation and Technology Co., Ltd." }, { { 0x94, 0x8B, 0xC1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x94, 0x8C, 0xD7 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x94, 0x8D, 0x50 }, "Beamex", "Beamex Oy Ab" }, { { 0x94, 0x8D, 0xEF }, "OetikerSchwe", "Oetiker Schweiz AG" }, { { 0x94, 0x8E, 0x89 }, "IndustriasUn", "Industrias Unidas Sa De Cv" }, @@ -25955,6 +26194,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0x9D, 0x57 }, "PanasonicdoB", "Panasonic do Brasil Limitada" }, { { 0x94, 0x9F, 0x3E }, "Sonos", "Sonos, Inc." }, { { 0x94, 0x9F, 0x3F }, "OptekDigital", "Optek Digital Technology company limited" }, + { { 0x94, 0x9F, 0x8B }, "zte", "zte corporation" }, { { 0x94, 0x9F, 0xB4 }, "JiaFaAnTaiTe", "ChengDu JiaFaAnTai Technology Co.,Ltd" }, { { 0x94, 0xA0, 0x4E }, "BostexTechno", "Bostex Technology Co., LTD" }, { { 0x94, 0xA0, 0x7D }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -25995,9 +26235,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0xBA, 0x56 }, "CoshipElectr", "Shenzhen Coship Electronics Co., Ltd." }, { { 0x94, 0xBB, 0x43 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x94, 0xBB, 0xAE }, "Husqvarna", "Husqvarna AB" }, + { { 0x94, 0xBD, 0xBE }, "TPVDisplayTe", "TPV Display Technology (Xiamen) Co.,Ltd." }, { { 0x94, 0xBE, 0x09 }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0x94, 0xBE, 0x46 }, "MotorolaMobi", "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd." }, - { { 0x94, 0xBE, 0x50 }, "Remotesoluti", "Remotesolution" }, + { { 0x94, 0xBE, 0x50 }, "RemoteSoluti", "Remote Solution" }, { { 0x94, 0xBF, 0x1E }, "eflowSmartDe", "eflow Inc. / Smart Device Planning and Development Division" }, { { 0x94, 0xBF, 0x2D }, "Apple", "Apple, Inc." }, { { 0x94, 0xBF, 0x80 }, "zte", "zte corporation" }, @@ -26067,6 +26308,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0xE3, 0xEE }, "zte", "zte corporation" }, { { 0x94, 0xE4, 0xBA }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x94, 0xE6, 0x86 }, "Espressif", "Espressif Inc." }, + { { 0x94, 0xE6, 0xBA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x94, 0xE6, 0xF7 }, "Intel", "Intel Corporate" }, { { 0x94, 0xE7, 0x0B }, "Intel", "Intel Corporate" }, { { 0x94, 0xE7, 0x11 }, "XirkaDamaPer", "Xirka Dama Persada PT" }, @@ -26083,7 +26325,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x94, 0xEB, 0xCD }, "BlackBerryRT", "BlackBerry RTS" }, { { 0x94, 0xEE, 0x9F }, "HMDGlobal", "HMD Global Oy" }, { { 0x94, 0xEF, 0x49 }, "BDRThermeaGr", "BDR Thermea Group B.V" }, - { { 0x94, 0xF1, 0x28 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x94, 0xF1, 0x28 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x94, 0xF1, 0x9E }, "HuizhouMaoro", "Huizhou Maorong Intelligent Technology Co.,Ltd" }, { { 0x94, 0xF2, 0x78 }, "ElmaElectron", "Elma Electronic" }, { { 0x94, 0xF2, 0xBB }, "ValeoVision", "Valeo Vision Systems" }, @@ -26122,6 +26364,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x03, 0xD8 }, "Apple", "Apple, Inc." }, { { 0x98, 0x06, 0x3A }, "HomeControlS", "Home Control Singapore Pte Ltd" }, { { 0x98, 0x06, 0x3C }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x98, 0x07, 0x09 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x98, 0x07, 0x2D }, "TexasInstrum", "Texas Instruments" }, { { 0x98, 0x09, 0xCF }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x98, 0x0C, 0x33 }, "SiliconLabor", "Silicon Laboratories" }, @@ -26146,6 +26389,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x1A, 0x35 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x98, 0x1B, 0xB5 }, "ASSAABLOYKor", "ASSA ABLOY Korea Co., Ltd iRevo" }, { { 0x98, 0x1C, 0x42 }, "Laiier", "Laiier" }, + { { 0x98, 0x1D, 0xAC }, "CyvizAS", "Cyviz AS" }, { { 0x98, 0x1D, 0xFA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x98, 0x1E, 0x0F }, "JeelanShangh", "Jeelan (Shanghai Jeelan Technology Information Inc" }, { { 0x98, 0x1E, 0x19 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, @@ -26163,6 +26407,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x29, 0x1D }, "JaguardeMexi", "Jaguar de Mexico, SA de CV" }, { { 0x98, 0x29, 0x3F }, "FujianStartC", "Fujian Start Computer Equipment Co.,Ltd" }, { { 0x98, 0x29, 0xA6 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, + { { 0x98, 0x2A, 0x0A }, "Intelbras", "Intelbras" }, { { 0x98, 0x2C, 0xBC }, "Intel", "Intel Corporate" }, { { 0x98, 0x2C, 0xBE }, "2Wire", "2Wire Inc" }, { { 0x98, 0x2D, 0x56 }, "ResolutionAu", "Resolution Audio" }, @@ -26173,13 +26418,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x2F, 0xF8 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x98, 0x30, 0x00 }, "KEMACOMTechn", "Beijing KEMACOM Technologies Co., Ltd." }, { { 0x98, 0x30, 0x71 }, "DaikyungVasc", "Daikyung Vascom" }, - { { 0x98, 0x34, 0x8C }, "Teleepoch", "Teleepoch Ltd" }, + { { 0x98, 0x34, 0x8C }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0x98, 0x34, 0x9D }, "KraussMaffei", "Krauss Maffei Technologies GmbH" }, { { 0x98, 0x35, 0x71 }, "Sub10", "Sub10 Systems Ltd" }, { { 0x98, 0x35, 0xB8 }, "AssembledPro", "Assembled Products Corporation" }, { { 0x98, 0x35, 0xED }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x98, 0x37, 0x13 }, "PTNavicomInd", "PT.Navicom Indonesia" }, { { 0x98, 0x38, 0x7D }, "ItronicTechn", "Itronic Technology Co. , Ltd." }, + { { 0x98, 0x39, 0x10 }, "KaonGroup", "Kaon Group Co., Ltd." }, { { 0x98, 0x39, 0x8E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x98, 0x39, 0xC0 }, "Flextronics", "Flextronics" }, { { 0x98, 0x3B, 0x16 }, "AMPAKTechnol", "AMPAK Technology, Inc." }, @@ -26226,6 +26472,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x59, 0x45 }, "TexasInstrum", "Texas Instruments" }, { { 0x98, 0x59, 0x49 }, "LuxotticaGro", "Luxottica Group S.P.A." }, { { 0x98, 0x59, 0x7A }, "Intel", "Intel Corporate" }, + { { 0x98, 0x5A, 0x98 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x98, 0x5A, 0xEB }, "Apple", "Apple, Inc." }, { { 0x98, 0x5B, 0xB0 }, "Kmdata", "Kmdata Inc." }, { { 0x98, 0x5C, 0x93 }, "SBGSAS", "SBG Systems SAS" }, @@ -26233,6 +26480,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x5D, 0x82 }, "AristaNetwor", "Arista Networks" }, { { 0x98, 0x5D, 0xAD }, "TexasInstrum", "Texas Instruments" }, { { 0x98, 0x5E, 0x1B }, "ConversDigit", "ConversDigital Co., Ltd." }, + { { 0x98, 0x5F, 0x41 }, "Intel", "Intel Corporate" }, { { 0x98, 0x5F, 0x4F }, "TongfangComp", "Tongfang Computer Co.,Ltd." }, { { 0x98, 0x5F, 0xD3 }, "Microsoft", "Microsoft Corporation" }, { { 0x98, 0x60, 0x22 }, "EMW", "EMW Co., Ltd." }, @@ -26297,6 +26545,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0x9B, 0xCB }, "AVMAudiovisu", "AVM Audiovisuelles Marketing und Computersysteme GmbH" }, { { 0x98, 0x9C, 0x57 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x98, 0x9D, 0x5D }, "VantivaUSA", "Vantiva USA LLC" }, + { { 0x98, 0x9D, 0xB2 }, "GOIPGlobalSe", "GOIP Global Services Pvt. Ltd." }, { { 0x98, 0x9D, 0xE5 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x98, 0x9E, 0x63 }, "Apple", "Apple, Inc." }, { { 0x98, 0x9F, 0x1E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -26306,6 +26555,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0xA5, 0xF9 }, "Apple", "Apple, Inc." }, { { 0x98, 0xA7, 0xB0 }, "Mcst", "Mcst Zao" }, { { 0x98, 0xA8, 0x29 }, "AltoBeam", "AltoBeam Inc." }, + { { 0x98, 0xA8, 0x78 }, "AgnigateTech", "Agnigate Technologies Private Limited" }, { { 0x98, 0xA9, 0x2D }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x98, 0xA9, 0x42 }, "GuangzhouToz", "Guangzhou Tozed Kangwei Intelligent Technology Co., LTD" }, { { 0x98, 0xAA, 0x3C }, "Willitech", "Will i-tech Co., Ltd." }, @@ -26346,6 +26596,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0xCA, 0x20 }, "SIMCOM", "Shanghai SIMCOM Ltd." }, { { 0x98, 0xCA, 0x33 }, "Apple", "Apple, Inc." }, { { 0x98, 0xCB, 0x27 }, "GaloreNetwor", "Galore Networks Pvt. Ltd." }, + { { 0x98, 0xCB, 0x38 }, "BoxinCommuni", "Boxin Communications Limited Liability Company" }, { { 0x98, 0xCB, 0xA4 }, "BenchmarkEle", "Benchmark Electronics" }, { { 0x98, 0xCC, 0x4D }, "mantunsci", "Shenzhen mantunsci co., LTD" }, { { 0x98, 0xCC, 0xD9 }, "SuperElectro", "Shenzhen SuperElectron Technology Co.,Ltd." }, @@ -26400,8 +26651,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x98, 0xF1, 0x81 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x98, 0xF1, 0x99 }, "NECPlatforms", "NEC Platforms, Ltd." }, { { 0x98, 0xF2, 0x17 }, "CastlenetTec", "Castlenet Technology Inc." }, - { { 0x98, 0xF2, 0xB3 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x98, 0xF2, 0xB3 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x98, 0xF4, 0x28 }, "zte", "zte corporation" }, + { { 0x98, 0xF4, 0x87 }, "TexasInstrum", "Texas Instruments" }, { { 0x98, 0xF4, 0xAB }, "Espressif", "Espressif Inc." }, { { 0x98, 0xF5, 0x37 }, "zte", "zte corporation" }, { { 0x98, 0xF5, 0xA9 }, "Ohsung", "Ohsung" }, @@ -26442,6 +26694,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x06, 0x1B }, "H3CTechnolog", "Hangzhou H3C Technologies Co., Limited" }, { { 0x9C, 0x06, 0x6E }, "HyteraCommun", "Hytera Communications Corporation Limited" }, { { 0x9C, 0x09, 0x71 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, + { { 0x9C, 0x09, 0x8B }, "Cisco", "Cisco Systems, Inc" }, { { 0x9C, 0x0B, 0x05 }, "eero", "eero inc." }, { { 0x9C, 0x0C, 0x35 }, "ShenzhenshiX", "Shenzhenshi Xinzhongxin Technology Co.Ltd" }, { { 0x9C, 0x0C, 0xDF }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, @@ -26452,6 +26705,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x14, 0x65 }, "EdataElektro", "Edata Elektronik San. ve Tic. A.Ş." }, { { 0x9C, 0x18, 0x74 }, "NokiaDanmark", "Nokia Danmark A/S" }, { { 0x9C, 0x19, 0xC2 }, "DongguanLies", "Dongguan Liesheng Electronic Co., Ltd." }, + { { 0x9C, 0x1A, 0x25 }, "Apple", "Apple, Inc." }, { { 0x9C, 0x1C, 0x12 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0x9C, 0x1C, 0x37 }, "AltoBeam", "AltoBeam (China) Inc." }, { { 0x9C, 0x1C, 0x6D }, "HefeiDatangS", "Hefei Datang Storage Technology Co.,Ltd" }, @@ -26480,6 +26734,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x2A, 0x70 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x9C, 0x2A, 0x83 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x9C, 0x2B, 0xA6 }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, + { { 0x9C, 0x2D, 0x49 }, "NanowellInfo", "Nanowell Info Tech Co., Limited" }, { { 0x9C, 0x2D, 0xCD }, "LCFCElectron", "LCFC(HeFei) Electronics Technology co., ltd" }, { { 0x9C, 0x2D, 0xCF }, "ShishiTongyu", "Shishi Tongyun Technology(Chengdu)Co.,Ltd." }, { { 0x9C, 0x2E, 0x7A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -26523,6 +26778,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x4E, 0x8E }, "ALT", "ALT Systems Ltd" }, { { 0x9C, 0x4E, 0xBF }, "BoxCast", "BoxCast" }, { { 0x9C, 0x4F, 0x5F }, "Google", "Google, Inc." }, + { { 0x9C, 0x4F, 0xAC }, "zte", "zte corporation" }, { { 0x9C, 0x4F, 0xCF }, "TCTmobile", "TCT mobile ltd" }, { { 0x9C, 0x4F, 0xDA }, "Apple", "Apple, Inc." }, { { 0x9C, 0x50, 0xD1 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, @@ -26544,7 +26800,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x57, 0xAD }, "Cisco", "Cisco Systems, Inc" }, { { 0x9C, 0x57, 0xBC }, "eero", "eero inc." }, { { 0x9C, 0x58, 0x3C }, "Apple", "Apple, Inc." }, + { { 0x9C, 0x58, 0x84 }, "Apple", "Apple, Inc." }, { { 0x9C, 0x5A, 0x44 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, + { { 0x9C, 0x5A, 0x80 }, "JuniperNetwo", "Juniper Networks" }, { { 0x9C, 0x5A, 0x81 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x9C, 0x5B, 0x96 }, "NMR", "NMR Corporation" }, { { 0x9C, 0x5C, 0x8D }, "FiremaxIndús", "Firemax Indústria E Comércio De Produtos Eletrônicos Ltda" }, @@ -26555,6 +26813,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x5E, 0x73 }, "CalibreUK", "Calibre UK LTD" }, { { 0x9C, 0x5F, 0x5A }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x9C, 0x5F, 0xB0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x9C, 0x60, 0x76 }, "Apple", "Apple, Inc." }, { { 0x9C, 0x61, 0x1D }, "PanasonicNor", "Panasonic Corporation of North America" }, { { 0x9C, 0x61, 0x21 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x9C, 0x62, 0xAB }, "SumavisionTe", "Sumavision Technologies Co.,Ltd" }, @@ -26568,6 +26827,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x65, 0xF9 }, "AcSiPTechnol", "AcSiP Technology Corp." }, { { 0x9C, 0x65, 0xFA }, "AcSiP", "AcSiP" }, { { 0x9C, 0x66, 0x50 }, "GlodioTechno", "Glodio Technolies Co.,Ltd Tianjin Branch" }, + { { 0x9C, 0x66, 0x97 }, "Cisco", "Cisco Systems, Inc" }, { { 0x9C, 0x68, 0x5B }, "Octonion", "Octonion SA" }, { { 0x9C, 0x68, 0x65 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x9C, 0x69, 0x37 }, "QorvoInterna", "Qorvo International Pte. Ltd." }, @@ -26615,7 +26875,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x8B, 0xA0 }, "Apple", "Apple, Inc." }, { { 0x9C, 0x8B, 0xF1 }, "Warehouse", "The Warehouse Limited" }, { { 0x9C, 0x8C, 0x6E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, - { { 0x9C, 0x8C, 0xD8 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x9C, 0x8C, 0xD8 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x9C, 0x8D, 0x1A }, "INTEGprocess", "INTEG process group inc" }, { { 0x9C, 0x8D, 0x7C }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x9C, 0x8D, 0xD3 }, "LeontonTechn", "Leonton Technologies" }, @@ -26644,6 +26904,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0x9D, 0x5D }, "Raden", "Raden Inc" }, { { 0x9C, 0x9D, 0x7E }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x9C, 0x9E, 0x03 }, "awayfrom", "awayfrom" }, + { { 0x9C, 0x9E, 0x6E }, "Espressif", "Espressif Inc." }, { { 0x9C, 0x9E, 0x71 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x9C, 0x9E, 0xD5 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x9C, 0xA1, 0x0A }, "ScleSfe", "Scle Sfe" }, @@ -26709,6 +26970,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0xD3, 0x5B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x9C, 0xD3, 0x6D }, "Netgear", "Netgear" }, { { 0x9C, 0xD4, 0x8B }, "InnoluxTechn", "Innolux Technology Europe BV" }, + { { 0x9C, 0xD4, 0xA6 }, "ServercomPri", "Servercom (India) Private Limited" }, { { 0x9C, 0xD5, 0x7D }, "Cisco", "Cisco Systems, Inc" }, { { 0x9C, 0xD6, 0x43 }, "DLinkInterna", "D-Link International" }, { { 0x9C, 0xD8, 0xE3 }, "HuazhongNume", "Wuhan Huazhong Numerical Control Co., Ltd" }, @@ -26718,7 +26980,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0xDB, 0x07 }, "Yellowtec", "Yellowtec GmbH" }, { { 0x9C, 0xDB, 0xAF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x9C, 0xDB, 0xCB }, "FunshionOnli", "Wuhan Funshion Online Technologies Co.,Ltd" }, - { { 0x9C, 0xDC, 0x71 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x9C, 0xDC, 0x71 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0x9C, 0xDD, 0x1F }, "IntelligentS", "Intelligent Steward Co.,Ltd" }, { { 0x9C, 0xDE, 0x4D }, "MLvision", "ML vision Co.,LTD" }, { { 0x9C, 0xDF, 0x03 }, "HarmanBecker", "Harman/Becker Automotive Systems GmbH" }, @@ -26759,6 +27021,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0x9C, 0xF8, 0xDB }, "eyunmeitechn", "shenzhen eyunmei technology co,.ltd" }, { { 0x9C, 0xF9, 0x38 }, "AREVANP", "AREVA NP GmbH" }, { { 0x9C, 0xFA, 0x3C }, "DaeyoungElec", "Daeyoung Electronics" }, + { { 0x9C, 0xFA, 0x76 }, "Apple", "Apple, Inc." }, { { 0x9C, 0xFB, 0x77 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x9C, 0xFB, 0xD5 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x9C, 0xFB, 0xF1 }, "MESOMATIC", "MESOMATIC GmbH & Co.KG" }, @@ -26808,6 +27071,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA0, 0x20, 0xA6 }, "Espressif", "Espressif Inc." }, { { 0xA0, 0x21, 0x8B }, "ACEAntenna", "ACE Antenna Co., ltd" }, { { 0xA0, 0x21, 0x95 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xA0, 0x21, 0xAA }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0xA0, 0x21, 0xB7 }, "Netgear", "Netgear" }, { { 0xA0, 0x22, 0x52 }, "AstraWireles", "Astra Wireless Technology FZ-LLC" }, { { 0xA0, 0x22, 0xDE }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, @@ -26862,6 +27126,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA0, 0x43, 0xDB }, "Sitael", "Sitael S.p.A." }, { { 0xA0, 0x44, 0x5C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xA0, 0x44, 0x66 }, "Intellics", "Intellics" }, + { { 0xA0, 0x44, 0xB7 }, "PAXComputerT", "PAX Computer Technology(Shenzhen) Ltd." }, { { 0xA0, 0x44, 0xF3 }, "RafaelMicro", "RafaelMicro" }, { { 0xA0, 0x46, 0x5A }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xA0, 0x47, 0xD7 }, "BestITWorld", "Best IT World (India) Pvt Ltd" }, @@ -26930,7 +27195,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA0, 0x77, 0x71 }, "Vialis", "Vialis BV" }, { { 0xA0, 0x77, 0x9E }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Corp." }, { { 0xA0, 0x78, 0x17 }, "Apple", "Apple, Inc." }, + { { 0xA0, 0x78, 0x2D }, "Apple", "Apple, Inc." }, { { 0xA0, 0x78, 0xBA }, "Pantech", "Pantech Co., Ltd." }, + { { 0xA0, 0x7D, 0x9C }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xA0, 0x7F, 0x8A }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xA0, 0x80, 0x69 }, "Intel", "Intel Corporate" }, { { 0xA0, 0x82, 0x1F }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -27100,6 +27367,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA0, 0xF8, 0x95 }, "TINNOMobileT", "Shenzhen TINNO Mobile Technology Corp." }, { { 0xA0, 0xF9, 0xB7 }, "AdemcoSmartH", "Ademco Smart Homes Technology(Tianjin)Co.,Ltd." }, { { 0xA0, 0xF9, 0xE0 }, "Vivatel", "Vivatel Company Limited" }, + { { 0xA0, 0xFA, 0xC8 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xA0, 0xFB, 0x83 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0xA0, 0xFB, 0xC5 }, "Apple", "Apple, Inc." }, { { 0xA0, 0xFC, 0x6E }, "Telegrafia", "Telegrafia a.s." }, @@ -27163,6 +27431,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA4, 0x25, 0x1B }, "Avaya", "Avaya Inc" }, { { 0xA4, 0x26, 0x18 }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, { { 0xA4, 0x26, 0x55 }, "LTIMotion", "LTI Motion (Shanghai) Co., Ltd." }, + { { 0xA4, 0x27, 0xA5 }, "PaloAltoNetw", "Palo Alto Networks" }, { { 0xA4, 0x28, 0xB7 }, "YangtzeMemor", "Yangtze Memory Technologies Co., Ltd." }, { { 0xA4, 0x29, 0x40 }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, { { 0xA4, 0x29, 0x83 }, "BoeingDefenc", "Boeing Defence Australia" }, @@ -27199,6 +27468,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA4, 0x3F, 0x51 }, "BenewTechnol", "Shenzhen Benew Technology Co.,Ltd." }, { { 0xA4, 0x3F, 0x68 }, "AristaNetwor", "Arista Network, Inc." }, { { 0xA4, 0x40, 0x27 }, "zte", "zte corporation" }, + { { 0xA4, 0x40, 0x3D }, "BaseusTechno", "Shenzhen Baseus Technology Co., Ltd." }, { { 0xA4, 0x42, 0x3B }, "Intel", "Intel Corporate" }, { { 0xA4, 0x43, 0x8C }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xA4, 0x44, 0xD1 }, "WingtechGrou", "Wingtech Group (HongKong)Limited" }, @@ -27231,6 +27501,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA4, 0x56, 0xCC }, "VantivaUSA", "Vantiva USA LLC" }, { { 0xA4, 0x58, 0x02 }, "ShinIlTech", "Shin-Il Tech" }, { { 0xA4, 0x5A, 0x1C }, "smartelectro", "smart-electronic GmbH" }, + { { 0xA4, 0x5C, 0x25 }, "TexasInstrum", "Texas Instruments" }, { { 0xA4, 0x5C, 0x27 }, "Nintendo", "Nintendo Co., Ltd." }, { { 0xA4, 0x5D, 0x36 }, "HewlettPacka", "Hewlett Packard" }, { { 0xA4, 0x5D, 0x5E }, "WilkElektron", "Wilk Elektronik S.A." }, @@ -27326,6 +27597,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA4, 0xA1, 0xC2 }, "Ericsson", "Ericsson AB" }, { { 0xA4, 0xA1, 0xE4 }, "Innotube", "Innotube, Inc." }, { { 0xA4, 0xA2, 0x4A }, "CiscoSPVTG", "Cisco SPVTG" }, + { { 0xA4, 0xA4, 0x59 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xA4, 0xA4, 0x6B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xA4, 0xA4, 0x90 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xA4, 0xA4, 0xD3 }, "BluebankComm", "Bluebank Communication Technology Co.Ltd" }, @@ -27456,6 +27728,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA4, 0xFB, 0x8D }, "DunchongTech", "Hangzhou Dunchong Technology Co.Ltd" }, { { 0xA4, 0xFC, 0x14 }, "Apple", "Apple, Inc." }, { { 0xA4, 0xFC, 0x77 }, "MegaWell", "Mega Well Limited" }, + { { 0xA4, 0xFC, 0xA1 }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0xA4, 0xFC, 0xCE }, "SecurityExpe", "Security Expert Ltd." }, { { 0xA4, 0xFF, 0x95 }, "Nokia", "Nokia" }, { { 0xA8, 0x00, 0xE3 }, "StarkeyLabs", "Starkey Labs Inc." }, @@ -27508,6 +27781,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0x30, 0x1C }, "QingdaoIntel", "Qingdao Intelligent&Precise Electronics Co.,Ltd." }, { { 0xA8, 0x30, 0xAD }, "WeifangGoert", "Weifang Goertek Electronics Co.,Ltd" }, { { 0xA8, 0x30, 0xBC }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xA8, 0x31, 0x62 }, "HuachengNetw", "Hangzhou Huacheng Network Technology Co.,Ltd" }, { { 0xA8, 0x32, 0x9A }, "DigicomFutur", "Digicom Futuristic Technologies Ltd." }, { { 0xA8, 0x34, 0x6A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xA8, 0x35, 0x12 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -27559,6 +27833,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0x58, 0x40 }, "CambridgeInd", "Cambridge Industries(Group) Co.,Ltd." }, { { 0xA8, 0x58, 0x4E }, "PkVega", "Pk Vega" }, { { 0xA8, 0x58, 0x7C }, "Shoogee", "Shoogee GmbH & Co. KG" }, + { { 0xA8, 0x59, 0x5F }, "Intel", "Intel Corporate" }, { { 0xA8, 0x5A, 0xE0 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0x5A, 0xF3 }, "SiflowerComm", "Shanghai Siflower Communication Technology Co., Ltd" }, { { 0xA8, 0x5B, 0x6C }, "RobertBoschC", "Robert Bosch Gmbh, CM-CI2" }, @@ -27577,6 +27852,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0x61, 0xAA }, "Cloudview", "Cloudview Limited" }, { { 0xA8, 0x61, 0xDF }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0xA8, 0x62, 0xA2 }, "Jiwumedia", "Jiwumedia Co., Ltd." }, + { { 0xA8, 0x63, 0x08 }, "Avutec", "Avutec" }, { { 0xA8, 0x63, 0x7D }, "DLinkInterna", "D-Link International" }, { { 0xA8, 0x63, 0xDF }, "Displaire", "Displaire Corporation" }, { { 0xA8, 0x63, 0xF2 }, "TexasInstrum", "Texas Instruments" }, @@ -27595,6 +27871,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0x6D, 0x5F }, "RaisecomTech", "Raisecom Technology CO., LTD" }, { { 0xA8, 0x6D, 0xAA }, "Intel", "Intel Corporate" }, { { 0xA8, 0x6E, 0x4E }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xA8, 0x6F, 0x36 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xA8, 0x70, 0x5D }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xA8, 0x70, 0xA5 }, "UniComm", "UniComm Inc." }, { { 0xA8, 0x71, 0x16 }, "EardaTechnol", "Earda Technologies co Ltd" }, @@ -27646,6 +27923,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0x93, 0x52 }, "ZhongmiCommu", "Shanghai Zhongmi Communication Technology Co.,Ltd" }, { { 0xA8, 0x93, 0xE6 }, "JiangxiJingg", "Jiangxi Jinggangshan Cking Communication Technology Co.,Ltd" }, { { 0xA8, 0x95, 0xB0 }, "AkerSubsea", "Aker Subsea Ltd" }, + { { 0xA8, 0x96, 0x09 }, "FNLINKTECHNO", "FN-LINK TECHNOLOGY Ltd." }, { { 0xA8, 0x96, 0x75 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xA8, 0x96, 0x8A }, "Apple", "Apple, Inc." }, { { 0xA8, 0x97, 0xCD }, "ARRISGroup", "ARRIS Group, Inc." }, @@ -27681,6 +27959,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0xB0, 0x28 }, "CubePilot", "CubePilot Pty Ltd" }, { { 0xA8, 0xB0, 0x88 }, "eero", "eero inc." }, { { 0xA8, 0xB0, 0xAE }, "BizLinkSpeci", "BizLink Special Cables Germany GmbH" }, + { { 0xA8, 0xB0, 0xD1 }, "EFUNDisplayT", "EFUN Display Technology (Shenzhen) Co., Ltd." }, { { 0xA8, 0xB1, 0x3B }, "HP", "HP Inc." }, { { 0xA8, 0xB1, 0xD4 }, "Cisco", "Cisco Systems, Inc" }, { { 0xA8, 0xB2, 0x71 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -27697,13 +27976,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0xBB, 0xCF }, "Apple", "Apple, Inc." }, { { 0xA8, 0xBC, 0x9C }, "CloudLightTe", "Cloud Light Technology Limited" }, { { 0xA8, 0xBD, 0x1A }, "HoneyBee", "Honey Bee (Hong Kong) Limited" }, - { { 0xA8, 0xBD, 0x27 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xA8, 0xBD, 0x27 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xA8, 0xBD, 0x3A }, "UnionManTech", "Union Man Technology Co.,Ltd" }, { { 0xA8, 0xBE, 0x27 }, "Apple", "Apple, Inc." }, { { 0xA8, 0xBF, 0x3C }, "HDVPhoelectr", "HDV Phoelectron Technology Limited" }, { { 0xA8, 0xC0, 0x92 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0xC0, 0xEA }, "Pepwave", "Pepwave Limited" }, { { 0xA8, 0xC2, 0x22 }, "TMResearch", "TM-Research Inc." }, + { { 0xA8, 0xC2, 0x46 }, "GemtekTechno", "Gemtek Technology Co., Ltd." }, { { 0xA8, 0xC2, 0x52 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0xC2, 0x66 }, "HUMAX", "HUMAX Co., Ltd." }, { { 0xA8, 0xC5, 0x6F }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, @@ -27756,6 +28036,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xA8, 0xEF, 0x26 }, "Tritonwave", "Tritonwave" }, { { 0xA8, 0xEF, 0x5F }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0xA8, 0xF0, 0x38 }, "ShenZhenShiJ", "Shen Zhen Shi Jin Hua Tai Electronics Co.,Ltd" }, + { { 0xA8, 0xF0, 0x59 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xA8, 0xF1, 0xB2 }, "AllwinnerTec", "Allwinner Technology Co., Ltd" }, { { 0xA8, 0xF2, 0x66 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0xF2, 0x74 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -27799,6 +28080,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0x06, 0x13 }, "Senselogix", "Senselogix Ltd" }, { { 0xAC, 0x06, 0xC7 }, "ServerNet", "ServerNet S.r.l." }, { { 0xAC, 0x07, 0x5F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xAC, 0x07, 0x75 }, "Apple", "Apple, Inc." }, { { 0xAC, 0x0A, 0x61 }, "Labor", "Labor S.r.L." }, { { 0xAC, 0x0B, 0xFB }, "Espressif", "Espressif Inc." }, { { 0xAC, 0x0D, 0x1B }, "LGElectronic", "LG Electronics (Mobile Communications)" }, @@ -27810,6 +28092,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0x13, 0x9C }, "Adtran", "Adtran Inc" }, { { 0xAC, 0x14, 0x61 }, "ATAW", "ATAW Co., Ltd." }, { { 0xAC, 0x14, 0xD2 }, "widaq", "wi-daq, inc." }, + { { 0xAC, 0x15, 0x18 }, "Espressif", "Espressif Inc." }, { { 0xAC, 0x15, 0x85 }, "silergy", "silergy corp" }, { { 0xAC, 0x15, 0xA2 }, "TPLink", "TP-Link Corporation Limited" }, { { 0xAC, 0x15, 0xF4 }, "Apple", "Apple, Inc." }, @@ -27825,6 +28108,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0x1D, 0x06 }, "Apple", "Apple, Inc." }, { { 0xAC, 0x1E, 0x92 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xAC, 0x1E, 0x9E }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, + { { 0xAC, 0x1E, 0xA9 }, "Intelbras", "Intelbras" }, { { 0xAC, 0x1E, 0xD0 }, "TemicAutomot", "Temic Automotive Philippines Inc." }, { { 0xAC, 0x1F, 0x09 }, "RAKwirelesst", "shenzhen RAKwireless technology Co.,Ltd" }, { { 0xAC, 0x1F, 0x0F }, "TexasInstrum", "Texas Instruments" }, @@ -27860,6 +28144,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0x37, 0x43 }, "HTC", "HTC Corporation" }, { { 0xAC, 0x37, 0xC9 }, "RAID", "RAID Incorporated" }, { { 0xAC, 0x38, 0x70 }, "LenovoMobile", "Lenovo Mobile Communication Technology Ltd." }, + { { 0xAC, 0x39, 0x71 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0xAC, 0x3A, 0x67 }, "Cisco", "Cisco Systems, Inc" }, { { 0xAC, 0x3A, 0x7A }, "Roku", "Roku, Inc." }, { { 0xAC, 0x3B, 0x77 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, @@ -27988,6 +28273,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0x86, 0x7E }, "CreateNewTec", "Create New Technology (HK) Limited Company" }, { { 0xAC, 0x86, 0xA3 }, "Apple", "Apple, Inc." }, { { 0xAC, 0x87, 0xA3 }, "Apple", "Apple, Inc." }, + { { 0xAC, 0x88, 0x66 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xAC, 0x88, 0xFD }, "Apple", "Apple, Inc." }, { { 0xAC, 0x89, 0x95 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xAC, 0x89, 0xD2 }, "Ciena", "Ciena Corporation" }, @@ -28127,6 +28413,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0xE9, 0x7F }, "IoTTech", "IoT Tech Limited" }, { { 0xAC, 0xE9, 0xAA }, "Hay", "Hay Systems Ltd" }, { { 0xAC, 0xEA, 0x6A }, "GenixInfocom", "Genix Infocomm Co., Ltd." }, + { { 0xAC, 0xEA, 0xEA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xAC, 0xEB, 0x51 }, "UniversalEle", "Universal Electronics, Inc." }, { { 0xAC, 0xEC, 0x80 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xAC, 0xEC, 0x85 }, "eero", "eero inc." }, @@ -28140,6 +28427,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xAC, 0xF1, 0x08 }, "LGInnotek", "LG Innotek" }, { { 0xAC, 0xF1, 0xDF }, "DLinkInterna", "D-Link International" }, { { 0xAC, 0xF2, 0xC5 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xAC, 0xF4, 0x2C }, "EardaTechnol", "Earda Technologies co Ltd" }, { { 0xAC, 0xF5, 0xE6 }, "Cisco", "Cisco Systems, Inc" }, { { 0xAC, 0xF6, 0xF7 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0xAC, 0xF7, 0xF3 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -28209,6 +28497,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0x37, 0x95 }, "LGElectronic", "LG Electronics" }, { { 0xB0, 0x38, 0x29 }, "SiliconwareP", "Siliconware Precision Industries Co., Ltd." }, { { 0xB0, 0x38, 0x50 }, "NanjingCASZD", "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD" }, + { { 0xB0, 0x38, 0x6C }, "EFMNetworks", "EFM Networks" }, { { 0xB0, 0x38, 0x93 }, "OndaTLCItali", "Onda TLC Italia S.r.l." }, { { 0xB0, 0x38, 0xE2 }, "WananHongshe", "Wanan Hongsheng Electronic Co.Ltd" }, { { 0xB0, 0x39, 0x56 }, "Netgear", "Netgear" }, @@ -28257,6 +28546,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0x57, 0x06 }, "Vallox", "Vallox Oy" }, { { 0xB0, 0x58, 0xC4 }, "BroadcastMic", "Broadcast Microwave Services, Inc" }, { { 0xB0, 0x59, 0x47 }, "QihuIntellig", "Shenzhen Qihu Intelligent Technology Company Limited" }, + { { 0xB0, 0x5A, 0x44 }, "FibocomWirel", "Fibocom Wireless Inc." }, { { 0xB0, 0x5A, 0xDA }, "HewlettPacka", "Hewlett Packard" }, { { 0xB0, 0x5B, 0x1F }, "ThermoFisher", "Thermo Fisher Scientific S.P.A." }, { { 0xB0, 0x5B, 0x67 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -28316,6 +28606,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0x89, 0xC2 }, "Zyptonite", "Zyptonite" }, { { 0xB0, 0x8B, 0x92 }, "zte", "zte corporation" }, { { 0xB0, 0x8B, 0x9E }, "Telechips", "Telechips, Inc." }, + { { 0xB0, 0x8B, 0xA8 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xB0, 0x8B, 0xBE }, "ABL", "ABL GmbH" }, { { 0xB0, 0x8B, 0xCF }, "Cisco", "Cisco Systems, Inc" }, { { 0xB0, 0x8B, 0xD0 }, "Cisco", "Cisco Systems, Inc" }, @@ -28328,6 +28619,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0x91, 0x22 }, "TexasInstrum", "Texas Instruments" }, { { 0xB0, 0x91, 0x34 }, "Taleo", "Taleo" }, { { 0xB0, 0x91, 0x37 }, "ISisImageStr", "ISis ImageStream Internet Solutions, Inc" }, + { { 0xB0, 0x92, 0x4A }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xB0, 0x93, 0x5B }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xB0, 0x95, 0x75 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xB0, 0x95, 0x8E }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -28359,6 +28651,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0xA7, 0x32 }, "Espressif", "Espressif Inc." }, { { 0xB0, 0xA7, 0x37 }, "Roku", "Roku, Inc." }, { { 0xB0, 0xA7, 0xB9 }, "TPLink", "TP-Link Corporation Limited" }, + { { 0xB0, 0xA7, 0xD2 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xB0, 0xA8, 0x6E }, "JuniperNetwo", "Juniper Networks" }, { { 0xB0, 0xAA, 0x36 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xB0, 0xAA, 0x77 }, "Cisco", "Cisco Systems, Inc" }, @@ -28379,7 +28672,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0xB4, 0x48 }, "TexasInstrum", "Texas Instruments" }, { { 0xB0, 0xB5, 0xC3 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xB0, 0xB5, 0xE8 }, "Ruroc", "Ruroc LTD" }, - { { 0xB0, 0xB8, 0x67 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xB0, 0xB8, 0x67 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xB0, 0xB8, 0xD5 }, "NanjingNengr", "Nanjing Nengrui Auto Equipment CO.,Ltd" }, { { 0xB0, 0xB9, 0x8A }, "Netgear", "Netgear" }, { { 0xB0, 0xBB, 0x8B }, "WavetelTechn", "Wavetel Technology Limited" }, @@ -28422,6 +28715,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB0, 0xD2, 0x78 }, "TexasInstrum", "Texas Instruments" }, { { 0xB0, 0xD2, 0xF5 }, "Vello", "Vello Systems, Inc." }, { { 0xB0, 0xD5, 0x68 }, "CultraviewDi", "Shenzhen Cultraview Digital Technology Co., Ltd" }, + { { 0xB0, 0xD5, 0x76 }, "Apple", "Apple, Inc." }, { { 0xB0, 0xD5, 0x9D }, "ZoweeTechnol", "Shenzhen Zowee Technology Co., Ltd" }, { { 0xB0, 0xD5, 0xCC }, "TexasInstrum", "Texas Instruments" }, { { 0xB0, 0xD7, 0xC5 }, "Logipix", "Logipix Ltd" }, @@ -28509,6 +28803,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB4, 0x14, 0xE6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB4, 0x15, 0x13 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB4, 0x15, 0x7E }, "Celona", "Celona Inc." }, + { { 0xB4, 0x17, 0x4D }, "ProjectMonit", "Project Monitor Inc" }, { { 0xB4, 0x17, 0x80 }, "DTIGroup", "DTI Group Ltd" }, { { 0xB4, 0x17, 0xA8 }, "MetaPlatform", "Meta Platforms Technologies, LLC" }, { { 0xB4, 0x18, 0xD1 }, "Apple", "Apple, Inc." }, @@ -28624,7 +28919,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB4, 0x79, 0x47 }, "Nutanix", "Nutanix" }, { { 0xB4, 0x79, 0xA7 }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, { { 0xB4, 0x79, 0xC8 }, "RuckusWirele", "Ruckus Wireless" }, - { { 0xB4, 0x7A, 0xF1 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xB4, 0x7A, 0xF1 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xB4, 0x7C, 0x29 }, "GuzidiTechno", "Shenzhen Guzidi Technology Co.,Ltd" }, { { 0xB4, 0x7C, 0x59 }, "JiangsuHengx", "Jiangsu Hengxin Technology Co.,Ltd." }, { { 0xB4, 0x7C, 0x9C }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -28647,6 +28942,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB4, 0x8A, 0x5F }, "JuniperNetwo", "Juniper Networks" }, { { 0xB4, 0x8B, 0x19 }, "Apple", "Apple, Inc." }, { { 0xB4, 0x8C, 0x9D }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0xB4, 0x92, 0xFE }, "AristaNetwor", "Arista Network, Inc." }, { { 0xB4, 0x94, 0x4E }, "WeTelecom", "WeTelecom Co., Ltd." }, { { 0xB4, 0x96, 0x91 }, "Intel", "Intel Corporate" }, { { 0xB4, 0x98, 0x42 }, "zte", "zte corporation" }, @@ -28872,6 +29168,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0x3A, 0x5A }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0xB8, 0x3A, 0x7B }, "Worldplay", "Worldplay (Canada) Inc." }, { { 0xB8, 0x3A, 0x9D }, "Alarmcom", "Alarm.com" }, + { { 0xB8, 0x3B, 0x8F }, "HylinIoTTech", "Hangzhou Hylin IoT Techonology Co.,Ltd." }, { { 0xB8, 0x3B, 0xAB }, "Arcadyan", "Arcadyan Corporation" }, { { 0xB8, 0x3B, 0xCC }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xB8, 0x3C, 0x28 }, "Apple", "Apple, Inc." }, @@ -28909,6 +29206,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0x5A, 0x73 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xB8, 0x5A, 0xF7 }, "Ouya", "Ouya, Inc" }, { { 0xB8, 0x5A, 0xFE }, "HandaerCommu", "Handaer Communication Technology (Beijing) Co., Ltd" }, + { { 0xB8, 0x5C, 0x5C }, "Microsoft", "Microsoft Corporation" }, { { 0xB8, 0x5C, 0xEE }, "BaiduOnlineN", "Baidu Online Network Technology (Beijing) Co., Ltd" }, { { 0xB8, 0x5D, 0x0A }, "Apple", "Apple, Inc." }, { { 0xB8, 0x5D, 0xC3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -28932,7 +29230,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0x6A, 0x97 }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0xB8, 0x6A, 0xF1 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xB8, 0x6B, 0x23 }, "Toshiba", "Toshiba" }, - { { 0xB8, 0x6C, 0xE0 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xB8, 0x6C, 0xE0 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xB8, 0x6C, 0xE8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xB8, 0x70, 0xF4 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, { { 0xB8, 0x74, 0x24 }, "ViessmannEle", "Viessmann Elektronik GmbH" }, @@ -28957,7 +29255,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0x80, 0x4F }, "TexasInstrum", "Texas Instruments" }, { { 0xB8, 0x81, 0x98 }, "Intel", "Intel Corporate" }, { { 0xB8, 0x81, 0xFA }, "Apple", "Apple, Inc." }, - { { 0xB8, 0x83, 0x03 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xB8, 0x83, 0x03 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xB8, 0x85, 0x7B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB8, 0x85, 0x84 }, "Dell", "Dell Inc." }, { { 0xB8, 0x86, 0x87 }, "LiteonTechno", "Liteon Technology Corporation" }, @@ -28991,6 +29289,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0x94, 0xE7 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xB8, 0x96, 0x74 }, "AllDSP", "AllDSP GmbH & Co. KG" }, { { 0xB8, 0x97, 0x5A }, "BIOSTARMicro", "BIOSTAR Microtech Int'l Corp." }, + { { 0xB8, 0x97, 0x7A }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0xB8, 0x98, 0xAD }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xB8, 0x98, 0xB0 }, "Atlona", "Atlona Inc." }, { { 0xB8, 0x98, 0xF7 }, "GioneeCommun", "Gionee Communication Equipment Co,Ltd.ShenZhen" }, @@ -29070,11 +29369,12 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0xCA, 0x04 }, "HoltekSemico", "Holtek Semiconductor Inc." }, { { 0xB8, 0xCA, 0x3A }, "Dell", "Dell Inc." }, { { 0xB8, 0xCB, 0x29 }, "Dell", "Dell Inc." }, + { { 0xB8, 0xCC, 0x5F }, "iCommSemicon", "Shenzhen iComm Semiconductor CO.,LTD" }, { { 0xB8, 0xCD, 0x93 }, "Penetek", "Penetek, Inc" }, { { 0xB8, 0xCD, 0xA7 }, "MaxelerTechn", "Maxeler Technologies Ltd." }, { { 0xB8, 0xCE, 0xF6 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xB8, 0xD0, 0x6F }, "GuangzhouHku", "Guangzhou Hkust Fok Ying Tung Research Institute" }, - { { 0xB8, 0xD0, 0xF0 }, "FcntLmited", "Fcnt Lmited" }, + { { 0xB8, 0xD0, 0xF0 }, "Fcnt", "Fcnt Llc" }, { { 0xB8, 0xD3, 0x09 }, "CoxCommunica", "Cox Communications, Inc" }, { { 0xB8, 0xD4, 0x3E }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xB8, 0xD4, 0x9D }, "MSevenSystem", "M Seven System Ltd." }, @@ -29127,6 +29427,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xB8, 0xF6, 0xB1 }, "Apple", "Apple, Inc." }, { { 0xB8, 0xF7, 0x32 }, "AryakaNetwor", "Aryaka Networks Inc" }, { { 0xB8, 0xF7, 0x4A }, "Rcntec", "Rcntec" }, + { { 0xB8, 0xF7, 0x74 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xB8, 0xF8, 0x28 }, "ChangshuGaos", "Changshu Gaoshida Optoelectronic Technology Co. Ltd." }, { { 0xB8, 0xF8, 0x53 }, "Arcadyan", "Arcadyan Corporation" }, { { 0xB8, 0xF8, 0x83 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -29160,6 +29461,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xBC, 0x03, 0xA7 }, "MfpMichelin", "Mfp Michelin" }, { { 0xBC, 0x05, 0x43 }, "AVM", "AVM GmbH" }, { { 0xBC, 0x06, 0x2D }, "Wacom", "Wacom Co.,Ltd." }, + { { 0xBC, 0x08, 0x66 }, "NestlePurina", "Nestle Purina PetCare" }, { { 0xBC, 0x09, 0x1B }, "Intel", "Intel Corporate" }, { { 0xBC, 0x09, 0x63 }, "Apple", "Apple, Inc." }, { { 0xBC, 0x09, 0xEB }, "TecnoMobile", "Tecno Mobile Limited" }, @@ -29239,7 +29541,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xBC, 0x3E, 0x07 }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0xBC, 0x3E, 0x13 }, "Accordance", "Accordance Systems Inc." }, { { 0xBC, 0x3E, 0xCB }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, - { { 0xBC, 0x3F, 0x4E }, "Teleepoch", "Teleepoch Ltd" }, + { { 0xBC, 0x3F, 0x4E }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0xBC, 0x3F, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xBC, 0x41, 0x00 }, "CODACOELECTR", "CODACO ELECTRONIC s.r.o." }, { { 0xBC, 0x41, 0x01 }, "TINNOMobileT", "Shenzhen TINNO Mobile Technology Corp." }, @@ -29377,6 +29679,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xBC, 0x9F, 0xE4 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0xBC, 0x9F, 0xEF }, "Apple", "Apple, Inc." }, { { 0xBC, 0xA0, 0x42 }, "FlycoElectri", "Shanghai Flyco Electrical Appliance Co.,Ltd" }, + { { 0xBC, 0xA0, 0x80 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xBC, 0xA1, 0x3A }, "SESimagotag", "SES-imagotag" }, { { 0xBC, 0xA3, 0x7F }, "RailMilSpSpK", "Rail-Mil Sp. z o.o. Sp. K." }, { { 0xBC, 0xA4, 0xE1 }, "Nabto", "Nabto" }, @@ -29407,6 +29710,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xBC, 0xB9, 0x23 }, "AltaNetworks", "Alta Networks" }, { { 0xBC, 0xBA, 0xC2 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xBC, 0xBA, 0xE1 }, "AREC", "AREC Inc." }, + { { 0xBC, 0xBB, 0x58 }, "Apple", "Apple, Inc." }, { { 0xBC, 0xBB, 0xC9 }, "KellendonkEl", "Kellendonk Elektronik GmbH" }, { { 0xBC, 0xBC, 0x46 }, "SKSWelding", "SKS Welding Systems GmbH" }, { { 0xBC, 0xBD, 0x84 }, "zte", "zte corporation" }, @@ -29469,6 +29773,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xBC, 0xEE, 0x7B }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0xBC, 0xF1, 0x71 }, "Intel", "Intel Corporate" }, { { 0xBC, 0xF1, 0xF2 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xBC, 0xF2, 0x12 }, "TelinkMicro", "Telink Micro LLC" }, { { 0xBC, 0xF2, 0x92 }, "Plantronics", "Plantronics, Inc." }, { { 0xBC, 0xF2, 0xAF }, "devolo", "devolo AG" }, { { 0xBC, 0xF3, 0x10 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, @@ -29595,6 +29900,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC0, 0x51, 0x5C }, "zte", "zte corporation" }, { { 0xC0, 0x51, 0x7E }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xC0, 0x53, 0x36 }, "NationalRail", "Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd." }, + { { 0xC0, 0x55, 0x5C }, "ImpulseLabs", "Impulse Labs" }, { { 0xC0, 0x56, 0x27 }, "BelkinIntern", "Belkin International Inc." }, { { 0xC0, 0x56, 0xE3 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xC0, 0x57, 0xBC }, "Avaya", "Avaya Inc" }, @@ -29621,6 +29927,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC0, 0x6C, 0x6D }, "MagneMotion", "MagneMotion, Inc." }, { { 0xC0, 0x6D, 0x1A }, "TianjinHenxi", "Tianjin Henxinhuifeng Technology Co.,Ltd." }, { { 0xC0, 0x6D, 0xED }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, + { { 0xC0, 0x6F, 0x98 }, "eero", "eero inc." }, { { 0xC0, 0x70, 0x09 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC0, 0x71, 0xAA }, "OnMicroElect", "ShenZhen OnMicro Electronics Co.,Ltd." }, { { 0xC0, 0x74, 0x2B }, "XunlongSoftw", "Shenzhen Xunlong Software Co.,Limited" }, @@ -29672,6 +29979,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC0, 0x98, 0xE5 }, "UniversityMi", "University of Michigan" }, { { 0xC0, 0x9A, 0x71 }, "XiamenMeituM", "Xiamen Meitu Mobile Technology Co.Ltd" }, { { 0xC0, 0x9A, 0xD0 }, "Apple", "Apple, Inc." }, + { { 0xC0, 0x9B, 0x63 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC0, 0x9C, 0x04 }, "ShaanxiGuoLi", "Shaanxi GuoLian Digital TV Technology Co.,Ltd." }, { { 0xC0, 0x9C, 0x92 }, "Coby", "Coby" }, { { 0xC0, 0x9D, 0x26 }, "TopiconHKLmd", "Topicon HK Lmd." }, @@ -29698,6 +30006,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC0, 0xA8, 0xF0 }, "AdamsonEngin", "Adamson Systems Engineering" }, { { 0xC0, 0xA9, 0x38 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC0, 0xAA, 0x68 }, "OSASITechnos", "OSASI Technos Inc." }, + { { 0xC0, 0xAB, 0x2B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xC0, 0xAC, 0x54 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xC0, 0xAD, 0x97 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0xC0, 0xAE, 0xFD }, "HCWLANTechno", "Shenzhen HC-WLAN Technology Co.,Ltd" }, @@ -29815,8 +30124,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0x06, 0x83 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0x07, 0x2F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0x07, 0x78 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, + { { 0xC4, 0x08, 0x26 }, "HisenseVisua", "Hisense Visual Technology Co.,Ltd" }, { { 0xC4, 0x08, 0x4A }, "Nokia", "Nokia" }, { { 0xC4, 0x08, 0x80 }, "UTEPOTech", "Shenzhen UTEPO Tech Co., Ltd." }, + { { 0xC4, 0x08, 0x98 }, "DropbeatsTec", "Dropbeats Technology Co., Ltd." }, { { 0xC4, 0x09, 0x38 }, "FujianStarNe", "Fujian Star-Net Communication Co.,Ltd" }, { { 0xC4, 0x09, 0xB7 }, "JuniperNetwo", "Juniper Networks" }, { { 0xC4, 0x0A, 0xCB }, "Cisco", "Cisco Systems, Inc" }, @@ -29902,6 +30213,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0x44, 0xA0 }, "Cisco", "Cisco Systems, Inc" }, { { 0xC4, 0x45, 0x67 }, "SAMBONPRECIS", "SAMBON PRECISON and ELECTRONICS" }, { { 0xC4, 0x45, 0xEC }, "YaliElectron", "Shanghai Yali Electron Co.,LTD" }, + { { 0xC4, 0x46, 0x06 }, "Cisco", "Cisco Systems, Inc" }, { { 0xC4, 0x46, 0x19 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0xC4, 0x47, 0x3F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0x48, 0x38 }, "SatcomDirect", "Satcom Direct, Inc." }, @@ -29929,6 +30241,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0x57, 0x1F }, "JuneLife", "June Life Inc" }, { { 0xC4, 0x57, 0x6E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xC4, 0x57, 0x81 }, "WingtechGrou", "Wingtech Group (HongKong) Limited" }, + { { 0xC4, 0x57, 0xCD }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0x58, 0xC2 }, "TATFOOKTechn", "Shenzhen TATFOOK Technology Co., Ltd." }, { { 0xC4, 0x59, 0x76 }, "FugooCoorpor", "Fugoo Coorporation" }, { { 0xC4, 0x5A, 0x86 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -30044,6 +30357,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xAA, 0x99 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0xAA, 0xA1 }, "SUMMITDEVELO", "SUMMIT DEVELOPMENT, spol.s r.o." }, { { 0xC4, 0xAA, 0xC4 }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, + { { 0xC4, 0xAB, 0x4D }, "Cisco", "Cisco Systems, Inc" }, { { 0xC4, 0xAB, 0xB2 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xC4, 0xAC, 0x59 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xC4, 0xAC, 0xAA }, "Apple", "Apple, Inc." }, @@ -30051,6 +30365,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xAD, 0x34 }, "Routerboardc", "Routerboard.com" }, { { 0xC4, 0xAD, 0xF1 }, "GOPEACE", "GOPEACE Inc." }, { { 0xC4, 0xAE, 0x12 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xC4, 0xB1, 0xD9 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC4, 0xB2, 0x39 }, "Cisco", "Cisco Systems, Inc" }, { { 0xC4, 0xB2, 0x5B }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, { { 0xC4, 0xB3, 0x01 }, "Apple", "Apple, Inc." }, @@ -30064,6 +30379,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xBB, 0xEA }, "PakedgeDevic", "Pakedge Device and Software Inc" }, { { 0xC4, 0xBC, 0xD7 }, "NewRyatek", "New Ryatek" }, { { 0xC4, 0xBD, 0x6A }, "SKF", "SKF GmbH" }, + { { 0xC4, 0xBD, 0x8D }, "ChuangweiRgb", "Shenzhen Chuangwei-Rgb Electronics Co.,Ltd" }, { { 0xC4, 0xBD, 0xE5 }, "Intel", "Intel Corporate" }, { { 0xC4, 0xBE, 0x84 }, "TexasInstrum", "Texas Instruments" }, { { 0xC4, 0xBE, 0xD4 }, "Avaya", "Avaya Inc" }, @@ -30076,6 +30392,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xC3, 0x6B }, "Apple", "Apple, Inc." }, { { 0xC4, 0xC5, 0x63 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0xC4, 0xC6, 0x03 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xC4, 0xC6, 0xE6 }, "LCFCElectron", "LCFC(HeFei) Electronics Technology co., ltd" }, { { 0xC4, 0xC7, 0x55 }, "HuaqinWorldT", "Beijing HuaqinWorld Technology Co.,Ltd" }, { { 0xC4, 0xC9, 0x19 }, "EnergyImport", "Energy Imports Ltd" }, { { 0xC4, 0xC9, 0xEC }, "GugaooHK", "Gugaoo HK Limited" }, @@ -30084,6 +30401,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xCB, 0x54 }, "FibocomAuto", "Fibocom Auto Inc." }, { { 0xC4, 0xCB, 0x6B }, "AiristaFlow", "Airista Flow, Inc." }, { { 0xC4, 0xCB, 0x76 }, "Microsoft", "Microsoft Corporation" }, + { { 0xC4, 0xCB, 0xBE }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0xC4, 0xCB, 0xE1 }, "Dell", "Dell Inc." }, { { 0xC4, 0xCD, 0x45 }, "BoomsenseTec", "Beijing Boomsense Technology CO.,LTD." }, { { 0xC4, 0xCD, 0x82 }, "LowanInforma", "Hangzhou Lowan Information Technology Co., Ltd." }, @@ -30118,6 +30436,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC4, 0xE5, 0x32 }, "Arcadyan", "Arcadyan Corporation" }, { { 0xC4, 0xE5, 0xB1 }, "SuzhouPanKor", "Suzhou PanKore Integrated Circuit Technology Co. Ltd." }, { { 0xC4, 0xE7, 0x33 }, "ClearAlign", "Clear Align LLC" }, + { { 0xC4, 0xE7, 0xAE }, "MerossTechno", "Chengdu Meross Technology Co., Ltd." }, { { 0xC4, 0xE7, 0xBE }, "SCSpro", "SCSpro Co.,Ltd" }, { { 0xC4, 0xE9, 0x0A }, "DLinkInterna", "D-Link International" }, { { 0xC4, 0xE9, 0x2F }, "ABSciex", "AB Sciex" }, @@ -30268,6 +30587,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC8, 0x54, 0xA4 }, "Infinixmobil", "Infinix mobility limited" }, { { 0xC8, 0x56, 0x45 }, "IntermasFran", "Intermas France" }, { { 0xC8, 0x56, 0x63 }, "SunflexEurop", "Sunflex Europe GmbH" }, + { { 0xC8, 0x58, 0x6A }, "WinnerMicroe", "Beijing Winner Microelectronics Co.,Ltd." }, { { 0xC8, 0x58, 0x95 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xC8, 0x58, 0xC0 }, "Intel", "Intel Corporate" }, { { 0xC8, 0x5A, 0x9F }, "zte", "zte corporation" }, @@ -30328,6 +30648,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC8, 0x8B, 0x47 }, "Nolangroupco", "Nolangroup S.P.A con Socio Unico" }, { { 0xC8, 0x8B, 0xE8 }, "Masimo", "Masimo Corporation" }, { { 0xC8, 0x8D, 0x83 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xC8, 0x8D, 0xD4 }, "Markonetechn", "Markone technology Co., Ltd." }, { { 0xC8, 0x8F, 0x26 }, "SkyworthDigi", "Skyworth Digital Technology(Shenzhen) Co.,Ltd" }, { { 0xC8, 0x90, 0x3E }, "PaktonTechno", "Pakton Technologies" }, { { 0xC8, 0x90, 0x8A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -30383,7 +30704,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC8, 0xB2, 0x9B }, "Intel", "Intel Corporate" }, { { 0xC8, 0xB3, 0x73 }, "CiscoLinksys", "Cisco-Linksys, LLC" }, { { 0xC8, 0xB4, 0x22 }, "AskeyCompute", "Askey Computer Corp" }, - { { 0xC8, 0xB5, 0xAD }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xC8, 0xB5, 0xAD }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xC8, 0xB5, 0xB7 }, "Apple", "Apple, Inc." }, { { 0xC8, 0xB6, 0xD3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC8, 0xB6, 0xFE }, "Fitbit", "Fitbit, Inc." }, @@ -30425,6 +30746,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xC8, 0xD1, 0x0B }, "Nokia", "Nokia Corporation" }, { { 0xC8, 0xD1, 0x2A }, "Comtrend", "Comtrend Corporation" }, { { 0xC8, 0xD1, 0x5E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xC8, 0xD1, 0xA9 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC8, 0xD1, 0xD1 }, "AGAiTTechnol", "AGAiT Technology Corporation" }, { { 0xC8, 0xD2, 0xC1 }, "Jetlun", "Jetlun (Shenzhen) Corporation" }, { { 0xC8, 0xD3, 0xA3 }, "DLinkInterna", "D-Link International" }, @@ -30498,6 +30820,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCA, 0x04, 0x5A }, "Ossia", "Ossia Inc" }, { { 0xCA, 0x12, 0x5C }, "Microsoft", "Microsoft Corporation" }, { { 0xCA, 0x1E, 0x45 }, "ASMediaTechn", "ASMedia Technology Inc." }, + { { 0xCA, 0x22, 0x2B }, "PumaGearPowe", "Beijing Puma Gear Power Equipment Co.,Ltd" }, { { 0xCA, 0x2B, 0x5E }, "SuzhouMotorc", "Suzhou Motor-comm Electronic Technology Co.,Ltd" }, { { 0xCA, 0x30, 0xBF }, "IEEE8021Chai", "IEEE 802.1 Chair" }, { { 0xCA, 0x37, 0x82 }, "Storbyte", "Storbyte, Inc." }, @@ -30553,6 +30876,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0x24, 0x2E }, "SuperElectro", "Shenzhen SuperElectron Technology Co.,Ltd." }, { { 0xCC, 0x25, 0xEF }, "Apple", "Apple, Inc." }, { { 0xCC, 0x26, 0x2D }, "Verifi", "Verifi, LLC" }, + { { 0xCC, 0x28, 0xAA }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0xCC, 0x29, 0xBD }, "zte", "zte corporation" }, { { 0xCC, 0x29, 0xF5 }, "Apple", "Apple, Inc." }, { { 0xCC, 0x2A, 0x80 }, "MicroBizinte", "Micro-Biz intelligence solutions Co.,Ltd" }, @@ -30644,6 +30968,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0x60, 0xC8 }, "Microsoft", "Microsoft Corporation" }, { { 0xCC, 0x61, 0xE5 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xCC, 0x62, 0xFE }, "UnionManTech", "Union Man Technology Co.,Ltd" }, + { { 0xCC, 0x64, 0x1A }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, { { 0xCC, 0x64, 0xA6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xCC, 0x65, 0xAD }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xCC, 0x66, 0x0A }, "Apple", "Apple, Inc." }, @@ -30654,6 +30979,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0x69, 0xB0 }, "GlobalTraffi", "Global Traffic Technologies, LLC" }, { { 0xCC, 0x69, 0xFA }, "Apple", "Apple, Inc." }, { { 0xCC, 0x6A, 0x10 }, "ChamberlainG", "The Chamberlain Group, Inc" }, + { { 0xCC, 0x6A, 0x33 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0x6B, 0x1E }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0xCC, 0x6B, 0x98 }, "MinetecWirel", "Minetec Wireless Technologies" }, { { 0xCC, 0x6B, 0xF1 }, "SoundMasking", "Sound Masking Inc." }, @@ -30684,6 +31010,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0x7F, 0x75 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0x7F, 0x76 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0x81, 0x2A }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, + { { 0xCC, 0x81, 0x7D }, "Apple", "Apple, Inc." }, { { 0xCC, 0x81, 0xDA }, "Phicomm", "Phicomm (Shanghai) Co., Ltd." }, { { 0xCC, 0x82, 0x7F }, "AdvantechTec", "Advantech Technology (CHINA) Co., Ltd." }, { { 0xCC, 0x82, 0xEB }, "Kyocera", "Kyocera Corporation" }, @@ -30695,6 +31022,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0x89, 0x5E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xCC, 0x89, 0x6C }, "GNHearing", "GN Hearing A/S" }, { { 0xCC, 0x89, 0xFD }, "Nokia", "Nokia Corporation" }, + { { 0xCC, 0x8C, 0x17 }, "ItelMobile", "Itel Mobile Limited" }, { { 0xCC, 0x8C, 0xBF }, "TuyaSmart", "Tuya Smart Inc." }, { { 0xCC, 0x8C, 0xDA }, "WeiDaIntelli", "Shenzhen Wei Da Intelligent Technology Go.,Ltd" }, { { 0xCC, 0x8C, 0xE3 }, "TexasInstrum", "Texas Instruments" }, @@ -30751,6 +31079,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xCC, 0xB5, 0xD1 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0xCC, 0xB6, 0x91 }, "NECMagnusCom", "NECMagnusCommunications" }, { { 0xCC, 0xB6, 0xC8 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xCC, 0xB7, 0x77 }, "zte", "zte corporation" }, { { 0xCC, 0xB7, 0xC4 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xCC, 0xB8, 0x88 }, "AnBSecurite", "AnB Securite s.a." }, { { 0xCC, 0xB8, 0xA8 }, "AMPAKTechnol", "AMPAK Technology, Inc." }, @@ -30866,12 +31195,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD0, 0x07, 0x90 }, "TexasInstrum", "Texas Instruments" }, { { 0xD0, 0x07, 0xCA }, "JuniperNetwo", "Juniper Networks" }, { { 0xD0, 0x09, 0xC8 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xD0, 0x09, 0xF5 }, "Hosiden", "Hosiden Corporation" }, { { 0xD0, 0x0A, 0xAB }, "YokogawaDigi", "Yokogawa Digital Computer Corporation" }, { { 0xD0, 0x0B, 0x27 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xD0, 0x0D, 0xF7 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xD0, 0x0E, 0xA4 }, "PorscheCarsN", "Porsche Cars North America" }, { { 0xD0, 0x0E, 0xD9 }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0xD0, 0x0F, 0x6D }, "T&WElectroni", "T&W Electronics Company" }, + { { 0xD0, 0x11, 0xE5 }, "Apple", "Apple, Inc." }, { { 0xD0, 0x12, 0x42 }, "BIOS", "BIOS Corporation" }, { { 0xD0, 0x12, 0x55 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0xD0, 0x12, 0xCB }, "AVMAudiovisu", "AVM Audiovisuelles Marketing und Computersysteme GmbH" }, @@ -30991,9 +31322,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD0, 0x65, 0xCA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD0, 0x66, 0x6D }, "BusLanTechno", "Shenzhen Bus-Lan Technology Co., Ltd." }, { { 0xD0, 0x66, 0x7B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, - { { 0xD0, 0x67, 0x26 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xD0, 0x67, 0x26 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xD0, 0x67, 0xE5 }, "Dell", "Dell Inc." }, { { 0xD0, 0x69, 0x9E }, "LUMINEXLight", "LUMINEX Lighting Control Equipment" }, + { { 0xD0, 0x69, 0xC1 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD0, 0x69, 0xD0 }, "VertoMedical", "Verto Medical Solutions, LLC" }, { { 0xD0, 0x6A, 0x1F }, "Bse", "Bse Co.,Ltd." }, { { 0xD0, 0x6B, 0x78 }, "Apple", "Apple, Inc." }, @@ -31008,6 +31340,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD0, 0x73, 0x8E }, "DongOhPrecis", "Dong Oh Precision Co., Ltd." }, { { 0xD0, 0x73, 0xD5 }, "LifiLabsMana", "Lifi Labs Management Pty Ltd" }, { { 0xD0, 0x75, 0xBE }, "RenoA&E", "Reno A&E" }, + { { 0xD0, 0x76, 0x02 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0xD0, 0x76, 0x8F }, "Calix", "Calix Inc." }, { { 0xD0, 0x76, 0xE7 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xD0, 0x77, 0x14 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, @@ -31122,6 +31455,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD0, 0xD3, 0xFC }, "Mios", "Mios, Ltd." }, { { 0xD0, 0xD4, 0x12 }, "ADBBroadband", "ADB Broadband Italia" }, { { 0xD0, 0xD4, 0x71 }, "MVTECH", "MVTECH co., Ltd" }, + { { 0xD0, 0xD4, 0x9F }, "Apple", "Apple, Inc." }, { { 0xD0, 0xD6, 0xCC }, "Wintop", "Wintop" }, { { 0xD0, 0xD7, 0x83 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD0, 0xD7, 0xBE }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -31140,6 +31474,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD0, 0xE4, 0x0B }, "Wearable", "Wearable Inc." }, { { 0xD0, 0xE4, 0x4A }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xD0, 0xE5, 0x4D }, "ARRISGroup", "ARRIS Group, Inc." }, + { { 0xD0, 0xE5, 0x81 }, "Apple", "Apple, Inc." }, { { 0xD0, 0xE7, 0x82 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xD0, 0xE8, 0x28 }, "RadiantIndus", "Radiant Industries Incorporated" }, { { 0xD0, 0xEB, 0x03 }, "Zhehuatechno", "Zhehua technology limited" }, @@ -31192,6 +31527,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD4, 0x12, 0x96 }, "AnobitTechno", "Anobit Technologies Ltd." }, { { 0xD4, 0x12, 0xBB }, "QuadrantComp", "Quadrant Components Inc. Ltd" }, { { 0xD4, 0x13, 0x6F }, "AsiaPacificB", "Asia Pacific Brands" }, + { { 0xD4, 0x13, 0xB3 }, "WuQiTechnolo", "Wu Qi Technologies,Inc." }, { { 0xD4, 0x13, 0xF8 }, "PeplinkInter", "Peplink International Ltd." }, { { 0xD4, 0x17, 0x61 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xD4, 0x19, 0xF6 }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, @@ -31260,12 +31596,14 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD4, 0x46, 0xE1 }, "Apple", "Apple, Inc." }, { { 0xD4, 0x47, 0x5A }, "ScreenBeam", "ScreenBeam, Inc." }, { { 0xD4, 0x48, 0x2D }, "DeejoyLighti", "Shenzhen Deejoy Lighting Technology Co.,Ltd." }, + { { 0xD4, 0x48, 0x67 }, "SiliconLabor", "Silicon Laboratories" }, { { 0xD4, 0x4B, 0x5E }, "TaiyoYuden", "Taiyo Yuden Co., Ltd." }, { { 0xD4, 0x4B, 0xB6 }, "ZhejiangTmal", "Zhejiang Tmall Technology Co., Ltd." }, { { 0xD4, 0x4C, 0x24 }, "Vuppalamrith", "Vuppalamritha Magnetic Components LTD" }, { { 0xD4, 0x4C, 0x9C }, "YOOBAOTechno", "Shenzhen YOOBAO Technology Co.Ltd" }, { { 0xD4, 0x4C, 0xA7 }, "Informtekhni", "Informtekhnika & Communication, LLC" }, { { 0xD4, 0x4D, 0x77 }, "Nokia", "Nokia" }, + { { 0xD4, 0x4D, 0x9F }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xD4, 0x4D, 0xA4 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xD4, 0x4F, 0x67 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0x4F, 0x68 }, "EideticCommu", "Eidetic Communications Inc" }, @@ -31350,6 +31688,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD4, 0x7B, 0xB0 }, "AskeyCompute", "Askey Computer Corp" }, { { 0xD4, 0x7D, 0xFC }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0xD4, 0x7E, 0xE4 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, + { { 0xD4, 0x7F, 0x35 }, "Cisco", "Cisco Systems, Inc" }, { { 0xD4, 0x7F, 0x78 }, "Dopple", "Dopple B.V." }, { { 0xD4, 0x81, 0xCA }, "iDevices", "iDevices, LLC" }, { { 0xD4, 0x81, 0xD7 }, "Dell", "Dell Inc." }, @@ -31389,6 +31728,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD4, 0x94, 0xE8 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0x94, 0xFB }, "ContinentalA", "Continental Automotive Systems Inc." }, { { 0xD4, 0x95, 0x24 }, "CloverNetwor", "Clover Network, Inc." }, + { { 0xD4, 0x95, 0x5D }, "zte", "zte corporation" }, { { 0xD4, 0x96, 0xDF }, "SungjinC&T", "Sungjin C&T Co.,Ltd" }, { { 0xD4, 0x97, 0x0B }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xD4, 0x99, 0x6C }, "JuniperNetwo", "Juniper Networks" }, @@ -31522,7 +31862,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD4, 0xF5, 0x13 }, "TexasInstrum", "Texas Instruments" }, { { 0xD4, 0xF5, 0x27 }, "Siemens", "Siemens Ag" }, { { 0xD4, 0xF5, 0x47 }, "Google", "Google, Inc." }, - { { 0xD4, 0xF5, 0xEF }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xD4, 0xF5, 0xEF }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xD4, 0xF6, 0x3F }, "Iea", "Iea S.R.L." }, { { 0xD4, 0xF7, 0x56 }, "zte", "zte corporation" }, { { 0xD4, 0xF7, 0x86 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -31633,6 +31973,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0x43, 0xEA }, "SYElectronic", "SY Electronics Ltd" }, { { 0xD8, 0x43, 0xED }, "Suzuken", "Suzuken" }, { { 0xD8, 0x44, 0x5C }, "DEVTecnologi", "DEV Tecnologia Ind Com Man Eq LTDA" }, + { { 0xD8, 0x44, 0x89 }, "TpLinkPte", "Tp-Link Corporation Pte. Ltd." }, { { 0xD8, 0x45, 0x2B }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, { { 0xD8, 0x46, 0x06 }, "SiliconValle", "Silicon Valley Global Marketing" }, { { 0xD8, 0x47, 0x10 }, "SichuanChang", "Sichuan Changhong Electric Ltd." }, @@ -31656,6 +31997,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0x54, 0x3A }, "TexasInstrum", "Texas Instruments" }, { { 0xD8, 0x54, 0x82 }, "Oxit", "Oxit, LLC" }, { { 0xD8, 0x54, 0xA2 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, + { { 0xD8, 0x54, 0xF2 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xD8, 0x55, 0x75 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xD8, 0x55, 0xA3 }, "zte", "zte corporation" }, { { 0xD8, 0x57, 0xEF }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -31688,6 +32030,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0x68, 0xC3 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xD8, 0x69, 0x60 }, "Steinsvik", "Steinsvik" }, { { 0xD8, 0x6B, 0xF7 }, "Nintendo", "Nintendo Co., Ltd." }, + { { 0xD8, 0x6B, 0xFC }, "zte", "zte corporation" }, { { 0xD8, 0x6C, 0x02 }, "HuaqinTeleco", "Huaqin Telecom Technology Co.,Ltd" }, { { 0xD8, 0x6C, 0x5A }, "HUMAX", "HUMAX Co., Ltd." }, { { 0xD8, 0x6C, 0x63 }, "Google", "Google, Inc." }, @@ -31734,8 +32077,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0x91, 0x2A }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0xD8, 0x91, 0x36 }, "DoverFueling", "Dover Fueling Solutions" }, { { 0xD8, 0x93, 0x41 }, "GeneralElect", "General Electric Global Research" }, - { { 0xD8, 0x94, 0x03 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xD8, 0x94, 0x03 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xD8, 0x95, 0x2F }, "TexasInstrum", "Texas Instruments" }, + { { 0xD8, 0x95, 0x63 }, "TaiwanDigita", "Taiwan Digital Streaming Co." }, { { 0xD8, 0x96, 0x85 }, "GoPro", "GoPro" }, { { 0xD8, 0x96, 0x95 }, "Apple", "Apple, Inc." }, { { 0xD8, 0x96, 0xE0 }, "AlibabaCloud", "Alibaba Cloud Computing Ltd." }, @@ -31757,6 +32101,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0x9E, 0xF3 }, "Dell", "Dell Inc." }, { { 0xD8, 0xA0, 0x11 }, "WiZ", "WiZ" }, { { 0xD8, 0xA0, 0x1D }, "Espressif", "Espressif Inc." }, + { { 0xD8, 0xA0, 0xE6 }, "ChongqingYip", "Chongqing Yipingfang Technology Co., Ltd." }, { { 0xD8, 0xA0, 0xE8 }, "zte", "zte corporation" }, { { 0xD8, 0xA1, 0x05 }, "Syslane", "Syslane, Co., Ltd." }, { { 0xD8, 0xA2, 0x5E }, "Apple", "Apple, Inc." }, @@ -31812,6 +32157,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xD8, 0xC5, 0x61 }, "CommFrontCom", "CommFront Communications Pte Ltd" }, { { 0xD8, 0xC6, 0x78 }, "MitraStarTec", "MitraStar Technology Corp." }, { { 0xD8, 0xC6, 0x91 }, "HichanTechno", "Hichan Technology Corp." }, + { { 0xD8, 0xC6, 0xF9 }, "Tracklab", "Tracklab Inc" }, { { 0xD8, 0xC7, 0x71 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD8, 0xC7, 0xC8 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0xD8, 0xC8, 0xE9 }, "Phicomm", "Phicomm (Shanghai) Co., Ltd." }, @@ -31998,8 +32344,10 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x45, 0xB8 }, "Apple", "Apple, Inc." }, { { 0xDC, 0x46, 0x28 }, "Intel", "Intel Corporate" }, { { 0xDC, 0x48, 0xB2 }, "Baraja", "Baraja Pty. Ltd." }, + { { 0xDC, 0x49, 0x65 }, "DASANNewtork", "DASAN Newtork Solutions" }, { { 0xDC, 0x49, 0xC9 }, "CascoSignal", "Casco Signal Ltd" }, { { 0xDC, 0x4A, 0x3E }, "HewlettPacka", "Hewlett Packard" }, + { { 0xDC, 0x4B, 0xA1 }, "WistronNeweb", "Wistron Neweb Corporation" }, { { 0xDC, 0x4B, 0xDD }, "SuperElectro", "Shenzhen SuperElectron Technology Co.,Ltd." }, { { 0xDC, 0x4B, 0xFE }, "BelonTechnol", "Shenzhen Belon Technology CO.,LTD" }, { { 0xDC, 0x4D, 0x23 }, "MRVComunicat", "MRV Comunications" }, @@ -32014,6 +32362,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x53, 0x92 }, "Apple", "Apple, Inc." }, { { 0xDC, 0x54, 0x3D }, "ItelMobile", "Itel Mobile Limited" }, { { 0xDC, 0x54, 0x75 }, "Espressif", "Espressif Inc." }, + { { 0xDC, 0x54, 0xAD }, "RunZhouFiber", "Hangzhou RunZhou Fiber Technologies Co.,Ltd" }, { { 0xDC, 0x54, 0xD7 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xDC, 0x55, 0x83 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xDC, 0x56, 0xE6 }, "BococomTechn", "Shenzhen Bococom Technology Co.,LTD" }, @@ -32022,6 +32371,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x58, 0xBC }, "ThomasKrenn", "Thomas-Krenn.AG" }, { { 0xDC, 0x5E, 0x36 }, "PatersonTech", "Paterson Technology" }, { { 0xDC, 0x60, 0xA1 }, "TeledyneDALS", "Teledyne DALSA Professional Imaging" }, + { { 0xDC, 0x61, 0x80 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xDC, 0x62, 0x1F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xDC, 0x62, 0x94 }, "GuangzhouLan", "Guangzhou Lango Electronics Technology Co.,Ltd." }, { { 0xDC, 0x63, 0x73 }, "ObaraKorea", "Obara Korea" }, @@ -32031,7 +32381,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x66, 0x3A }, "ApacerTechno", "Apacer Technology Inc." }, { { 0xDC, 0x66, 0x72 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xDC, 0x67, 0x23 }, "baroxKommuni", "barox Kommunikation GmbH" }, - { { 0xDC, 0x68, 0x0C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xDC, 0x68, 0x0C }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xDC, 0x68, 0x80 }, "zte", "zte corporation" }, { { 0xDC, 0x68, 0xEB }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0xDC, 0x69, 0xE2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -32046,6 +32396,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x71, 0x37 }, "zte", "zte corporation" }, { { 0xDC, 0x71, 0x44 }, "SamsungElect", "Samsung Electro Mechanics Co., Ltd." }, { { 0xDC, 0x71, 0x96 }, "Intel", "Intel Corporate" }, + { { 0xDC, 0x71, 0xD0 }, "Apple", "Apple, Inc." }, { { 0xDC, 0x71, 0xDD }, "AXTechnologi", "AX Technologies" }, { { 0xDC, 0x72, 0x23 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0xDC, 0x72, 0x9B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -32077,6 +32428,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x90, 0x88 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xDC, 0x91, 0x66 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xDC, 0x91, 0xBF }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0xDC, 0x92, 0x72 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xDC, 0x96, 0x2C }, "NSTAudio", "NST Audio Ltd" }, { { 0xDC, 0x97, 0x3A }, "VeranaNetwor", "Verana Networks" }, { { 0xDC, 0x97, 0x58 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, @@ -32088,6 +32440,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0x9A, 0x7D }, "HisenseVisua", "Hisense Visual Technology Co.,Ltd" }, { { 0xDC, 0x9A, 0x8E }, "NanjingCocom", "Nanjing Cocomm electronics co., LTD" }, { { 0xDC, 0x9B, 0x1E }, "Intercom", "Intercom, Inc." }, + { { 0xDC, 0x9B, 0x95 }, "PhyplusTechn", "Phyplus Technology (Shanghai) Co., Ltd" }, { { 0xDC, 0x9B, 0x9C }, "Apple", "Apple, Inc." }, { { 0xDC, 0x9B, 0xD6 }, "TCTmobile", "TCT mobile ltd" }, { { 0xDC, 0x9C, 0x52 }, "SapphireTech", "Sapphire Technology Limited." }, @@ -32136,6 +32489,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0xBB, 0x96 }, "FullSolution", "Full Solution Telecom" }, { { 0xDC, 0xBD, 0x7A }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0xDC, 0xBD, 0xCC }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, + { { 0xDC, 0xBE, 0x04 }, "TexasInstrum", "Texas Instruments" }, { { 0xDC, 0xBE, 0x49 }, "ItelMobile", "Itel Mobile Limited" }, { { 0xDC, 0xBE, 0x7A }, "ZhejiangNuro", "Zhejiang Nurotron Biotechnology Co." }, { { 0xDC, 0xBF, 0x90 }, "HuizhouQiaox", "Huizhou Qiaoxing Telecommunication Industry Co.,Ltd." }, @@ -32207,7 +32561,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xDC, 0xEB, 0x69 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0xDC, 0xEB, 0x94 }, "Cisco", "Cisco Systems, Inc" }, { { 0xDC, 0xEC, 0x06 }, "HeimiNetwork", "Heimi Network Technology Co., Ltd." }, - { { 0xDC, 0xEC, 0xE3 }, "LyotechLabs", "Lyotech Labs Llc" }, + { { 0xDC, 0xEC, 0xE3 }, "HorysTechnol", "Horys Technologies Llc" }, { { 0xDC, 0xED, 0x83 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0xDC, 0xED, 0x84 }, "Haverford", "Haverford Systems Inc" }, { { 0xDC, 0xEE, 0x06 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -32245,8 +32599,9 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0x05, 0xC5 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xE0, 0x06, 0x30 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE0, 0x06, 0xE6 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, - { { 0xE0, 0x07, 0x1B }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xE0, 0x07, 0x1B }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xE0, 0x07, 0xC2 }, "FujianStarNe", "Fujian Star-Net Communication Co.,Ltd" }, + { { 0xE0, 0x08, 0x55 }, "AVMAudiovisu", "AVM Audiovisuelles Marketing und Computersysteme GmbH" }, { { 0xE0, 0x08, 0x71 }, "DongguanLies", "Dongguan Liesheng Electronic Co., Ltd." }, { { 0xE0, 0x09, 0xBF }, "TONGBOWEITEC", "SHENZHEN TONG BO WEI TECHNOLOGY Co.,LTD" }, { { 0xE0, 0x0A, 0xF6 }, "LiteonTechno", "Liteon Technology Corporation" }, @@ -32334,6 +32689,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0x46, 0xE5 }, "GosuncnTechn", "Gosuncn Technology Group Co., Ltd." }, { { 0xE0, 0x46, 0xEE }, "Netgear", "Netgear" }, { { 0xE0, 0x47, 0x35 }, "Ericsson", "Ericsson AB" }, + { { 0xE0, 0x48, 0x24 }, "GarminIntern", "Garmin International" }, { { 0xE0, 0x48, 0xAF }, "Premietech", "Premietech Limited" }, { { 0xE0, 0x48, 0xD3 }, "MobiwireMobi", "Mobiwire Mobiles (Ningbo) Co.,Ltd" }, { { 0xE0, 0x48, 0xD8 }, "GuangzhiWuli", "Guangzhi Wulian Technology(Guangzhou) Co., Ltd" }, @@ -32343,6 +32699,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0x4B, 0xA6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE0, 0x4C, 0x05 }, "EverCharge", "EverCharge" }, { { 0xE0, 0x4C, 0x12 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, + { { 0xE0, 0x4E, 0x7A }, "NanjingQinhe", "Nanjing Qinheng Microelectronics Co., Ltd." }, { { 0xE0, 0x4F, 0x43 }, "UniversalGlo", "Universal Global Scientific Industrial Co., Ltd." }, { { 0xE0, 0x4F, 0xBD }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0xE0, 0x50, 0x8B }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, @@ -32417,6 +32774,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0x89, 0x9D }, "Cisco", "Cisco Systems, Inc" }, { { 0xE0, 0x8A, 0x7E }, "Exponent", "Exponent" }, { { 0xE0, 0x8E, 0x3C }, "AztechElectr", "Aztech Electronics Pte Ltd" }, + { { 0xE0, 0x8F, 0x4C }, "Intel", "Intel Corporate" }, { { 0xE0, 0x8F, 0xEC }, "Repotec", "Repotec Co., Ltd." }, { { 0xE0, 0x91, 0x3C }, "KyeunginCNS", "Kyeungin CNS Co., Ltd." }, { { 0xE0, 0x91, 0x53 }, "XAViTechnolo", "XAVi Technologies Corp." }, @@ -32457,6 +32815,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0xAB, 0xFE }, "OrbNetworks", "Orb Networks, Inc." }, { { 0xE0, 0xAC, 0xCB }, "Apple", "Apple, Inc." }, { { 0xE0, 0xAC, 0xF1 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xE0, 0xAD, 0x9B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE0, 0xAE, 0x5E }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0xE0, 0xAE, 0xA2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE0, 0xAE, 0xB2 }, "Bender", "Bender GmbH & Co.KG" }, @@ -32471,6 +32830,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE0, 0xB6, 0x68 }, "zte", "zte corporation" }, { { 0xE0, 0xB7, 0x0A }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xE0, 0xB7, 0x2E }, "QualmeshTech", "ShenZhen Qualmesh Technology Co.,Ltd." }, + { { 0xE0, 0xB7, 0x63 }, "BoschAutomot", "Bosch Automotive Products (Suzhou) Co., Ltd. Changzhou Branch" }, { { 0xE0, 0xB7, 0xB1 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xE0, 0xB9, 0x4D }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, { { 0xE0, 0xB9, 0x8A }, "Taikeindustr", "Shenzhen Taike industrial automation company,Ltd" }, @@ -32675,6 +33035,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE4, 0x50, 0x9A }, "HWCommunicat", "HW Communications Ltd" }, { { 0xE4, 0x50, 0xEB }, "Apple", "Apple, Inc." }, { { 0xE4, 0x52, 0x1E }, "TexasInstrum", "Texas Instruments" }, + { { 0xE4, 0x54, 0xE5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE4, 0x54, 0xE8 }, "Dell", "Dell Inc." }, { { 0xE4, 0x55, 0xA8 }, "CiscoMeraki", "Cisco Meraki" }, { { 0xE4, 0x55, 0xEA }, "DedicatedCom", "Dedicated Computing" }, @@ -32685,6 +33046,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE4, 0x58, 0xE7 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xE4, 0x5A, 0xA2 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xE4, 0x5A, 0xD4 }, "EltexEnterpr", "Eltex Enterprise Ltd." }, + { { 0xE4, 0x5B, 0xB3 }, "zte", "zte corporation" }, { { 0xE4, 0x5D, 0x37 }, "JuniperNetwo", "Juniper Networks" }, { { 0xE4, 0x5D, 0x51 }, "Sfr", "Sfr" }, { { 0xE4, 0x5D, 0x52 }, "Avaya", "Avaya Inc" }, @@ -32767,6 +33129,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE4, 0x98, 0xBB }, "PhyplusMicro", "Phyplus Microelectronics Limited" }, { { 0xE4, 0x98, 0xD1 }, "MicrosoftMob", "Microsoft Mobile Oy" }, { { 0xE4, 0x98, 0xD6 }, "Apple", "Apple, Inc." }, + { { 0xE4, 0x99, 0x5F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE4, 0x9A, 0x79 }, "Apple", "Apple, Inc." }, { { 0xE4, 0x9A, 0xDC }, "Apple", "Apple, Inc." }, { { 0xE4, 0x9C, 0x67 }, "Apple", "Apple, Inc." }, @@ -32797,6 +33160,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE4, 0xAF, 0xA1 }, "HesSo", "Hes-So" }, { { 0xE4, 0xB0, 0x05 }, "IQIYIScience", "Beijing IQIYI Science & Technology Co., Ltd." }, { { 0xE4, 0xB0, 0x21 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xE4, 0xB0, 0x63 }, "Espressif", "Espressif Inc." }, { { 0xE4, 0xB2, 0x24 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE4, 0xB2, 0xFB }, "Apple", "Apple, Inc." }, { { 0xE4, 0xB3, 0x18 }, "Intel", "Intel Corporate" }, @@ -32836,7 +33200,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE4, 0xD1, 0x24 }, "MojoNetworks", "Mojo Networks, Inc." }, { { 0xE4, 0xD3, 0x32 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xE4, 0xD3, 0x73 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, - { { 0xE4, 0xD3, 0xAA }, "FcntLmited", "Fcnt Lmited" }, + { { 0xE4, 0xD3, 0xAA }, "Fcnt", "Fcnt Llc" }, { { 0xE4, 0xD3, 0xF1 }, "Cisco", "Cisco Systems, Inc" }, { { 0xE4, 0xD5, 0x3D }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0xE4, 0xD7, 0x1D }, "OrayaTherape", "Oraya Therapeutics" }, @@ -32919,6 +33283,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0x13, 0x63 }, "ComstockRD", "Comstock RD, Inc." }, { { 0xE8, 0x13, 0x67 }, "AIRSOUND", "AIRSOUND Inc." }, { { 0xE8, 0x13, 0x6E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xE8, 0x14, 0x99 }, "YoquTechnolo", "Yoqu Technology(Shenzhen)Co.,Ltd." }, { { 0xE8, 0x15, 0x0E }, "Nokia", "Nokia Corporation" }, { { 0xE8, 0x16, 0x2B }, "IDEOSecurity", "IDEO Security Co., Ltd." }, { { 0xE8, 0x16, 0x56 }, "BroadLinkTec", "Hangzhou BroadLink Technology Co.,Ltd" }, @@ -32997,6 +33362,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0x51, 0x9D }, "YeonhabPreci", "Yeonhab Precision Co.,LTD" }, { { 0xE8, 0x51, 0x9E }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0xE8, 0x54, 0x84 }, "NEOInformati", "NEO Information Systems Co., Ltd." }, + { { 0xE8, 0x54, 0x97 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xE8, 0x55, 0x40 }, "WuxiFunideDi", "Wuxi Funide Digital Co.,Ltd" }, { { 0xE8, 0x55, 0xB4 }, "SAITechnolog", "SAI Technology Inc." }, { { 0xE8, 0x56, 0x59 }, "AdvancedConn", "Advanced-Connectek Inc." }, @@ -33012,6 +33378,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0x5D, 0x86 }, "ChangYowTech", "Chang Yow Technologies International Co.,Ltd." }, { { 0xE8, 0x5E, 0x53 }, "InfratecDate", "Infratec Datentechnik GmbH" }, { { 0xE8, 0x5F, 0x02 }, "Apple", "Apple, Inc." }, + { { 0xE8, 0x5F, 0xB4 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xE8, 0x61, 0x1F }, "DawningInfor", "Dawning Information Industry Co.,Ltd" }, { { 0xE8, 0x61, 0x7E }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0xE8, 0x61, 0x83 }, "BlackDiamond", "Black Diamond Advanced Technology, LLC" }, @@ -33111,6 +33478,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0xA7, 0x30 }, "Apple", "Apple, Inc." }, { { 0xE8, 0xA7, 0x88 }, "XiamenLeelen", "Xiamen Leelen Technology Co., Ltd" }, { { 0xE8, 0xA7, 0xF2 }, "sTraffic", "sTraffic" }, + { { 0xE8, 0xA8, 0x48 }, "Wacom", "Wacom Co.,Ltd." }, { { 0xE8, 0xAA, 0xCB }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xE8, 0xAB, 0xF3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xAB, 0xFA }, "ReecamTech", "Shenzhen Reecam Tech.Ltd." }, @@ -33126,6 +33494,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0xB3, 0xEF }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xE8, 0xB4, 0xAE }, "C&DElectroni", "Shenzhen C&D Electronics Co.,Ltd" }, { { 0xE8, 0xB4, 0xC8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xE8, 0xB5, 0x27 }, "PhyplusTechn", "Phyplus Technology (Shanghai) Co., Ltd" }, { { 0xE8, 0xB5, 0x41 }, "zte", "zte corporation" }, { { 0xE8, 0xB5, 0xD0 }, "Dell", "Dell Inc." }, { { 0xE8, 0xB6, 0xC2 }, "JuniperNetwo", "Juniper Networks" }, @@ -33137,6 +33506,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0xBB, 0xA8 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xE8, 0xBD, 0xD1 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xBE, 0x81 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, + { { 0xE8, 0xBF, 0xB8 }, "Intel", "Intel Corporate" }, { { 0xE8, 0xBF, 0xDB }, "InodesignGro", "Inodesign Group" }, { { 0xE8, 0xC1, 0xB8 }, "NanjingBangz", "Nanjing Bangzhong Electronic Commerce Limited" }, { { 0xE8, 0xC1, 0xD7 }, "Philips", "Philips" }, @@ -33225,7 +33595,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xE8, 0xF3, 0x75 }, "Nokia", "Nokia" }, { { 0xE8, 0xF4, 0x08 }, "Intel", "Intel Corporate" }, { { 0xE8, 0xF6, 0x54 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, - { { 0xE8, 0xF7, 0x24 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xE8, 0xF7, 0x24 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xE8, 0xF7, 0x2F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xF7, 0x91 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xE8, 0xF8, 0xD0 }, "NokiaShangha", "Nokia Shanghai Bell Co., Ltd." }, @@ -33452,7 +33822,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0x9A, 0x74 }, "HewlettPacka", "Hewlett Packard" }, { { 0xEC, 0x9B, 0x2D }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0xEC, 0x9B, 0x5B }, "Nokia", "Nokia Corporation" }, - { { 0xEC, 0x9B, 0x8B }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xEC, 0x9B, 0x8B }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xEC, 0x9B, 0xF3 }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, { { 0xEC, 0x9C, 0x32 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0xEC, 0x9E, 0xCD }, "ArtesynEmbed", "Artesyn Embedded Technologies" }, @@ -33467,6 +33837,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0xA8, 0x6B }, "ElitegroupCo", "Elitegroup Computer Systems Co.,Ltd." }, { { 0xEC, 0xA9, 0x07 }, "Apple", "Apple, Inc." }, { { 0xEC, 0xA9, 0x40 }, "ARRISGroup", "ARRIS Group, Inc." }, + { { 0xEC, 0xA9, 0x71 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xEC, 0xA9, 0xFA }, "GeniusTechno", "Guangdong Genius Technology Co., Ltd." }, { { 0xEC, 0xAA, 0x25 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xEC, 0xAA, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -33502,6 +33873,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0xC0, 0x7A }, "LairdConnect", "Laird Connectivity" }, { { 0xEC, 0xC1, 0xAB }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0xEC, 0xC3, 0x02 }, "HUMAX", "HUMAX Co., Ltd." }, + { { 0xEC, 0xC3, 0x42 }, "zte", "zte corporation" }, { { 0xEC, 0xC3, 0x8A }, "Accuenergy", "Accuenergy (CANADA) Inc" }, { { 0xEC, 0xC3, 0xB0 }, "zte", "zte corporation" }, { { 0xEC, 0xC4, 0x0D }, "Nintendo", "Nintendo Co.,Ltd" }, @@ -33509,6 +33881,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0xC5, 0xD2 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xEC, 0xC8, 0x82 }, "Cisco", "Cisco Systems, Inc" }, { { 0xEC, 0xC8, 0x9C }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, + { { 0xEC, 0xC9, 0xFF }, "Espressif", "Espressif Inc." }, { { 0xEC, 0xCB, 0x30 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xEC, 0xCD, 0x4C }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0xEC, 0xCD, 0x6D }, "AlliedTelesi", "Allied Telesis, Inc." }, @@ -33545,7 +33918,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0xE9, 0x15 }, "STI", "STI Ltd" }, { { 0xEC, 0xE9, 0xF8 }, "GuangZhouTRI", "Guang Zhou TRI-SUN Electronics Technology Co., Ltd" }, { { 0xEC, 0xEA, 0x03 }, "DarfonLighti", "Darfon Lighting Corp" }, - { { 0xEC, 0xEB, 0xB8 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xEC, 0xEB, 0xB8 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xEC, 0xED, 0x73 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xEC, 0xEE, 0xD8 }, "ZTLXNetworkT", "ZTLX Network Technology Co.,Ltd" }, { { 0xEC, 0xEF, 0x17 }, "SunplusTechn", "Sunplus Technology Co., Ltd." }, @@ -33569,12 +33942,15 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xEC, 0xFA, 0xBC }, "Espressif", "Espressif Inc." }, { { 0xEC, 0xFA, 0xF4 }, "SenRaTech", "SenRa Tech Pvt. Ltd" }, { { 0xEC, 0xFC, 0x55 }, "AEberle", "A. Eberle GmbH & Co. KG" }, + { { 0xEC, 0xFC, 0xC6 }, "ArubaHewlett", "Aruba, a Hewlett Packard Enterprise Company" }, { { 0xEC, 0xFE, 0x7E }, "BlueRadios", "BlueRadios, Inc." }, { { 0xF0, 0x00, 0x7F }, "JanzContador", "Janz - Contadores de Energia, SA" }, { { 0xF0, 0x01, 0x6E }, "TianyiTeleco", "Tianyi Telecom Terminals Company Limited" }, { { 0xF0, 0x02, 0x2B }, "Chrontel", "Chrontel" }, { { 0xF0, 0x02, 0x48 }, "SmarteBuildi", "SmarteBuilding" }, { { 0xF0, 0x03, 0x8C }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0xF0, 0x04, 0xE1 }, "Apple", "Apple, Inc." }, + { { 0xF0, 0x05, 0x1B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF0, 0x07, 0x27 }, "InterelBuild", "Interel Building Automation" }, { { 0xF0, 0x07, 0x86 }, "ShandongBitt", "Shandong Bittel Electronics Co., Ltd" }, { { 0xF0, 0x08, 0xD1 }, "Espressif", "Espressif Inc." }, @@ -33848,6 +34224,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF0, 0xD7, 0x93 }, "Apple", "Apple, Inc." }, { { 0xF0, 0xD7, 0xAA }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xF0, 0xD7, 0xDC }, "WesineTechno", "Wesine (Wuhan) Technology Co., Ltd." }, + { { 0xF0, 0xD8, 0x05 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF0, 0xD9, 0xB2 }, "Exo", "Exo S.A." }, { { 0xF0, 0xDA, 0x7C }, "RlhIndustrie", "Rlh Industries,Inc." }, { { 0xF0, 0xDB, 0x30 }, "Yottabyte", "Yottabyte" }, @@ -33860,6 +34237,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF0, 0xE3, 0xDC }, "TeconMT", "Tecon MT, LLC" }, { { 0xF0, 0xE4, 0xA2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF0, 0xE5, 0xC3 }, "DrägerwerkaA", "Drägerwerk AG & Co. KG aA" }, + { { 0xF0, 0xE7, 0x52 }, "HuajuxinSemi", "Shenzhen Huajuxin Semiconductor Co.,ltd" }, { { 0xF0, 0xE7, 0x7E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF0, 0xEB, 0xD0 }, "FeixunCommun", "Shanghai Feixun Communication Co.,Ltd." }, { { 0xF0, 0xEC, 0x39 }, "Essec", "Essec" }, @@ -33895,6 +34273,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF0, 0xF8, 0xF2 }, "TexasInstrum", "Texas Instruments" }, { { 0xF0, 0xF9, 0xF7 }, "IES", "IES GmbH & Co. KG" }, { { 0xF0, 0xFA, 0xC7 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xF0, 0xFC, 0x65 }, "SynaXGTechno", "SynaXG Technologies Pte. Ltd." }, { { 0xF0, 0xFC, 0xC8 }, "ARRISGroup", "ARRIS Group, Inc." }, { { 0xF0, 0xFD, 0xA0 }, "AcurixNetwor", "Acurix Networks Pty Ltd" }, { { 0xF0, 0xFD, 0xDD }, "FoxtronVehic", "Foxtron Vehicle Technologies Co., Ltd." }, @@ -33908,7 +34287,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x03, 0x21 }, "BeNeXt", "BeNeXt B.V." }, { { 0xF4, 0x03, 0x2A }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xF4, 0x03, 0x2F }, "Reduxio", "Reduxio Systems" }, - { { 0xF4, 0x03, 0x43 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xF4, 0x03, 0x43 }, "HewlettPacka", "Hewlett Packard Enterprise – WW Corporate Headquarters" }, { { 0xF4, 0x04, 0x4C }, "ValenceTech", "ValenceTech Limited" }, { { 0xF4, 0x05, 0x95 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xF4, 0x06, 0x16 }, "Apple", "Apple, Inc." }, @@ -33946,6 +34325,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x1F, 0x88 }, "zte", "zte corporation" }, { { 0xF4, 0x1F, 0xC2 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF4, 0x20, 0x12 }, "Cuciniale", "Cuciniale GmbH" }, + { { 0xF4, 0x20, 0x15 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0xF4, 0x21, 0xAE }, "XiaoduTechno", "Shanghai Xiaodu Technology Limited" }, { { 0xF4, 0x21, 0xCA }, "Apple", "Apple, Inc." }, { { 0xF4, 0x22, 0x7A }, "SeneasyIntel", "Guangdong Seneasy Intelligent Technology Co., Ltd." }, @@ -34017,6 +34397,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x50, 0xEB }, "Telechips", "Telechips Inc" }, { { 0xF4, 0x52, 0x14 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xF4, 0x52, 0x46 }, "AskeyCompute", "Askey Computer Corp" }, + { { 0xF4, 0x52, 0x93 }, "Apple", "Apple, Inc." }, { { 0xF4, 0x54, 0x20 }, "TellescomInd", "Tellescom Industria E Comercio Em Telecomunicacao" }, { { 0xF4, 0x54, 0x24 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0xF4, 0x54, 0x33 }, "RockwellAuto", "Rockwell Automation" }, @@ -34058,6 +34439,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x6D, 0xE2 }, "zte", "zte corporation" }, { { 0xF4, 0x6E, 0x24 }, "NECPersonalC", "NEC Personal Computers, Ltd." }, { { 0xF4, 0x6E, 0x95 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, + { { 0xF4, 0x6E, 0xD6 }, "EMMicroelect", "EM Microelectronic" }, { { 0xF4, 0x6F, 0x4E }, "Echowell", "Echowell" }, { { 0xF4, 0x6F, 0xA4 }, "PhysikInstru", "Physik Instrumente GmbH & Co. KG" }, { { 0xF4, 0x6F, 0xED }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -34065,6 +34447,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x71, 0x90 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF4, 0x73, 0x35 }, "LogitechFarE", "Logitech Far East" }, { { 0xF4, 0x73, 0xCA }, "ConversionSo", "Conversion Sound Inc." }, + { { 0xF4, 0x74, 0x70 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF4, 0x74, 0x88 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0xF4, 0x76, 0x26 }, "ViltechmedaU", "Viltechmeda UAB" }, { { 0xF4, 0x79, 0x46 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -34104,6 +34487,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF4, 0x97, 0xC2 }, "Nebulon", "Nebulon Inc" }, { { 0xF4, 0x99, 0xAC }, "WEBERSchraub", "WEBER Schraubautomaten GmbH" }, { { 0xF4, 0x9C, 0x12 }, "Structab", "Structab AB" }, + { { 0xF4, 0x9D, 0x8A }, "FantasiaTrad", "Fantasia Trading LLC" }, { { 0xF4, 0x9E, 0xEF }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0xF4, 0x9F, 0x54 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF4, 0x9F, 0xF3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -34360,6 +34744,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF8, 0x4C, 0xDA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF8, 0x4D, 0x33 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xF8, 0x4D, 0x89 }, "Apple", "Apple, Inc." }, + { { 0xF8, 0x4D, 0x8B }, "ecamtek", "ecamtek" }, { { 0xF8, 0x4D, 0xFC }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xF8, 0x4E, 0x17 }, "Sony", "Sony Corporation" }, { { 0xF8, 0x4E, 0x58 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -34425,6 +34810,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF8, 0x72, 0xEA }, "Cisco", "Cisco Systems, Inc" }, { { 0xF8, 0x73, 0x94 }, "Netgear", "Netgear" }, { { 0xF8, 0x73, 0xA2 }, "Avaya", "Avaya Inc" }, + { { 0xF8, 0x73, 0xDF }, "Apple", "Apple, Inc." }, { { 0xF8, 0x75, 0x88 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF8, 0x75, 0xA4 }, "LCFCElectron", "LCFC(HeFei) Electronics Technology co., ltd" }, { { 0xF8, 0x76, 0x9B }, "Neopis", "Neopis Co., Ltd." }, @@ -34459,6 +34845,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF8, 0x8E, 0x85 }, "Comtrend", "Comtrend Corporation" }, { { 0xF8, 0x8E, 0xA1 }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0xF8, 0x8F, 0x07 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xF8, 0x8F, 0xC8 }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Corp." }, { { 0xF8, 0x8F, 0xCA }, "Google", "Google, Inc." }, { { 0xF8, 0x90, 0x66 }, "Nain", "Nain Inc." }, { { 0xF8, 0x91, 0x2A }, "GLPGermanLig", "GLP German Light Products GmbH" }, @@ -34547,6 +34934,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF8, 0xC3, 0x97 }, "NZXT", "NZXT Corp. Ltd." }, { { 0xF8, 0xC3, 0x9E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF8, 0xC3, 0xCC }, "Apple", "Apple, Inc." }, + { { 0xF8, 0xC3, 0xF1 }, "RaytronPhoto", "Raytron Photonics Co.,Ltd." }, { { 0xF8, 0xC4, 0xAE }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xF8, 0xC4, 0xF3 }, "InfinityWire", "Shanghai Infinity Wireless Technologies Co.,Ltd." }, { { 0xF8, 0xC4, 0xFA }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, @@ -34558,6 +34946,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xF8, 0xCA, 0xB8 }, "Dell", "Dell Inc." }, { { 0xF8, 0xCC, 0x6E }, "DEPOElectron", "DEPO Electronics Ltd" }, { { 0xF8, 0xCD, 0xC8 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, + { { 0xF8, 0xCE, 0x07 }, "ZhejiangDahu", "Zhejiang Dahua Technologyco.,Ltd" }, { { 0xF8, 0xCE, 0x72 }, "Wistron", "Wistron Corporation" }, { { 0xF8, 0xCF, 0xC5 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xF8, 0xD0, 0x27 }, "SeikoEpson", "Seiko Epson Corporation" }, @@ -34647,6 +35036,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xFA, 0xE1, 0x90 }, "InWinDevelop", "In Win Development Inc." }, { { 0xFA, 0xE5, 0x1A }, "RSAELabs", "RSAE Labs Inc" }, { { 0xFA, 0xEB, 0x6E }, "xRANorg", "xRAN.org" }, + { { 0xFA, 0xEE, 0xB6 }, "JiahuaZhongl", "Shenzhen Jiahua Zhongli Technology Co., LTD" }, { { 0xFA, 0xF9, 0xC0 }, "RAID", "RAID Incorporated" }, { { 0xFC, 0x00, 0x12 }, "ToshibaSamsu", "Toshiba Samsung Storage Technolgoy Korea Corporation" }, { { 0xFC, 0x01, 0x7C }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -34786,7 +35176,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xFC, 0x5B, 0x39 }, "Cisco", "Cisco Systems, Inc" }, { { 0xFC, 0x5B, 0x8C }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xFC, 0x5C, 0x45 }, "RuckusWirele", "Ruckus Wireless" }, - { { 0xFC, 0x5C, 0xEE }, "LCFCElectron", "LCFC(Hefei) Electronics Technology co., ltd" }, + { { 0xFC, 0x5C, 0xEE }, "LCFCElectron", "LCFC(HeFei) Electronics Technology co., ltd" }, { { 0xFC, 0x5F, 0x49 }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, { { 0xFC, 0x60, 0x18 }, "ZhejiangKang", "Zhejiang Kangtai Electric Co., Ltd." }, { { 0xFC, 0x60, 0x9B }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, @@ -34846,6 +35236,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xFC, 0x8F, 0xC4 }, "IntelligentT", "Intelligent Technology Inc." }, { { 0xFC, 0x90, 0xFA }, "IndependentT", "Independent Technologies" }, { { 0xFC, 0x91, 0x14 }, "VantivaUSA", "Vantiva USA LLC" }, + { { 0xFC, 0x91, 0x5D }, "Google", "Google, Inc." }, { { 0xFC, 0x91, 0x89 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0xFC, 0x92, 0x3B }, "Nokia", "Nokia Corporation" }, { { 0xFC, 0x92, 0x57 }, "RenesasElect", "Renesas Electronics (Penang) Sdn. Bhd." }, @@ -34857,6 +35248,7 @@ static const manuf_oui24_t global_manuf_oui24_table[] = { { { 0xFC, 0x95, 0x6A }, "Octagon", "Octagon Systems Corp." }, { { 0xFC, 0x96, 0x43 }, "JuniperNetwo", "Juniper Networks" }, { { 0xFC, 0x97, 0xA8 }, "Cricut", "Cricut Inc." }, + { { 0xFC, 0x98, 0x16 }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0xFC, 0x99, 0x47 }, "Cisco", "Cisco Systems, Inc" }, { { 0xFC, 0x9A, 0xFA }, "MotusGlobal", "Motus Global Inc." }, { { 0xFC, 0x9B, 0xC6 }, "SumavisionTe", "Sumavision Technologies Co.,Ltd" }, @@ -35076,7 +35468,7 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x04, 0xC3, 0xE6, 0xB0 }, "FlintecUK", "Flintec UK Ltd." }, { { 0x04, 0xC3, 0xE6, 0xC0 }, "ShantouYings", "Shantou Yingsheng Import & Export Trading Co.,Ltd." }, { { 0x04, 0xC3, 0xE6, 0xD0 }, "Amiosec", "Amiosec Ltd" }, - { { 0x04, 0xC3, 0xE6, 0xE0 }, "Teleepoch", "Teleepoch Ltd" }, + { { 0x04, 0xC3, 0xE6, 0xE0 }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0x04, 0xD1, 0x6E, 0x00 }, "INTRIPLE", "INTRIPLE, a.s." }, { { 0x04, 0xD1, 0x6E, 0x10 }, "LaunchTech", "Launch Tech Co., Ltd." }, { { 0x04, 0xD1, 0x6E, 0x20 }, "sdi", "s.d.i. s.p.a." }, @@ -35122,6 +35514,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x08, 0x26, 0xAE, 0xC0 }, "BrannstromSw", "Brannstrom Sweden AB" }, { { 0x08, 0x26, 0xAE, 0xD0 }, "VethPropulsi", "Veth Propulsion bv" }, { { 0x08, 0x26, 0xAE, 0xE0 }, "MassElectron", "Mass Electronics Pty Ltd" }, + { { 0x08, 0x63, 0x32, 0x00 }, "Eaton", "Eaton Corporation" }, + { { 0x08, 0x63, 0x32, 0x10 }, "eCloudTechno", "Shanghai eCloud Technologies Co.,ltd" }, + { { 0x08, 0x63, 0x32, 0x20 }, "innovativesp", "innovative specialized security solutions" }, + { { 0x08, 0x63, 0x32, 0x30 }, "UmanoMedical", "Umano Medical Inc." }, + { { 0x08, 0x63, 0x32, 0x40 }, "KELIBANGInfo", "Beijing KELIBANG Information technology Co.,LTD" }, + { { 0x08, 0x63, 0x32, 0x50 }, "APaulSoftwar", "A Paul Software Systems Pvt. Ltd." }, + { { 0x08, 0x63, 0x32, 0x60 }, "OVTIndia", "OVT India pvt Ltd" }, + { { 0x08, 0x63, 0x32, 0x70 }, "SoftwareAuto", "Software-Automation-Control Joint Stock Company (Cadpro., Jsc)" }, + { { 0x08, 0x63, 0x32, 0x80 }, "inhub", "in.hub GmbH" }, + { { 0x08, 0x63, 0x32, 0x90 }, "TZMedical", "TZMedical Inc." }, + { { 0x08, 0x63, 0x32, 0xA0 }, "DynacomCommu", "Dynacom Communication" }, + { { 0x08, 0x63, 0x32, 0xB0 }, "YuanXiangDig", "ShenZhen YuanXiang Digital Technology Co., Ltd" }, + { { 0x08, 0x63, 0x32, 0xC0 }, "Swiftronix", "Swiftronix AB" }, + { { 0x08, 0x63, 0x32, 0xD0 }, "akYtec", "akYtec GmbH" }, + { { 0x08, 0x63, 0x32, 0xE0 }, "CVueAudioTec", "C-Vue (Shanghai) Audio Technology Co.,Ltd" }, { { 0x08, 0xED, 0x02, 0x00 }, "D2SLink", "D2SLink Systems" }, { { 0x08, 0xED, 0x02, 0x10 }, "Imperx", "Imperx, Inc" }, { { 0x08, 0xED, 0x02, 0x20 }, "TESTouchEmbe", "TES Touch Embedded Solutions Inc." }, @@ -35150,7 +35557,7 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x08, 0xF8, 0x0D, 0xA0 }, "MickeyIndust", "Mickey Industry,Ltd." }, { { 0x08, 0xF8, 0x0D, 0xB0 }, "VontInnovati", "Vont Innovations" }, { { 0x08, 0xF8, 0x0D, 0xC0 }, "ZmbiziApp", "Zmbizi App Llc" }, - { { 0x08, 0xF8, 0x0D, 0xD0 }, "ZhejiangEvTe", "Zhejiang Ev-Tech.,Ltd" }, + { { 0x08, 0xF8, 0x0D, 0xD0 }, "ZheJiangEVTe", "Zhe Jiang EV-Tech Co.,Ltd" }, { { 0x08, 0xF8, 0x0D, 0xE0 }, "SuzhouSidiIn", "Suzhou Sidi Information Technology Co., Ltd." }, { { 0x0C, 0x5C, 0xB5, 0x00 }, "Yamasei", "Yamasei" }, { { 0x0C, 0x5C, 0xB5, 0x10 }, "avxavElectro", "avxav Electronic Trading LLC" }, @@ -35321,7 +35728,7 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x14, 0x1F, 0xBA, 0x20 }, "DeutscheEner", "Deutsche Energieversorgung GmbH" }, { { 0x14, 0x1F, 0xBA, 0x40 }, "Byzero", "Byzero" }, { { 0x14, 0x1F, 0xBA, 0x50 }, "InttelixBras", "Inttelix Brasil Tecnologia e Sistemas Ltda" }, - { { 0x14, 0x1F, 0xBA, 0x60 }, "ThalesCommun", "Thales Communications & Security SAS" }, + { { 0x14, 0x1F, 0xBA, 0x60 }, "RevenueColle", "Revenue Collection Systems France SAS" }, { { 0x14, 0x1F, 0xBA, 0x70 }, "WisnetworksT", "Wisnetworks Technologies Co., Ltd." }, { { 0x14, 0x1F, 0xBA, 0x80 }, "CATICInforma", "Shenzhen CATIC Information Technology Industry Co.,Ltd" }, { { 0x14, 0x1F, 0xBA, 0x90 }, "BlackMothTec", "Black Moth Technologies" }, @@ -36106,6 +36513,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x34, 0x29, 0x8F, 0xC0 }, "AlbertHandtm", "Albert Handtmann Maschinenfabrik GmbH&Co.KG" }, { { 0x34, 0x29, 0x8F, 0xD0 }, "KeystoneElec", "Keystone Electronic Solutions" }, { { 0x34, 0x29, 0x8F, 0xE0 }, "ARCTechnolog", "ARC Technology Co., Ltd" }, + { { 0x34, 0xC8, 0xD6, 0x00 }, "ZhangyueTech", "Shenzhen Zhangyue Technology Co., Ltd" }, + { { 0x34, 0xC8, 0xD6, 0x10 }, "XmitechElect", "Shenzhen Xmitech Electronic Co.,Ltd" }, + { { 0x34, 0xC8, 0xD6, 0x20 }, "GuangzhouLin", "Guangzhou Linkpi Technology Co. Ltd" }, + { { 0x34, 0xC8, 0xD6, 0x30 }, "kratosnetwor", "kratos network pte.ltd." }, + { { 0x34, 0xC8, 0xD6, 0x40 }, "Decentesttec", "Chengdu Decentest technology Co., Ltd." }, + { { 0x34, 0xC8, 0xD6, 0x50 }, "PrizmaGroupD", "Prizma Group Distribution & Consulting D.O.O - Rubisec" }, + { { 0x34, 0xC8, 0xD6, 0x60 }, "Signalwing", "Signalwing Corporation" }, + { { 0x34, 0xC8, 0xD6, 0x70 }, "ZXCLAATechno", "ZXCLAA Technology(Suzhou) Co.,Ltd" }, + { { 0x34, 0xC8, 0xD6, 0x80 }, "Illumina", "Illumina" }, + { { 0x34, 0xC8, 0xD6, 0x90 }, "LaxtonGroup", "Laxton Group Limited" }, + { { 0x34, 0xC8, 0xD6, 0xA0 }, "JooanTechnol", "Shenzhen Jooan Technology Co., Ltd" }, + { { 0x34, 0xC8, 0xD6, 0xB0 }, "YuanzhouInte", "Yuanzhou Intelligent (Shenzhen) Co., Ltd." }, + { { 0x34, 0xC8, 0xD6, 0xC0 }, "HuizhouKDTIn", "Huizhou KDT Intelligent Display Technology Co. Ltd" }, + { { 0x34, 0xC8, 0xD6, 0xD0 }, "eight", "eight" }, + { { 0x34, 0xC8, 0xD6, 0xE0 }, "CDElectronic", "Shenzhen C & D Electronics Co., Ltd." }, { { 0x34, 0xD0, 0xB8, 0x00 }, "Captec", "Captec Ltd" }, { { 0x34, 0xD0, 0xB8, 0x10 }, "BaoLaiWeiInt", "Shenzhen Bao Lai Wei Intelligent Technology Co., L" }, { { 0x34, 0xD0, 0xB8, 0x20 }, "Blustream", "Blustream Pty Ltd" }, @@ -36412,7 +36834,7 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x40, 0xF3, 0x85, 0x50 }, "KatoEngineer", "Kato Engineering Inc." }, { { 0x40, 0xF3, 0x85, 0x60 }, "LennoxIntern", "Lennox International Incorporated" }, { { 0x40, 0xF3, 0x85, 0x70 }, "PalazzettiLe", "Palazzetti Lelio Spa" }, - { { 0x40, 0xF3, 0x85, 0x80 }, "Teleepoch", "Teleepoch Ltd" }, + { { 0x40, 0xF3, 0x85, 0x80 }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0x40, 0xF3, 0x85, 0x90 }, "FastPrecisio", "Fast Precision Technologies Co. Ltd." }, { { 0x40, 0xF3, 0x85, 0xA0 }, "Creanord", "Creanord" }, { { 0x40, 0xF3, 0x85, 0xB0 }, "URMETHomeBui", "URMET Home & Building Solutions Pty Ltd" }, @@ -36524,6 +36946,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x48, 0xDA, 0x35, 0xC0 }, "GuangzhouXin", "Guangzhou Xinhong Communication Technology Co.,Ltd" }, { { 0x48, 0xDA, 0x35, 0xD0 }, "Nacon", "Nacon Limited (Hk) Ltd" }, { { 0x48, 0xDA, 0x35, 0xE0 }, "NepsTechnolo", "Neps Technologies Private Limited" }, + { { 0x48, 0xE6, 0x63, 0x00 }, "HuaqianBeiji", "Huaqian Beijing Technology Co., Ltd" }, + { { 0x48, 0xE6, 0x63, 0x10 }, "NanningNisli", "Nanning Nislight Communication Technology Co.,Ltd.," }, + { { 0x48, 0xE6, 0x63, 0x20 }, "JingdongQian", "Beijing Jingdong Qianshi Technology Co.,Ltd." }, + { { 0x48, 0xE6, 0x63, 0x30 }, "Makerfabs", "Makerfabs" }, + { { 0x48, 0xE6, 0x63, 0x40 }, "SmileSecurit", "Smile Security and Survillence Private Limited" }, + { { 0x48, 0xE6, 0x63, 0x50 }, "HoypowerEner", "Hoypower Energy Co.,Ltd" }, + { { 0x48, 0xE6, 0x63, 0x60 }, "HuabaoNewEne", "Shenzhen Huabao New Energy Co.,Ltd" }, + { { 0x48, 0xE6, 0x63, 0x70 }, "EarweissTech", "Earweiss Technology (Shenzhen) Co,. Ltd" }, + { { 0x48, 0xE6, 0x63, 0x80 }, "PeichengTech", "Shenzhen Peicheng Technology Co., LTD." }, + { { 0x48, 0xE6, 0x63, 0x90 }, "AceZoneAps", "AceZone Aps" }, + { { 0x48, 0xE6, 0x63, 0xA0 }, "JointelliTec", "Shenzhen Jointelli Technologies Co.,Ltd" }, + { { 0x48, 0xE6, 0x63, 0xB0 }, "NakamuraTome", "Nakamura-Tome Precision Industry Co.,Ltd." }, + { { 0x48, 0xE6, 0x63, 0xC0 }, "CunyinChengq", "Beijing Cunyin Chengqi Technology Co., Ltd." }, + { { 0x48, 0xE6, 0x63, 0xD0 }, "Neureality", "Neureality ltd" }, + { { 0x48, 0xE6, 0x63, 0xE0 }, "MatriboxInte", "Matribox Intelligent Technology co.Ltd." }, { { 0x4C, 0x4B, 0xF9, 0x00 }, "MultitekElek", "Multitek Elektronik Sanayi ve Ticaret A.S." }, { { 0x4C, 0x4B, 0xF9, 0x10 }, "Jiangsuacrel", "Jiangsu acrel Co., Ltd." }, { { 0x4C, 0x4B, 0xF9, 0x20 }, "HommProTechn", "Shenzhen HommPro Technology Co.,Ltd" }, @@ -37004,6 +37441,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x60, 0x95, 0xCE, 0xC0 }, "Synamedia", "Synamedia" }, { { 0x60, 0x95, 0xCE, 0xD0 }, "GovComm", "GovComm" }, { { 0x60, 0x95, 0xCE, 0xE0 }, "VNS", "VNS Inc." }, + { { 0x60, 0xA4, 0x34, 0x00 }, "Uniqon", "Uniqon" }, + { { 0x60, 0xA4, 0x34, 0x10 }, "EEGEnterpris", "EEG Enterprises Inc" }, + { { 0x60, 0xA4, 0x34, 0x20 }, "Zhongxinhuil", "Hangzhou Zhongxinhui lntelligent Technology Co.,Ltd." }, + { { 0x60, 0xA4, 0x34, 0x30 }, "lncarTechnol", "Shenzhen lncar Technology Co.,Ltd" }, + { { 0x60, 0xA4, 0x34, 0x40 }, "HumanlifeInf", "Human-life Information Platforms Institute" }, + { { 0x60, 0xA4, 0x34, 0x50 }, "LanlyTechnol", "Hangzhou Lanly Technology Co., Ltd." }, + { { 0x60, 0xA4, 0x34, 0x60 }, "LechpolElect", "Lechpol Electronics Leszek Sp.k." }, + { { 0x60, 0xA4, 0x34, 0x70 }, "DrovTechnolo", "Drov Technologies" }, + { { 0x60, 0xA4, 0x34, 0x80 }, "TimeEngineer", "Time Engineering Co., Ltd." }, + { { 0x60, 0xA4, 0x34, 0x90 }, "HantangFengy", "Shenzhen HantangFengyun Technology Co.,Ltd" }, + { { 0x60, 0xA4, 0x34, 0xA0 }, "Scancom", "Scancom" }, + { { 0x60, 0xA4, 0x34, 0xB0 }, "BweetechElec", "Bweetech Electronics Technology (Shanghai) Co.,Ltd" }, + { { 0x60, 0xA4, 0x34, 0xC0 }, "Annapurnalab", "Annapurna labs" }, + { { 0x60, 0xA4, 0x34, 0xD0 }, "Kaynestechno", "Kaynes technology India Ltd" }, + { { 0x60, 0xA4, 0x34, 0xE0 }, "Knvision", "Knvision" }, { { 0x60, 0xD7, 0xE3, 0x00 }, "Avalun", "Avalun" }, { { 0x60, 0xD7, 0xE3, 0x10 }, "Elap", "Elap s.r.l." }, { { 0x60, 0xD7, 0xE3, 0x20 }, "Novoinnovati", "Novo innovations Ltd" }, @@ -37481,10 +37933,19 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x78, 0xD8, 0x00, 0xE0 }, "CLInternatio", "CL International" }, { { 0x78, 0xE9, 0x96, 0x00 }, "EeguardTechn", "Shenzhen Eeguard Technology Co.,Limited" }, { { 0x78, 0xE9, 0x96, 0x10 }, "CogitoTech", "Cogito Tech Company Limited" }, + { { 0x78, 0xE9, 0x96, 0x20 }, "StiebelEltro", "Stiebel Eltron Gmbh & Co. Kg" }, + { { 0x78, 0xE9, 0x96, 0x30 }, "ACL", "ACL Co.,Ltd." }, { { 0x78, 0xE9, 0x96, 0x40 }, "JinHaoMiTech", "Shenzhen Jin Hao Mi Technology Co., LTD" }, { { 0x78, 0xE9, 0x96, 0x50 }, "ChuangmingFu", "Chuangming Futre Technology Co., Ltd." }, + { { 0x78, 0xE9, 0x96, 0x60 }, "Kilews", "Kilews" }, { { 0x78, 0xE9, 0x96, 0x70 }, "BeisitElectr", "Beisit Electric Tech(Hangzhou)Co.,Ltd." }, + { { 0x78, 0xE9, 0x96, 0x80 }, "ZhitingTechn", "Shenzhen Zhiting Technology Co.,Ltd" }, { { 0x78, 0xE9, 0x96, 0x90 }, "AtmSolutions", "Atm Solutions" }, + { { 0x78, 0xE9, 0x96, 0xA0 }, "Farbenlnform", "Shenzhen Farben lnformation Technology CO.,Ltd." }, + { { 0x78, 0xE9, 0x96, 0xB0 }, "CelAudioTech", "CelAudio (Beijing) Technology Inc" }, + { { 0x78, 0xE9, 0x96, 0xC0 }, "GarantirTech", "Garantir Technologies Private Limited" }, + { { 0x78, 0xE9, 0x96, 0xD0 }, "LorchSchweis", "Lorch Schweisstechnik GmbH" }, + { { 0x78, 0xE9, 0x96, 0xE0 }, "BitaInternat", "Bita-International Co.,Ltd" }, { { 0x7C, 0x45, 0xF9, 0x00 }, "SENSeOR", "SENSeOR" }, { { 0x7C, 0x45, 0xF9, 0x10 }, "HunanShengyu", "Hunan Shengyun Photoelectric Technology Co., LTD" }, { { 0x7C, 0x45, 0xF9, 0x20 }, "DongguanBoyy", "Dongguan Boyye Industrial Co., Ltd" }, @@ -37627,6 +38088,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x80, 0x7B, 0x85, 0xC0 }, "SCALADigital", "SCALA Digital Technology(Ningbo) CO, LTD" }, { { 0x80, 0x7B, 0x85, 0xD0 }, "KaynesTechno", "Kaynes Technology India Pvt Ltd" }, { { 0x80, 0x7B, 0x85, 0xE0 }, "Mersen", "Mersen" }, + { { 0x80, 0xA5, 0x79, 0x00 }, "Benano", "Benano Inc." }, + { { 0x80, 0xA5, 0x79, 0x10 }, "ZheJiangEVTe", "Zhe Jiang EV-Tech Co.,Ltd" }, + { { 0x80, 0xA5, 0x79, 0x20 }, "Jiangsuwonde", "Jiangsu wonder-working electric co., LTD" }, + { { 0x80, 0xA5, 0x79, 0x30 }, "ToolTemp", "Tool-Temp AG" }, + { { 0x80, 0xA5, 0x79, 0x40 }, "HardenedNetw", "Hardened Networks" }, + { { 0x80, 0xA5, 0x79, 0x50 }, "PotronTechno", "Potron Technology Co.,Ltd.," }, + { { 0x80, 0xA5, 0x79, 0x60 }, "XiamenPinnac", "Xiamen Pinnacle Electrical Co., Ltd" }, + { { 0x80, 0xA5, 0x79, 0x70 }, "SiemensEnerg", "Siemens Energy Global GmbH & Co. KG" }, + { { 0x80, 0xA5, 0x79, 0x80 }, "Di3InfotechL", "Di3 Infotech Llp" }, + { { 0x80, 0xA5, 0x79, 0x90 }, "Yovil", "Yovil Ltd." }, + { { 0x80, 0xA5, 0x79, 0xA0 }, "ViewSonic", "ViewSonic Corp" }, + { { 0x80, 0xA5, 0x79, 0xB0 }, "GroundContro", "Ground Control Technologies UK Ltd." }, + { { 0x80, 0xA5, 0x79, 0xC0 }, "BluArmor", "BluArmor" }, + { { 0x80, 0xA5, 0x79, 0xD0 }, "ProvinceIvsu", "Guangdong Province Ivsuan technology co., ltd" }, + { { 0x80, 0xA5, 0x79, 0xE0 }, "UnpluggedTec", "Unplugged Technologies Ltd." }, { { 0x80, 0xE4, 0xDA, 0x00 }, "Wheatstone", "Wheatstone Corporation" }, { { 0x80, 0xE4, 0xDA, 0x10 }, "GuangzhouPin", "Guangzhou Pinzhong Electronic Technology CO., LTD" }, { { 0x80, 0xE4, 0xDA, 0x20 }, "ThurlbyThand", "Thurlby Thandar Instruments LTD" }, @@ -37945,7 +38421,7 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x8C, 0xA6, 0x82, 0x40 }, "ChinaInforma", "China Information Technology Designing&Consulting Institute Co., Ltd." }, { { 0x8C, 0xA6, 0x82, 0x50 }, "QstarTechnol", "Qstar Technology Co,Ltd" }, { { 0x8C, 0xA6, 0x82, 0x60 }, "HuijueNetwor", "ShangHai Huijue Network Communication Equipment CO., Ltd." }, - { { 0x8C, 0xA6, 0x82, 0x70 }, "CanpointEduc", "Wuhan Canpoint Education&Technology Co.,Ltd" }, + { { 0x8C, 0xA6, 0x82, 0x70 }, "Anhuiseekere", "Anhui seeker electronic technology Co.,LTD" }, { { 0x8C, 0xA6, 0x82, 0x80 }, "Schok", "Schok LLC" }, { { 0x8C, 0xA6, 0x82, 0x90 }, "BarkodesBilg", "Barkodes Bilgisayar Sistemleri Bilgi Iletisim ve Y" }, { { 0x8C, 0xA6, 0x82, 0xA0 }, "Schok", "Schok LLC" }, @@ -37983,10 +38459,24 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0x8C, 0xC8, 0xF4, 0xC0 }, "KSTARScience", "Shenzhen KSTAR Science and Technology Co., Ltd" }, { { 0x8C, 0xC8, 0xF4, 0xD0 }, "Xinxunxinton", "Beijing Xinxunxintong Eletronics Co.,Ltd" }, { { 0x8C, 0xC8, 0xF4, 0xE0 }, "EvaporcoolSo", "Evaporcool Solutions" }, + { { 0x90, 0x15, 0x64, 0x00 }, "Fengzhushou", "Fengzhushou Co., Ltd." }, + { { 0x90, 0x15, 0x64, 0x20 }, "PinGenieDbaL", "Pin Genie, Inc.Dba Lockly" }, + { { 0x90, 0x15, 0x64, 0x30 }, "ClintonElect", "Clinton Electronics Corporation" }, + { { 0x90, 0x15, 0x64, 0x40 }, "KontaktMicro", "Kontakt Micro-Location Sp z o.o." }, + { { 0x90, 0x15, 0x64, 0x50 }, "Relectrify", "Relectrify Pty Ltd" }, + { { 0x90, 0x15, 0x64, 0x60 }, "final", "final Inc." }, + { { 0x90, 0x15, 0x64, 0x70 }, "SystemTechno", "Hangzhou System Technology Co.,Ltd" }, + { { 0x90, 0x15, 0x64, 0x80 }, "Heliogen", "Heliogen" }, + { { 0x90, 0x15, 0x64, 0x90 }, "Annapurnalab", "Annapurna labs" }, + { { 0x90, 0x15, 0x64, 0xA0 }, "BunkaShutter", "Bunka Shutter Co., Ltd." }, + { { 0x90, 0x15, 0x64, 0xB0 }, "AMP&MOONSAut", "Shanghai AMP&MOONS'Automation Co.,Ltd." }, + { { 0x90, 0x15, 0x64, 0xC0 }, "Linak", "Linak A/S" }, + { { 0x90, 0x15, 0x64, 0xD0 }, "JiangsuKangj", "Jiangsu Kangjie Data Co., Ltd." }, + { { 0x90, 0x15, 0x64, 0xE0 }, "GuiyagElectr", "Guiyag Electrlcal Control Equipment Co.,Ltd" }, { { 0x90, 0x4E, 0x91, 0x00 }, "Spirtech", "Spirtech" }, { { 0x90, 0x4E, 0x91, 0x10 }, "ApolloVideoT", "Apollo Video Technology" }, { { 0x90, 0x4E, 0x91, 0x20 }, "NorthPoleEng", "North Pole Engineering, Inc." }, - { { 0x90, 0x4E, 0x91, 0x30 }, "Teleepoch", "Teleepoch Ltd" }, + { { 0x90, 0x4E, 0x91, 0x30 }, "GreatTalentT", "Great Talent Technology Limited" }, { { 0x90, 0x4E, 0x91, 0x40 }, "Wrtnodetechn", "Wrtnode technology Inc." }, { { 0x90, 0x4E, 0x91, 0x50 }, "mcf88", "mcf88 SRL" }, { { 0x90, 0x4E, 0x91, 0x60 }, "NuwaRobotics", "Nuwa Robotics (HK) Limited Taiwan Branch" }, @@ -38997,6 +39487,21 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0xC4, 0xA5, 0x59, 0xC0 }, "AltamSl", "Altam Systems Sl" }, { { 0xC4, 0xA5, 0x59, 0xD0 }, "MinoltaSecur", "Minolta Security" }, { { 0xC4, 0xA5, 0x59, 0xE0 }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, + { { 0xC4, 0xCC, 0x37, 0x00 }, "KAIS", "KAIS Co.,Ltd." }, + { { 0xC4, 0xCC, 0x37, 0x10 }, "TaiwanInproI", "Taiwan Inpro International Co.Ltd" }, + { { 0xC4, 0xCC, 0x37, 0x20 }, "CixTechnolog", "Cix Technology Inc." }, + { { 0xC4, 0xCC, 0x37, 0x30 }, "QingdaoGoert", "Qingdao Goertek Intelligent Sensor Co.,Ltd" }, + { { 0xC4, 0xCC, 0x37, 0x40 }, "PineberryPi", "Pineberry Pi" }, + { { 0xC4, 0xCC, 0x37, 0x50 }, "Changzhourun", "Changzhou runningtech industrial technology Co., Ltd." }, + { { 0xC4, 0xCC, 0x37, 0x60 }, "SafetySystem", "Safety System Product GmbH & Co. KG" }, + { { 0xC4, 0xCC, 0x37, 0x70 }, "VicinityTech", "Vicinity Technologies Limited" }, + { { 0xC4, 0xCC, 0x37, 0x80 }, "SmartLicht", "SmartLicht systems co., ltd" }, + { { 0xC4, 0xCC, 0x37, 0x90 }, "SkychersCrea", "Skychers Creations ShenZhen Limited" }, + { { 0xC4, 0xCC, 0x37, 0xA0 }, "INPAQTechnol", "INPAQ Technology Co., Ltd" }, + { { 0xC4, 0xCC, 0x37, 0xB0 }, "DRSNavalPowe", "DRS Naval Power Systems, Inc." }, + { { 0xC4, 0xCC, 0x37, 0xC0 }, "CHAINTECHTec", "CHAINTECH Technology Corp." }, + { { 0xC4, 0xCC, 0x37, 0xD0 }, "NetavoGlobal", "Netavo Global Data Services Ltd" }, + { { 0xC4, 0xCC, 0x37, 0xE0 }, "JobyAviation", "Joby Aviation, Inc." }, { { 0xC4, 0xFF, 0xBC, 0x00 }, "Danego", "Danego BV" }, { { 0xC4, 0xFF, 0xBC, 0x10 }, "VisatechC0", "Visatech C0., Ltd." }, { { 0xC4, 0xFF, 0xBC, 0x20 }, "MobiletronEl", "Mobiletron Electronics Co., Ltd" }, @@ -39116,6 +39621,9 @@ static const manuf_oui28_t global_manuf_oui28_table[] = { { { 0xC8, 0xF5, 0xD6, 0xC0 }, "Eltako", "Eltako GmbH" }, { { 0xC8, 0xF5, 0xD6, 0xD0 }, "Volansystech", "Volansys technologies pvt ltd" }, { { 0xC8, 0xF5, 0xD6, 0xE0 }, "Heitec", "Heitec Ag" }, + { { 0xC8, 0xFF, 0xBF, 0x20 }, "CognizantMob", "Cognizant Mobility GmbH" }, + { { 0xC8, 0xFF, 0xBF, 0x40 }, "Jingyibeifan", "Beijing Jingyibeifang Instrument Co.,Ltd." }, + { { 0xC8, 0xFF, 0xBF, 0xA0 }, "MaestroFood", "Maestro Food Co." }, { { 0xCC, 0x1B, 0xE0, 0x00 }, "MicrotechSys", "Microtech System,Inc" }, { { 0xCC, 0x1B, 0xE0, 0x10 }, "Daotongtianx", "Beijing Daotongtianxia Co.Ltd." }, { { 0xCC, 0x1B, 0xE0, 0x20 }, "iTrinetech", "i-Trinetech Co.,Ltd." }, @@ -42408,7 +42916,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x00, 0x50, 0xC2, 0x88, 0x30 }, "NeocontrolSo", "Neocontrol Soluções em Automação" }, { { 0x00, 0x50, 0xC2, 0x88, 0x40 }, "IPThinking", "IP Thinking A/S" }, { { 0x00, 0x50, 0xC2, 0x88, 0x50 }, "OooNtkImos", "Ooo \"Ntk \"Imos\"" }, - { { 0x00, 0x50, 0xC2, 0x88, 0x60 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x00, 0x50, 0xC2, 0x88, 0x60 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x00, 0x50, 0xC2, 0x88, 0x70 }, "InventisTech", "Inventis Technology Pty Limited" }, { { 0x00, 0x50, 0xC2, 0x88, 0x80 }, "IAdea", "IAdea Corporation" }, { { 0x00, 0x50, 0xC2, 0x88, 0x90 }, "ACSMotionCon", "ACS Motion Control Ltd." }, @@ -43719,7 +44227,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x00, 0x50, 0xC2, 0xDA, 0xC0 }, "RFLElectroni", "RFL Electronics, Inc." }, { { 0x00, 0x50, 0xC2, 0xDA, 0xD0 }, "KeithKoep", "Keith & Koep GmbH" }, { { 0x00, 0x50, 0xC2, 0xDA, 0xE0 }, "SpangPowerEl", "Spang Power Electronics" }, - { { 0x00, 0x50, 0xC2, 0xDA, 0xF0 }, "eumigindustr", "eumig industrie-tv GmbH" }, + { { 0x00, 0x50, 0xC2, 0xDA, 0xF0 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x00, 0x50, 0xC2, 0xDB, 0x00 }, "IMAGOTechnol", "IMAGO Technologies GmbH" }, { { 0x00, 0x50, 0xC2, 0xDB, 0x10 }, "RFCode", "RF Code" }, { { 0x00, 0x50, 0xC2, 0xDB, 0x20 }, "SoftwareCann", "SoftwareCannery" }, @@ -43758,7 +44266,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x00, 0x50, 0xC2, 0xDD, 0x30 }, "Rohde&Schwar", "Rohde&Schwarz Topex SA" }, { { 0x00, 0x50, 0xC2, 0xDD, 0x40 }, "Systech", "Systech" }, { { 0x00, 0x50, 0xC2, 0xDD, 0x50 }, "FriendSpring", "Friend Spring Industrial Co., Ltd." }, - { { 0x00, 0x50, 0xC2, 0xDD, 0x60 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x00, 0x50, 0xC2, 0xDD, 0x60 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x00, 0x50, 0xC2, 0xDD, 0x70 }, "TornadoModul", "Tornado Modular Systems" }, { { 0x00, 0x50, 0xC2, 0xDD, 0x80 }, "LeonardoUK", "Leonardo UK Ltd" }, { { 0x00, 0x50, 0xC2, 0xDD, 0x90 }, "Metraware", "Metraware" }, @@ -44557,7 +45065,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x40, 0xD8, 0x55, 0x0F, 0x90 }, "InvisuaLight", "Invisua Lighting BV" }, { { 0x40, 0xD8, 0x55, 0x0F, 0xA0 }, "Marmitek", "Marmitek BV" }, { { 0x40, 0xD8, 0x55, 0x0F, 0xB0 }, "InfoMacSpzoo", "InfoMac Sp. z o. o. Sp. k." }, - { { 0x40, 0xD8, 0x55, 0x0F, 0xC0 }, "eumigindustr", "eumig industrie-tv GmbH" }, + { { 0x40, 0xD8, 0x55, 0x0F, 0xC0 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x40, 0xD8, 0x55, 0x0F, 0xD0 }, "MONOGRAMtech", "MONOGRAM technologies ltd" }, { { 0x40, 0xD8, 0x55, 0x0F, 0xE0 }, "CytechTechno", "Cytech Technology Pte Ltd" }, { { 0x40, 0xD8, 0x55, 0x0F, 0xF0 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, @@ -45557,7 +46065,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0x30, 0x10 }, "WayneAnalyti", "Wayne Analytics Llc" }, { { 0x70, 0xB3, 0xD5, 0x30, 0x20 }, "DogWatch", "DogWatch Inc" }, { { 0x70, 0xB3, 0xD5, 0x30, 0x30 }, "FuchuGiken", "Fuchu Giken, Inc." }, - { { 0x70, 0xB3, 0xD5, 0x30, 0x40 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x70, 0xB3, 0xD5, 0x30, 0x40 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x70, 0xB3, 0xD5, 0x30, 0x50 }, "CAITRONIndus", "CAITRON Industrial Solutions GmbH" }, { { 0x70, 0xB3, 0xD5, 0x30, 0x60 }, "LemzT", "Lemz-T, Llc" }, { { 0x70, 0xB3, 0xD5, 0x30, 0x70 }, "Energiinnova", "Energi innovation Aps" }, @@ -47118,7 +47626,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0x92, 0x00 }, "Slat", "Slat" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x10 }, "QDevil", "QDevil" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x20 }, "AdcoleSpace", "Adcole Space" }, - { { 0x70, 0xB3, 0xD5, 0x92, 0x30 }, "eumigindustr", "eumig industrie-tv GmbH" }, + { { 0x70, 0xB3, 0xD5, 0x92, 0x30 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x70, 0xB3, 0xD5, 0x92, 0x40 }, "MeridianTech", "Meridian Technologies Inc" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x50 }, "DiamanteLigh", "Diamante Lighting Srl" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x60 }, "Advice", "Advice" }, @@ -47295,7 +47803,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0x9D, 0x10 }, "OS42UG", "OS42 UG (haftungsbeschraenkt)" }, { { 0x70, 0xB3, 0xD5, 0x9D, 0x20 }, "AcsMotionCon", "Acs Motion Control" }, { { 0x70, 0xB3, 0xD5, 0x9D, 0x30 }, "Communicatio", "Communication Technology Ltd." }, - { { 0x70, 0xB3, 0xD5, 0x9D, 0x40 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x70, 0xB3, 0xD5, 0x9D, 0x40 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x70, 0xB3, 0xD5, 0x9D, 0x50 }, "SouthernTier", "Southern Tier Technologies" }, { { 0x70, 0xB3, 0xD5, 0x9D, 0x60 }, "CrownSolarPo", "Crown Solar Power Fencing Systems" }, { { 0x70, 0xB3, 0xD5, 0x9D, 0x70 }, "KMOptoElektr", "KM OptoElektronik GmbH" }, @@ -47343,7 +47851,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0xA0, 0x20 }, "GreenFlux", "GreenFlux" }, { { 0x70, 0xB3, 0xD5, 0xA0, 0x30 }, "Proemion", "Proemion GmbH" }, { { 0x70, 0xB3, 0xD5, 0xA0, 0x40 }, "GaleaElectri", "Galea Electric S.L." }, - { { 0x70, 0xB3, 0xD5, 0xA0, 0x50 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x70, 0xB3, 0xD5, 0xA0, 0x50 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x70, 0xB3, 0xD5, 0xA0, 0x60 }, "KopisMobile", "Kopis Mobile LLC" }, { { 0x70, 0xB3, 0xD5, 0xA0, 0x70 }, "IoTrekTechno", "IoTrek Technology Private Limited" }, { { 0x70, 0xB3, 0xD5, 0xA0, 0x80 }, "BioBusiness", "BioBusiness" }, @@ -47563,7 +48071,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0xAD, 0xF0 }, "SeraphimOptr", "Seraphim Optronics Ltd" }, { { 0x70, 0xB3, 0xD5, 0xAE, 0x00 }, "AnyComm", "AnyComm.Co.,Ltd." }, { { 0x70, 0xB3, 0xD5, 0xAE, 0x10 }, "DimoCore", "DimoCore Corporation" }, - { { 0x70, 0xB3, 0xD5, 0xAE, 0x20 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x70, 0xB3, 0xD5, 0xAE, 0x20 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x70, 0xB3, 0xD5, 0xAE, 0x30 }, "ZhejiangWell", "Zhejiang Wellsun Electric Meter Co.,Ltd" }, { { 0x70, 0xB3, 0xD5, 0xAE, 0x40 }, "NuanceHearin", "Nuance Hearing Ltd." }, { { 0x70, 0xB3, 0xD5, 0xAE, 0x50 }, "BeatCraft", "BeatCraft, Inc." }, @@ -48574,7 +49082,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x70, 0xB3, 0xD5, 0xED, 0x50 }, "battlelinkte", "hangzhou battle link technology Co.,Ltd" }, { { 0x70, 0xB3, 0xD5, 0xED, 0x60 }, "Metrasens", "Metrasens Limited" }, { { 0x70, 0xB3, 0xD5, 0xED, 0x70 }, "Wave", "Wave" }, - { { 0x70, 0xB3, 0xD5, 0xED, 0x80 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x70, 0xB3, 0xD5, 0xED, 0x80 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x70, 0xB3, 0xD5, 0xED, 0x90 }, "AADONACommun", "AADONA Communication Pvt Ltd" }, { { 0x70, 0xB3, 0xD5, 0xED, 0xA0 }, "BreasMedical", "Breas Medical AB" }, { { 0x70, 0xB3, 0xD5, 0xED, 0xB0 }, "NetfortSolut", "Netfort Solutions" }, @@ -48871,8 +49379,10 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x00, 0x00 }, "SuzhouXingxi", "Suzhou Xingxiangyi Precision Manufacturing Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x00, 0x30 }, "BrightenCont", "Brighten Controls LLP" }, { { 0x8C, 0x1F, 0x64, 0x00, 0x90 }, "Converging", "Converging Systems Inc." }, + { { 0x8C, 0x1F, 0x64, 0x00, 0xA0 }, "TaskUnite", "TaskUnite Inc. (dba AMPAworks)" }, { { 0x8C, 0x1F, 0x64, 0x00, 0xC0 }, "GuanShowTech", "Guan Show Technologe Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x01, 0x10 }, "DEUTAWERKE", "DEUTA-WERKE GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x01, 0x40 }, "CristalContr", "Cristal Controles Ltee" }, { { 0x8C, 0x1F, 0x64, 0x01, 0x70 }, "Farmote", "Farmote Limited" }, { { 0x8C, 0x1F, 0x64, 0x01, 0xA0 }, "Paragraf", "Paragraf" }, { { 0x8C, 0x1F, 0x64, 0x01, 0xE0 }, "SCIREQScient", "SCIREQ Scientific Respiratory Equipment Inc" }, @@ -48883,6 +49393,8 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x02, 0x90 }, "HunanShengyu", "Hunan Shengyun Photoelectric Technology Co.,LTD" }, { { 0x8C, 0x1F, 0x64, 0x02, 0xF0 }, "SOLIDpower", "SOLIDpower SpA" }, { { 0x8C, 0x1F, 0x64, 0x03, 0x30 }, "IQHomeKft", "IQ Home Kft." }, + { { 0x8C, 0x1F, 0x64, 0x03, 0x50 }, "RealWear", "RealWear" }, + { { 0x8C, 0x1F, 0x64, 0x03, 0xB0 }, "OrionPower", "Orion Power Systems, Inc." }, { { 0x8C, 0x1F, 0x64, 0x03, 0xC0 }, "SonaBusiness", "Sona Business B.V." }, { { 0x8C, 0x1F, 0x64, 0x03, 0xD0 }, "Horizon", "Horizon.Inc" }, { { 0x8C, 0x1F, 0x64, 0x04, 0x20 }, "Heitec", "Heitec Ag" }, @@ -48907,8 +49419,10 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x06, 0xB0 }, "SanwaSupply", "Sanwa Supply Inc." }, { { 0x8C, 0x1F, 0x64, 0x06, 0xD0 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0x07, 0x10 }, "DorletSau", "Dorlet Sau" }, + { { 0x8C, 0x1F, 0x64, 0x07, 0x60 }, "PackR", "Pack'R" }, { { 0x8C, 0x1F, 0x64, 0x07, 0x70 }, "EngageTechno", "Engage Technologies" }, { { 0x8C, 0x1F, 0x64, 0x07, 0xA0 }, "FlextronicsI", "Flextronics International Kft" }, + { { 0x8C, 0x1F, 0x64, 0x07, 0xD0 }, "TalleresdeEs", "Talleres de Escoriaza SAU" }, { { 0x8C, 0x1F, 0x64, 0x07, 0xE0 }, "FLOYD", "FLOYD inc." }, { { 0x8C, 0x1F, 0x64, 0x07, 0xF0 }, "GSDGroup", "G.S.D Group Inc." }, { { 0x8C, 0x1F, 0x64, 0x08, 0x00 }, "Twinleaf", "Twinleaf LLC" }, @@ -48932,6 +49446,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x09, 0xD0 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0x09, 0xE0 }, "IWSGlobal", "IWS Global Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x09, 0xF0 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, + { { 0x8C, 0x1F, 0x64, 0x0A, 0x00 }, "Techniwave", "Techniwave" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x40 }, "DynamicResea", "Dynamic Research, Inc." }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x80 }, "SamabaNova", "SamabaNova Systems" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xA0 }, "Di3InfotechL", "Di3 Infotech Llp" }, @@ -48972,6 +49487,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x10, 0x30 }, "Kronotech", "Kronotech Srl" }, { { 0x8C, 0x1F, 0x64, 0x10, 0x50 }, "AixControl", "AixControl GmbH" }, { { 0x8C, 0x1F, 0x64, 0x10, 0x70 }, "SCITechnolog", "SCI Technology, Inc." }, + { { 0x8C, 0x1F, 0x64, 0x10, 0xB0 }, "RedLionEurop", "Red Lion Europe GmbH" }, { { 0x8C, 0x1F, 0x64, 0x11, 0x00 }, "XianLinkingB", "Xian Linking Backhaul Telecom Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x11, 0x10 }, "Isac", "Isac Srl" }, { { 0x8C, 0x1F, 0x64, 0x11, 0x30 }, "TimberlineMa", "Timberline Manufacturing" }, @@ -48980,6 +49496,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x11, 0x70 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0x11, 0x80 }, "Automata", "Automata GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0x11, 0x90 }, "FoxconnTechn", "Foxconn Technology Co., Ltd." }, + { { 0x8C, 0x1F, 0x64, 0x11, 0xE0 }, "InfosoftDigi", "Infosoft Digital Design and Services P L" }, { { 0x8C, 0x1F, 0x64, 0x11, 0xF0 }, "NodeUDesign", "NodeUDesign" }, { { 0x8C, 0x1F, 0x64, 0x12, 0x60 }, "HarvestTechn", "Harvest Technology Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x12, 0x80 }, "YulistaInteg", "Yulista Integrated Solution" }, @@ -48989,6 +49506,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x13, 0x30 }, "Vtron", "Vtron Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x13, 0x50 }, "YuvalFichman", "Yuval Fichman" }, { { 0x8C, 0x1F, 0x64, 0x13, 0x80 }, "Vissavisp", "Vissavi sp. z o.o." }, + { { 0x8C, 0x1F, 0x64, 0x13, 0xC0 }, "SiFive", "SiFive Inc" }, { { 0x8C, 0x1F, 0x64, 0x13, 0xF0 }, "Elsist", "Elsist Srl" }, { { 0x8C, 0x1F, 0x64, 0x14, 0x10 }, "CodeBlue", "Code Blue Corporation" }, { { 0x8C, 0x1F, 0x64, 0x14, 0x40 }, "LangfangENNl", "Langfang ENN lntelligent Technology Co.,Ltd." }, @@ -49037,6 +49555,8 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x1B, 0xF0 }, "Ossia", "Ossia Inc" }, { { 0x8C, 0x1F, 0x64, 0x1C, 0x00 }, "INVENTIASp", "INVENTIA Sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0x20 }, "SolidInventL", "Solid Invent Ltda." }, + { { 0x8C, 0x1F, 0x64, 0x1C, 0x90 }, "Pneumax", "Pneumax Spa" }, + { { 0x8C, 0x1F, 0x64, 0x1C, 0xA0 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0xB0 }, "SASYSeK", "SASYS e.K." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0xE0 }, "Eiden", "Eiden Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x1D, 0x00 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, @@ -49068,6 +49588,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x21, 0xE0 }, "Bionetics", "The Bionetics Corporation" }, { { 0x8C, 0x1F, 0x64, 0x22, 0x40 }, "PHBEletronic", "PHB Eletronica Ltda." }, { { 0x8C, 0x1F, 0x64, 0x22, 0x70 }, "Digilens", "Digilens" }, + { { 0x8C, 0x1F, 0x64, 0x22, 0xD0 }, "KaysonsElect", "Kaysons Electricals Private Limited" }, { { 0x8C, 0x1F, 0x64, 0x22, 0xE0 }, "JideCarRastr", "Jide Car Rastreamento e Monitoramento LTDA" }, { { 0x8C, 0x1F, 0x64, 0x23, 0x20 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0x23, 0xD0 }, "MokilaNetwor", "Mokila Networks Pvt Ltd" }, @@ -49081,17 +49602,21 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x25, 0x20 }, "TYTElectroni", "TYT Electronics CO., LTD" }, { { 0x8C, 0x1F, 0x64, 0x25, 0x40 }, "ZhuhaiYunzho", "Zhuhai Yunzhou Intelligence Technology Ltd." }, { { 0x8C, 0x1F, 0x64, 0x25, 0x60 }, "Landinger", "Landinger" }, + { { 0x8C, 0x1F, 0x64, 0x25, 0x70 }, "FourBarsDesi", "Four Bars Design" }, { { 0x8C, 0x1F, 0x64, 0x25, 0xA0 }, "XingtuxinkeE", "Wuhan Xingtuxinke ELectronic Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x25, 0xC0 }, "TimeMachines", "TimeMachines Inc." }, { { 0x8C, 0x1F, 0x64, 0x25, 0xE0 }, "R2Sonic", "R2Sonic, LLC" }, + { { 0x8C, 0x1F, 0x64, 0x25, 0xF0 }, "Acuris", "Acuris Inc" }, { { 0x8C, 0x1F, 0x64, 0x26, 0x30 }, "EPCPower", "EPC Power Corporation" }, { { 0x8C, 0x1F, 0x64, 0x26, 0x40 }, "BRVossIngenj", "BR. Voss Ingenjörsfirma AB" }, { { 0x8C, 0x1F, 0x64, 0x26, 0x70 }, "KarlDUNGS", "Karl DUNGS GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0x26, 0x80 }, "AstroMachine", "Astro Machine Corporation" }, { { 0x8C, 0x1F, 0x64, 0x26, 0xE0 }, "KoizumiLight", "Koizumi Lighting Technology Corp." }, { { 0x8C, 0x1F, 0x64, 0x27, 0x00 }, "Xi‘anHanggua", "Xi‘an Hangguang Satellite and Control Technology Co.,Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x27, 0x30 }, "Distran", "Distran AG" }, { { 0x8C, 0x1F, 0x64, 0x27, 0x40 }, "InvixiumAcce", "Invixium Access Inc" }, { { 0x8C, 0x1F, 0x64, 0x27, 0xB0 }, "Oriux", "Oriux" }, + { { 0x8C, 0x1F, 0x64, 0x28, 0x00 }, "Heitec", "Heitec Ag" }, { { 0x8C, 0x1F, 0x64, 0x28, 0x10 }, "NvpTeco", "Nvp Teco Ltd" }, { { 0x8C, 0x1F, 0x64, 0x28, 0x60 }, "i2s", "i2s" }, { { 0x8C, 0x1F, 0x64, 0x28, 0x90 }, "Craft4Digita", "Craft4 Digital GmbH" }, @@ -49100,10 +49625,12 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x28, 0xD0 }, "AVAMonitorin", "AVA Monitoring AB" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x20 }, "GogoBusiness", "Gogo Business Aviation" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x30 }, "LandisGyrEqu", "Landis+Gyr Equipamentos de Medição Ltda" }, + { { 0x8C, 0x1F, 0x64, 0x29, 0x40 }, "nanoTRONIXCo", "nanoTRONIX Computing Inc." }, { { 0x8C, 0x1F, 0x64, 0x29, 0x60 }, "RoogzhitongT", "Roog zhi tong Technology(Beijing) Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x80 }, "MeggerGerman", "Megger Germany GmbH" }, { { 0x8C, 0x1F, 0x64, 0x29, 0xF0 }, "Nagtech", "Nagtech Llc" }, { { 0x8C, 0x1F, 0x64, 0x2A, 0x10 }, "PantherunTec", "Pantherun Technologies Pvt Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x2A, 0x40 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x2A, 0x50 }, "Nonet", "Nonet Inc" }, { { 0x8C, 0x1F, 0x64, 0x2A, 0x60 }, "RadiationSol", "Radiation Solutions Inc." }, { { 0x8C, 0x1F, 0x64, 0x2A, 0x80 }, "SHALARMSECUR", "SHALARM SECURITY Co.,LTD" }, @@ -49113,6 +49640,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x2B, 0x80 }, "Veinland", "Veinland GmbH" }, { { 0x8C, 0x1F, 0x64, 0x2B, 0xB0 }, "ChakraTechno", "Chakra Technology Ltd" }, { { 0x8C, 0x1F, 0x64, 0x2B, 0xC0 }, "DEUTAWerke", "DEUTA Werke GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x2B, 0xF0 }, "GogoBusiness", "Gogo Business Aviation" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0x20 }, "TexComputer", "Tex Computer Srl" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0x30 }, "TeraDiodePan", "TeraDiode / Panasonic" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0x50 }, "Sysn", "Sysn" }, @@ -49120,6 +49648,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x2C, 0x70 }, "ContraltoAud", "Contralto Audio Srl" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0x80 }, "BRSSistemasE", "BRS Sistemas Eletrônicos" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0xB0 }, "SmartCompone", "Smart Component Technologies Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x2C, 0xC0 }, "SBS", "SBS SpA" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0xD0 }, "TaiwanVtron", "Taiwan Vtron" }, { { 0x8C, 0x1F, 0x64, 0x2C, 0xE0 }, "E2Nova", "E2 Nova Corporation" }, { { 0x8C, 0x1F, 0x64, 0x2D, 0x00 }, "CambridgeRes", "Cambridge Research Systems Ltd" }, @@ -49133,6 +49662,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x2E, 0x80 }, "SonoraNetwor", "Sonora Network Solutions" }, { { 0x8C, 0x1F, 0x64, 0x2E, 0xF0 }, "Invisense", "Invisense AB" }, { { 0x8C, 0x1F, 0x64, 0x2F, 0x00 }, "SwitchScienc", "Switch Science, Inc." }, + { { 0x8C, 0x1F, 0x64, 0x2F, 0x10 }, "DEUTAWerke", "DEUTA Werke GmbH" }, { { 0x8C, 0x1F, 0x64, 0x2F, 0x20 }, "EnlessWirele", "Enless Wireless" }, { { 0x8C, 0x1F, 0x64, 0x2F, 0x50 }, "FloridaR&DAs", "Florida R&D Associates LLC" }, { { 0x8C, 0x1F, 0x64, 0x2F, 0xB0 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, @@ -49147,9 +49677,11 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x30, 0x90 }, "Mect", "Mect Srl" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xA0 }, "XCOMLabs", "XCOM Labs" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xD0 }, "FlextronicsI", "Flextronics International Kft" }, + { { 0x8C, 0x1F, 0x64, 0x30, 0xE0 }, "TangentDesig", "Tangent Design Engineering" }, { { 0x8C, 0x1F, 0x64, 0x31, 0x40 }, "Cedel", "Cedel BV" }, { { 0x8C, 0x1F, 0x64, 0x31, 0x60 }, "PotterElectr", "Potter Electric Signal Company" }, { { 0x8C, 0x1F, 0x64, 0x31, 0x70 }, "BacancyLLP", "Bacancy Systems LLP" }, + { { 0x8C, 0x1F, 0x64, 0x31, 0x90 }, "Exato", "Exato Company" }, { { 0x8C, 0x1F, 0x64, 0x31, 0xA0 }, "Asiga", "Asiga Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x31, 0xB0 }, "jointanalyti", "joint analytical systems GmbH" }, { { 0x8C, 0x1F, 0x64, 0x31, 0xC0 }, "Accumetrics", "Accumetrics" }, @@ -49166,26 +49698,32 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x33, 0x40 }, "OutdoorLink", "OutdoorLink" }, { { 0x8C, 0x1F, 0x64, 0x33, 0x80 }, "RheingoldHea", "Rheingold Heavy LLC" }, { { 0x8C, 0x1F, 0x64, 0x33, 0xC0 }, "HubrisTechno", "Hubris Technologies Private Limited" }, + { { 0x8C, 0x1F, 0x64, 0x33, 0xD0 }, "ArrowElectro", "Arrow (China) Electronics Trading Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x34, 0x20 }, "TimeMachines", "TimeMachines Inc." }, + { { 0x8C, 0x1F, 0x64, 0x34, 0x70 }, "Plutdoo", "Plut d.o.o." }, { { 0x8C, 0x1F, 0x64, 0x34, 0x90 }, "WavesSystem", "Waves System" }, { { 0x8C, 0x1F, 0x64, 0x34, 0xB0 }, "InfraredInsp", "Infrared Inspection Systems" }, { { 0x8C, 0x1F, 0x64, 0x34, 0xC0 }, "KyushuKeisok", "Kyushu Keisokki Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x34, 0xD0 }, "biosilver", "biosilver.co.,ltd" }, { { 0x8C, 0x1F, 0x64, 0x34, 0xF0 }, "SystecDesign", "Systec Designs BV" }, { { 0x8C, 0x1F, 0x64, 0x35, 0x00 }, "biosilver", "biosilver.co.,ltd" }, + { { 0x8C, 0x1F, 0x64, 0x35, 0x20 }, "Mediashare", "Mediashare Ltd" }, { { 0x8C, 0x1F, 0x64, 0x35, 0x40 }, "PaulTagliamo", "Paul Tagliamonte" }, { { 0x8C, 0x1F, 0x64, 0x35, 0x80 }, "DensoManufac", "Denso Manufacturing Tennessee" }, { { 0x8C, 0x1F, 0x64, 0x35, 0xC0 }, "OpgalOptroni", "Opgal Optronic Industries ltd" }, { { 0x8C, 0x1F, 0x64, 0x35, 0xD0 }, "Security&Bes", "Security&Best" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x20 }, "PowerElectro", "Power Electronics Espana, S.L." }, + { { 0x8C, 0x1F, 0x64, 0x36, 0x40 }, "TilakInterna", "Tilak International" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x50 }, "VectorTechno", "Vector Technologies, Llc" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x60 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x70 }, "LAMTECMessun", "LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x90 }, "OrbitalAstro", "Orbital Astronautics Ltd" }, { { 0x8C, 0x1F, 0x64, 0x36, 0xA0 }, "INVENTIS", "INVENTIS S.r.l." }, + { { 0x8C, 0x1F, 0x64, 0x36, 0xB0 }, "ViewSonic", "ViewSonic Corp" }, { { 0x8C, 0x1F, 0x64, 0x36, 0xE0 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, { { 0x8C, 0x1F, 0x64, 0x37, 0x00 }, "WOLFAdvanced", "WOLF Advanced Technology" }, { { 0x8C, 0x1F, 0x64, 0x37, 0x20 }, "WINKStreamin", "WINK Streaming" }, + { { 0x8C, 0x1F, 0x64, 0x37, 0x50 }, "Duevi", "Duevi Srl" }, { { 0x8C, 0x1F, 0x64, 0x37, 0x60 }, "DIASInfrared", "DIAS Infrared GmbH" }, { { 0x8C, 0x1F, 0x64, 0x37, 0x80 }, "sparPowerTec", "spar Power Technologies Inc." }, { { 0x8C, 0x1F, 0x64, 0x37, 0xF0 }, "ScarletTech", "Scarlet Tech Co., Ltd." }, @@ -49198,10 +49736,12 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x38, 0xB0 }, "BorrellUSA", "Borrell USA Corp" }, { { 0x8C, 0x1F, 0x64, 0x38, 0xC0 }, "XiamenZhixia", "Xiamen Zhixiaojin Intelligent Technology Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x38, 0xD0 }, "WilsonElectr", "Wilson Electronics" }, - { { 0x8C, 0x1F, 0x64, 0x38, 0xE0 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x8C, 0x1F, 0x64, 0x38, 0xE0 }, "WartsilaVoya", "Wartsila Voyage Oy" }, + { { 0x8C, 0x1F, 0x64, 0x38, 0xF0 }, "Unabiz", "Unabiz" }, { { 0x8C, 0x1F, 0x64, 0x39, 0x00 }, "SkyLabsdoo", "SkyLabs d.o.o." }, { { 0x8C, 0x1F, 0x64, 0x39, 0x10 }, "Cpc", "Cpc (Uk)" }, { { 0x8C, 0x1F, 0x64, 0x39, 0x20 }, "mmckommunika", "mmc kommunikationstechnologie gmbh" }, + { { 0x8C, 0x1F, 0x64, 0x39, 0x30 }, "GreSystem", "Gre System Inc." }, { { 0x8C, 0x1F, 0x64, 0x39, 0x70 }, "Intel", "Intel Corporate" }, { { 0x8C, 0x1F, 0x64, 0x39, 0x80 }, "SoftwarePlus", "Software Systems Plus" }, { { 0x8C, 0x1F, 0x64, 0x39, 0xA0 }, "GoldingAudio", "Golding Audio Ltd" }, @@ -49219,6 +49759,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x3B, 0x50 }, "Svms", "Svms" }, { { 0x8C, 0x1F, 0x64, 0x3B, 0x60 }, "TexComputer", "Tex Computer Srl" }, { { 0x8C, 0x1F, 0x64, 0x3B, 0x70 }, "AiBlox", "Ai-Blox" }, + { { 0x8C, 0x1F, 0x64, 0x3B, 0x80 }, "HubrisTechno", "Hubris Technologies Private Limited" }, { { 0x8C, 0x1F, 0x64, 0x3B, 0xB0 }, "ClausalCompu", "Clausal Computing Oy" }, { { 0x8C, 0x1F, 0x64, 0x3C, 0x10 }, "SuzhouLiansh", "Suzhou Lianshichuangzhi Technology Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x3C, 0x40 }, "NavSysTechno", "NavSys Technology Inc." }, @@ -49239,6 +49780,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x3E, 0x80 }, "Ruichuangte", "Ruichuangte" }, { { 0x8C, 0x1F, 0x64, 0x3E, 0xE0 }, "BnBInformati", "BnB Information Technology" }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x40 }, "ActelserSL", "Actelser S.L." }, + { { 0x8C, 0x1F, 0x64, 0x3F, 0x70 }, "MitsubishiEl", "Mitsubishi Electric India Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x3F, 0xC0 }, "STVElectroni", "STV Electronic GmbH" }, { { 0x8C, 0x1F, 0x64, 0x3F, 0xE0 }, "Plumsp", "Plum sp. z.o.o." }, { { 0x8C, 0x1F, 0x64, 0x3F, 0xF0 }, "UiseeAutomot", "Uisee(Shanghai) Automotive Technologies Ltd." }, @@ -49256,6 +49798,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x41, 0xC0 }, "KSE", "KSE GmbH" }, { { 0x8C, 0x1F, 0x64, 0x41, 0xD0 }, "AspenSpectra", "Aspen Spectra Sdn Bhd" }, { { 0x8C, 0x1F, 0x64, 0x41, 0xE0 }, "Linxpeed", "Linxpeed Limited" }, + { { 0x8C, 0x1F, 0x64, 0x41, 0xF0 }, "Gigalane", "Gigalane" }, { { 0x8C, 0x1F, 0x64, 0x42, 0x30 }, "HiwinMikrosy", "Hiwin Mikrosystem Corp." }, { { 0x8C, 0x1F, 0x64, 0x42, 0x60 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x8C, 0x1F, 0x64, 0x42, 0x90 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, @@ -49263,6 +49806,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x43, 0x20 }, "Rebel", "Rebel Systems" }, { { 0x8C, 0x1F, 0x64, 0x43, 0x80 }, "Integerpl", "Integer.pl S.A." }, { { 0x8C, 0x1F, 0x64, 0x43, 0x90 }, "Bornico", "Bornico" }, + { { 0x8C, 0x1F, 0x64, 0x43, 0xA0 }, "Spacelite", "Spacelite Inc" }, { { 0x8C, 0x1F, 0x64, 0x43, 0xD0 }, "SolidStateSu", "Solid State Supplies Ltd" }, { { 0x8C, 0x1F, 0x64, 0x44, 0x00 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x44, 0x10 }, "NovantaIMS", "Novanta IMS" }, @@ -49271,6 +49815,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x44, 0xF0 }, "RealD", "RealD, Inc." }, { { 0x8C, 0x1F, 0x64, 0x45, 0x10 }, "GuanShowTech", "Guan Show Technologe Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x45, 0x40 }, "KJKlimatekni", "KJ Klimateknik A/S" }, + { { 0x8C, 0x1F, 0x64, 0x45, 0x70 }, "AngweiInform", "Shanghai Angwei Information Technology Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x45, 0xB0 }, "AoxingTechno", "Beijing Aoxing Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x45, 0xD0 }, "FuzhouTucsen", "Fuzhou Tucsen Photonics Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x45, 0xF0 }, "ToshniwalSec", "Toshniwal Security Solutions Pvt Ltd" }, @@ -49285,18 +49830,21 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x47, 0x60 }, "ClairGlobal", "Clair Global Corporation" }, { { 0x8C, 0x1F, 0x64, 0x47, 0xA0 }, "MissingLinkE", "Missing Link Electronics, Inc." }, { { 0x8C, 0x1F, 0x64, 0x47, 0xD0 }, "EbNeuro", "Eb Neuro Spa" }, + { { 0x8C, 0x1F, 0x64, 0x48, 0x10 }, "VirtualVTrad", "VirtualV Trading Limited" }, { { 0x8C, 0x1F, 0x64, 0x48, 0x70 }, "TECHKON", "TECHKON GmbH" }, { { 0x8C, 0x1F, 0x64, 0x48, 0x90 }, "Hupi", "Hupi" }, + { { 0x8C, 0x1F, 0x64, 0x48, 0xB0 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0x48, 0xF0 }, "Mecos", "Mecos AG" }, { { 0x8C, 0x1F, 0x64, 0x49, 0x30 }, "SecurityProd", "Security Products International, LLC" }, { { 0x8C, 0x1F, 0x64, 0x49, 0x50 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x49, 0x60 }, "QualsenTechn", "Qualsen(Guangzhou)Technologies Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x49, 0x80 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x49, 0x90 }, "Tiama", "Tiama" }, - { { 0x8C, 0x1F, 0x64, 0x49, 0xB0 }, "WartsilaVoya", "Wartsila Voyage Limited" }, + { { 0x8C, 0x1F, 0x64, 0x49, 0xB0 }, "WartsilaVoya", "Wartsila Voyage Oy" }, { { 0x8C, 0x1F, 0x64, 0x4A, 0x00 }, "Tantec", "Tantec A/S" }, { { 0x8C, 0x1F, 0x64, 0x4A, 0x10 }, "BreasMedical", "Breas Medical AB" }, { { 0x8C, 0x1F, 0x64, 0x4A, 0x20 }, "Bludigit", "Bludigit SpA" }, + { { 0x8C, 0x1F, 0x64, 0x4A, 0x60 }, "AlaireTechno", "Alaire Technologies Inc" }, { { 0x8C, 0x1F, 0x64, 0x4A, 0x90 }, "MartecMarine", "Martec Marine S.p.a." }, { { 0x8C, 0x1F, 0x64, 0x4A, 0xC0 }, "Vekto", "Vekto" }, { { 0x8C, 0x1F, 0x64, 0x4A, 0xE0 }, "KCS", "KCS Co., Ltd." }, @@ -49367,8 +49915,10 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x55, 0x60 }, "BAE", "BAE Systems" }, { { 0x8C, 0x1F, 0x64, 0x55, 0x70 }, "InliteDesign", "In-lite Design BV" }, { { 0x8C, 0x1F, 0x64, 0x55, 0x80 }, "Scitel", "Scitel" }, + { { 0x8C, 0x1F, 0x64, 0x55, 0xC0 }, "Schildknecht", "Schildknecht AG" }, { { 0x8C, 0x1F, 0x64, 0x55, 0xE0 }, "Hanateksyste", "Hanateksystem" }, { { 0x8C, 0x1F, 0x64, 0x56, 0x00 }, "DexterLaundr", "Dexter Laundry Inc." }, + { { 0x8C, 0x1F, 0x64, 0x56, 0xB0 }, "Avida", "Avida, Inc." }, { { 0x8C, 0x1F, 0x64, 0x56, 0xC0 }, "ELTEK", "ELTEK SpA" }, { { 0x8C, 0x1F, 0x64, 0x56, 0xD0 }, "Acod", "Acod" }, { { 0x8C, 0x1F, 0x64, 0x56, 0xE0 }, "Euklis", "Euklis srl" }, @@ -49398,6 +49948,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x5B, 0x00 }, "Sonel", "Sonel S.A." }, { { 0x8C, 0x1F, 0x64, 0x5B, 0x30 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x8C, 0x1F, 0x64, 0x5B, 0x40 }, "AxionLightin", "Axion Lighting" }, + { { 0x8C, 0x1F, 0x64, 0x5B, 0x90 }, "ViewSonic", "ViewSonic Corp" }, { { 0x8C, 0x1F, 0x64, 0x5B, 0xC0 }, "Heitec", "Heitec Ag" }, { { 0x8C, 0x1F, 0x64, 0x5B, 0xD0 }, "MPTServicepr", "MPT-Service project" }, { { 0x8C, 0x1F, 0x64, 0x5B, 0xE0 }, "BenchmarkEle", "Benchmark Electronics BV" }, @@ -49406,6 +49957,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x5C, 0xB0 }, "dinosys", "dinosys" }, { { 0x8C, 0x1F, 0x64, 0x5C, 0xD0 }, "MahindrMahin", "Mahindr & Mahindra" }, { { 0x8C, 0x1F, 0x64, 0x5C, 0xE0 }, "Packetalk", "Packetalk LLC" }, + { { 0x8C, 0x1F, 0x64, 0x5D, 0x00 }, "ImageEnginee", "Image Engineering" }, { { 0x8C, 0x1F, 0x64, 0x5D, 0x10 }, "TwinDevelopm", "Twin Development" }, { { 0x8C, 0x1F, 0x64, 0x5D, 0x30 }, "EloyWater", "Eloy Water" }, { { 0x8C, 0x1F, 0x64, 0x5D, 0x60 }, "PortraitDisp", "Portrait Displays, Inc." }, @@ -49421,6 +49973,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x5E, 0x70 }, "HOSCHGebäude", "HOSCH Gebäude Automation Neue Produkte GmbH" }, { { 0x8C, 0x1F, 0x64, 0x5E, 0xA0 }, "BTGInstrumen", "BTG Instruments AB" }, { { 0x8C, 0x1F, 0x64, 0x5E, 0xB0 }, "Tiama", "Tiama" }, + { { 0x8C, 0x1F, 0x64, 0x5E, 0xC0 }, "NvBekaert", "Nv Bekaert Sa" }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x10 }, "HDLink", "HD Link Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x50 }, "HongSeok", "HongSeok Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x70 }, "EagleHarborT", "Eagle Harbor Technologies, Inc." }, @@ -49472,6 +50025,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x66, 0x00 }, "LlcNtpc", "Llc Ntpc" }, { { 0x8C, 0x1F, 0x64, 0x66, 0x20 }, "SuzhouLeamor", "Suzhou Leamore Optronics Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x66, 0x30 }, "maltechTechn", "mal-tech Technological Solutions Ltd/CRISP" }, + { { 0x8C, 0x1F, 0x64, 0x66, 0x40 }, "Thermoeye", "Thermoeye Inc" }, { { 0x8C, 0x1F, 0x64, 0x66, 0xC0 }, "LineagePower", "Lineage Power Pvt Ltd.," }, { { 0x8C, 0x1F, 0x64, 0x66, 0xD0 }, "Vt100", "Vt100 Srl" }, { { 0x8C, 0x1F, 0x64, 0x66, 0xF0 }, "Elix", "Elix Systems SA" }, @@ -49482,6 +50036,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x67, 0x70 }, "FreySJ", "Frey S.J." }, { { 0x8C, 0x1F, 0x64, 0x67, 0xA0 }, "MG", "MG s.r.l." }, { { 0x8C, 0x1F, 0x64, 0x67, 0xC0 }, "EnstoProtrol", "Ensto Protrol AB" }, + { { 0x8C, 0x1F, 0x64, 0x67, 0xD0 }, "RaviTeleinfo", "Ravi Teleinfomatics" }, { { 0x8C, 0x1F, 0x64, 0x67, 0xE0 }, "LDAAudiotech", "LDA Audiotech" }, { { 0x8C, 0x1F, 0x64, 0x67, 0xF0 }, "HamamatsuPho", "Hamamatsu Photonics K.K." }, { { 0x8C, 0x1F, 0x64, 0x68, 0x30 }, "Slat", "Slat" }, @@ -49489,6 +50044,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x69, 0x10 }, "WendeTan", "Wende Tan" }, { { 0x8C, 0x1F, 0x64, 0x69, 0x20 }, "NexilisElect", "Nexilis Electronics India Pvt Ltd (PICSYS)" }, { { 0x8C, 0x1F, 0x64, 0x69, 0x40 }, "HubbellPower", "Hubbell Power Systems" }, + { { 0x8C, 0x1F, 0x64, 0x69, 0x60 }, "EmersonRosem", "Emerson Rosemount Analytical" }, { { 0x8C, 0x1F, 0x64, 0x69, 0x70 }, "Sontay", "Sontay Ltd." }, { { 0x8C, 0x1F, 0x64, 0x69, 0x80 }, "ArcusEDS", "Arcus-EDS GmbH" }, { { 0x8C, 0x1F, 0x64, 0x69, 0x90 }, "FIDICA", "FIDICA GmbH & Co. KG" }, @@ -49496,14 +50052,17 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x6A, 0x00 }, "Avionica", "Avionica" }, { { 0x8C, 0x1F, 0x64, 0x6A, 0x40 }, "Automata", "Automata Spa" }, { { 0x8C, 0x1F, 0x64, 0x6A, 0x80 }, "Bulwark", "Bulwark" }, + { { 0x8C, 0x1F, 0x64, 0x6A, 0xB0 }, "TohoSystem", "Toho System Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6A, 0xD0 }, "PotterElectr", "Potter Electric Signal Company" }, { { 0x8C, 0x1F, 0x64, 0x6A, 0xE0 }, "BrayInternat", "Bray International" }, + { { 0x8C, 0x1F, 0x64, 0x6B, 0x00 }, "ONetTechnolo", "O-Net Technologies(Shenzhen)Group Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6B, 0x10 }, "SpecialistMe", "Specialist Mechanical Engineers (PTY)LTD" }, { { 0x8C, 0x1F, 0x64, 0x6B, 0x30 }, "Feritech", "Feritech Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6B, 0x50 }, "ONetCommunic", "O-Net Communications(Shenzhen)Limited" }, { { 0x8C, 0x1F, 0x64, 0x6B, 0x70 }, "AlphaOmegaTe", "Alpha-Omega Technology GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0x6B, 0x90 }, "GSIndustrieE", "GS Industrie-Elektronik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x6B, 0xB0 }, "SeasonElectr", "Season Electronics Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x6B, 0xD0 }, "IoTWaterAnal", "IoT Water Analytics S.L." }, { { 0x8C, 0x1F, 0x64, 0x6C, 0x60 }, "Fit", "Fit" }, { { 0x8C, 0x1F, 0x64, 0x6C, 0xB0 }, "GJDManufactu", "GJD Manufacturing" }, { { 0x8C, 0x1F, 0x64, 0x6C, 0xD0 }, "XingtuxinkeE", "Wuhan Xingtuxinke ELectronic Co.,Ltd" }, @@ -49514,12 +50073,15 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x6D, 0x90 }, "Khimo", "Khimo" }, { { 0x8C, 0x1F, 0x64, 0x6D, 0xC0 }, "IntrinsicInn", "Intrinsic Innovation, LLC" }, { { 0x8C, 0x1F, 0x64, 0x6D, 0xD0 }, "ViewSonic", "ViewSonic Corp" }, + { { 0x8C, 0x1F, 0x64, 0x6D, 0xE0 }, "SUN・TECTRO", "SUN・TECTRO,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6E, 0x20 }, "SCU", "SCU Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6E, 0x30 }, "ViewSonicInt", "ViewSonic International Corporation" }, { { 0x8C, 0x1F, 0x64, 0x6E, 0x40 }, "RABMicroflui", "RAB Microfluidics R&D Company Ltd" }, { { 0x8C, 0x1F, 0x64, 0x6E, 0xA0 }, "KMtronic", "KMtronic ltd" }, { { 0x8C, 0x1F, 0x64, 0x6E, 0xC0 }, "BitTradeOne", "Bit Trade One, Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6F, 0x40 }, "Elsist", "Elsist Srl" }, + { { 0x8C, 0x1F, 0x64, 0x6F, 0x70 }, "EddyWorks", "EddyWorks Co.,Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x6F, 0x80 }, "ProikerTechn", "Proiker Technology Sl" }, { { 0x8C, 0x1F, 0x64, 0x6F, 0x90 }, "Anddoro", "Anddoro Llc" }, { { 0x8C, 0x1F, 0x64, 0x6F, 0xC0 }, "HM", "HM Systems A/S" }, { { 0x8C, 0x1F, 0x64, 0x70, 0x00 }, "Quantaflow", "Quantaflow" }, @@ -49532,7 +50094,9 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x71, 0x20 }, "NexionDataPL", "Nexion Data Systems P/L" }, { { 0x8C, 0x1F, 0x64, 0x71, 0x80 }, "Abb", "Abb" }, { { 0x8C, 0x1F, 0x64, 0x71, 0xB0 }, "Adasky", "Adasky Ltd." }, + { { 0x8C, 0x1F, 0x64, 0x71, 0xD0 }, "Epigonspolsr", "Epigon spol. s r.o." }, { { 0x8C, 0x1F, 0x64, 0x72, 0x10 }, "MSMilindRama", "M/S Milind Ramachandra Rajwade" }, + { { 0x8C, 0x1F, 0x64, 0x72, 0x20 }, "Artome", "Artome Oy" }, { { 0x8C, 0x1F, 0x64, 0x72, 0x30 }, "Celestica", "Celestica Inc." }, { { 0x8C, 0x1F, 0x64, 0x72, 0x60 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x72, 0xA0 }, "DorletSau", "Dorlet Sau" }, @@ -49540,6 +50104,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x73, 0x10 }, "ehoosys", "ehoosys Co.,LTD." }, { { 0x8C, 0x1F, 0x64, 0x73, 0x30 }, "VideoNetwork", "Video Network Security" }, { { 0x8C, 0x1F, 0x64, 0x73, 0x70 }, "VytahyVymysl", "Vytahy-Vymyslicky s.r.o." }, + { { 0x8C, 0x1F, 0x64, 0x73, 0x80 }, "ssolgrid", "ssolgrid" }, { { 0x8C, 0x1F, 0x64, 0x73, 0x90 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0x73, 0xB0 }, "FinkZeitsyst", "Fink Zeitsysteme GmbH" }, { { 0x8C, 0x1F, 0x64, 0x73, 0xC0 }, "Reo", "Reo Ag" }, @@ -49550,11 +50115,14 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x74, 0x40 }, "ChaseoConnec", "Chaseo Connectome" }, { { 0x8C, 0x1F, 0x64, 0x74, 0x60 }, "SensusHealth", "Sensus Healthcare" }, { { 0x8C, 0x1F, 0x64, 0x74, 0x70 }, "VisionTIRMul", "VisionTIR Multispectral Technology" }, + { { 0x8C, 0x1F, 0x64, 0x74, 0x90 }, "Tiama", "Tiama" }, { { 0x8C, 0x1F, 0x64, 0x74, 0xB0 }, "ARModularRF", "AR Modular RF" }, { { 0x8C, 0x1F, 0x64, 0x74, 0xE0 }, "OpenParkTech", "OpenPark Technologies Kft" }, + { { 0x8C, 0x1F, 0x64, 0x75, 0x50 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0x75, 0x60 }, "StarInternat", "Star Systems International Limited" }, { { 0x8C, 0x1F, 0x64, 0x75, 0x90 }, "Systel", "Systel Inc" }, { { 0x8C, 0x1F, 0x64, 0x75, 0xF0 }, "ASTRACOM", "ASTRACOM Co. Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x76, 0x00 }, "QLightAS", "Q-Light AS" }, { { 0x8C, 0x1F, 0x64, 0x76, 0x20 }, "SupportProfe", "Support Professionals B.V." }, { { 0x8C, 0x1F, 0x64, 0x76, 0x40 }, "nanoTRONIXCo", "nanoTRONIX Computing Inc." }, { { 0x8C, 0x1F, 0x64, 0x76, 0x50 }, "MicroElectro", "Micro Electroninc Products" }, @@ -49564,6 +50132,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x77, 0x40 }, "navXperience", "navXperience GmbH" }, { { 0x8C, 0x1F, 0x64, 0x77, 0x50 }, "BectonDickin", "Becton Dickinson" }, { { 0x8C, 0x1F, 0x64, 0x77, 0x70 }, "Sicon", "Sicon srl" }, + { { 0x8C, 0x1F, 0x64, 0x77, 0x90 }, "InventioDiNi", "Inventio Di Nicolo' Bordoli" }, { { 0x8C, 0x1F, 0x64, 0x77, 0xB0 }, "DbSas", "Db Sas" }, { { 0x8C, 0x1F, 0x64, 0x77, 0xC0 }, "OrangeTreeTe", "Orange Tree Technologies Ltd" }, { { 0x8C, 0x1F, 0x64, 0x77, 0xE0 }, "Institutegeo", "Institute of geophysics, China earthquake administration" }, @@ -49578,6 +50147,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x79, 0xD0 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x79, 0xE0 }, "AccemicTechn", "Accemic Technologies GmbH" }, { { 0x8C, 0x1F, 0x64, 0x79, 0xF0 }, "HiwinMikrosy", "Hiwin Mikrosystem Corp." }, + { { 0x8C, 0x1F, 0x64, 0x7A, 0x00 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, { { 0x8C, 0x1F, 0x64, 0x7A, 0x10 }, "GuardianCont", "Guardian Controls International Ltd" }, { { 0x8C, 0x1F, 0x64, 0x7A, 0x40 }, "Hirotech", "Hirotech inc." }, { { 0x8C, 0x1F, 0x64, 0x7A, 0x60 }, "OTMetric", "OTMetric" }, @@ -49618,16 +50188,20 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x7E, 0xC0 }, "Methods2Busi", "Methods2Business B.V." }, { { 0x8C, 0x1F, 0x64, 0x7E, 0xE0 }, "OrangePrecis", "Orange Precision Measurement LLC" }, { { 0x8C, 0x1F, 0x64, 0x7F, 0x10 }, "AEMSingapore", "AEM Singapore Pte Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x7F, 0x40 }, "GMInternatio", "G.M. International srl" }, { { 0x8C, 0x1F, 0x64, 0x7F, 0x80 }, "FleetSafeInd", "FleetSafe India Private Limited" }, + { { 0x8C, 0x1F, 0x64, 0x7F, 0xC0 }, "MitsubishiEl", "Mitsubishi Electric Klimat Transportation Systems S.p.A." }, + { { 0x8C, 0x1F, 0x64, 0x80, 0x00 }, "SDGTelecomEq", "Shenzhen SDG Telecom Equipment Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x80, 0x10 }, "ZhejiangLaol", "Zhejiang Laolan Information Technology Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x30 }, "MOSCAElektro", "MOSCA Elektronik und Antriebstechnik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x40 }, "EAElektroAut", "EA Elektro-Automatik" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x70 }, "GiordanoCont", "Giordano Controls Spa" }, { { 0x8C, 0x1F, 0x64, 0x80, 0xC0 }, "ThermifyHold", "Thermify Holdings Ltd" }, - { { 0x8C, 0x1F, 0x64, 0x80, 0xE0 }, "TaoglasIoTSo", "Taoglas IoT Solutions Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x80, 0xE0 }, "TxWireless", "TxWireless Limited" }, { { 0x8C, 0x1F, 0x64, 0x80, 0xF0 }, "ASYS", "ASYS Corporation" }, { { 0x8C, 0x1F, 0x64, 0x81, 0x00 }, "Kymata", "Kymata Srl" }, { { 0x8C, 0x1F, 0x64, 0x81, 0x10 }, "PanoramicPow", "Panoramic Power" }, + { { 0x8C, 0x1F, 0x64, 0x81, 0x30 }, "Pribusin", "Pribusin Inc." }, { { 0x8C, 0x1F, 0x64, 0x81, 0x70 }, "nkemarineele", "nke marine electronics" }, { { 0x8C, 0x1F, 0x64, 0x81, 0xA0 }, "GeminiElectr", "Gemini Electronics B.V." }, { { 0x8C, 0x1F, 0x64, 0x81, 0xF0 }, "ViewSonic", "ViewSonic Corp" }, @@ -49651,12 +50225,14 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x85, 0x20 }, "Abb", "Abb" }, { { 0x8C, 0x1F, 0x64, 0x85, 0x50 }, "ekundenservi", "e.kundenservice Netz GmbH" }, { { 0x8C, 0x1F, 0x64, 0x85, 0x60 }, "GartenAutoma", "Garten Automation" }, + { { 0x8C, 0x1F, 0x64, 0x85, 0x80 }, "SFERA", "SFERA srl" }, { { 0x8C, 0x1F, 0x64, 0x85, 0xB0 }, "AtlanticPump", "Atlantic Pumps Ltd" }, { { 0x8C, 0x1F, 0x64, 0x85, 0xC0 }, "Zing5gCommun", "Zing 5g Communications Canada Inc." }, { { 0x8C, 0x1F, 0x64, 0x86, 0x30 }, "EngiNe", "EngiNe srl" }, { { 0x8C, 0x1F, 0x64, 0x86, 0x70 }, "ForeverEngin", "Forever Engineering Systems Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x86, 0x80 }, "PeakeTechnol", "Shenzhen Peake Technology Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x86, 0xA0 }, "VisionToolsB", "VisionTools Bildanalyse Systeme GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x86, 0xC0 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, { { 0x8C, 0x1F, 0x64, 0x86, 0xF0 }, "NewEdgeSigna", "NewEdge Signal Solutions LLC" }, { { 0x8C, 0x1F, 0x64, 0x87, 0x60 }, "fmadengineer", "fmad engineering" }, { { 0x8C, 0x1F, 0x64, 0x87, 0x80 }, "GreenAccess", "Green Access Ltd" }, @@ -49667,6 +50243,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x88, 0x20 }, "TmyTechnolog", "Tmy Technology Inc." }, { { 0x8C, 0x1F, 0x64, 0x88, 0x30 }, "DEUTAWERKE", "DEUTA-WERKE GmbH" }, { { 0x8C, 0x1F, 0x64, 0x88, 0xB0 }, "TaiwanAulisa", "Taiwan Aulisa Medical Devices Technologies, Inc" }, + { { 0x8C, 0x1F, 0x64, 0x88, 0xC0 }, "SALNavigatio", "SAL Navigation AB" }, { { 0x8C, 0x1F, 0x64, 0x88, 0xD0 }, "PantherunTec", "Pantherun Technologies Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0x88, 0xE0 }, "CubeWorks", "CubeWorks, Inc." }, { { 0x8C, 0x1F, 0x64, 0x89, 0x00 }, "WonATech", "WonATech Co., Ltd." }, @@ -49689,11 +50266,13 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x8C, 0x20 }, "Cirrus", "Cirrus Systems, Inc." }, { { 0x8C, 0x1F, 0x64, 0x8C, 0x40 }, "HermesNetwor", "Hermes Network Inc" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0x50 }, "NextTMicrowa", "NextT Microwave Inc" }, + { { 0x8C, 0x1F, 0x64, 0x8C, 0xB0 }, "Chromaviso", "Chromaviso A/S" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0xF0 }, "Diffraction", "Diffraction Limited" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0x00 }, "Enerthing", "Enerthing GmbH" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0x10 }, "OrlacoProduc", "Orlaco Products B.V." }, { { 0x8C, 0x1F, 0x64, 0x8D, 0x40 }, "RecabSweden", "Recab Sweden AB" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0x50 }, "Agramkow", "Agramkow A/S" }, + { { 0x8C, 0x1F, 0x64, 0x8D, 0x60 }, "ADCGlobalTec", "ADC Global Technology Sdn Bhd" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0x90 }, "PietroFioren", "Pietro Fiorentini Spa" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0xA0 }, "Dart", "Dart Systems Ltd" }, { { 0x8C, 0x1F, 0x64, 0x8D, 0xE0 }, "IconetServic", "Iconet Services" }, @@ -49701,6 +50280,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x8E, 0x00 }, "ReivaxAutoma", "Reivax S/A Automação e Controle" }, { { 0x8C, 0x1F, 0x64, 0x8E, 0x20 }, "ALPHA", "ALPHA Corporation" }, { { 0x8C, 0x1F, 0x64, 0x8E, 0x30 }, "UniTikTechno", "UniTik Technology Co., Limited" }, + { { 0x8C, 0x1F, 0x64, 0x8E, 0x40 }, "Cominfo", "Cominfo, Inc." }, { { 0x8C, 0x1F, 0x64, 0x8E, 0x50 }, "Druck", "Druck Ltd." }, { { 0x8C, 0x1F, 0x64, 0x8E, 0x80 }, "Cominfo", "Cominfo, Inc." }, { { 0x8C, 0x1F, 0x64, 0x8E, 0x90 }, "Vesperix", "Vesperix Corporation" }, @@ -49726,6 +50306,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x91, 0xB0 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, { { 0x8C, 0x1F, 0x64, 0x91, 0xC0 }, "CospowersCha", "Cospowers Changsha Branch" }, { { 0x8C, 0x1F, 0x64, 0x91, 0xD0 }, "enlighten", "enlighten" }, + { { 0x8C, 0x1F, 0x64, 0x92, 0x00 }, "VuWallTechno", "VuWall Technology Europe GmbH" }, { { 0x8C, 0x1F, 0x64, 0x92, 0x30 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x92, 0x40 }, "MagicsTechno", "Magics Technologies" }, { { 0x8C, 0x1F, 0x64, 0x92, 0x80 }, "ITG", "ITG Co.Ltd" }, @@ -49742,9 +50323,11 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x94, 0x90 }, "tickIoT", "tickIoT Inc." }, { { 0x8C, 0x1F, 0x64, 0x94, 0xC0 }, "Bcmtech", "Bcmtech" }, { { 0x8C, 0x1F, 0x64, 0x94, 0xE0 }, "Monnit", "Monnit Corporation" }, + { { 0x8C, 0x1F, 0x64, 0x94, 0xF0 }, "FörsterTechn", "Förster Technik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x95, 0x60 }, "PaulmannLich", "Paulmann Licht GmbH" }, { { 0x8C, 0x1F, 0x64, 0x95, 0x80 }, "SancharTeles", "Sanchar Telesystems limited" }, { { 0x8C, 0x1F, 0x64, 0x95, 0xA0 }, "LongyunLight", "Shenzhen Longyun Lighting Electric Appliances Co., Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x95, 0xB0 }, "Qualitel", "Qualitel Corporation" }, { { 0x8C, 0x1F, 0x64, 0x95, 0xC0 }, "Fasetto", "Fasetto, Inc." }, { { 0x8C, 0x1F, 0x64, 0x96, 0x20 }, "UmanoMedical", "Umano Medical Inc." }, { { 0x8C, 0x1F, 0x64, 0x96, 0x30 }, "GogoBusiness", "Gogo Business Aviation" }, @@ -49763,6 +50346,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x98, 0x40 }, "AbacusPeriph", "Abacus Peripherals Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0x98, 0x70 }, "PeterHuberKa", "Peter Huber Kaeltemaschinenbau SE" }, { { 0x8C, 0x1F, 0x64, 0x98, 0x90 }, "PhenX", "Phe-nX B.V." }, + { { 0x8C, 0x1F, 0x64, 0x98, 0xB0 }, "SyscomInstru", "Syscom Instruments SA" }, { { 0x8C, 0x1F, 0x64, 0x98, 0xC0 }, "PANBusinessC", "PAN Business & Consulting (ANYOS]" }, { { 0x8C, 0x1F, 0x64, 0x98, 0xF0 }, "BreasMedical", "Breas Medical AB" }, { { 0x8C, 0x1F, 0x64, 0x99, 0x10 }, "DBSystel", "DB Systel GmbH" }, @@ -49770,6 +50354,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x99, 0x80 }, "EVLOStockage", "EVLO Stockage Énergie" }, { { 0x8C, 0x1F, 0x64, 0x99, 0xE0 }, "EIDOS", "EIDOS s.r.l." }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x10 }, "PacificSoftw", "Pacific Software Development Co., Ltd." }, + { { 0x8C, 0x1F, 0x64, 0x9A, 0x20 }, "LadyBugTechn", "LadyBug Technologies, LLC" }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x40 }, "LabLogic", "LabLogic Systems" }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x50 }, "Xi‘anShengxi", "Xi‘an Shengxin Science& Technology Development Co.?Ltd." }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x60 }, "InstitutoDeG", "Instituto De Gestão, Redes Tecnológicas E Nergias" }, @@ -49790,6 +50375,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x9C, 0xE0 }, "ExiFlowMeasu", "Exi Flow Measurement Ltd" }, { { 0x8C, 0x1F, 0x64, 0x9C, 0xF0 }, "ASAPElectron", "ASAP Electronics GmbH" }, { { 0x8C, 0x1F, 0x64, 0x9D, 0x00 }, "SalineLectro", "Saline Lectronics, Inc." }, + { { 0x8C, 0x1F, 0x64, 0x9D, 0x30 }, "EAElektroAut", "EA Elektro-Automatik" }, { { 0x8C, 0x1F, 0x64, 0x9D, 0x40 }, "WolfspyreLab", "Wolfspyre Labs" }, { { 0x8C, 0x1F, 0x64, 0x9D, 0x80 }, "Integerpl", "Integer.pl S.A." }, { { 0x8C, 0x1F, 0x64, 0x9D, 0xB0 }, "HDRenewableE", "HD Renewable Energy Co.,Ltd" }, @@ -49803,6 +50389,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0x9E, 0x80 }, "GHMMesstechn", "GHM Messtechnik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x9E, 0xC0 }, "SpecializedC", "Specialized Communications Corp." }, { { 0x8C, 0x1F, 0x64, 0x9F, 0x00 }, "ePlant", "ePlant, Inc." }, + { { 0x8C, 0x1F, 0x64, 0x9F, 0x10 }, "Skymira", "Skymira" }, { { 0x8C, 0x1F, 0x64, 0x9F, 0x20 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x9F, 0x40 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0x9F, 0x50 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, @@ -49819,6 +50406,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xA0, 0xA0 }, "WiseTechInte", "Shanghai Wise-Tech Intelligent Technology Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0xA0, 0xD0 }, "LumiplanDuha", "Lumiplan Duhamel" }, { { 0x8C, 0x1F, 0x64, 0xA0, 0xE0 }, "ElacAmericas", "Elac Americas Inc." }, + { { 0x8C, 0x1F, 0x64, 0xA1, 0x30 }, "INVENTIASp", "INVENTIA Sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0xA1, 0xB0 }, "Zilica", "Zilica Limited" }, { { 0x8C, 0x1F, 0x64, 0xA1, 0xF0 }, "HitachiEnerg", "Hitachi Energy India Limited" }, { { 0x8C, 0x1F, 0x64, 0xA2, 0x90 }, "RingtailSecu", "Ringtail Security" }, @@ -49845,6 +50433,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xA5, 0xD0 }, "zhushidaTech", "Shenzhen zhushida Technology lnformation Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xA5, 0xE0 }, "XTIA", "XTIA Ltd." }, { { 0x8C, 0x1F, 0x64, 0xA6, 0x00 }, "ActiveOptica", "Active Optical Systems, LLC" }, + { { 0x8C, 0x1F, 0x64, 0xA6, 0x10 }, "BreasMedical", "Breas Medical AB" }, { { 0x8C, 0x1F, 0x64, 0xA6, 0xA0 }, "SphereComSer", "Sphere Com Services Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0xA6, 0xD0 }, "CyberneX", "CyberneX Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0xA6, 0xE0 }, "beswave", "shenzhen beswave co.,ltd" }, @@ -49872,19 +50461,23 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xAA, 0xB0 }, "BlueSwordInt", "BlueSword Intelligent Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xAB, 0x40 }, "ZhongchenMic", "Beijing Zhongchen Microelectronics Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAB, 0x50 }, "JustmorphPte", "Justmorph Pte. Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xAB, 0x60 }, "EMIT", "EMIT GmbH" }, { { 0x8C, 0x1F, 0x64, 0xAB, 0x70 }, "MClavis", "MClavis Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0xAB, 0xE0 }, "TAIYODENON", "TAIYO DENON Corporation" }, + { { 0x8C, 0x1F, 0x64, 0xAB, 0xF0 }, "StackiotTech", "Stackiot Technologies Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x00 }, "AIQuatro", "AIQuatro" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x30 }, "WavesSystem", "Waves System" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x40 }, "comelec", "comelec" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x50 }, "ForeverEngin", "Forever Engineering Systems Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x90 }, "ShenYangLeSh", "ShenYang LeShun Technology Co.,Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xAC, 0xB0 }, "Villari", "Villari B.V." }, { { 0x8C, 0x1F, 0x64, 0xAC, 0xE0 }, "RayhaanNetwo", "Rayhaan Networks" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x00 }, "Elektrotechn", "Elektrotechnik & Elektronik Oltmann GmbH" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x20 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x40 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x70 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x80 }, "NovantaIMS", "Novanta IMS" }, + { { 0x8C, 0x1F, 0x64, 0xAD, 0xB0 }, "HebeiWeijiEl", "Hebei Weiji Electric Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAE, 0x10 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAE, 0x50 }, "Ltec", "Ltec Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAE, 0x80 }, "AdetecSas", "Adetec Sas" }, @@ -49893,6 +50486,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xAE, 0xD0 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0xAE, 0xF0 }, "ScenarioAuto", "Scenario Automation" }, { { 0x8C, 0x1F, 0x64, 0xAF, 0x00 }, "MinebeaMitsu", "MinebeaMitsumi Inc." }, + { { 0x8C, 0x1F, 0x64, 0xAF, 0x10 }, "ESTel", "E-S-Tel" }, { { 0x8C, 0x1F, 0x64, 0xAF, 0x40 }, "NokiaBellLab", "Nokia Bell Labs" }, { { 0x8C, 0x1F, 0x64, 0xAF, 0x50 }, "SanminaIsrae", "Sanmina Israel Medical Systems Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAF, 0x70 }, "ard", "ard sa" }, @@ -49910,12 +50504,15 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xB1, 0x00 }, "MTUAeroEngin", "MTU Aero Engines AG" }, { { 0x8C, 0x1F, 0x64, 0xB1, 0x30 }, "Abode", "Abode Systems Inc" }, { { 0x8C, 0x1F, 0x64, 0xB1, 0x40 }, "MurataManufa", "Murata Manufacturing CO., Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xB1, 0x80 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0xB1, 0x90 }, "DITRON", "DITRON S.r.l." }, + { { 0x8C, 0x1F, 0x64, 0xB2, 0x00 }, "LechpolElect", "Lechpol Electronics Spółka z o.o. Sp.k." }, { { 0x8C, 0x1F, 0x64, 0xB2, 0x20 }, "BlighterSurv", "Blighter Surveillance Systems Ltd" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0x40 }, "Abb", "Abb" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0x60 }, "AVLDiTEST", "AVL DiTEST GmbH" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0x70 }, "InHandPlus", "InHandPlus Inc." }, { { 0x8C, 0x1F, 0x64, 0xB2, 0x80 }, "SeasonElectr", "Season Electronics Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xB2, 0xA0 }, "LumiplanDuha", "Lumiplan Duhamel" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0xB0 }, "RhombusEurop", "Rhombus Europe" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0xC0 }, "SanminaIsrae", "Sanmina Israel Medical Systems Ltd" }, { { 0x8C, 0x1F, 0x64, 0xB2, 0xF0 }, "MtechnologyG", "Mtechnology - Gamma Commerciale Srl" }, @@ -49926,6 +50523,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xB3, 0xC0 }, "SafeproAIVid", "Safepro AI Video Research Labs Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0xB3, 0xD0 }, "RealD", "RealD, Inc." }, { { 0x8C, 0x1F, 0x64, 0xB4, 0x60 }, "PhygitallSol", "Phygitall Soluções Em Internet Das Coisas" }, + { { 0x8C, 0x1F, 0x64, 0xB4, 0x70 }, "LineagePower", "Lineage Power Pvt Ltd.," }, { { 0x8C, 0x1F, 0x64, 0xB4, 0xC0 }, "PicocomTechn", "Picocom Technology Ltd" }, { { 0x8C, 0x1F, 0x64, 0xB5, 0x50 }, "SancharTeles", "Sanchar Telesystems limited" }, { { 0x8C, 0x1F, 0x64, 0xB5, 0x60 }, "Arcvideo", "Arcvideo" }, @@ -49945,7 +50543,6 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xB7, 0xB0 }, "GateviewTech", "Gateview Technologies" }, { { 0x8C, 0x1F, 0x64, 0xB7, 0xC0 }, "EvernetTaiwa", "Evernet Co,.Ltd Taiwan" }, { { 0x8C, 0x1F, 0x64, 0xB7, 0xD0 }, "Scheurich", "Scheurich GmbH" }, - { { 0x8C, 0x1F, 0x64, 0xB8, 0x10 }, "KingsIoT", "Shenzhen Kings IoT Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0xB8, 0x20 }, "SeedCore", "Seed Core Co., LTD." }, { { 0x8C, 0x1F, 0x64, 0xB8, 0x40 }, "SPXFlowTechn", "SPX Flow Technology" }, { { 0x8C, 0x1F, 0x64, 0xB8, 0x60 }, "ElektronikMo", "Elektronik & Modellprodukter Gävle AB" }, @@ -49954,15 +50551,19 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xB9, 0x70 }, "GeminiElectr", "Gemini Electronics B.V." }, { { 0x8C, 0x1F, 0x64, 0xB9, 0x80 }, "Calamity", "Calamity, Inc." }, { { 0x8C, 0x1F, 0x64, 0xB9, 0xA0 }, "QuercusTechn", "Quercus Technologies, S.L." }, + { { 0x8C, 0x1F, 0x64, 0xB9, 0xB0 }, "Kromek", "Kromek Limited" }, { { 0x8C, 0x1F, 0x64, 0xB9, 0xE0 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0xB9, 0xF0 }, "LithionBatte", "Lithion Battery Inc" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x30 }, "DEUTAWERKE", "DEUTA-WERKE GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xBA, 0x60 }, "FMCTechnolog", "FMC Technologies Measurement Solutions Inc" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0xA0 }, "MineVision", "Mine Vision Systems" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0xE0 }, "TielineResea", "Tieline Research Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0x10 }, "TransitSolut", "Transit Solutions, LLC." }, { { 0x8C, 0x1F, 0x64, 0xBB, 0x20 }, "GrupoEpelsaS", "Grupo Epelsa S.L." }, { { 0x8C, 0x1F, 0x64, 0xBB, 0x30 }, "ZarucTecnolo", "Zaruc Tecnologia LTDA" }, + { { 0x8C, 0x1F, 0x64, 0xBB, 0x70 }, "JiangxiLvCCh", "Jiangxi Lv C-Chong Charging Technology Co.Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xC0 }, "Liberator", "Liberator Pty Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xBB, 0xE0 }, "AirScandbaHe", "AirScan, Inc. dba HemaTechnologies" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xF0 }, "Retency", "Retency" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x00 }, "GSElektromed", "GS Elektromedizinsiche Geräte G. Stemple GmbH" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x10 }, "CominTech", "CominTech, LLC" }, @@ -49972,10 +50573,11 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xBC, 0x90 }, "GlTech", "Gl Tech Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0xB0 }, "A&T", "A&T Corporation" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0xC0 }, "SoundHealth", "Sound Health Systems" }, + { { 0x8C, 0x1F, 0x64, 0xBC, 0xE0 }, "BESOsp", "BESO sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x30 }, "IOMasterTech", "IO Master Technology" }, + { { 0x8C, 0x1F, 0x64, 0xBD, 0x50 }, "ProCustomGro", "Pro-Custom Group" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x60 }, "NOVAProducts", "NOVA Products GmbH" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x70 }, "UnionElectro", "Union Electronic." }, - { { 0x8C, 0x1F, 0x64, 0xBD, 0x80 }, "ecamtek", "ecamtek" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0xB0 }, "CardinalScal", "Cardinal Scales Manufacturing Co" }, { { 0x8C, 0x1F, 0x64, 0xBE, 0x30 }, "Reo", "Reo Ag" }, { { 0x8C, 0x1F, 0x64, 0xBE, 0x80 }, "Technologies", "Technologies Bacmove Inc." }, @@ -49985,15 +50587,19 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xBF, 0x20 }, "YujunElectri", "Yujun Electricity Industry Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBF, 0x30 }, "AlphatekAS", "Alphatek AS" }, { { 0x8C, 0x1F, 0x64, 0xBF, 0x40 }, "FluidCompone", "Fluid Components Intl" }, + { { 0x8C, 0x1F, 0x64, 0xBF, 0x50 }, "UrbanJungleP", "The Urban Jungle Project" }, + { { 0x8C, 0x1F, 0x64, 0xBF, 0x60 }, "PanoramicPow", "Panoramic Power" }, { { 0x8C, 0x1F, 0x64, 0xBF, 0x80 }, "Cdsi", "Cdsi" }, { { 0x8C, 0x1F, 0x64, 0xBF, 0xB0 }, "TechArgos", "TechArgos" }, { { 0x8C, 0x1F, 0x64, 0xBF, 0xC0 }, "ASiSTechnolo", "ASiS Technologies Pte Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xBF, 0xE0 }, "PuSund", "PuS GmbH und Co. KG" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x10 }, "HoribaAbxSas", "Horiba Abx Sas" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x30 }, "AbimanEngine", "Abiman Engineering" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x40 }, "Sanwa", "Sanwa Corporation" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x50 }, "SkyCell", "SkyCell AG" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x60 }, "TardisTechno", "Tardis Technology" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0x70 }, "HYOSUNGHeavy", "HYOSUNG Heavy Industries Corporation" }, + { { 0x8C, 0x1F, 0x64, 0xC0, 0x80 }, "TriamecMotio", "Triamec Motion AG" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0xA0 }, "Acrolabs", "Acrolabs,Inc" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0xC0 }, "GiordanoCont", "Giordano Controls Spa" }, { { 0x8C, 0x1F, 0x64, 0xC0, 0xD0 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, @@ -50034,6 +50640,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xC5, 0x90 }, "Tunstall", "Tunstall A/S" }, { { 0x8C, 0x1F, 0x64, 0xC5, 0xD0 }, "AlfaProximad", "Alfa Proxima d.o.o." }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x10 }, "CeresdateTec", "Beijing Ceresdate Technology Co.,LTD" }, + { { 0x8C, 0x1F, 0x64, 0xC6, 0x20 }, "GMI", "GMI Ltd" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x40 }, "Ajeco", "Ajeco Oy" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x80 }, "FibermeCommu", "Fiberme Communications Llc" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0xA0 }, "RedPhaseTech", "Red Phase Technologies Limited" }, @@ -50053,7 +50660,10 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xC9, 0x70 }, "MagnetPhysik", "Magnet-Physik Dr. Steingroever GmbH" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0xA0 }, "InfosoftDigi", "Infosoft Digital Design and Services P L" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0xB0 }, "JMVoithSE", "J.M. Voith SE & Co. KG" }, + { { 0x8C, 0x1F, 0x64, 0xC9, 0xE0 }, "CytoTronics", "CytoTronics" }, { { 0x8C, 0x1F, 0x64, 0xCA, 0x10 }, "PantherunTec", "Pantherun Technologies Pvt Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xCA, 0x20 }, "eumigindustr", "eumig industrie-TV GmbH." }, + { { 0x8C, 0x1F, 0x64, 0xCA, 0x40 }, "BitPart", "Bit Part LLC" }, { { 0x8C, 0x1F, 0x64, 0xCA, 0x60 }, "ReliaSpeakIn", "ReliaSpeak Information Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xCA, 0x70 }, "eumigindustr", "eumig industrie-TV GmbH." }, { { 0x8C, 0x1F, 0x64, 0xCA, 0x90 }, "AvantTechnol", "Avant Technologies" }, @@ -50072,6 +50682,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xCC, 0x50 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, { { 0x8C, 0x1F, 0x64, 0xCC, 0x60 }, "GeniusVision", "Genius Vision Digital Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xCC, 0xB0 }, "suzhouyuecro", "suzhou yuecrown Electronic Technology Co.,LTD" }, + { { 0x8C, 0x1F, 0x64, 0xCD, 0x10 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0xCD, 0x30 }, "Pionierkraft", "Pionierkraft GmbH" }, { { 0x8C, 0x1F, 0x64, 0xCD, 0x40 }, "ShengliTechn", "Shengli Technologies" }, { { 0x8C, 0x1F, 0x64, 0xCD, 0x60 }, "USM", "USM Pty Ltd" }, @@ -50083,6 +50694,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xCE, 0x30 }, "PixelDesignM", "Pixel Design & Manufacturing Sdn. Bhd." }, { { 0x8C, 0x1F, 0x64, 0xCE, 0x40 }, "SlUsa", "Sl Usa, Llc" }, { { 0x8C, 0x1F, 0x64, 0xCE, 0xB0 }, "EurekaForSma", "Eureka For Smart Properties Co. W.L.L" }, + { { 0x8C, 0x1F, 0x64, 0xCE, 0xC0 }, "ZhuhaiHuayam", "Zhuhai Huaya machinery Technology Co., LTD" }, { { 0x8C, 0x1F, 0x64, 0xCE, 0xE0 }, "Displax", "Displax S.A." }, { { 0x8C, 0x1F, 0x64, 0xCE, 0xF0 }, "GoertekRobot", "Goertek Robotics Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0xCF, 0x10 }, "ROBOfiber", "ROBOfiber, Inc." }, @@ -50101,6 +50713,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xD0, 0xF0 }, "Mecco", "Mecco LLC" }, { { 0x8C, 0x1F, 0x64, 0xD1, 0x30 }, "EYatskoIndiv", "EYatsko Individual" }, { { 0x8C, 0x1F, 0x64, 0xD1, 0x70 }, "IAltanovagro", "I.S.A. - Altanova group srl" }, + { { 0x8C, 0x1F, 0x64, 0xD1, 0xF0 }, "FreeTalkEngi", "Free Talk Engineering Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x00 }, "NASEngineeri", "NAS Engineering PRO" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x10 }, "AmetekCts", "Ametek Cts Gmbh" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x40 }, "R3IoT", "R3 IoT Ltd." }, @@ -50115,15 +50728,18 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xD4, 0x40 }, "MonarchInstr", "Monarch Instrument" }, { { 0x8C, 0x1F, 0x64, 0xD4, 0x60 }, "End2EndTechn", "End 2 End Technologies" }, { { 0x8C, 0x1F, 0x64, 0xD4, 0xA0 }, "Caproc", "Caproc Oy" }, + { { 0x8C, 0x1F, 0x64, 0xD4, 0xF0 }, "HenanCreatbo", "Henan Creatbot Technology Limited" }, { { 0x8C, 0x1F, 0x64, 0xD5, 0x10 }, "ZIGENLightin", "ZIGEN Lighting Solution co., ltd." }, { { 0x8C, 0x1F, 0x64, 0xD5, 0x20 }, "CriticalSoft", "Critical Software SA" }, { { 0x8C, 0x1F, 0x64, 0xD5, 0x30 }, "Gridnt", "Gridnt" }, { { 0x8C, 0x1F, 0x64, 0xD5, 0x40 }, "GrupoEpelsaS", "Grupo Epelsa S.L." }, { { 0x8C, 0x1F, 0x64, 0xD5, 0x60 }, "WisdomAudio", "Wisdom Audio" }, { { 0x8C, 0x1F, 0x64, 0xD5, 0xB0 }, "LocalSecurit", "Local Security" }, + { { 0x8C, 0x1F, 0x64, 0xD5, 0xD0 }, "GeniusVision", "Genius Vision Digital Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xD5, 0xE0 }, "Integerpl", "Integer.pl S.A." }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x00 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x10 }, "AdventDiamon", "Advent Diamond" }, + { { 0x8C, 0x1F, 0x64, 0xD6, 0x20 }, "Alpesrecherc", "Alpes recherche et développement" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x30 }, "Mobileye", "Mobileye" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x90 }, "ADiCo", "ADiCo Corporation" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0xC0 }, "Packetalk", "Packetalk LLC" }, @@ -50134,6 +50750,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xD7, 0xC0 }, "QuercusTechn", "Quercus Technologies, S.L." }, { { 0x8C, 0x1F, 0x64, 0xD7, 0xE0 }, "ThalesBelgiu", "Thales Belgium" }, { { 0x8C, 0x1F, 0x64, 0xD7, 0xF0 }, "Fiberstoryco", "Fiberstory communications Pvt Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xD8, 0x00 }, "Aztek", "Aztek Sa" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0x10 }, "MitsubishiEl", "Mitsubishi Electric India Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD8, 0x80 }, "UniversityGe", "University of Geneva - Department of Particle Physics" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0xC0 }, "Smri", "Smri" }, @@ -50147,6 +50764,8 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xD9, 0xA0 }, "RedlinkInfor", "Beijing Redlink Information Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD9, 0xB0 }, "GiSmbH", "GiS mbH" }, { { 0x8C, 0x1F, 0x64, 0xD9, 0xC0 }, "Relcom", "Relcom, Inc." }, + { { 0x8C, 0x1F, 0x64, 0xD9, 0xD0 }, "MitsubishiHe", "Mitsubishi Heavy Industries Thermal Systems, Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xD9, 0xE0 }, "WagnerGroup", "Wagner Group GmbH" }, { { 0x8C, 0x1F, 0x64, 0xDA, 0x50 }, "Daom", "Daom" }, { { 0x8C, 0x1F, 0x64, 0xDA, 0x60 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0xDA, 0xA0 }, "Davetech", "Davetech Limited" }, @@ -50181,9 +50800,12 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xE0, 0x00 }, "DvbTech", "Dvb-Tech S.R.L." }, { { 0x8C, 0x1F, 0x64, 0xE0, 0x20 }, "ITSTeknik", "ITS Teknik A/S" }, { { 0x8C, 0x1F, 0x64, 0xE0, 0x90 }, "EnlessWirele", "Enless Wireless" }, + { { 0x8C, 0x1F, 0x64, 0xE0, 0xB0 }, "LaurelElectr", "Laurel Electronics LLC" }, + { { 0x8C, 0x1F, 0x64, 0xE0, 0xC0 }, "Telestrider", "Telestrider Sa" }, { { 0x8C, 0x1F, 0x64, 0xE0, 0xE0 }, "Nokeval", "Nokeval Oy" }, { { 0x8C, 0x1F, 0x64, 0xE1, 0x00 }, "ScenarioAuto", "Scenario Automation" }, { { 0x8C, 0x1F, 0x64, 0xE1, 0x20 }, "PixusTechnol", "Pixus Technologies Inc." }, + { { 0x8C, 0x1F, 0x64, 0xE1, 0x40 }, "Proserv", "Proserv" }, { { 0x8C, 0x1F, 0x64, 0xE1, 0xA0 }, "DAccessSecur", "DAccess Security Systems P Ltd" }, { { 0x8C, 0x1F, 0x64, 0xE1, 0xE0 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0x10 }, "LGLHTAircraf", "LG-LHT Aircraft Solutions GmbH" }, @@ -50192,15 +50814,18 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xE2, 0xB0 }, "GlotechEximP", "Glotech Exim Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xD0 }, "RADAElectron", "RADA Electronics Industries Ltd." }, { { 0x8C, 0x1F, 0x64, 0xE3, 0x00 }, "VMuktiSoluti", "VMukti Solutions Private Limited" }, + { { 0x8C, 0x1F, 0x64, 0xE3, 0x30 }, "AmiadWater", "Amiad Water Systems" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0x10 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0x30 }, "Daedalean", "Daedalean AG" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0x50 }, "Integerpl", "Integer.pl S.A." }, { { 0x8C, 0x1F, 0x64, 0xE4, 0x60 }, "Nautel", "Nautel LTD" }, + { { 0x8C, 0x1F, 0x64, 0xE4, 0x70 }, "BRSSistemasE", "BRS Sistemas Eletrônicos" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0x90 }, "SamwellInter", "Samwell International Inc" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0xB0 }, "AlgaziraTele", "Algazira Telecom Solutions" }, { { 0x8C, 0x1F, 0x64, 0xE4, 0xC0 }, "TTCTELEKOMUN", "TTC TELEKOMUNIKACE, s.r.o." }, { { 0x8C, 0x1F, 0x64, 0xE4, 0xD0 }, "SanTelequip", "San Telequip (P) Ltd.," }, { { 0x8C, 0x1F, 0x64, 0xE4, 0xE0 }, "TrivediAdvan", "Trivedi Advanced Technologies LLC" }, + { { 0x8C, 0x1F, 0x64, 0xE4, 0xF0 }, "Sabl", "Sabl Systems Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0xE5, 0x20 }, "LcmVelociApS", "LcmVeloci ApS" }, { { 0x8C, 0x1F, 0x64, 0xE5, 0x30 }, "TProjeMuhend", "T Proje Muhendislik Dis Tic. Ltd. Sti." }, { { 0x8C, 0x1F, 0x64, 0xE5, 0xC0 }, "ScientificLi", "Scientific Lightning Solutions" }, @@ -50213,6 +50838,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xE6, 0xE0 }, "HumanDgm", "Human Dgm. Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xE6, 0xF0 }, "VisionSafety", "Vision Systems Safety Tech" }, { { 0x8C, 0x1F, 0x64, 0xE7, 0x00 }, "TelfiTechnol", "Telfi Technologies Private Limited" }, + { { 0x8C, 0x1F, 0x64, 0xE7, 0x10 }, "Alma", "Alma" }, { { 0x8C, 0x1F, 0x64, 0xE7, 0x30 }, "GTRIndustrie", "GTR Industries" }, { { 0x8C, 0x1F, 0x64, 0xE7, 0x40 }, "Magosys", "Magosys Systems LTD" }, { { 0x8C, 0x1F, 0x64, 0xE7, 0x50 }, "StercomPower", "Stercom Power Soltions GmbH" }, @@ -50244,6 +50870,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xEC, 0xF0 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0xED, 0x30 }, "Senso2Me", "Senso2Me Nv" }, { { 0x8C, 0x1F, 0x64, 0xED, 0x40 }, "ZhejiangChit", "Zhejiang Chitic-Safeway New Energy Technical Co.,Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xED, 0x60 }, "PowTechnolog", "PowTechnology Limited" }, { { 0x8C, 0x1F, 0x64, 0xED, 0x90 }, "NetgenHitech", "Netgen Hitech Solutions Llp" }, { { 0x8C, 0x1F, 0x64, 0xED, 0xA0 }, "DEUTAWERKE", "DEUTA-WERKE GmbH" }, { { 0x8C, 0x1F, 0x64, 0xEE, 0x10 }, "PuSund", "PuS GmbH und Co. KG" }, @@ -50258,6 +50885,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xEF, 0xB0 }, "Warecube", "Warecube,Inc" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x40 }, "IoTSecure", "IoTSecure, LLC" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x50 }, "PrestonIndus", "Preston Industries dba PolyScience" }, + { { 0x8C, 0x1F, 0x64, 0xF0, 0x80 }, "Advantor", "Advantor Corporation" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x90 }, "TexiAS", "Texi AS" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x00 }, "TelevicRail", "Televic Rail GmbH" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x20 }, "CAITRON", "CAITRON GmbH" }, @@ -50308,6 +50936,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xF7, 0x80 }, "TernaryResea", "Ternary Research Corporation" }, { { 0x8C, 0x1F, 0x64, 0xF7, 0x90 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xF7, 0xA0 }, "SiEngineTech", "SiEngine Technology Co., Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xF7, 0xD0 }, "RpgInformati", "Rpg Informatica, S.A." }, { { 0x8C, 0x1F, 0x64, 0xF8, 0x40 }, "KSTtechnolog", "KST technology" }, { { 0x8C, 0x1F, 0x64, 0xF8, 0x60 }, "INFOSTECH", "INFOSTECH Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xF8, 0x70 }, "FlyElectroni", "Fly Electronic (Shang Hai) Technology Co.,Ltd" }, @@ -50350,6 +50979,7 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xFE, 0x00 }, "PotterElectr", "Potter Electric Signal Company" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x20 }, "VUVAnalytics", "VUV Analytics, Inc." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x30 }, "PowerElectro", "Power Electronics Espana, S.L." }, + { { 0x8C, 0x1F, 0x64, 0xFE, 0x50 }, "Truenorth", "Truenorth" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x90 }, "AlzajelModer", "Alzajel Modern Telecommunication" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xA0 }, "AKON", "AKON Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xD0 }, "TelevicRail", "Televic Rail GmbH" }, @@ -50357,5 +50987,6 @@ static const manuf_oui36_t global_manuf_oui36_table[] = { { { 0x8C, 0x1F, 0x64, 0xFF, 0x40 }, "SMSgroup", "SMS group GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFF, 0x60 }, "AsconTecnolo", "Ascon Tecnologic S.r.l." }, { { 0x8C, 0x1F, 0x64, 0xFF, 0x80 }, "Chamsys", "Chamsys Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xFF, 0x90 }, "Vtron", "Vtron Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0xFF, 0xC0 }, "InvendisTech", "Invendis Technologies India Pvt Ltd" }, }; diff --git a/epan/packet.c b/epan/packet.c index c4bcb4d8..5a4c70a1 100644 --- a/epan/packet.c +++ b/epan/packet.c @@ -880,13 +880,6 @@ static int call_dissector_work_error(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo_arg, proto_tree *tree, void *); -/* - * XXX packet_info.curr_layer_num is a guint8 and *_MAX_RECURSION_DEPTH is - * 100 elsewhere in the code. We should arguably use the same value here, - * but using that makes suite_wslua.case_wslua.test_wslua_dissector_fpm fail. - */ -#define PINFO_LAYER_MAX_RECURSION_DEPTH 500 - static int call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean add_proto_name, void *data) @@ -908,7 +901,7 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo saved_proto = pinfo->current_proto; saved_can_desegment = pinfo->can_desegment; saved_layers_len = wmem_list_count(pinfo->layers); - DISSECTOR_ASSERT(saved_layers_len < PINFO_LAYER_MAX_RECURSION_DEPTH); + DISSECTOR_ASSERT(saved_layers_len < prefs.gui_max_tree_depth); /* * can_desegment is set to 2 by anyone which offers the @@ -2942,7 +2935,7 @@ dissector_try_heuristic(heur_dissector_list_t sub_dissectors, tvbuff_t *tvb, saved_layers_len = wmem_list_count(pinfo->layers); *heur_dtbl_entry = NULL; - DISSECTOR_ASSERT(saved_layers_len < PINFO_LAYER_MAX_RECURSION_DEPTH); + DISSECTOR_ASSERT(saved_layers_len < prefs.gui_max_tree_depth); for (entry = sub_dissectors->dissectors; entry != NULL; entry = g_slist_next(entry)) { @@ -3917,6 +3910,18 @@ prime_epan_dissect_with_postdissector_wanted_hfids(epan_dissect_t *edt) } } +void +increment_dissection_depth(packet_info *pinfo) { + pinfo->dissection_depth++; + DISSECTOR_ASSERT(pinfo->dissection_depth < (int)prefs.gui_max_tree_depth); +} + +void +decrement_dissection_depth(packet_info *pinfo) { + pinfo->dissection_depth--; + DISSECTOR_ASSERT(pinfo->dissection_depth >= 0); +} + /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * diff --git a/epan/packet.h b/epan/packet.h index 63127984..ecfa85a0 100644 --- a/epan/packet.h +++ b/epan/packet.h @@ -887,6 +887,20 @@ WS_DLL_PUBLIC gboolean postdissectors_want_hfids(void); WS_DLL_PUBLIC void prime_epan_dissect_with_postdissector_wanted_hfids(epan_dissect_t *edt); +/** Increment the dissection depth. + * This should be used to limit recursion outside the tree depth checks in + * call_dissector and dissector_try_heuristic. + * @param pinfo Packet Info. + */ + +WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo); + +/** Decrement the dissection depth. + * @param pinfo Packet Info. + */ + +WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo); + /** @} */ #ifdef __cplusplus diff --git a/epan/packet_info.h b/epan/packet_info.h index 788deecd..d1e8a200 100644 --- a/epan/packet_info.h +++ b/epan/packet_info.h @@ -156,6 +156,7 @@ typedef struct _packet_info { wmem_allocator_t *pool; /**< Memory pool scoped to the pinfo struct */ struct epan_session *epan; const gchar *heur_list_name; /**< name of heur list if this packet is being heuristically dissected */ + int dissection_depth; /**< The current "depth" or layer number in the current frame */ } packet_info; /** @} */ diff --git a/epan/pci-ids.c b/epan/pci-ids.c index 77697cab..f506c147 100644 --- a/epan/pci-ids.c +++ b/epan/pci-ids.c @@ -6,8 +6,8 @@ * * List of PCI ID's * - * Version: 2023.11.11 - * Date: 2023-11-11 03:15:02 + * Version: 2024.02.02 + * Date: 2024-02-02 14:41:33 * * Maintained by Albert Pool, Martin Mares, and other volunteers from * the PCI ID Project at https://pci-ids.ucw.cz/. @@ -39,7 +39,7 @@ typedef struct uint16_t did; uint16_t svid; uint16_t ssid; - char *name; + const char *name; } pci_id_t; @@ -47,20 +47,20 @@ typedef struct { uint16_t vid; uint16_t count; - pci_id_t *ids_ptr; + pci_id_t const *ids_ptr; } pci_vid_index_t; -pci_id_t pci_vid_0001[] = { +static pci_id_t const pci_vid_0001[] = { {0x0001, 0xFFFF, 0xFFFF, 0xFFFF, "SafeNet (wrong ID)(0x0001)"}, }; /* pci_vid_0001[] */ -pci_id_t pci_vid_0010[] = { +static pci_id_t const pci_vid_0010[] = { {0x0010, 0xFFFF, 0xFFFF, 0xFFFF, "Allied Telesis, Inc (Wrong ID)(0x0010)"}, {0x0010, 0x8139, 0xFFFF, 0xFFFF, "AT-2500TX V3 Ethernet(0x8139)"}, }; /* pci_vid_0010[] */ -pci_id_t pci_vid_0014[] = { +static pci_id_t const pci_vid_0014[] = { {0x0014, 0xFFFF, 0xFFFF, 0xFFFF, "Loongson Technology LLC(0x0014)"}, {0x0014, 0x7A00, 0xFFFF, 0xFFFF, "Hyper Transport Bridge Controller(0x7A00)"}, {0x0014, 0x7A02, 0xFFFF, 0xFFFF, "APB (Advanced Peripheral Bus) Controller(0x7A02)"}, @@ -79,144 +79,156 @@ pci_id_t pci_vid_0014[] = { {0x0014, 0x7A15, 0xFFFF, 0xFFFF, "Vivante GPU (Graphics Processing Unit)(0x7A15)"}, {0x0014, 0x7A19, 0xFFFF, 0xFFFF, "PCI-to-PCI Bridge(0x7A19)"}, {0x0014, 0x7A24, 0xFFFF, 0xFFFF, "OHCI USB Controller(0x7A24)"}, +{0x0014, 0x7A25, 0xFFFF, 0xFFFF, "LG100 GPU(0x7A25)"}, {0x0014, 0x7A29, 0xFFFF, 0xFFFF, "PCI-to-PCI Bridge(0x7A29)"}, +{0x0014, 0x7A36, 0xFFFF, 0xFFFF, "Display Controller(0x7A36)"}, }; /* pci_vid_0014[] */ -pci_id_t pci_vid_0018[] = { +static pci_id_t const pci_vid_0018[] = { {0x0018, 0xFFFF, 0xFFFF, 0xFFFF, "Fn-Link Technology Limited(0x0018)"}, {0x0018, 0x6252, 0xFFFF, 0xFFFF, "6252CPUB 802.11ax PCIe Wireless Network Adapter(0x6252)"}, }; /* pci_vid_0018[] */ -pci_id_t pci_vid_001C[] = { +static pci_id_t const pci_vid_001C[] = { {0x001C, 0xFFFF, 0xFFFF, 0xFFFF, "PEAK-System Technik GmbH(0x001C)"}, {0x001C, 0x0001, 0xFFFF, 0xFFFF, "PCAN-PCI CAN-Bus controller(0x0001)"}, {0x001C, 0x0001, 0x001C, 0x0004, "2 Channel CAN Bus SJC1000(0x001C-0x0004)"}, {0x001C, 0x0001, 0x001C, 0x0005, "2 Channel CAN Bus SJC1000 (Optically Isolated)(0x001C-0x0005)"}, }; /* pci_vid_001C[] */ -pci_id_t pci_vid_003D[] = { +static pci_id_t const pci_vid_003D[] = { {0x003D, 0xFFFF, 0xFFFF, 0xFFFF, "Lockheed Martin-Marietta Corp(0x003D)"}, }; /* pci_vid_003D[] */ -pci_id_t pci_vid_0059[] = { +static pci_id_t const pci_vid_0059[] = { {0x0059, 0xFFFF, 0xFFFF, 0xFFFF, "Tiger Jet Network Inc. (Wrong ID)(0x0059)"}, }; /* pci_vid_0059[] */ -pci_id_t pci_vid_0070[] = { +static pci_id_t const pci_vid_0070[] = { {0x0070, 0xFFFF, 0xFFFF, 0xFFFF, "Hauppauge computer works Inc.(0x0070)"}, {0x0070, 0x7801, 0xFFFF, 0xFFFF, "WinTV HVR-1800 MCE(0x7801)"}, }; /* pci_vid_0070[] */ -pci_id_t pci_vid_0071[] = { +static pci_id_t const pci_vid_0071[] = { {0x0071, 0xFFFF, 0xFFFF, 0xFFFF, "Nebula Electronics Ltd.(0x0071)"}, }; /* pci_vid_0071[] */ -pci_id_t pci_vid_0095[] = { +static pci_id_t const pci_vid_0095[] = { {0x0095, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Image, Inc. (Wrong ID)(0x0095)"}, {0x0095, 0x0680, 0xFFFF, 0xFFFF, "Ultra ATA/133 IDE RAID CONTROLLER CARD(0x0680)"}, }; /* pci_vid_0095[] */ -pci_id_t pci_vid_00A7[] = { +static pci_id_t const pci_vid_00A7[] = { {0x00A7, 0xFFFF, 0xFFFF, 0xFFFF, "Teles AG (Wrong ID)(0x00A7)"}, }; /* pci_vid_00A7[] */ -pci_id_t pci_vid_0100[] = { +static pci_id_t const pci_vid_0100[] = { {0x0100, 0xFFFF, 0xFFFF, 0xFFFF, "nCipher Security(0x0100)"}, }; /* pci_vid_0100[] */ -pci_id_t pci_vid_0123[] = { +static pci_id_t const pci_vid_0123[] = { {0x0123, 0xFFFF, 0xFFFF, 0xFFFF, "General Dynamics(0x0123)"}, }; /* pci_vid_0123[] */ -pci_id_t pci_vid_0128[] = { +static pci_id_t const pci_vid_0128[] = { {0x0128, 0xFFFF, 0xFFFF, 0xFFFF, "Dell (wrong ID)(0x0128)"}, }; /* pci_vid_0128[] */ -pci_id_t pci_vid_018A[] = { +static pci_id_t const pci_vid_018A[] = { {0x018A, 0xFFFF, 0xFFFF, 0xFFFF, "LevelOne(0x018A)"}, {0x018A, 0x0106, 0xFFFF, 0xFFFF, "FPC-0106TX misprogrammed [RTL81xx](0x0106)"}, }; /* pci_vid_018A[] */ -pci_id_t pci_vid_01DE[] = { +static pci_id_t const pci_vid_01DE[] = { {0x01DE, 0xFFFF, 0xFFFF, 0xFFFF, "Oxide Computer Company(0x01DE)"}, {0x01DE, 0x0000, 0xFFFF, 0xFFFF, "Propolis NVMe Controller(0x0000)"}, {0x01DE, 0x0001, 0xFFFF, 0xFFFF, "Propolis xHCI Controller(0x0001)"}, {0x01DE, 0x0002, 0xFFFF, 0xFFFF, "Propolis PCI-PCI Bridge(0x0002)"}, }; /* pci_vid_01DE[] */ -pci_id_t pci_vid_0200[] = { +static pci_id_t const pci_vid_0200[] = { {0x0200, 0xFFFF, 0xFFFF, 0xFFFF, "Dell (wrong ID)(0x0200)"}, }; /* pci_vid_0200[] */ -pci_id_t pci_vid_021B[] = { +static pci_id_t const pci_vid_021B[] = { {0x021B, 0xFFFF, 0xFFFF, 0xFFFF, "Compaq Computer Corporation(0x021B)"}, {0x021B, 0x8139, 0xFFFF, 0xFFFF, "HNE-300 (RealTek RTL8139c) [iPaq Networking](0x8139)"}, }; /* pci_vid_021B[] */ -pci_id_t pci_vid_025E[] = { +static pci_id_t const pci_vid_025E[] = { {0x025E, 0xFFFF, 0xFFFF, 0xFFFF, "Solidigm(0x025E)"}, {0x025E, 0x0B60, 0xFFFF, 0xFFFF, "NVMe DC SSD [Sentinel Rock Plus controller](0x0B60)"}, +{0x025E, 0x0B60, 0x025E, 0x8008, "NVMe DC SSD U.2 15mm [D7-P5510](0x025E-0x8008)"}, {0x025E, 0x0B60, 0x025E, 0x8208, "NVMe DC SSD U.2 15mm [D7-P5810](0x025E-0x8208)"}, +{0x025E, 0x0B60, 0x025E, 0x8D1D, "NVMe DC SSD E1.L 9.5mm [D5-P5316](0x025E-0x8D1D)"}, +{0x025E, 0x0B60, 0x025E, 0x9008, "NVMe DC SSD U.2 15mm [D7-P5520](0x025E-0x9008)"}, +{0x025E, 0x0B60, 0x025E, 0x900C, "NVMe DC SSD E1.S 9.5mm [D7-P5520](0x025E-0x900C)"}, +{0x025E, 0x0B60, 0x025E, 0x900D, "NVMe DC SSD E1.S 15mm [D7-P5520](0x025E-0x900D)"}, +{0x025E, 0x0B60, 0x025E, 0x901C, "NVMe DC SSD E1.L 9.5mm [D7-P5520](0x025E-0x901C)"}, +{0x025E, 0x0B60, 0x025E, 0x9108, "NVMe DC SSD U.2 15mm [D7-P5620](0x025E-0x9108)"}, +{0x025E, 0x0B60, 0x025E, 0xC008, "NVMe DC SSD U.2 15mm [D5-P5530](0x025E-0xC008)"}, {0x025E, 0x0B60, 0x025E, 0xD408, "NVMe DC SSD U.2 15mm [D5-P5430](0x025E-0xD408)"}, {0x025E, 0x0B60, 0x025E, 0xD40C, "NVMe DC SSD E1.S 9.5mm [D5-P5430](0x025E-0xD40C)"}, {0x025E, 0x0B60, 0x025E, 0xD419, "NVMe DC SSD E3.S 7.5mm [D5-P5430](0x025E-0xD419)"}, {0x025E, 0x0B60, 0x025E, 0xD808, "NVMe DC SSD U.2 15mm [D5-P5336](0x025E-0xD808)"}, {0x025E, 0x0B60, 0x025E, 0xD819, "NVMe DC SSD E3.S 7.5mm [D5-P5336](0x025E-0xD819)"}, +{0x025E, 0x0B60, 0x025E, 0xD81C, "NVMe DC SSD E1.L 18mm [D5-P5336](0x025E-0xD81C)"}, {0x025E, 0x0B60, 0x025E, 0xD81D, "NVMe DC SSD E1.L 9.5mm [D5-P5336](0x025E-0xD81D)"}, {0x025E, 0x0B70, 0xFFFF, 0xFFFF, "NVMe DC SSD [Yorktown controller](0x0B70)"}, +{0x025E, 0x2B59, 0xFFFF, 0xFFFF, "NVMe DC SSD [Atomos Prime](0x2B59)"}, {0x025E, 0xF1AB, 0xFFFF, 0xFFFF, "P41 Plus NVMe SSD (DRAM-less) [Echo Harbor](0xF1AB)"}, {0x025E, 0xF1AC, 0xFFFF, 0xFFFF, "P44 Pro NVMe SSD [Hollywood Beach](0xF1AC)"}, }; /* pci_vid_025E[] */ -pci_id_t pci_vid_0270[] = { +static pci_id_t const pci_vid_0270[] = { {0x0270, 0xFFFF, 0xFFFF, 0xFFFF, "Hauppauge computer works Inc. (Wrong ID)(0x0270)"}, }; /* pci_vid_0270[] */ -pci_id_t pci_vid_0291[] = { +static pci_id_t const pci_vid_0291[] = { {0x0291, 0xFFFF, 0xFFFF, 0xFFFF, "Davicom Semiconductor, Inc. (Wrong ID)(0x0291)"}, }; /* pci_vid_0291[] */ -pci_id_t pci_vid_02AC[] = { +static pci_id_t const pci_vid_02AC[] = { {0x02AC, 0xFFFF, 0xFFFF, 0xFFFF, "SpeedStream(0x02AC)"}, {0x02AC, 0x1012, 0xFFFF, 0xFFFF, "1012 PCMCIA 10/100 Ethernet Card [RTL81xx](0x1012)"}, }; /* pci_vid_02AC[] */ -pci_id_t pci_vid_02E0[] = { +static pci_id_t const pci_vid_02E0[] = { {0x02E0, 0xFFFF, 0xFFFF, 0xFFFF, "XFX Pine Group Inc. (Wrong ID)(0x02E0)"}, }; /* pci_vid_02E0[] */ -pci_id_t pci_vid_0303[] = { +static pci_id_t const pci_vid_0303[] = { {0x0303, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett-Packard Company (Wrong ID)(0x0303)"}, }; /* pci_vid_0303[] */ -pci_id_t pci_vid_0308[] = { +static pci_id_t const pci_vid_0308[] = { {0x0308, 0xFFFF, 0xFFFF, 0xFFFF, "ZyXEL Communications Corporation (Wrong ID)(0x0308)"}, }; /* pci_vid_0308[] */ -pci_id_t pci_vid_0315[] = { +static pci_id_t const pci_vid_0315[] = { {0x0315, 0xFFFF, 0xFFFF, 0xFFFF, "SK-Electronics Co., Ltd.(0x0315)"}, }; /* pci_vid_0315[] */ -pci_id_t pci_vid_0357[] = { +static pci_id_t const pci_vid_0357[] = { {0x0357, 0xFFFF, 0xFFFF, 0xFFFF, "TTTech Computertechnik AG (Wrong ID)(0x0357)"}, {0x0357, 0x000A, 0xFFFF, 0xFFFF, "TTP-Monitoring Card V2.0(0x000A)"}, }; /* pci_vid_0357[] */ -pci_id_t pci_vid_0432[] = { +static pci_id_t const pci_vid_0432[] = { {0x0432, 0xFFFF, 0xFFFF, 0xFFFF, "SCM Microsystems, Inc.(0x0432)"}, {0x0432, 0x0001, 0xFFFF, 0xFFFF, "Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet](0x0001)"}, }; /* pci_vid_0432[] */ -pci_id_t pci_vid_0497[] = { +static pci_id_t const pci_vid_0497[] = { {0x0497, 0xFFFF, 0xFFFF, 0xFFFF, "Dell Inc. (wrong ID)(0x0497)"}, }; /* pci_vid_0497[] */ -pci_id_t pci_vid_060E[] = { +static pci_id_t const pci_vid_060E[] = { {0x060E, 0xFFFF, 0xFFFF, 0xFFFF, "Lightelligence(0x060E)"}, {0x060E, 0x0001, 0xFFFF, 0xFFFF, "Hummingbird ES(0x0001)"}, }; /* pci_vid_060E[] */ -pci_id_t pci_vid_0675[] = { +static pci_id_t const pci_vid_0675[] = { {0x0675, 0xFFFF, 0xFFFF, 0xFFFF, "Dynalink(0x0675)"}, {0x0675, 0x1700, 0xFFFF, 0xFFFF, "IS64PH ISDN Adapter(0x1700)"}, {0x0675, 0x1702, 0xFFFF, 0xFFFF, "IS64PH ISDN Adapter(0x1702)"}, @@ -224,11 +236,11 @@ pci_id_t pci_vid_0675[] = { {0x0675, 0x1704, 0xFFFF, 0xFFFF, "ISDN Adapter (PCI Bus, D, C)(0x1704)"}, }; /* pci_vid_0675[] */ -pci_id_t pci_vid_0721[] = { +static pci_id_t const pci_vid_0721[] = { {0x0721, 0xFFFF, 0xFFFF, 0xFFFF, "Sapphire, Inc.(0x0721)"}, }; /* pci_vid_0721[] */ -pci_id_t pci_vid_0731[] = { +static pci_id_t const pci_vid_0731[] = { {0x0731, 0xFFFF, 0xFFFF, 0xFFFF, "Jingjia Microelectronics Co Ltd(0x0731)"}, {0x0731, 0x7200, 0xFFFF, 0xFFFF, "JM7200 Series GPU(0x7200)"}, {0x0731, 0x7200, 0x0731, 0x7201, "JM7201(0x0731-0x7201)"}, @@ -269,33 +281,33 @@ pci_id_t pci_vid_0731[] = { {0x0731, 0x930B, 0xFFFF, 0xFFFF, "JH930-M(0x930B)"}, }; /* pci_vid_0731[] */ -pci_id_t pci_vid_0777[] = { +static pci_id_t const pci_vid_0777[] = { {0x0777, 0xFFFF, 0xFFFF, 0xFFFF, "Ubiquiti Networks, Inc.(0x0777)"}, }; /* pci_vid_0777[] */ -pci_id_t pci_vid_0795[] = { +static pci_id_t const pci_vid_0795[] = { {0x0795, 0xFFFF, 0xFFFF, 0xFFFF, "Wired Inc.(0x0795)"}, {0x0795, 0x6663, 0xFFFF, 0xFFFF, "Butane II (MPEG2 encoder board)(0x6663)"}, {0x0795, 0x6666, 0xFFFF, 0xFFFF, "MediaPress (MPEG2 encoder board)(0x6666)"}, }; /* pci_vid_0795[] */ -pci_id_t pci_vid_07D1[] = { +static pci_id_t const pci_vid_07D1[] = { {0x07D1, 0xFFFF, 0xFFFF, 0xFFFF, "D-Link System Inc(0x07D1)"}, }; /* pci_vid_07D1[] */ -pci_id_t pci_vid_0824[] = { +static pci_id_t const pci_vid_0824[] = { {0x0824, 0xFFFF, 0xFFFF, 0xFFFF, "T1042 [Freescale](0x0824)"}, }; /* pci_vid_0824[] */ -pci_id_t pci_vid_0925[] = { +static pci_id_t const pci_vid_0925[] = { {0x0925, 0xFFFF, 0xFFFF, 0xFFFF, "VIA Technologies, Inc. (Wrong ID)(0x0925)"}, }; /* pci_vid_0925[] */ -pci_id_t pci_vid_0A89[] = { +static pci_id_t const pci_vid_0A89[] = { {0x0A89, 0xFFFF, 0xFFFF, 0xFFFF, "BREA Technologies Inc(0x0A89)"}, }; /* pci_vid_0A89[] */ -pci_id_t pci_vid_0B0B[] = { +static pci_id_t const pci_vid_0B0B[] = { {0x0B0B, 0xFFFF, 0xFFFF, 0xFFFF, "Rhino Equipment Corp.(0x0B0B)"}, {0x0B0B, 0x0105, 0xFFFF, 0xFFFF, "R1T1(0x0105)"}, {0x0B0B, 0x0205, 0xFFFF, 0xFFFF, "R4FXO(0x0205)"}, @@ -313,15 +325,21 @@ pci_id_t pci_vid_0B0B[] = { {0x0B0B, 0x0A06, 0xFFFF, 0xFFFF, "RCB672FXX 672-channel modular analog telephony card(0x0A06)"}, }; /* pci_vid_0B0B[] */ -pci_id_t pci_vid_0BAE[] = { +static pci_id_t const pci_vid_0BAE[] = { {0x0BAE, 0xFFFF, 0xFFFF, 0xFFFF, "Bachmann electronic GmbH(0x0BAE)"}, }; /* pci_vid_0BAE[] */ -pci_id_t pci_vid_0CCD[] = { +static pci_id_t const pci_vid_0CCD[] = { {0x0CCD, 0xFFFF, 0xFFFF, 0xFFFF, "Preferred Networks, Inc.(0x0CCD)"}, +{0x0CCD, 0x0110, 0xFFFF, 0xFFFF, "MN-Core(0x0110)"}, +{0x0CCD, 0x0120, 0xFFFF, 0xFFFF, "MN-Core 2(0x0120)"}, +{0x0CCD, 0x0120, 0x0CCD, 0x0000, "MN-Core 2 16GB(0x0CCD-0x0000)"}, +{0x0CCD, 0x0120, 0x0CCD, 0x0010, "MN-Core 2 32GB(0x0CCD-0x0010)"}, +{0x0CCD, 0x0200, 0xFFFF, 0xFFFF, "MN-Core Direct Connect(0x0200)"}, +{0x0CCD, 0x0201, 0xFFFF, 0xFFFF, "MN-Core 2 Middle-plane(0x0201)"}, }; /* pci_vid_0CCD[] */ -pci_id_t pci_vid_0E11[] = { +static pci_id_t const pci_vid_0E11[] = { {0x0E11, 0xFFFF, 0xFFFF, 0xFFFF, "Compaq Computer Corporation(0x0E11)"}, {0x0E11, 0x0001, 0xFFFF, 0xFFFF, "PCI to EISA Bridge(0x0001)"}, {0x0E11, 0x0002, 0xFFFF, 0xFFFF, "PCI to ISA Bridge(0x0002)"}, @@ -433,20 +451,20 @@ pci_id_t pci_vid_0E11[] = { {0x0E11, 0xF150, 0xFFFF, 0xFFFF, "NetFlex-3/P ThunderLAN 2.3(0xF150)"}, }; /* pci_vid_0E11[] */ -pci_id_t pci_vid_0E55[] = { +static pci_id_t const pci_vid_0E55[] = { {0x0E55, 0xFFFF, 0xFFFF, 0xFFFF, "HaSoTec GmbH(0x0E55)"}, }; /* pci_vid_0E55[] */ -pci_id_t pci_vid_0EAC[] = { +static pci_id_t const pci_vid_0EAC[] = { {0x0EAC, 0xFFFF, 0xFFFF, 0xFFFF, "SHF Communication Technologies AG(0x0EAC)"}, {0x0EAC, 0x0008, 0xFFFF, 0xFFFF, "Ethernet Powerlink Managing Node 01(0x0008)"}, }; /* pci_vid_0EAC[] */ -pci_id_t pci_vid_0F62[] = { +static pci_id_t const pci_vid_0F62[] = { {0x0F62, 0xFFFF, 0xFFFF, 0xFFFF, "Acrox Technologies Co., Ltd.(0x0F62)"}, }; /* pci_vid_0F62[] */ -pci_id_t pci_vid_1000[] = { +static pci_id_t const pci_vid_1000[] = { {0x1000, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom / LSI(0x1000)"}, {0x1000, 0x0001, 0xFFFF, 0xFFFF, "53c810(0x0001)"}, {0x1000, 0x0001, 0x1000, 0x1000, "LSI53C810AE PCI to SCSI I/O Processor(0x1000-0x1000)"}, @@ -964,6 +982,15 @@ pci_id_t pci_vid_1000[] = { {0x1000, 0x00B3, 0x1000, 0x5030, "eHBA 9700-16e 24G SAS/PCIe Storage Adapter(0x1000-0x5030)"}, {0x1000, 0x00B3, 0x1028, 0x22D2, "PERC H975i Front(0x1028-0x22D2)"}, {0x1000, 0x00B3, 0x1028, 0x22D3, "PERC H975i Adapter(0x1028-0x22D3)"}, +{0x1000, 0x00B3, 0x1D49, 0x020B, "ThinkSystem 460-16e SAS/SATA PCIe Gen5 24Gb HBA(0x1D49-0x020B)"}, +{0x1000, 0x00B5, 0xFFFF, 0xFFFF, "Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx(0x00B5)"}, +{0x1000, 0x00B5, 0x1000, 0x5000, "MegaRAID 9760W-32i 24G SAS/PCIe Storage Adapter(0x1000-0x5000)"}, +{0x1000, 0x00B5, 0x1000, 0x5001, "MegaRAID 9760W-16i 24G SAS/PCIe Storage Adapter(0x1000-0x5001)"}, +{0x1000, 0x00B5, 0x1000, 0x5010, "MegaRAID 9760W-16i16e 24G SAS/PCIe Storage Adapter(0x1000-0x5010)"}, +{0x1000, 0x00B5, 0x1000, 0x5020, "eHBA 9700W-32i 24G SAS/PCIe Storage Adapter(0x1000-0x5020)"}, +{0x1000, 0x00B5, 0x1000, 0x5021, "eHBA 9700W-16i 24G SAS/PCIe Storage Adapter(0x1000-0x5021)"}, +{0x1000, 0x00B5, 0x1000, 0x5030, "eHBA 9700-16e 24G SAS/PCIe Storage Adapter(0x1000-0x5030)"}, +{0x1000, 0x00B8, 0xFFFF, 0xFFFF, "Fusion-MPT Switch SAS50xx/SAS51xx(0x00B8)"}, {0x1000, 0x00BE, 0xFFFF, 0xFFFF, "SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)(0x00BE)"}, {0x1000, 0x00BF, 0xFFFF, 0xFFFF, "SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)(0x00BF)"}, {0x1000, 0x00C0, 0xFFFF, 0xFFFF, "SAS3324 PCI-Express Fusion-MPT SAS-3(0x00C0)"}, @@ -1173,10 +1200,12 @@ pci_id_t pci_vid_1000[] = { {0x1000, 0x10E6, 0x15D9, 0x1C6E, "AOC-SLG4-2H8M2 Storage Adapter(0x15D9-0x1C6E)"}, {0x1000, 0x10E6, 0x1D49, 0x0505, "ThinkSystem RAID 540-8i PCIe Gen4 12Gb Adapter(0x1D49-0x0505)"}, {0x1000, 0x10E6, 0x1D49, 0x0506, "ThinkSystem RAID 540-16i PCIe Gen4 12Gb Adapter(0x1D49-0x0506)"}, +{0x1000, 0x10E6, 0x1D49, 0x0507, "ThinkSystem RAID 545-8i PCIe Gen4 12Gb Adapter(0x1D49-0x0507)"}, {0x1000, 0x10E6, 0x1D49, 0x0700, "ThinkSystem M.2 RAID B540i-2i SATA/NVMe Enablement Kit(0x1D49-0x0700)"}, {0x1000, 0x10E6, 0x1D49, 0x0701, "ThinkSystem 7mm RAID B540p-2HS SATA/NVMe Enablement Kit(0x1D49-0x0701)"}, {0x1000, 0x10E6, 0x1D49, 0x0702, "ThinkSystem M.2 RAID B540p-2HS SATA/NVMe Enablement Kit(0x1D49-0x0702)"}, {0x1000, 0x10E6, 0x1D49, 0x0703, "ThinkSystem M.2 RAID B540d-2HS SATA/NVMe Enablement Kit(0x1D49-0x0703)"}, +{0x1000, 0x10E6, 0x1D49, 0x0704, "ThinkSystem M.2 RAID B545i-2i SATA/NVMe Enablement Kit(0x1D49-0x0704)"}, {0x1000, 0x10E7, 0xFFFF, 0xFFFF, "MegaRAID 12GSAS/PCIe Unsupported SAS38xx(0x10E7)"}, {0x1000, 0x1960, 0xFFFF, 0xFFFF, "MegaRAID(0x1960)"}, {0x1000, 0x1960, 0x1000, 0x0518, "MegaRAID 518 SCSI 320-2 Controller(0x1000-0x0518)"}, @@ -1192,6 +1221,7 @@ pci_id_t pci_vid_1000[] = { {0x1000, 0x1960, 0x8086, 0x0520, "MegaRAID RAID Controller SRCU41L(0x8086-0x0520)"}, {0x1000, 0x1960, 0x8086, 0x0523, "MegaRAID RAID Controller SRCS16(0x8086-0x0523)"}, {0x1000, 0x3050, 0xFFFF, 0xFFFF, "SAS2008 PCI-Express Fusion-MPT SAS-2(0x3050)"}, +{0x1000, 0x3150, 0xFFFF, 0xFFFF, "1068e(0x3150)"}, {0x1000, 0x6001, 0xFFFF, 0xFFFF, "DX1 Multiformat Broadcast HD/SD Encoder/Decoder(0x6001)"}, {0x1000, 0xC010, 0xFFFF, 0xFFFF, "PEX880xx PCIe Gen 4 Switch(0xC010)"}, {0x1000, 0xC010, 0x1000, 0x100B, "PEX88000 PCIe Gen 4 Virtual Upstream/Downstream Port(0x1000-0x100B)"}, @@ -1234,7 +1264,7 @@ pci_id_t pci_vid_1000[] = { {0x1000, 0xC034, 0x1000, 0x2005, "PEX89000 Virtual PCIe gDMA Endpoint(0x1000-0x2005)"}, }; /* pci_vid_1000[] */ -pci_id_t pci_vid_1001[] = { +static pci_id_t const pci_vid_1001[] = { {0x1001, 0xFFFF, 0xFFFF, 0xFFFF, "Kolter Electronic(0x1001)"}, {0x1001, 0x0010, 0xFFFF, 0xFFFF, "PCI 1616 Measurement card with 32 digital I/O lines(0x0010)"}, {0x1001, 0x0011, 0xFFFF, 0xFFFF, "OPTO-PCI Opto-Isolated digital I/O board(0x0011)"}, @@ -1247,7 +1277,7 @@ pci_id_t pci_vid_1001[] = { {0x1001, 0x9100, 0xFFFF, 0xFFFF, "INI-9100/9100W SCSI Host(0x9100)"}, }; /* pci_vid_1001[] */ -pci_id_t pci_vid_1002[] = { +static pci_id_t const pci_vid_1002[] = { {0x1002, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Micro Devices, Inc. [AMD/ATI](0x1002)"}, {0x1002, 0x1304, 0xFFFF, 0xFFFF, "Kaveri(0x1304)"}, {0x1002, 0x1305, 0xFFFF, 0xFFFF, "Kaveri(0x1305)"}, @@ -1279,6 +1309,7 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x13E9, 0xFFFF, 0xFFFF, "Ariel/Navi10Lite(0x13E9)"}, {0x1002, 0x13F9, 0xFFFF, 0xFFFF, "Oberon/Navi12Lite(0x13F9)"}, {0x1002, 0x13FE, 0xFFFF, 0xFFFF, "Cyan Skillfish [BC-250](0x13FE)"}, +{0x1002, 0x1435, 0xFFFF, 0xFFFF, "Sephiroth [AMD Custom GPU 0405](0x1435)"}, {0x1002, 0x145A, 0xFFFF, 0xFFFF, "Dummy Function (absent graphics controller)(0x145A)"}, {0x1002, 0x1478, 0xFFFF, 0xFFFF, "Navi 10 XL Upstream Port of PCI Express Switch(0x1478)"}, {0x1002, 0x1479, 0xFFFF, 0xFFFF, "Navi 10 XL Downstream Port of PCI Express Switch(0x1479)"}, @@ -2828,6 +2859,7 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x6779, 0x1028, 0x2120, "Radeon HD 6450(0x1028-0x2120)"}, {0x1002, 0x6779, 0x103C, 0x2128, "Radeon HD 6450(0x103C-0x2128)"}, {0x1002, 0x6779, 0x103C, 0x2AEE, "Radeon HD 7450A(0x103C-0x2AEE)"}, +{0x1002, 0x6779, 0x1043, 0x047B, "EAH6450 SILENT/DI/1GD3(LP)(0x1043-0x047B)"}, {0x1002, 0x6779, 0x1092, 0x6450, "Radeon HD 6450(0x1092-0x6450)"}, {0x1002, 0x6779, 0x1462, 0x2125, "Radeon HD 6450(0x1462-0x2125)"}, {0x1002, 0x6779, 0x1462, 0x2346, "Radeon HD 7450(0x1462-0x2346)"}, @@ -3818,6 +3850,7 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x6980, 0xFFFF, 0xFFFF, "Polaris12(0x6980)"}, {0x1002, 0x6981, 0xFFFF, 0xFFFF, "Lexa XT [Radeon PRO WX 3200](0x6981)"}, {0x1002, 0x6985, 0xFFFF, 0xFFFF, "Lexa XT [Radeon PRO WX 3100](0x6985)"}, +{0x1002, 0x6985, 0x103C, 0x83B5, "Radeon PRO WX 3100(0x103C-0x83B5)"}, {0x1002, 0x6986, 0xFFFF, 0xFFFF, "Polaris12(0x6986)"}, {0x1002, 0x6987, 0xFFFF, 0xFFFF, "Lexa [Radeon 540X/550X/630 / RX 640 / E9171 MCM](0x6987)"}, {0x1002, 0x698F, 0xFFFF, 0xFFFF, "Lexa XT [Radeon PRO WX 3100 / Barco MXRT 4700](0x698F)"}, @@ -4008,6 +4041,7 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x73A5, 0xFFFF, 0xFFFF, "Navi 21 [Radeon RX 6950 XT](0x73A5)"}, {0x1002, 0x73A5, 0x1849, 0x5230, "Navi 21 [ASRock OC Forumla Radeon RX 6950XT](0x1849-0x5230)"}, {0x1002, 0x73A5, 0x1DA2, 0x441D, "Navi 21 [Sapphire Nitro+ Radeon RX 6950 XT](0x1DA2-0x441D)"}, +{0x1002, 0x73A5, 0x1EAE, 0x6950, "Navi 21 [XFX Speedster MERC319 Radeon RX 6950 XT](0x1EAE-0x6950)"}, {0x1002, 0x73AB, 0xFFFF, 0xFFFF, "Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo](0x73AB)"}, {0x1002, 0x73AE, 0xFFFF, 0xFFFF, "Navi 21 [Radeon Pro V620 MxGPU](0x73AE)"}, {0x1002, 0x73AF, 0xFFFF, 0xFFFF, "Navi 21 [Radeon RX 6900 XT](0x73AF)"}, @@ -4027,8 +4061,10 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x73DF, 0x1043, 0x16C2, "Radeon RX 6800M(0x1043-0x16C2)"}, {0x1002, 0x73DF, 0x1458, 0x2408, "Radeon RX 6750 XT GAMING OC 12G(0x1458-0x2408)"}, {0x1002, 0x73DF, 0x1462, 0x3980, "Radeon RX 6700 XT Mech 2X 12G [MSI](0x1462-0x3980)"}, +{0x1002, 0x73DF, 0x148C, 0x2409, "Red Devil RX 6700 XT(0x148C-0x2409)"}, {0x1002, 0x73DF, 0x1849, 0x5219, "Radeon RX 6700 XT Challenger D(0x1849-0x5219)"}, {0x1002, 0x73DF, 0x1849, 0x5222, "RX 6700 XT Challenger D OC(0x1849-0x5222)"}, +{0x1002, 0x73DF, 0x1DA2, 0x445E, "Radeon RX 6700 XT GAMING OC 12G [Sapphire PULSE](0x1DA2-0x445E)"}, {0x1002, 0x73DF, 0x1DA2, 0x465E, "Radeon RX 6750 XT PULSE OC(0x1DA2-0x465E)"}, {0x1002, 0x73DF, 0x1DA2, 0xE445, "Sapphire Radeon RX 6700(0x1DA2-0xE445)"}, {0x1002, 0x73DF, 0x1EAE, 0x6601, "Speedster QICK 319 RX 6700 XT(0x1EAE-0x6601)"}, @@ -4057,17 +4093,20 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0x743F, 0x1DA2, 0xE457, "PULSE AMD Radeon RX 6500 XT(0x1DA2-0xE457)"}, {0x1002, 0x7446, 0xFFFF, 0xFFFF, "Navi 31 USB(0x7446)"}, {0x1002, 0x7448, 0xFFFF, 0xFFFF, "Navi 31 [Radeon Pro W7900](0x7448)"}, -{0x1002, 0x744C, 0xFFFF, 0xFFFF, "Navi 31 [Radeon RX 7900 XT/7900 XTX](0x744C)"}, +{0x1002, 0x744C, 0xFFFF, 0xFFFF, "Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M](0x744C)"}, {0x1002, 0x744C, 0x1002, 0x0E3B, "RX 7900 GRE [XFX](0x1002-0x0E3B)"}, {0x1002, 0x744C, 0x1DA2, 0x471E, "PULSE RX 7900 XTX(0x1DA2-0x471E)"}, {0x1002, 0x744C, 0x1DA2, 0xE471, "NITRO+ RX 7900 XTX Vapor-X(0x1DA2-0xE471)"}, {0x1002, 0x744C, 0x1EAE, 0x7901, "RX-79XMERCB9 [SPEEDSTER MERC 310 RX 7900 XTX](0x1EAE-0x7901)"}, {0x1002, 0x745E, 0xFFFF, 0xFFFF, "Navi 31 [Radeon Pro W7800](0x745E)"}, +{0x1002, 0x7470, 0xFFFF, 0xFFFF, "Navi 32 [Radeon PRO W7700](0x7470)"}, {0x1002, 0x747E, 0xFFFF, 0xFFFF, "Navi 32 [Radeon RX 7700 XT / 7800 XT](0x747E)"}, {0x1002, 0x7480, 0xFFFF, 0xFFFF, "Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600](0x7480)"}, {0x1002, 0x7480, 0x1849, 0x5313, "RX 7600 Challenger OC(0x1849-0x5313)"}, {0x1002, 0x7483, 0xFFFF, 0xFFFF, "Navi 33 [Radeon RX 7600M/7600M XT](0x7483)"}, {0x1002, 0x7489, 0xFFFF, 0xFFFF, "Navi 33 [Radeon Pro W7500](0x7489)"}, +{0x1002, 0x74A0, 0xFFFF, 0xFFFF, "Aqua Vanjaram [Instinct MI300A](0x74A0)"}, +{0x1002, 0x74A1, 0xFFFF, 0xFFFF, "Aqua Vanjaram [Instinct MI300X](0x74A1)"}, {0x1002, 0x7833, 0xFFFF, 0xFFFF, "RS350 Host Bridge(0x7833)"}, {0x1002, 0x7834, 0xFFFF, 0xFFFF, "RS350 [Radeon 9100 PRO/XT IGP](0x7834)"}, {0x1002, 0x7835, 0xFFFF, 0xFFFF, "RS350M [Mobility Radeon 9000 IGP](0x7835)"}, @@ -4442,6 +4481,7 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0xAA90, 0xFFFF, 0xFFFF, "Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series](0xAA90)"}, {0x1002, 0xAA90, 0x1028, 0x04A3, "Precision M4600(0x1028-0x04A3)"}, {0x1002, 0xAA98, 0xFFFF, 0xFFFF, "Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM](0xAA98)"}, +{0x1002, 0xAA98, 0x1043, 0xAA98, "EAH6450 SILENT/DI/1GD3(LP)(0x1043-0xAA98)"}, {0x1002, 0xAA98, 0x174B, 0xAA98, "Radeon HD 6450 1GB DDR3(0x174B-0xAA98)"}, {0x1002, 0xAAA0, 0xFFFF, 0xFFFF, "Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970](0xAAA0)"}, {0x1002, 0xAAB0, 0xFFFF, 0xFFFF, "Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series](0xAAB0)"}, @@ -4486,12 +4526,12 @@ pci_id_t pci_vid_1002[] = { {0x1002, 0xCBB2, 0xFFFF, 0xFFFF, "RS200 Host Bridge(0xCBB2)"}, }; /* pci_vid_1002[] */ -pci_id_t pci_vid_1003[] = { +static pci_id_t const pci_vid_1003[] = { {0x1003, 0xFFFF, 0xFFFF, 0xFFFF, "ULSI Systems(0x1003)"}, {0x1003, 0x0201, 0xFFFF, 0xFFFF, "US201(0x0201)"}, }; /* pci_vid_1003[] */ -pci_id_t pci_vid_1004[] = { +static pci_id_t const pci_vid_1004[] = { {0x1004, 0xFFFF, 0xFFFF, 0xFFFF, "VLSI Technology Inc(0x1004)"}, {0x1004, 0x0005, 0xFFFF, 0xFFFF, "82C592-FC1(0x0005)"}, {0x1004, 0x0006, 0xFFFF, 0xFFFF, "82C593-FC1(0x0006)"}, @@ -4528,7 +4568,7 @@ pci_id_t pci_vid_1004[] = { {0x1004, 0x0703, 0xFFFF, 0xFFFF, "Tollgate(0x0703)"}, }; /* pci_vid_1004[] */ -pci_id_t pci_vid_1005[] = { +static pci_id_t const pci_vid_1005[] = { {0x1005, 0xFFFF, 0xFFFF, 0xFFFF, "Avance Logic Inc. [ALI](0x1005)"}, {0x1005, 0x2064, 0xFFFF, 0xFFFF, "ALG2032/2064(0x2064)"}, {0x1005, 0x2128, 0xFFFF, 0xFFFF, "ALG2364A(0x2128)"}, @@ -4539,23 +4579,23 @@ pci_id_t pci_vid_1005[] = { {0x1005, 0x2501, 0xFFFF, 0xFFFF, "ALG2564A/25128A(0x2501)"}, }; /* pci_vid_1005[] */ -pci_id_t pci_vid_1006[] = { +static pci_id_t const pci_vid_1006[] = { {0x1006, 0xFFFF, 0xFFFF, 0xFFFF, "Reply Group(0x1006)"}, }; /* pci_vid_1006[] */ -pci_id_t pci_vid_1007[] = { +static pci_id_t const pci_vid_1007[] = { {0x1007, 0xFFFF, 0xFFFF, 0xFFFF, "NetFrame Systems Inc(0x1007)"}, }; /* pci_vid_1007[] */ -pci_id_t pci_vid_1008[] = { +static pci_id_t const pci_vid_1008[] = { {0x1008, 0xFFFF, 0xFFFF, 0xFFFF, "Epson(0x1008)"}, }; /* pci_vid_1008[] */ -pci_id_t pci_vid_100A[] = { +static pci_id_t const pci_vid_100A[] = { {0x100A, 0xFFFF, 0xFFFF, 0xFFFF, "Phoenix Technologies(0x100A)"}, }; /* pci_vid_100A[] */ -pci_id_t pci_vid_100B[] = { +static pci_id_t const pci_vid_100B[] = { {0x100B, 0xFFFF, 0xFFFF, 0xFFFF, "National Semiconductor Corporation(0x100B)"}, {0x100B, 0x0001, 0xFFFF, 0xFFFF, "DP83810(0x0001)"}, {0x100B, 0x0002, 0xFFFF, 0xFFFF, "87415/87560 IDE(0x0002)"}, @@ -4598,7 +4638,7 @@ pci_id_t pci_vid_100B[] = { {0x100B, 0xD001, 0xFFFF, 0xFFFF, "87410 IDE(0xD001)"}, }; /* pci_vid_100B[] */ -pci_id_t pci_vid_100C[] = { +static pci_id_t const pci_vid_100C[] = { {0x100C, 0xFFFF, 0xFFFF, 0xFFFF, "Tseng Labs Inc(0x100C)"}, {0x100C, 0x3202, 0xFFFF, 0xFFFF, "ET4000/W32p rev A(0x3202)"}, {0x100C, 0x3205, 0xFFFF, 0xFFFF, "ET4000/W32p rev B(0x3205)"}, @@ -4608,11 +4648,11 @@ pci_id_t pci_vid_100C[] = { {0x100C, 0x4702, 0xFFFF, 0xFFFF, "ET6300(0x4702)"}, }; /* pci_vid_100C[] */ -pci_id_t pci_vid_100D[] = { +static pci_id_t const pci_vid_100D[] = { {0x100D, 0xFFFF, 0xFFFF, 0xFFFF, "AST Research Inc(0x100D)"}, }; /* pci_vid_100D[] */ -pci_id_t pci_vid_100E[] = { +static pci_id_t const pci_vid_100E[] = { {0x100E, 0xFFFF, 0xFFFF, 0xFFFF, "Weitek(0x100E)"}, {0x100E, 0x9000, 0xFFFF, 0xFFFF, "P9000 Viper(0x9000)"}, {0x100E, 0x9001, 0xFFFF, 0xFFFF, "P9000 Viper(0x9001)"}, @@ -4620,11 +4660,11 @@ pci_id_t pci_vid_100E[] = { {0x100E, 0x9100, 0xFFFF, 0xFFFF, "P9100 Viper Pro/SE(0x9100)"}, }; /* pci_vid_100E[] */ -pci_id_t pci_vid_1010[] = { +static pci_id_t const pci_vid_1010[] = { {0x1010, 0xFFFF, 0xFFFF, 0xFFFF, "Video Logic, Ltd.(0x1010)"}, }; /* pci_vid_1010[] */ -pci_id_t pci_vid_1011[] = { +static pci_id_t const pci_vid_1011[] = { {0x1011, 0xFFFF, 0xFFFF, 0xFFFF, "Digital Equipment Corporation(0x1011)"}, {0x1011, 0x0001, 0xFFFF, 0xFFFF, "DECchip 21050(0x0001)"}, {0x1011, 0x0002, 0xFFFF, 0xFFFF, "DECchip 21040 [Tulip](0x0002)"}, @@ -4730,11 +4770,11 @@ pci_id_t pci_vid_1011[] = { {0x1011, 0x1065, 0x1069, 0x0020, "DAC960P / DAC1164P(0x1069-0x0020)"}, }; /* pci_vid_1011[] */ -pci_id_t pci_vid_1012[] = { +static pci_id_t const pci_vid_1012[] = { {0x1012, 0xFFFF, 0xFFFF, 0xFFFF, "Micronics Computers Inc(0x1012)"}, }; /* pci_vid_1012[] */ -pci_id_t pci_vid_1013[] = { +static pci_id_t const pci_vid_1013[] = { {0x1013, 0xFFFF, 0xFFFF, 0xFFFF, "Cirrus Logic(0x1013)"}, {0x1013, 0x0038, 0xFFFF, 0xFFFF, "GD 7548(0x0038)"}, {0x1013, 0x0040, 0xFFFF, 0xFFFF, "GD 7555 Flat Panel GUI Accelerator(0x0040)"}, @@ -4791,7 +4831,7 @@ pci_id_t pci_vid_1013[] = { {0x1013, 0x6005, 0x14C0, 0x000C, "Crystal CS4281 PCI Audio(0x14C0-0x000C)"}, }; /* pci_vid_1013[] */ -pci_id_t pci_vid_1014[] = { +static pci_id_t const pci_vid_1014[] = { {0x1014, 0xFFFF, 0xFFFF, 0xFFFF, "IBM(0x1014)"}, {0x1014, 0x0002, 0xFFFF, 0xFFFF, "PCI to MCA Bridge(0x0002)"}, {0x1014, 0x0005, 0xFFFF, 0xFFFF, "Processor to I/O Controller [Alta Lite](0x0005)"}, @@ -4957,28 +4997,29 @@ pci_id_t pci_vid_1014[] = { {0x1014, 0xFFFF, 0xFFFF, 0xFFFF, "MPIC-2 interrupt controller(0xFFFF)"}, }; /* pci_vid_1014[] */ -pci_id_t pci_vid_1015[] = { +static pci_id_t const pci_vid_1015[] = { {0x1015, 0xFFFF, 0xFFFF, 0xFFFF, "LSI Logic Corp of Canada(0x1015)"}, }; /* pci_vid_1015[] */ -pci_id_t pci_vid_1016[] = { +static pci_id_t const pci_vid_1016[] = { {0x1016, 0xFFFF, 0xFFFF, 0xFFFF, "ICL Personal Systems(0x1016)"}, }; /* pci_vid_1016[] */ -pci_id_t pci_vid_1017[] = { +static pci_id_t const pci_vid_1017[] = { {0x1017, 0xFFFF, 0xFFFF, 0xFFFF, "SPEA Software AG(0x1017)"}, {0x1017, 0x5343, 0xFFFF, 0xFFFF, "SPEA 3D Accelerator(0x5343)"}, }; /* pci_vid_1017[] */ -pci_id_t pci_vid_1018[] = { +static pci_id_t const pci_vid_1018[] = { {0x1018, 0xFFFF, 0xFFFF, 0xFFFF, "Unisys Systems(0x1018)"}, }; /* pci_vid_1018[] */ -pci_id_t pci_vid_1019[] = { +static pci_id_t const pci_vid_1019[] = { {0x1019, 0xFFFF, 0xFFFF, 0xFFFF, "Elitegroup Computer Systems(0x1019)"}, +{0x1019, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1019[] */ -pci_id_t pci_vid_101A[] = { +static pci_id_t const pci_vid_101A[] = { {0x101A, 0xFFFF, 0xFFFF, 0xFFFF, "AT&T GIS (NCR)(0x101A)"}, {0x101A, 0x0005, 0xFFFF, 0xFFFF, "100VG ethernet(0x0005)"}, {0x101A, 0x0007, 0xFFFF, 0xFFFF, "BYNET BIC4G/2C/2G(0x0007)"}, @@ -4998,12 +5039,12 @@ pci_id_t pci_vid_101A[] = { {0x101A, 0x1FA8, 0x101A, 0x00C3, "BYNET BIC2SE(0x101A-0x00C3)"}, }; /* pci_vid_101A[] */ -pci_id_t pci_vid_101B[] = { +static pci_id_t const pci_vid_101B[] = { {0x101B, 0xFFFF, 0xFFFF, 0xFFFF, "Vitesse Semiconductor(0x101B)"}, {0x101B, 0x0452, 0xFFFF, 0xFFFF, "VSC452 [SuperBMC](0x0452)"}, }; /* pci_vid_101B[] */ -pci_id_t pci_vid_101C[] = { +static pci_id_t const pci_vid_101C[] = { {0x101C, 0xFFFF, 0xFFFF, 0xFFFF, "Western Digital(0x101C)"}, {0x101C, 0x0193, 0xFFFF, 0xFFFF, "33C193A(0x0193)"}, {0x101C, 0x0196, 0xFFFF, 0xFFFF, "33C196A(0x0196)"}, @@ -5018,11 +5059,11 @@ pci_id_t pci_vid_101C[] = { {0x101C, 0xC24A, 0xFFFF, 0xFFFF, "90C(0xC24A)"}, }; /* pci_vid_101C[] */ -pci_id_t pci_vid_101D[] = { +static pci_id_t const pci_vid_101D[] = { {0x101D, 0xFFFF, 0xFFFF, 0xFFFF, "Maxim Integrated Products(0x101D)"}, }; /* pci_vid_101D[] */ -pci_id_t pci_vid_101E[] = { +static pci_id_t const pci_vid_101E[] = { {0x101E, 0xFFFF, 0xFFFF, 0xFFFF, "American Megatrends Inc.(0x101E)"}, {0x101E, 0x0009, 0xFFFF, 0xFFFF, "MegaRAID 428 Ultra RAID Controller (rev 03)(0x0009)"}, {0x101E, 0x1960, 0xFFFF, 0xFFFF, "MegaRAID(0x1960)"}, @@ -5051,19 +5092,19 @@ pci_id_t pci_vid_101E[] = { {0x101E, 0x9063, 0x101E, 0x0767, "Dell Remote Assistant Card 2(0x101E-0x0767)"}, }; /* pci_vid_101E[] */ -pci_id_t pci_vid_101F[] = { +static pci_id_t const pci_vid_101F[] = { {0x101F, 0xFFFF, 0xFFFF, 0xFFFF, "PictureTel(0x101F)"}, }; /* pci_vid_101F[] */ -pci_id_t pci_vid_1020[] = { +static pci_id_t const pci_vid_1020[] = { {0x1020, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Computer Products(0x1020)"}, }; /* pci_vid_1020[] */ -pci_id_t pci_vid_1021[] = { +static pci_id_t const pci_vid_1021[] = { {0x1021, 0xFFFF, 0xFFFF, 0xFFFF, "OKI Electric Industry Co. Ltd.(0x1021)"}, }; /* pci_vid_1021[] */ -pci_id_t pci_vid_1022[] = { +static pci_id_t const pci_vid_1022[] = { {0x1022, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Micro Devices, Inc. [AMD](0x1022)"}, {0x1022, 0x1100, 0xFFFF, 0xFFFF, "K8 [Athlon64/Opteron] HyperTransport Technology Configuration(0x1100)"}, {0x1022, 0x1101, 0xFFFF, 0xFFFF, "K8 [Athlon64/Opteron] Address Map(0x1101)"}, @@ -5510,7 +5551,7 @@ pci_id_t pci_vid_1022[] = { {0x1022, 0x1716, 0xFFFF, 0xFFFF, "Family 12h/14h Processor Function 5(0x1716)"}, {0x1022, 0x1718, 0xFFFF, 0xFFFF, "Family 12h/14h Processor Function 6(0x1718)"}, {0x1022, 0x1719, 0xFFFF, 0xFFFF, "Family 12h/14h Processor Function 7(0x1719)"}, -{0x1022, 0x2000, 0xFFFF, 0xFFFF, "79c970 [PCnet32 LANCE](0x2000)"}, +{0x1022, 0x2000, 0xFFFF, 0xFFFF, "79C97x [PCnet32 LANCE](0x2000)"}, {0x1022, 0x2000, 0x1014, 0x2000, "NetFinity 10/100 Fast Ethernet(0x1014-0x2000)"}, {0x1022, 0x2000, 0x1022, 0x2000, "PCnet - Fast 79C971(0x1022-0x2000)"}, {0x1022, 0x2000, 0x103C, 0x104C, "Ethernet with LAN remote power Adapter(0x103C-0x104C)"}, @@ -5524,7 +5565,7 @@ pci_id_t pci_vid_1022[] = { {0x1022, 0x2000, 0x1259, 0x2454, "AT-2450v4 10Mb Ethernet Adapter(0x1259-0x2454)"}, {0x1022, 0x2000, 0x1259, 0x2700, "AT-2700TX 10/100 Fast Ethernet(0x1259-0x2700)"}, {0x1022, 0x2000, 0x1259, 0x2701, "AT-2700FX 100Mb Ethernet(0x1259-0x2701)"}, -{0x1022, 0x2000, 0x1259, 0x2702, "AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet(0x1259-0x2702)"}, +{0x1022, 0x2000, 0x1259, 0x2702, "AT-2700FTX (AM79C976KD [PCnet-PRO] chipset) 10/100 Mb Fiber/Copper Fast Ethernet(0x1259-0x2702)"}, {0x1022, 0x2000, 0x1259, 0x2703, "AT-2701FX(0x1259-0x2703)"}, {0x1022, 0x2000, 0x1259, 0x2704, "AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet(0x1259-0x2704)"}, {0x1022, 0x2000, 0x4C53, 0x1000, "CC7/CR7/CP7/VC7/VP7/VR7 mainboard(0x4C53-0x1000)"}, @@ -5537,7 +5578,7 @@ pci_id_t pci_vid_1022[] = { {0x1022, 0x2001, 0x1092, 0x0A78, "Multimedia Home Network Adapter(0x1092-0x0A78)"}, {0x1022, 0x2001, 0x1668, 0x0299, "ActionLink Home Network Adapter(0x1668-0x0299)"}, {0x1022, 0x2003, 0xFFFF, 0xFFFF, "Am 1771 MBW [Alchemy](0x2003)"}, -{0x1022, 0x2020, 0xFFFF, 0xFFFF, "53c974 [PCscsi](0x2020)"}, +{0x1022, 0x2020, 0xFFFF, 0xFFFF, "AM53/79C974 [PC-SCSI](0x2020)"}, {0x1022, 0x2020, 0x1AF4, 0x1100, "QEMU Virtual Machine(0x1AF4-0x1100)"}, {0x1022, 0x2040, 0xFFFF, 0xFFFF, "79c974(0x2040)"}, {0x1022, 0x2080, 0xFFFF, 0xFFFF, "CS5536 [Geode companion] Host Bridge(0x2080)"}, @@ -5580,6 +5621,10 @@ pci_id_t pci_vid_1022[] = { {0x1022, 0x43EB, 0x1B21, 0x1062, "ASM1062 Serial ATA Controller(0x1B21-0x1062)"}, {0x1022, 0x43EE, 0xFFFF, 0xFFFF, "500 Series Chipset USB 3.1 XHCI Controller(0x43EE)"}, {0x1022, 0x43EE, 0x1B21, 0x1142, "ASM1042A USB 3.0 Host Controller(0x1B21-0x1142)"}, +{0x1022, 0x43F4, 0xFFFF, 0xFFFF, "600 Series Chipset PCIe Switch Upstream Port(0x43F4)"}, +{0x1022, 0x43F5, 0xFFFF, 0xFFFF, "600 Series Chipset PCIe Switch Downstream Port(0x43F5)"}, +{0x1022, 0x43F6, 0xFFFF, 0xFFFF, "600 Series Chipset SATA Controller(0x43F6)"}, +{0x1022, 0x43F7, 0xFFFF, 0xFFFF, "600 Series Chipset USB 3.2 Controller(0x43F7)"}, {0x1022, 0x57A3, 0xFFFF, 0xFFFF, "Matisse PCIe GPP Bridge(0x57A3)"}, {0x1022, 0x57A4, 0xFFFF, 0xFFFF, "Matisse PCIe GPP Bridge(0x57A4)"}, {0x1022, 0x57AD, 0xFFFF, 0xFFFF, "Matisse Switch Upstream(0x57AD)"}, @@ -5750,7 +5795,7 @@ pci_id_t pci_vid_1022[] = { {0x1022, 0x960B, 0xFFFF, 0xFFFF, "RS780 PCI to PCI bridge (ext gfx port 1)(0x960B)"}, }; /* pci_vid_1022[] */ -pci_id_t pci_vid_1023[] = { +static pci_id_t const pci_vid_1023[] = { {0x1023, 0xFFFF, 0xFFFF, 0xFFFF, "Trident Microsystems(0x1023)"}, {0x1023, 0x0194, 0xFFFF, 0xFFFF, "82C194(0x0194)"}, {0x1023, 0x2000, 0xFFFF, 0xFFFF, "4DWave DX(0x2000)"}, @@ -5809,14 +5854,14 @@ pci_id_t pci_vid_1023[] = { {0x1023, 0x9960, 0xFFFF, 0xFFFF, "CyberBlade XP2(0x9960)"}, }; /* pci_vid_1023[] */ -pci_id_t pci_vid_1024[] = { +static pci_id_t const pci_vid_1024[] = { {0x1024, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Dajia Internet Information Technology Co.(0x1024)"}, {0x1024, 0x0101, 0xFFFF, 0xFFFF, "StreamLake 200 AI-VPU(0x0101)"}, {0x1024, 0x0101, 0x1024, 0x0201, "SL200-NP(0x1024-0x0201)"}, {0x1024, 0x0101, 0x1024, 0x0301, "SL200-P(0x1024-0x0301)"}, }; /* pci_vid_1024[] */ -pci_id_t pci_vid_1025[] = { +static pci_id_t const pci_vid_1025[] = { {0x1025, 0xFFFF, 0xFFFF, 0xFFFF, "Acer Incorporated [ALI](0x1025)"}, {0x1025, 0x1435, 0xFFFF, 0xFFFF, "M1435(0x1435)"}, {0x1025, 0x1445, 0xFFFF, 0xFFFF, "M1445(0x1445)"}, @@ -5878,7 +5923,7 @@ pci_id_t pci_vid_1025[] = { {0x1025, 0x9602, 0xFFFF, 0xFFFF, "AMD RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1025[] */ -pci_id_t pci_vid_1028[] = { +static pci_id_t const pci_vid_1028[] = { {0x1028, 0xFFFF, 0xFFFF, 0xFFFF, "Dell(0x1028)"}, {0x1028, 0x0001, 0xFFFF, 0xFFFF, "PowerEdge Expandable RAID Controller 2/Si(0x0001)"}, {0x1028, 0x0001, 0x1028, 0x0001, "PowerEdge 2400(0x1028-0x0001)"}, @@ -5929,11 +5974,11 @@ pci_id_t pci_vid_1028[] = { {0x1028, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1028[] */ -pci_id_t pci_vid_1029[] = { +static pci_id_t const pci_vid_1029[] = { {0x1029, 0xFFFF, 0xFFFF, 0xFFFF, "Siemens Nixdorf IS(0x1029)"}, }; /* pci_vid_1029[] */ -pci_id_t pci_vid_102A[] = { +static pci_id_t const pci_vid_102A[] = { {0x102A, 0xFFFF, 0xFFFF, 0xFFFF, "LSI Logic(0x102A)"}, {0x102A, 0x0000, 0xFFFF, 0xFFFF, "HYDRA(0x0000)"}, {0x102A, 0x0010, 0xFFFF, 0xFFFF, "ASPEN(0x0010)"}, @@ -5948,7 +5993,7 @@ pci_id_t pci_vid_102A[] = { {0x102A, 0x00CF, 0x1028, 0x0121, "PowerEdge 2650(0x1028-0x0121)"}, }; /* pci_vid_102A[] */ -pci_id_t pci_vid_102B[] = { +static pci_id_t const pci_vid_102B[] = { {0x102B, 0xFFFF, 0xFFFF, 0xFFFF, "Matrox Electronics Systems Ltd.(0x102B)"}, {0x102B, 0x0010, 0xFFFF, 0xFFFF, "MGA-I [Impression?-](0x0010)"}, {0x102B, 0x0100, 0xFFFF, 0xFFFF, "MGA 1064SG [Mystique](0x0100)"}, @@ -6254,7 +6299,7 @@ pci_id_t pci_vid_102B[] = { {0x102B, 0x6573, 0xFFFF, 0xFFFF, "Shark 10/100 Multiport SwitchNIC(0x6573)"}, }; /* pci_vid_102B[] */ -pci_id_t pci_vid_102C[] = { +static pci_id_t const pci_vid_102C[] = { {0x102C, 0xFFFF, 0xFFFF, 0xFFFF, "Chips and Technologies(0x102C)"}, {0x102C, 0x00B8, 0xFFFF, 0xFFFF, "F64310(0x00B8)"}, {0x102C, 0x00C0, 0xFFFF, 0xFFFF, "F69000 HiQVideo(0x00C0)"}, @@ -6283,16 +6328,16 @@ pci_id_t pci_vid_102C[] = { {0x102C, 0x0C30, 0x4C53, 0x1080, "CT8 mainboard(0x4C53-0x1080)"}, }; /* pci_vid_102C[] */ -pci_id_t pci_vid_102D[] = { +static pci_id_t const pci_vid_102D[] = { {0x102D, 0xFFFF, 0xFFFF, 0xFFFF, "Wyse Technology Inc.(0x102D)"}, {0x102D, 0x50DC, 0xFFFF, 0xFFFF, "3328 Audio(0x50DC)"}, }; /* pci_vid_102D[] */ -pci_id_t pci_vid_102E[] = { +static pci_id_t const pci_vid_102E[] = { {0x102E, 0xFFFF, 0xFFFF, 0xFFFF, "Olivetti Advanced Technology(0x102E)"}, }; /* pci_vid_102E[] */ -pci_id_t pci_vid_102F[] = { +static pci_id_t const pci_vid_102F[] = { {0x102F, 0xFFFF, 0xFFFF, 0xFFFF, "Toshiba America(0x102F)"}, {0x102F, 0x0009, 0xFFFF, 0xFFFF, "r4x00(0x0009)"}, {0x102F, 0x000A, 0xFFFF, 0xFFFF, "TX3927 MIPS RISC PCI Controller(0x000A)"}, @@ -6313,11 +6358,11 @@ pci_id_t pci_vid_102F[] = { {0x102F, 0x01B6, 0xFFFF, 0xFFFF, "SCC USB 1.1 OHCI controller(0x01B6)"}, }; /* pci_vid_102F[] */ -pci_id_t pci_vid_1030[] = { +static pci_id_t const pci_vid_1030[] = { {0x1030, 0xFFFF, 0xFFFF, 0xFFFF, "TMC Research(0x1030)"}, }; /* pci_vid_1030[] */ -pci_id_t pci_vid_1031[] = { +static pci_id_t const pci_vid_1031[] = { {0x1031, 0xFFFF, 0xFFFF, 0xFFFF, "Miro Computer Products AG(0x1031)"}, {0x1031, 0x5601, 0xFFFF, 0xFFFF, "DC20 ASIC(0x5601)"}, {0x1031, 0x5607, 0xFFFF, 0xFFFF, "Video I/O & motion JPEG compressor(0x5607)"}, @@ -6325,11 +6370,11 @@ pci_id_t pci_vid_1031[] = { {0x1031, 0x6057, 0xFFFF, 0xFFFF, "MiroVideo DC10/DC30+(0x6057)"}, }; /* pci_vid_1031[] */ -pci_id_t pci_vid_1032[] = { +static pci_id_t const pci_vid_1032[] = { {0x1032, 0xFFFF, 0xFFFF, 0xFFFF, "Compaq(0x1032)"}, }; /* pci_vid_1032[] */ -pci_id_t pci_vid_1033[] = { +static pci_id_t const pci_vid_1033[] = { {0x1033, 0xFFFF, 0xFFFF, 0xFFFF, "NEC Corporation(0x1033)"}, {0x1033, 0x0000, 0xFFFF, 0xFFFF, "Vr4181A USB Host or Function Control Unit(0x0000)"}, {0x1033, 0x0001, 0xFFFF, 0xFFFF, "PCI to 486-like bus Bridge(0x0001)"}, @@ -6410,28 +6455,28 @@ pci_id_t pci_vid_1033[] = { {0x1033, 0x01F2, 0xFFFF, 0xFFFF, "uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller(0x01F2)"}, }; /* pci_vid_1033[] */ -pci_id_t pci_vid_1034[] = { +static pci_id_t const pci_vid_1034[] = { {0x1034, 0xFFFF, 0xFFFF, 0xFFFF, "Framatome Connectors USA Inc.(0x1034)"}, }; /* pci_vid_1034[] */ -pci_id_t pci_vid_1035[] = { +static pci_id_t const pci_vid_1035[] = { {0x1035, 0xFFFF, 0xFFFF, 0xFFFF, "Comp. & Comm. Research Lab(0x1035)"}, }; /* pci_vid_1035[] */ -pci_id_t pci_vid_1036[] = { +static pci_id_t const pci_vid_1036[] = { {0x1036, 0xFFFF, 0xFFFF, 0xFFFF, "Future Domain Corp.(0x1036)"}, {0x1036, 0x0000, 0xFFFF, 0xFFFF, "TMC-18C30 [36C70](0x0000)"}, }; /* pci_vid_1036[] */ -pci_id_t pci_vid_1037[] = { +static pci_id_t const pci_vid_1037[] = { {0x1037, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Micro Systems(0x1037)"}, }; /* pci_vid_1037[] */ -pci_id_t pci_vid_1038[] = { +static pci_id_t const pci_vid_1038[] = { {0x1038, 0xFFFF, 0xFFFF, 0xFFFF, "AMP, Inc(0x1038)"}, }; /* pci_vid_1038[] */ -pci_id_t pci_vid_1039[] = { +static pci_id_t const pci_vid_1039[] = { {0x1039, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Integrated Systems [SiS](0x1039)"}, {0x1039, 0x0001, 0xFFFF, 0xFFFF, "AGP Port (virtual PCI-to-PCI bridge)(0x0001)"}, {0x1039, 0x0002, 0xFFFF, 0xFFFF, "AGP Port (virtual PCI-to-PCI bridge)(0x0002)"}, @@ -6621,18 +6666,19 @@ pci_id_t pci_vid_1039[] = { {0x1039, 0x7502, 0x1043, 0x81A1, "P5SD2-FM/S mainboard(0x1043-0x81A1)"}, }; /* pci_vid_1039[] */ -pci_id_t pci_vid_103A[] = { +static pci_id_t const pci_vid_103A[] = { {0x103A, 0xFFFF, 0xFFFF, 0xFFFF, "Seiko Epson Corporation(0x103A)"}, }; /* pci_vid_103A[] */ -pci_id_t pci_vid_103B[] = { +static pci_id_t const pci_vid_103B[] = { {0x103B, 0xFFFF, 0xFFFF, 0xFFFF, "Tatung Corp. Of America(0x103B)"}, }; /* pci_vid_103B[] */ -pci_id_t pci_vid_103C[] = { +static pci_id_t const pci_vid_103C[] = { {0x103C, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett-Packard Company(0x103C)"}, {0x103C, 0x1005, 0xFFFF, 0xFFFF, "A4977A Visualize EG(0x1005)"}, {0x103C, 0x1008, 0xFFFF, 0xFFFF, "Visualize FX(0x1008)"}, +{0x103C, 0x1020, 0xFFFF, 0xFFFF, "548XX Scope Interface(0x1020)"}, {0x103C, 0x1028, 0xFFFF, 0xFFFF, "Tach TL Fibre Channel Host Adapter(0x1028)"}, {0x103C, 0x1029, 0xFFFF, 0xFFFF, "Tach XL2 Fibre Channel Host Adapter(0x1029)"}, {0x103C, 0x1029, 0x107E, 0x000F, "Interphase 5560 Fibre Channel Adapter(0x107E-0x000F)"}, @@ -6778,23 +6824,23 @@ pci_id_t pci_vid_103C[] = { {0x103C, 0x9602, 0x103C, 0x1609, "ProLiant MicroServer N36L(0x103C-0x1609)"}, }; /* pci_vid_103C[] */ -pci_id_t pci_vid_103E[] = { +static pci_id_t const pci_vid_103E[] = { {0x103E, 0xFFFF, 0xFFFF, 0xFFFF, "Solliday Engineering(0x103E)"}, }; /* pci_vid_103E[] */ -pci_id_t pci_vid_103F[] = { +static pci_id_t const pci_vid_103F[] = { {0x103F, 0xFFFF, 0xFFFF, 0xFFFF, "Synopsys/Logic Modeling Group(0x103F)"}, }; /* pci_vid_103F[] */ -pci_id_t pci_vid_1040[] = { +static pci_id_t const pci_vid_1040[] = { {0x1040, 0xFFFF, 0xFFFF, 0xFFFF, "Accelgraphics Inc.(0x1040)"}, }; /* pci_vid_1040[] */ -pci_id_t pci_vid_1041[] = { +static pci_id_t const pci_vid_1041[] = { {0x1041, 0xFFFF, 0xFFFF, 0xFFFF, "Computrend(0x1041)"}, }; /* pci_vid_1041[] */ -pci_id_t pci_vid_1042[] = { +static pci_id_t const pci_vid_1042[] = { {0x1042, 0xFFFF, 0xFFFF, 0xFFFF, "Micron(0x1042)"}, {0x1042, 0x1000, 0xFFFF, 0xFFFF, "PC Tech RZ1000(0x1000)"}, {0x1042, 0x1001, 0xFFFF, 0xFFFF, "PC Tech RZ1001(0x1001)"}, @@ -6803,10 +6849,8 @@ pci_id_t pci_vid_1042[] = { {0x1042, 0x3020, 0xFFFF, 0xFFFF, "Samurai_IDE(0x3020)"}, }; /* pci_vid_1042[] */ -pci_id_t pci_vid_1043[] = { +static pci_id_t const pci_vid_1043[] = { {0x1043, 0xFFFF, 0xFFFF, 0xFFFF, "ASUSTeK Computer Inc.(0x1043)"}, -{0x1043, 0x0464, 0xFFFF, 0xFFFF, "Radeon R9 270x GPU(0x0464)"}, -{0x1043, 0x0521, 0xFFFF, 0xFFFF, "RX580 [RX 580 Dual O8G](0x0521)"}, {0x1043, 0x0675, 0xFFFF, 0xFFFF, "ISDNLink P-IN100-ST-D(0x0675)"}, {0x1043, 0x0675, 0x0675, 0x1704, "ISDN Adapter (PCI Bus, D, C)(0x0675-0x1704)"}, {0x1043, 0x0675, 0x0675, 0x1707, "ISDN Adapter (PCI Bus, DV, W)(0x0675-0x1707)"}, @@ -6815,7 +6859,7 @@ pci_id_t pci_vid_1043[] = { {0x1043, 0x9602, 0x1043, 0x83A2, "M4A785TD Motherboard(0x1043-0x83A2)"}, }; /* pci_vid_1043[] */ -pci_id_t pci_vid_1044[] = { +static pci_id_t const pci_vid_1044[] = { {0x1044, 0xFFFF, 0xFFFF, 0xFFFF, "Adaptec (formerly DPT)(0x1044)"}, {0x1044, 0x1012, 0xFFFF, 0xFFFF, "Domino RAID Engine(0x1012)"}, {0x1044, 0xA400, 0xFFFF, 0xFFFF, "SmartCache/Raid I-IV Controller(0xA400)"}, @@ -6862,7 +6906,7 @@ pci_id_t pci_vid_1044[] = { {0x1044, 0xC066, 0xFFFF, 0xFFFF, "3010S Ultra3 Dual Channel(0xC066)"}, }; /* pci_vid_1044[] */ -pci_id_t pci_vid_1045[] = { +static pci_id_t const pci_vid_1045[] = { {0x1045, 0xFFFF, 0xFFFF, 0xFFFF, "OPTi Inc.(0x1045)"}, {0x1045, 0xA0F8, 0xFFFF, 0xFFFF, "82C750 [Vendetta] USB Controller(0xA0F8)"}, {0x1045, 0xC101, 0xFFFF, 0xFFFF, "92C264(0xC101)"}, @@ -6889,15 +6933,15 @@ pci_id_t pci_vid_1045[] = { {0x1045, 0xD721, 0xFFFF, 0xFFFF, "IDE [FireStar](0xD721)"}, }; /* pci_vid_1045[] */ -pci_id_t pci_vid_1046[] = { +static pci_id_t const pci_vid_1046[] = { {0x1046, 0xFFFF, 0xFFFF, 0xFFFF, "IPC Corporation, Ltd.(0x1046)"}, }; /* pci_vid_1046[] */ -pci_id_t pci_vid_1047[] = { +static pci_id_t const pci_vid_1047[] = { {0x1047, 0xFFFF, 0xFFFF, 0xFFFF, "Genoa Systems Corp(0x1047)"}, }; /* pci_vid_1047[] */ -pci_id_t pci_vid_1048[] = { +static pci_id_t const pci_vid_1048[] = { {0x1048, 0xFFFF, 0xFFFF, 0xFFFF, "Elsa AG(0x1048)"}, {0x1048, 0x0C60, 0xFFFF, 0xFFFF, "Gladiac MX(0x0C60)"}, {0x1048, 0x0D22, 0xFFFF, 0xFFFF, "Quadro4 900XGL [ELSA GLoria4 900XGL](0x0D22)"}, @@ -6907,11 +6951,11 @@ pci_id_t pci_vid_1048[] = { {0x1048, 0x8901, 0x1048, 0x0935, "GLoria XL (Virge)(0x1048-0x0935)"}, }; /* pci_vid_1048[] */ -pci_id_t pci_vid_1049[] = { +static pci_id_t const pci_vid_1049[] = { {0x1049, 0xFFFF, 0xFFFF, 0xFFFF, "Fountain Technologies, Inc.(0x1049)"}, }; /* pci_vid_1049[] */ -pci_id_t pci_vid_104A[] = { +static pci_id_t const pci_vid_104A[] = { {0x104A, 0xFFFF, 0xFFFF, 0xFFFF, "STMicroelectronics(0x104A)"}, {0x104A, 0x0000, 0xFFFF, 0xFFFF, "STLS2F Host Bridge(0x0000)"}, {0x104A, 0x0008, 0xFFFF, 0xFFFF, "STG 2000X(0x0008)"}, @@ -6944,14 +6988,14 @@ pci_id_t pci_vid_104A[] = { {0x104A, 0x55CC, 0xFFFF, 0xFFFF, "STPC Client Southbridge(0x55CC)"}, }; /* pci_vid_104A[] */ -pci_id_t pci_vid_104B[] = { +static pci_id_t const pci_vid_104B[] = { {0x104B, 0xFFFF, 0xFFFF, 0xFFFF, "BusLogic(0x104B)"}, {0x104B, 0x0140, 0xFFFF, 0xFFFF, "BT-946C (old) [multimaster 01](0x0140)"}, {0x104B, 0x1040, 0xFFFF, 0xFFFF, "BT-946C (BA80C30) [MultiMaster 10](0x1040)"}, {0x104B, 0x8130, 0xFFFF, 0xFFFF, "Flashpoint LT(0x8130)"}, }; /* pci_vid_104B[] */ -pci_id_t pci_vid_104C[] = { +static pci_id_t const pci_vid_104C[] = { {0x104C, 0xFFFF, 0xFFFF, 0xFFFF, "Texas Instruments(0x104C)"}, {0x104C, 0x0500, 0xFFFF, 0xFFFF, "100 MBit LAN Controller(0x0500)"}, {0x104C, 0x0508, 0xFFFF, 0xFFFF, "TMS380C2X Compressor Interface(0x0508)"}, @@ -7244,7 +7288,7 @@ pci_id_t pci_vid_104C[] = { {0x104C, 0xFE03, 0xFFFF, 0xFFFF, "12C01A FireWire Host Controller(0xFE03)"}, }; /* pci_vid_104C[] */ -pci_id_t pci_vid_104D[] = { +static pci_id_t const pci_vid_104D[] = { {0x104D, 0xFFFF, 0xFFFF, 0xFFFF, "Sony Corporation(0x104D)"}, {0x104D, 0x8004, 0xFFFF, 0xFFFF, "DTL-H2500 [Playstation development board](0x8004)"}, {0x104D, 0x8009, 0xFFFF, 0xFFFF, "CXD1947Q i.LINK Controller(0x8009)"}, @@ -7290,10 +7334,11 @@ pci_id_t pci_vid_104D[] = { {0x104D, 0x90DC, 0xFFFF, 0xFFFF, "Baikal DMA Controller(0x90DC)"}, {0x104D, 0x90DD, 0xFFFF, 0xFFFF, "Baikal Memory (DDR3/SPM)(0x90DD)"}, {0x104D, 0x90DE, 0xFFFF, 0xFFFF, "Baikal USB 3.0 xHCI Host Controller(0x90DE)"}, +{0x104D, 0x90EB, 0xFFFF, 0xFFFF, "CXD90062GG(0x90EB)"}, {0x104D, 0x9121, 0xFFFF, 0xFFFF, "Nextorage NEM-PA NVMe SSD for PlayStation(0x9121)"}, }; /* pci_vid_104D[] */ -pci_id_t pci_vid_104E[] = { +static pci_id_t const pci_vid_104E[] = { {0x104E, 0xFFFF, 0xFFFF, 0xFFFF, "Oak Technology, Inc(0x104E)"}, {0x104E, 0x0017, 0xFFFF, 0xFFFF, "OTI-64017(0x0017)"}, {0x104E, 0x0107, 0xFFFF, 0xFFFF, "OTI-107 [Spitfire](0x0107)"}, @@ -7303,11 +7348,11 @@ pci_id_t pci_vid_104E[] = { {0x104E, 0x0317, 0xFFFF, 0xFFFF, "OTI-64317(0x0317)"}, }; /* pci_vid_104E[] */ -pci_id_t pci_vid_104F[] = { +static pci_id_t const pci_vid_104F[] = { {0x104F, 0xFFFF, 0xFFFF, 0xFFFF, "Co-time Computer Ltd(0x104F)"}, }; /* pci_vid_104F[] */ -pci_id_t pci_vid_1050[] = { +static pci_id_t const pci_vid_1050[] = { {0x1050, 0xFFFF, 0xFFFF, 0xFFFF, "Winbond Electronics Corp(0x1050)"}, {0x1050, 0x0000, 0xFFFF, 0xFFFF, "NE2000(0x0000)"}, {0x1050, 0x0001, 0xFFFF, 0xFFFF, "W83769F(0x0001)"}, @@ -7330,19 +7375,19 @@ pci_id_t pci_vid_1050[] = { {0x1050, 0x9970, 0xFFFF, 0xFFFF, "W9970CF(0x9970)"}, }; /* pci_vid_1050[] */ -pci_id_t pci_vid_1051[] = { +static pci_id_t const pci_vid_1051[] = { {0x1051, 0xFFFF, 0xFFFF, 0xFFFF, "Anigma, Inc.(0x1051)"}, }; /* pci_vid_1051[] */ -pci_id_t pci_vid_1052[] = { +static pci_id_t const pci_vid_1052[] = { {0x1052, 0xFFFF, 0xFFFF, 0xFFFF, "?-Young Micro Systems(0x1052)"}, }; /* pci_vid_1052[] */ -pci_id_t pci_vid_1053[] = { +static pci_id_t const pci_vid_1053[] = { {0x1053, 0xFFFF, 0xFFFF, 0xFFFF, "Young Micro Systems(0x1053)"}, }; /* pci_vid_1053[] */ -pci_id_t pci_vid_1054[] = { +static pci_id_t const pci_vid_1054[] = { {0x1054, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi, Ltd(0x1054)"}, {0x1054, 0x3009, 0xFFFF, 0xFFFF, "2Gbps Fibre Channel to PCI HBA 3009(0x3009)"}, {0x1054, 0x300A, 0xFFFF, 0xFFFF, "4Gbps Fibre Channel to PCI-X HBA 300a(0x300A)"}, @@ -7362,7 +7407,7 @@ pci_id_t pci_vid_1054[] = { {0x1054, 0x350E, 0xFFFF, 0xFFFF, "SH7751R PCI Controller (PCIC)(0x350E)"}, }; /* pci_vid_1054[] */ -pci_id_t pci_vid_1055[] = { +static pci_id_t const pci_vid_1055[] = { {0x1055, 0xFFFF, 0xFFFF, 0xFFFF, "Microchip Technology / SMSC(0x1055)"}, {0x1055, 0x7430, 0xFFFF, 0xFFFF, "LAN7430(0x7430)"}, {0x1055, 0x7431, 0xFFFF, 0xFFFF, "LAN7431(0x7431)"}, @@ -7373,11 +7418,11 @@ pci_id_t pci_vid_1055[] = { {0x1055, 0xE420, 0xFFFF, 0xFFFF, "LAN9420/LAN9420i(0xE420)"}, }; /* pci_vid_1055[] */ -pci_id_t pci_vid_1056[] = { +static pci_id_t const pci_vid_1056[] = { {0x1056, 0xFFFF, 0xFFFF, 0xFFFF, "ICL(0x1056)"}, }; /* pci_vid_1056[] */ -pci_id_t pci_vid_1057[] = { +static pci_id_t const pci_vid_1057[] = { {0x1057, 0xFFFF, 0xFFFF, 0xFFFF, "Motorola(0x1057)"}, {0x1057, 0x0001, 0xFFFF, 0xFFFF, "MPC105 [Eagle](0x0001)"}, {0x1057, 0x0002, 0xFFFF, 0xFFFF, "MPC106 [Grackle](0x0002)"}, @@ -7465,17 +7510,17 @@ pci_id_t pci_vid_1057[] = { {0x1057, 0x6405, 0xFFFF, 0xFFFF, "MPC184 Security Processor (S1 family)(0x6405)"}, }; /* pci_vid_1057[] */ -pci_id_t pci_vid_1058[] = { +static pci_id_t const pci_vid_1058[] = { {0x1058, 0xFFFF, 0xFFFF, 0xFFFF, "Electronics & Telecommunications RSH(0x1058)"}, }; /* pci_vid_1058[] */ -pci_id_t pci_vid_1059[] = { +static pci_id_t const pci_vid_1059[] = { {0x1059, 0xFFFF, 0xFFFF, 0xFFFF, "Kontron(0x1059)"}, {0x1059, 0x0004, 0xFFFF, 0xFFFF, "FPGA M.2 (K20058)(0x0004)"}, {0x1059, 0x0004, 0x1059, 0x0000, "FPGA M.2 (K20058)(0x1059-0x0000)"}, }; /* pci_vid_1059[] */ -pci_id_t pci_vid_105A[] = { +static pci_id_t const pci_vid_105A[] = { {0x105A, 0xFFFF, 0xFFFF, 0xFFFF, "Promise Technology, Inc.(0x105A)"}, {0x105A, 0x0D30, 0xFFFF, 0xFFFF, "PDC20265 (FastTrak100 Lite/Ultra100)(0x0D30)"}, {0x105A, 0x0D30, 0x1043, 0x8042, "AV7266-E South Bridge Promise RAID(0x1043-0x8042)"}, @@ -7559,16 +7604,17 @@ pci_id_t pci_vid_105A[] = { {0x105A, 0xE350, 0xFFFF, 0xFFFF, "80333 [SuperTrak EX24350](0xE350)"}, }; /* pci_vid_105A[] */ -pci_id_t pci_vid_105B[] = { +static pci_id_t const pci_vid_105B[] = { {0x105B, 0xFFFF, 0xFFFF, 0xFFFF, "Foxconn International, Inc.(0x105B)"}, +{0x105B, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, {0x105B, 0xE0C3, 0xFFFF, 0xFFFF, "T99W175 5G Modem [Snapdragon X55](0xE0C3)"}, }; /* pci_vid_105B[] */ -pci_id_t pci_vid_105C[] = { +static pci_id_t const pci_vid_105C[] = { {0x105C, 0xFFFF, 0xFFFF, 0xFFFF, "Wipro Infotech Limited(0x105C)"}, }; /* pci_vid_105C[] */ -pci_id_t pci_vid_105D[] = { +static pci_id_t const pci_vid_105D[] = { {0x105D, 0xFFFF, 0xFFFF, 0xFFFF, "Number 9 Computer Company(0x105D)"}, {0x105D, 0x2309, 0xFFFF, 0xFFFF, "Imagine 128(0x2309)"}, {0x105D, 0x2339, 0xFFFF, 0xFFFF, "Imagine 128-II(0x2339)"}, @@ -7608,15 +7654,15 @@ pci_id_t pci_vid_105D[] = { {0x105D, 0x5348, 0x11A4, 0x0038, "PVS5600D(0x11A4-0x0038)"}, }; /* pci_vid_105D[] */ -pci_id_t pci_vid_105E[] = { +static pci_id_t const pci_vid_105E[] = { {0x105E, 0xFFFF, 0xFFFF, 0xFFFF, "Vtech Computers Ltd(0x105E)"}, }; /* pci_vid_105E[] */ -pci_id_t pci_vid_105F[] = { +static pci_id_t const pci_vid_105F[] = { {0x105F, 0xFFFF, 0xFFFF, 0xFFFF, "Infotronic America Inc(0x105F)"}, }; /* pci_vid_105F[] */ -pci_id_t pci_vid_1060[] = { +static pci_id_t const pci_vid_1060[] = { {0x1060, 0xFFFF, 0xFFFF, 0xFFFF, "United Microelectronics [UMC](0x1060)"}, {0x1060, 0x0001, 0xFFFF, 0xFFFF, "UM82C881(0x0001)"}, {0x1060, 0x0002, 0xFFFF, 0xFFFF, "UM82C886(0x0002)"}, @@ -7642,30 +7688,30 @@ pci_id_t pci_vid_1060[] = { {0x1060, 0xE891, 0xFFFF, 0xFFFF, "UM8891N(0xE891)"}, }; /* pci_vid_1060[] */ -pci_id_t pci_vid_1061[] = { +static pci_id_t const pci_vid_1061[] = { {0x1061, 0xFFFF, 0xFFFF, 0xFFFF, "I.I.T.(0x1061)"}, {0x1061, 0x0001, 0xFFFF, 0xFFFF, "AGX016(0x0001)"}, {0x1061, 0x0002, 0xFFFF, 0xFFFF, "IIT3204/3501(0x0002)"}, }; /* pci_vid_1061[] */ -pci_id_t pci_vid_1062[] = { +static pci_id_t const pci_vid_1062[] = { {0x1062, 0xFFFF, 0xFFFF, 0xFFFF, "Maspar Computer Corp(0x1062)"}, }; /* pci_vid_1062[] */ -pci_id_t pci_vid_1063[] = { +static pci_id_t const pci_vid_1063[] = { {0x1063, 0xFFFF, 0xFFFF, 0xFFFF, "Ocean Office Automation(0x1063)"}, }; /* pci_vid_1063[] */ -pci_id_t pci_vid_1064[] = { +static pci_id_t const pci_vid_1064[] = { {0x1064, 0xFFFF, 0xFFFF, 0xFFFF, "Alcatel(0x1064)"}, {0x1064, 0x1102, 0xFFFF, 0xFFFF, "Dynamite 2840 (ADSL PCI modem)(0x1102)"}, }; /* pci_vid_1064[] */ -pci_id_t pci_vid_1065[] = { +static pci_id_t const pci_vid_1065[] = { {0x1065, 0xFFFF, 0xFFFF, 0xFFFF, "Texas Microsystems(0x1065)"}, }; /* pci_vid_1065[] */ -pci_id_t pci_vid_1066[] = { +static pci_id_t const pci_vid_1066[] = { {0x1066, 0xFFFF, 0xFFFF, 0xFFFF, "PicoPower Technology(0x1066)"}, {0x1066, 0x0000, 0xFFFF, 0xFFFF, "PT80C826(0x0000)"}, {0x1066, 0x0001, 0xFFFF, 0xFFFF, "PT86C521 [Vesuvius v1] Host Bridge(0x0001)"}, @@ -7676,7 +7722,7 @@ pci_id_t pci_vid_1066[] = { {0x1066, 0x8002, 0xFFFF, 0xFFFF, "PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave(0x8002)"}, }; /* pci_vid_1066[] */ -pci_id_t pci_vid_1067[] = { +static pci_id_t const pci_vid_1067[] = { {0x1067, 0xFFFF, 0xFFFF, 0xFFFF, "Mitsubishi Electric(0x1067)"}, {0x1067, 0x0301, 0xFFFF, 0xFFFF, "AccelGraphics AccelECLIPSE(0x0301)"}, {0x1067, 0x0304, 0xFFFF, 0xFFFF, "AccelGALAXY A2100 [OEM Evans & Sutherland](0x0304)"}, @@ -7684,11 +7730,11 @@ pci_id_t pci_vid_1067[] = { {0x1067, 0x1002, 0xFFFF, 0xFFFF, "VG500 [VolumePro Volume Rendering Accelerator](0x1002)"}, }; /* pci_vid_1067[] */ -pci_id_t pci_vid_1068[] = { +static pci_id_t const pci_vid_1068[] = { {0x1068, 0xFFFF, 0xFFFF, 0xFFFF, "Diversified Technology(0x1068)"}, }; /* pci_vid_1068[] */ -pci_id_t pci_vid_1069[] = { +static pci_id_t const pci_vid_1069[] = { {0x1069, 0xFFFF, 0xFFFF, 0xFFFF, "Mylex Corporation(0x1069)"}, {0x1069, 0x0001, 0xFFFF, 0xFFFF, "DAC960P(0x0001)"}, {0x1069, 0x0002, 0xFFFF, 0xFFFF, "DAC960PD(0x0002)"}, @@ -7716,11 +7762,11 @@ pci_id_t pci_vid_1069[] = { {0x1069, 0xBA57, 0x1069, 0x0072, "eXtremeRAID 5000 support Device(0x1069-0x0072)"}, }; /* pci_vid_1069[] */ -pci_id_t pci_vid_106A[] = { +static pci_id_t const pci_vid_106A[] = { {0x106A, 0xFFFF, 0xFFFF, 0xFFFF, "Aten Research Inc(0x106A)"}, }; /* pci_vid_106A[] */ -pci_id_t pci_vid_106B[] = { +static pci_id_t const pci_vid_106B[] = { {0x106B, 0xFFFF, 0xFFFF, 0xFFFF, "Apple Inc.(0x106B)"}, {0x106B, 0x0001, 0xFFFF, 0xFFFF, "Bandit PowerPC host bridge(0x0001)"}, {0x106B, 0x0002, 0xFFFF, 0xFFFF, "Grand Central I/O(0x0002)"}, @@ -7803,7 +7849,7 @@ pci_id_t pci_vid_106B[] = { {0x106B, 0x2005, 0xFFFF, 0xFFFF, "ANS2 NVMe Controller(0x2005)"}, }; /* pci_vid_106B[] */ -pci_id_t pci_vid_106C[] = { +static pci_id_t const pci_vid_106C[] = { {0x106C, 0xFFFF, 0xFFFF, 0xFFFF, "Hynix Semiconductor(0x106C)"}, {0x106C, 0x8139, 0xFFFF, 0xFFFF, "8139c 100BaseTX Ethernet Controller(0x8139)"}, {0x106C, 0x8801, 0xFFFF, 0xFFFF, "Dual Pentium ISA/PCI Motherboard(0x8801)"}, @@ -7813,32 +7859,32 @@ pci_id_t pci_vid_106C[] = { {0x106C, 0x8805, 0xFFFF, 0xFFFF, "100-BaseT LAN(0x8805)"}, }; /* pci_vid_106C[] */ -pci_id_t pci_vid_106D[] = { +static pci_id_t const pci_vid_106D[] = { {0x106D, 0xFFFF, 0xFFFF, 0xFFFF, "Sequent Computer Systems(0x106D)"}, }; /* pci_vid_106D[] */ -pci_id_t pci_vid_106E[] = { +static pci_id_t const pci_vid_106E[] = { {0x106E, 0xFFFF, 0xFFFF, 0xFFFF, "DFI, Inc(0x106E)"}, }; /* pci_vid_106E[] */ -pci_id_t pci_vid_106F[] = { +static pci_id_t const pci_vid_106F[] = { {0x106F, 0xFFFF, 0xFFFF, 0xFFFF, "City Gate Development Ltd(0x106F)"}, }; /* pci_vid_106F[] */ -pci_id_t pci_vid_1070[] = { +static pci_id_t const pci_vid_1070[] = { {0x1070, 0xFFFF, 0xFFFF, 0xFFFF, "Daewoo Telecom Ltd(0x1070)"}, }; /* pci_vid_1070[] */ -pci_id_t pci_vid_1071[] = { +static pci_id_t const pci_vid_1071[] = { {0x1071, 0xFFFF, 0xFFFF, 0xFFFF, "Mitac(0x1071)"}, {0x1071, 0x8160, 0xFFFF, 0xFFFF, "Mitac 8060B Mobile Platform(0x8160)"}, }; /* pci_vid_1071[] */ -pci_id_t pci_vid_1072[] = { +static pci_id_t const pci_vid_1072[] = { {0x1072, 0xFFFF, 0xFFFF, 0xFFFF, "GIT Co Ltd(0x1072)"}, }; /* pci_vid_1072[] */ -pci_id_t pci_vid_1073[] = { +static pci_id_t const pci_vid_1073[] = { {0x1073, 0xFFFF, 0xFFFF, 0xFFFF, "Yamaha Corporation(0x1073)"}, {0x1073, 0x0001, 0xFFFF, 0xFFFF, "3D GUI Accelerator(0x0001)"}, {0x1073, 0x0002, 0xFFFF, 0xFFFF, "YGV615 [RPA3 3D-Graphics Controller](0x0002)"}, @@ -7869,23 +7915,23 @@ pci_id_t pci_vid_1073[] = { {0x1073, 0x2000, 0x1073, 0x2000, "DS2416 Digital Mixing Card(0x1073-0x2000)"}, }; /* pci_vid_1073[] */ -pci_id_t pci_vid_1074[] = { +static pci_id_t const pci_vid_1074[] = { {0x1074, 0xFFFF, 0xFFFF, 0xFFFF, "NexGen Microsystems(0x1074)"}, {0x1074, 0x4E78, 0xFFFF, 0xFFFF, "82c500/1(0x4E78)"}, }; /* pci_vid_1074[] */ -pci_id_t pci_vid_1075[] = { +static pci_id_t const pci_vid_1075[] = { {0x1075, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Integrations Research(0x1075)"}, }; /* pci_vid_1075[] */ -pci_id_t pci_vid_1076[] = { +static pci_id_t const pci_vid_1076[] = { {0x1076, 0xFFFF, 0xFFFF, 0xFFFF, "Chaintech Computer Co. Ltd(0x1076)"}, }; /* pci_vid_1076[] */ -pci_id_t pci_vid_1077[] = { +static pci_id_t const pci_vid_1077[] = { {0x1077, 0xFFFF, 0xFFFF, 0xFFFF, "QLogic Corp.(0x1077)"}, {0x1077, 0x1016, 0xFFFF, 0xFFFF, "ISP10160 Single Channel Ultra3 SCSI Processor(0x1016)"}, -{0x1077, 0x1020, 0xFFFF, 0xFFFF, "ISP1020 Fast-wide SCSI(0x1020)"}, +{0x1077, 0x1020, 0xFFFF, 0xFFFF, "ISP1020/1040 Fast-wide SCSI(0x1020)"}, {0x1077, 0x1022, 0xFFFF, 0xFFFF, "ISP1022 Fast-wide SCSI(0x1022)"}, {0x1077, 0x1080, 0xFFFF, 0xFFFF, "ISP1080 SCSI Host Adapter(0x1080)"}, {0x1077, 0x1216, 0xFFFF, 0xFFFF, "ISP12160 Dual Channel Ultra3 SCSI Processor(0x1216)"}, @@ -8144,7 +8190,7 @@ pci_id_t pci_vid_1077[] = { {0x1077, 0x8432, 0xFFFF, 0xFFFF, "ISP2432M-based 10GbE Converged Network Adapter (CNA)(0x8432)"}, }; /* pci_vid_1077[] */ -pci_id_t pci_vid_1078[] = { +static pci_id_t const pci_vid_1078[] = { {0x1078, 0xFFFF, 0xFFFF, 0xFFFF, "Cyrix Corporation(0x1078)"}, {0x1078, 0x0000, 0xFFFF, 0xFFFF, "5510 [Grappa](0x0000)"}, {0x1078, 0x0001, 0xFFFF, 0xFFFF, "PCI Master(0x0001)"}, @@ -8160,28 +8206,28 @@ pci_id_t pci_vid_1078[] = { {0x1078, 0x0403, 0xFFFF, 0xFFFF, "ZFMicro Expansion Bus(0x0403)"}, }; /* pci_vid_1078[] */ -pci_id_t pci_vid_1079[] = { +static pci_id_t const pci_vid_1079[] = { {0x1079, 0xFFFF, 0xFFFF, 0xFFFF, "I-Bus(0x1079)"}, }; /* pci_vid_1079[] */ -pci_id_t pci_vid_107A[] = { +static pci_id_t const pci_vid_107A[] = { {0x107A, 0xFFFF, 0xFFFF, 0xFFFF, "NetWorth(0x107A)"}, }; /* pci_vid_107A[] */ -pci_id_t pci_vid_107B[] = { +static pci_id_t const pci_vid_107B[] = { {0x107B, 0xFFFF, 0xFFFF, 0xFFFF, "Gateway, Inc.(0x107B)"}, }; /* pci_vid_107B[] */ -pci_id_t pci_vid_107C[] = { +static pci_id_t const pci_vid_107C[] = { {0x107C, 0xFFFF, 0xFFFF, 0xFFFF, "LG Electronics [Lucky Goldstar Co. Ltd](0x107C)"}, }; /* pci_vid_107C[] */ -pci_id_t pci_vid_107D[] = { +static pci_id_t const pci_vid_107D[] = { {0x107D, 0xFFFF, 0xFFFF, 0xFFFF, "LeadTek Research Inc.(0x107D)"}, {0x107D, 0x0000, 0xFFFF, 0xFFFF, "P86C850(0x0000)"}, }; /* pci_vid_107D[] */ -pci_id_t pci_vid_107E[] = { +static pci_id_t const pci_vid_107E[] = { {0x107E, 0xFFFF, 0xFFFF, 0xFFFF, "Interphase Corporation(0x107E)"}, {0x107E, 0x0001, 0xFFFF, 0xFFFF, "5515 ATM Adapter [Flipper](0x0001)"}, {0x107E, 0x0002, 0xFFFF, 0xFFFF, "100 VG AnyLan Controller(0x0002)"}, @@ -8201,53 +8247,53 @@ pci_id_t pci_vid_107E[] = { {0x107E, 0x9033, 0xFFFF, 0xFFFF, "5536-2P-PRI(0x9033)"}, }; /* pci_vid_107E[] */ -pci_id_t pci_vid_107F[] = { +static pci_id_t const pci_vid_107F[] = { {0x107F, 0xFFFF, 0xFFFF, 0xFFFF, "Data Technology Corporation(0x107F)"}, {0x107F, 0x0802, 0xFFFF, 0xFFFF, "SL82C105(0x0802)"}, }; /* pci_vid_107F[] */ -pci_id_t pci_vid_1080[] = { +static pci_id_t const pci_vid_1080[] = { {0x1080, 0xFFFF, 0xFFFF, 0xFFFF, "Contaq Microsystems(0x1080)"}, {0x1080, 0x0600, 0xFFFF, 0xFFFF, "82C599(0x0600)"}, {0x1080, 0xC691, 0xFFFF, 0xFFFF, "Cypress CY82C691(0xC691)"}, {0x1080, 0xC693, 0xFFFF, 0xFFFF, "82c693(0xC693)"}, }; /* pci_vid_1080[] */ -pci_id_t pci_vid_1081[] = { +static pci_id_t const pci_vid_1081[] = { {0x1081, 0xFFFF, 0xFFFF, 0xFFFF, "Supermac Technology(0x1081)"}, {0x1081, 0x0D47, 0xFFFF, 0xFFFF, "Radius PCI to NuBUS Bridge(0x0D47)"}, }; /* pci_vid_1081[] */ -pci_id_t pci_vid_1082[] = { +static pci_id_t const pci_vid_1082[] = { {0x1082, 0xFFFF, 0xFFFF, 0xFFFF, "EFA Corporation of America(0x1082)"}, }; /* pci_vid_1082[] */ -pci_id_t pci_vid_1083[] = { +static pci_id_t const pci_vid_1083[] = { {0x1083, 0xFFFF, 0xFFFF, 0xFFFF, "Forex Computer Corporation(0x1083)"}, {0x1083, 0x0001, 0xFFFF, 0xFFFF, "FR710(0x0001)"}, }; /* pci_vid_1083[] */ -pci_id_t pci_vid_1084[] = { +static pci_id_t const pci_vid_1084[] = { {0x1084, 0xFFFF, 0xFFFF, 0xFFFF, "Parador(0x1084)"}, }; /* pci_vid_1084[] */ -pci_id_t pci_vid_1086[] = { +static pci_id_t const pci_vid_1086[] = { {0x1086, 0xFFFF, 0xFFFF, 0xFFFF, "J. Bond Computer Systems(0x1086)"}, }; /* pci_vid_1086[] */ -pci_id_t pci_vid_1087[] = { +static pci_id_t const pci_vid_1087[] = { {0x1087, 0xFFFF, 0xFFFF, 0xFFFF, "Cache Computer(0x1087)"}, }; /* pci_vid_1087[] */ -pci_id_t pci_vid_1088[] = { +static pci_id_t const pci_vid_1088[] = { {0x1088, 0xFFFF, 0xFFFF, 0xFFFF, "Microcomputer Systems (M) Son(0x1088)"}, }; /* pci_vid_1088[] */ -pci_id_t pci_vid_1089[] = { +static pci_id_t const pci_vid_1089[] = { {0x1089, 0xFFFF, 0xFFFF, 0xFFFF, "Data General Corporation(0x1089)"}, }; /* pci_vid_1089[] */ -pci_id_t pci_vid_108A[] = { +static pci_id_t const pci_vid_108A[] = { {0x108A, 0xFFFF, 0xFFFF, 0xFFFF, "SBS Technologies(0x108A)"}, {0x108A, 0x0001, 0xFFFF, 0xFFFF, "VME Bridge Model 617(0x0001)"}, {0x108A, 0x0010, 0xFFFF, 0xFFFF, "VME Bridge Model 618(0x0010)"}, @@ -8255,11 +8301,11 @@ pci_id_t pci_vid_108A[] = { {0x108A, 0x3000, 0xFFFF, 0xFFFF, "VME Bridge Model 2706(0x3000)"}, }; /* pci_vid_108A[] */ -pci_id_t pci_vid_108C[] = { +static pci_id_t const pci_vid_108C[] = { {0x108C, 0xFFFF, 0xFFFF, 0xFFFF, "Oakleigh Systems Inc.(0x108C)"}, }; /* pci_vid_108C[] */ -pci_id_t pci_vid_108D[] = { +static pci_id_t const pci_vid_108D[] = { {0x108D, 0xFFFF, 0xFFFF, 0xFFFF, "Olicom(0x108D)"}, {0x108D, 0x0001, 0xFFFF, 0xFFFF, "Token-Ring 16/4 PCI Adapter (3136/3137)(0x0001)"}, {0x108D, 0x0002, 0xFFFF, 0xFFFF, "16/4 Token Ring(0x0002)"}, @@ -8282,7 +8328,7 @@ pci_id_t pci_vid_108D[] = { {0x108D, 0x0022, 0xFFFF, 0xFFFF, "ATM Adapter(0x0022)"}, }; /* pci_vid_108D[] */ -pci_id_t pci_vid_108E[] = { +static pci_id_t const pci_vid_108E[] = { {0x108E, 0xFFFF, 0xFFFF, 0xFFFF, "Oracle/SUN(0x108E)"}, {0x108E, 0x0001, 0xFFFF, 0xFFFF, "EBUS(0x0001)"}, {0x108E, 0x1000, 0xFFFF, 0xFFFF, "STP2003QFP [PCIO] EBUS(0x1000)"}, @@ -8343,17 +8389,17 @@ pci_id_t pci_vid_108E[] = { {0x108E, 0xC416, 0xFFFF, 0xFFFF, "Sun Fire System/System Controller Interface chip [sbbc](0xC416)"}, }; /* pci_vid_108E[] */ -pci_id_t pci_vid_108F[] = { +static pci_id_t const pci_vid_108F[] = { {0x108F, 0xFFFF, 0xFFFF, 0xFFFF, "Systemsoft(0x108F)"}, }; /* pci_vid_108F[] */ -pci_id_t pci_vid_1090[] = { +static pci_id_t const pci_vid_1090[] = { {0x1090, 0xFFFF, 0xFFFF, 0xFFFF, "Compro Computer Services, Inc.(0x1090)"}, {0x1090, 0x4610, 0xFFFF, 0xFFFF, "PCI RTOM(0x4610)"}, {0x1090, 0x4620, 0xFFFF, 0xFFFF, "GPIO HSD(0x4620)"}, }; /* pci_vid_1090[] */ -pci_id_t pci_vid_1091[] = { +static pci_id_t const pci_vid_1091[] = { {0x1091, 0xFFFF, 0xFFFF, 0xFFFF, "Intergraph Corporation(0x1091)"}, {0x1091, 0x0020, 0xFFFF, 0xFFFF, "3D graphics processor(0x0020)"}, {0x1091, 0x0021, 0xFFFF, 0xFFFF, "3D graphics processor w/Texturing(0x0021)"}, @@ -8367,7 +8413,7 @@ pci_id_t pci_vid_1091[] = { {0x1091, 0x1091, 0xFFFF, 0xFFFF, "Sun Expert3D Graphics Accelerator(0x1091)"}, }; /* pci_vid_1091[] */ -pci_id_t pci_vid_1092[] = { +static pci_id_t const pci_vid_1092[] = { {0x1092, 0xFFFF, 0xFFFF, 0xFFFF, "Diamond Multimedia Systems(0x1092)"}, {0x1092, 0x0028, 0xFFFF, 0xFFFF, "Viper V770(0x0028)"}, {0x1092, 0x0028, 0x1092, 0x4A00, "Viper V770 32MB(0x1092-0x4A00)"}, @@ -8394,7 +8440,7 @@ pci_id_t pci_vid_1092[] = { {0x1092, 0x9999, 0xFFFF, 0xFFFF, "DMD-I0928-1 \"Monster sound\" sound chip(0x9999)"}, }; /* pci_vid_1092[] */ -pci_id_t pci_vid_1093[] = { +static pci_id_t const pci_vid_1093[] = { {0x1093, 0xFFFF, 0xFFFF, 0xFFFF, "National Instruments(0x1093)"}, {0x1093, 0x0160, 0xFFFF, 0xFFFF, "PCI-DIO-96(0x0160)"}, {0x1093, 0x0162, 0xFFFF, 0xFFFF, "PCI-MIO-16XE-50(0x0162)"}, @@ -9178,11 +9224,11 @@ pci_id_t pci_vid_1093[] = { {0x1093, 0xFE70, 0xFFFF, 0xFFFF, "VXIpc-880(0xFE70)"}, }; /* pci_vid_1093[] */ -pci_id_t pci_vid_1094[] = { +static pci_id_t const pci_vid_1094[] = { {0x1094, 0xFFFF, 0xFFFF, 0xFFFF, "First International Computers [FIC](0x1094)"}, }; /* pci_vid_1094[] */ -pci_id_t pci_vid_1095[] = { +static pci_id_t const pci_vid_1095[] = { {0x1095, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Image, Inc.(0x1095)"}, {0x1095, 0x0240, 0xFFFF, 0xFFFF, "Adaptec AAR-1210SA SATA HostRAID Controller(0x0240)"}, {0x1095, 0x0242, 0xFFFF, 0xFFFF, "AAR-1220SA SATA RAID Controller(0x0242)"}, @@ -9221,41 +9267,41 @@ pci_id_t pci_vid_1095[] = { {0x1095, 0x3531, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, }; /* pci_vid_1095[] */ -pci_id_t pci_vid_1096[] = { +static pci_id_t const pci_vid_1096[] = { {0x1096, 0xFFFF, 0xFFFF, 0xFFFF, "Alacron(0x1096)"}, }; /* pci_vid_1096[] */ -pci_id_t pci_vid_1097[] = { +static pci_id_t const pci_vid_1097[] = { {0x1097, 0xFFFF, 0xFFFF, 0xFFFF, "Appian Technology(0x1097)"}, }; /* pci_vid_1097[] */ -pci_id_t pci_vid_1098[] = { +static pci_id_t const pci_vid_1098[] = { {0x1098, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum Designs (H.K.) Ltd(0x1098)"}, {0x1098, 0x0001, 0xFFFF, 0xFFFF, "QD-8500(0x0001)"}, {0x1098, 0x0002, 0xFFFF, 0xFFFF, "QD-8580(0x0002)"}, }; /* pci_vid_1098[] */ -pci_id_t pci_vid_1099[] = { +static pci_id_t const pci_vid_1099[] = { {0x1099, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Electronics Co., Ltd(0x1099)"}, }; /* pci_vid_1099[] */ -pci_id_t pci_vid_109A[] = { +static pci_id_t const pci_vid_109A[] = { {0x109A, 0xFFFF, 0xFFFF, 0xFFFF, "Packard Bell(0x109A)"}, }; /* pci_vid_109A[] */ -pci_id_t pci_vid_109B[] = { +static pci_id_t const pci_vid_109B[] = { {0x109B, 0xFFFF, 0xFFFF, 0xFFFF, "Gemlight Computer Ltd.(0x109B)"}, }; /* pci_vid_109B[] */ -pci_id_t pci_vid_109C[] = { +static pci_id_t const pci_vid_109C[] = { {0x109C, 0xFFFF, 0xFFFF, 0xFFFF, "Megachips Corporation(0x109C)"}, }; /* pci_vid_109C[] */ -pci_id_t pci_vid_109D[] = { +static pci_id_t const pci_vid_109D[] = { {0x109D, 0xFFFF, 0xFFFF, 0xFFFF, "Zida Technologies Ltd.(0x109D)"}, }; /* pci_vid_109D[] */ -pci_id_t pci_vid_109E[] = { +static pci_id_t const pci_vid_109E[] = { {0x109E, 0xFFFF, 0xFFFF, 0xFFFF, "Brooktree Corporation(0x109E)"}, {0x109E, 0x0310, 0xFFFF, 0xFFFF, "Bt848 Video Capture(0x0310)"}, {0x109E, 0x032E, 0xFFFF, 0xFFFF, "Bt878 Video Capture(0x032E)"}, @@ -9448,50 +9494,50 @@ pci_id_t pci_vid_109E[] = { {0x109E, 0x8474, 0xFFFF, 0xFFFF, "Bt8474(0x8474)"}, }; /* pci_vid_109E[] */ -pci_id_t pci_vid_109F[] = { +static pci_id_t const pci_vid_109F[] = { {0x109F, 0xFFFF, 0xFFFF, 0xFFFF, "Trigem Computer Inc.(0x109F)"}, }; /* pci_vid_109F[] */ -pci_id_t pci_vid_10A0[] = { +static pci_id_t const pci_vid_10A0[] = { {0x10A0, 0xFFFF, 0xFFFF, 0xFFFF, "Meidensha Corporation(0x10A0)"}, }; /* pci_vid_10A0[] */ -pci_id_t pci_vid_10A1[] = { +static pci_id_t const pci_vid_10A1[] = { {0x10A1, 0xFFFF, 0xFFFF, 0xFFFF, "Juko Electronics Ind. Co. Ltd(0x10A1)"}, }; /* pci_vid_10A1[] */ -pci_id_t pci_vid_10A2[] = { +static pci_id_t const pci_vid_10A2[] = { {0x10A2, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum Corporation(0x10A2)"}, }; /* pci_vid_10A2[] */ -pci_id_t pci_vid_10A3[] = { +static pci_id_t const pci_vid_10A3[] = { {0x10A3, 0xFFFF, 0xFFFF, 0xFFFF, "Everex Systems Inc(0x10A3)"}, }; /* pci_vid_10A3[] */ -pci_id_t pci_vid_10A4[] = { +static pci_id_t const pci_vid_10A4[] = { {0x10A4, 0xFFFF, 0xFFFF, 0xFFFF, "Globe Manufacturing Sales(0x10A4)"}, }; /* pci_vid_10A4[] */ -pci_id_t pci_vid_10A5[] = { +static pci_id_t const pci_vid_10A5[] = { {0x10A5, 0xFFFF, 0xFFFF, 0xFFFF, "Smart Link Ltd.(0x10A5)"}, {0x10A5, 0x3052, 0xFFFF, 0xFFFF, "SmartPCI562 56K Modem(0x3052)"}, {0x10A5, 0x5449, 0xFFFF, 0xFFFF, "SmartPCI561 modem(0x5449)"}, }; /* pci_vid_10A5[] */ -pci_id_t pci_vid_10A6[] = { +static pci_id_t const pci_vid_10A6[] = { {0x10A6, 0xFFFF, 0xFFFF, 0xFFFF, "Informtech Industrial Ltd.(0x10A6)"}, }; /* pci_vid_10A6[] */ -pci_id_t pci_vid_10A7[] = { +static pci_id_t const pci_vid_10A7[] = { {0x10A7, 0xFFFF, 0xFFFF, 0xFFFF, "Benchmarq Microelectronics(0x10A7)"}, }; /* pci_vid_10A7[] */ -pci_id_t pci_vid_10A8[] = { +static pci_id_t const pci_vid_10A8[] = { {0x10A8, 0xFFFF, 0xFFFF, 0xFFFF, "Sierra Semiconductor(0x10A8)"}, {0x10A8, 0x0000, 0xFFFF, 0xFFFF, "STB Horizon 64(0x0000)"}, }; /* pci_vid_10A8[] */ -pci_id_t pci_vid_10A9[] = { +static pci_id_t const pci_vid_10A9[] = { {0x10A9, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Graphics Intl. Corp.(0x10A9)"}, {0x10A9, 0x0001, 0xFFFF, 0xFFFF, "Crosstalk to PCI Bridge(0x0001)"}, {0x10A9, 0x0002, 0xFFFF, 0xFFFF, "Linc I/O controller(0x0002)"}, @@ -9526,22 +9572,22 @@ pci_id_t pci_vid_10A9[] = { {0x10A9, 0x802B, 0xFFFF, 0xFFFF, "REACT external interrupt controller(0x802B)"}, }; /* pci_vid_10A9[] */ -pci_id_t pci_vid_10AA[] = { +static pci_id_t const pci_vid_10AA[] = { {0x10AA, 0xFFFF, 0xFFFF, 0xFFFF, "ACC Microelectronics(0x10AA)"}, {0x10AA, 0x0000, 0xFFFF, 0xFFFF, "ACCM 2188(0x0000)"}, {0x10AA, 0x2051, 0xFFFF, 0xFFFF, "2051 CPU bridge(0x2051)"}, {0x10AA, 0x5842, 0xFFFF, 0xFFFF, "2051 ISA bridge(0x5842)"}, }; /* pci_vid_10AA[] */ -pci_id_t pci_vid_10AB[] = { +static pci_id_t const pci_vid_10AB[] = { {0x10AB, 0xFFFF, 0xFFFF, 0xFFFF, "Digicom(0x10AB)"}, }; /* pci_vid_10AB[] */ -pci_id_t pci_vid_10AC[] = { +static pci_id_t const pci_vid_10AC[] = { {0x10AC, 0xFFFF, 0xFFFF, 0xFFFF, "Honeywell IAC(0x10AC)"}, }; /* pci_vid_10AC[] */ -pci_id_t pci_vid_10AD[] = { +static pci_id_t const pci_vid_10AD[] = { {0x10AD, 0xFFFF, 0xFFFF, 0xFFFF, "Symphony Labs(0x10AD)"}, {0x10AD, 0x0001, 0xFFFF, 0xFFFF, "W83769F(0x0001)"}, {0x10AD, 0x0003, 0xFFFF, 0xFFFF, "SL82C103(0x0003)"}, @@ -9551,39 +9597,39 @@ pci_id_t pci_vid_10AD[] = { {0x10AD, 0x0565, 0xFFFF, 0xFFFF, "W83C553F/W83C554F(0x0565)"}, }; /* pci_vid_10AD[] */ -pci_id_t pci_vid_10AE[] = { +static pci_id_t const pci_vid_10AE[] = { {0x10AE, 0xFFFF, 0xFFFF, 0xFFFF, "Cornerstone Technology(0x10AE)"}, }; /* pci_vid_10AE[] */ -pci_id_t pci_vid_10AF[] = { +static pci_id_t const pci_vid_10AF[] = { {0x10AF, 0xFFFF, 0xFFFF, 0xFFFF, "Micro Computer Systems Inc(0x10AF)"}, }; /* pci_vid_10AF[] */ -pci_id_t pci_vid_10B0[] = { +static pci_id_t const pci_vid_10B0[] = { {0x10B0, 0xFFFF, 0xFFFF, 0xFFFF, "CardExpert Technology(0x10B0)"}, }; /* pci_vid_10B0[] */ -pci_id_t pci_vid_10B1[] = { +static pci_id_t const pci_vid_10B1[] = { {0x10B1, 0xFFFF, 0xFFFF, 0xFFFF, "Cabletron Systems Inc(0x10B1)"}, }; /* pci_vid_10B1[] */ -pci_id_t pci_vid_10B2[] = { +static pci_id_t const pci_vid_10B2[] = { {0x10B2, 0xFFFF, 0xFFFF, 0xFFFF, "Raytheon Company(0x10B2)"}, }; /* pci_vid_10B2[] */ -pci_id_t pci_vid_10B3[] = { +static pci_id_t const pci_vid_10B3[] = { {0x10B3, 0xFFFF, 0xFFFF, 0xFFFF, "Databook Inc(0x10B3)"}, {0x10B3, 0x3106, 0xFFFF, 0xFFFF, "DB87144(0x3106)"}, {0x10B3, 0xB106, 0xFFFF, 0xFFFF, "DB87144(0xB106)"}, }; /* pci_vid_10B3[] */ -pci_id_t pci_vid_10B4[] = { +static pci_id_t const pci_vid_10B4[] = { {0x10B4, 0xFFFF, 0xFFFF, 0xFFFF, "STB Systems Inc(0x10B4)"}, {0x10B4, 0x1B1D, 0xFFFF, 0xFFFF, "Velocity 128 3D(0x1B1D)"}, {0x10B4, 0x1B1D, 0x10B4, 0x237E, "Velocity 4400(0x10B4-0x237E)"}, }; /* pci_vid_10B4[] */ -pci_id_t pci_vid_10B5[] = { +static pci_id_t const pci_vid_10B5[] = { {0x10B5, 0xFFFF, 0xFFFF, 0xFFFF, "PLX Technology, Inc.(0x10B5)"}, {0x10B5, 0x0001, 0xFFFF, 0xFFFF, "i960 PCI bus interface(0x0001)"}, {0x10B5, 0x0557, 0xFFFF, 0xFFFF, "PCI9030 32-bit 33MHz PCI <-> IOBus Bridge(0x0557)"}, @@ -9845,7 +9891,7 @@ pci_id_t pci_vid_10B5[] = { {0x10B5, 0xD44D, 0x10B5, 0x9030, "Tormenta 3 Varion V401PE Quad E1 PCI card(0x10B5-0x9030)"}, }; /* pci_vid_10B5[] */ -pci_id_t pci_vid_10B6[] = { +static pci_id_t const pci_vid_10B6[] = { {0x10B6, 0xFFFF, 0xFFFF, 0xFFFF, "Madge Networks(0x10B6)"}, {0x10B6, 0x0001, 0xFFFF, 0xFFFF, "Smart 16/4 PCI Ringnode(0x0001)"}, {0x10B6, 0x0002, 0xFFFF, 0xFFFF, "Smart 16/4 PCI Ringnode Mk2(0x0002)"}, @@ -9873,7 +9919,7 @@ pci_id_t pci_vid_10B6[] = { {0x10B6, 0x1001, 0xFFFF, 0xFFFF, "Collage 155 ATM Server Adapter(0x1001)"}, }; /* pci_vid_10B6[] */ -pci_id_t pci_vid_10B7[] = { +static pci_id_t const pci_vid_10B7[] = { {0x10B7, 0xFFFF, 0xFFFF, 0xFFFF, "3Com Corporation(0x10B7)"}, {0x10B7, 0x0001, 0xFFFF, 0xFFFF, "3c985 1000BaseSX (SX/TX)(0x0001)"}, {0x10B7, 0x0001, 0x9850, 0x0001, "3c985B-SX(0x9850-0x0001)"}, @@ -10008,7 +10054,7 @@ pci_id_t pci_vid_10B7[] = { {0x10B7, 0x990B, 0xFFFF, 0xFFFF, "3C990SVR [Typhoon Server](0x990B)"}, }; /* pci_vid_10B7[] */ -pci_id_t pci_vid_10B8[] = { +static pci_id_t const pci_vid_10B8[] = { {0x10B8, 0xFFFF, 0xFFFF, 0xFFFF, "Standard Microsystems Corp [SMC](0x10B8)"}, {0x10B8, 0x0005, 0xFFFF, 0xFFFF, "83c170 EPIC/100 Fast Ethernet Adapter(0x0005)"}, {0x10B8, 0x0005, 0x1055, 0xE000, "LANEPIC 10/100 [EVB171Q-PCI](0x1055-0xE000)"}, @@ -10032,7 +10078,7 @@ pci_id_t pci_vid_10B8[] = { {0x10B8, 0xB106, 0xFFFF, 0xFFFF, "SMC34C90(0xB106)"}, }; /* pci_vid_10B8[] */ -pci_id_t pci_vid_10B9[] = { +static pci_id_t const pci_vid_10B9[] = { {0x10B9, 0xFFFF, 0xFFFF, 0xFFFF, "ULi Electronics Inc.(0x10B9)"}, {0x10B9, 0x0101, 0xFFFF, 0xFFFF, "CMI8338/C3DX PCI Audio Device(0x0101)"}, {0x10B9, 0x0111, 0xFFFF, 0xFFFF, "C-Media CMI8738/C3DX Audio Device (OEM)(0x0111)"}, @@ -10156,7 +10202,7 @@ pci_id_t pci_vid_10B9[] = { {0x10B9, 0x7101, 0x1849, 0x7101, "ASRock 939Dual-SATA2 Motherboard(0x1849-0x7101)"}, }; /* pci_vid_10B9[] */ -pci_id_t pci_vid_10BA[] = { +static pci_id_t const pci_vid_10BA[] = { {0x10BA, 0xFFFF, 0xFFFF, 0xFFFF, "Mitsubishi Electric Corp.(0x10BA)"}, {0x10BA, 0x0301, 0xFFFF, 0xFFFF, "AccelGraphics AccelECLIPSE(0x0301)"}, {0x10BA, 0x0304, 0xFFFF, 0xFFFF, "AccelGALAXY A2100 [OEM Evans & Sutherland](0x0304)"}, @@ -10165,61 +10211,61 @@ pci_id_t pci_vid_10BA[] = { {0x10BA, 0x1002, 0xFFFF, 0xFFFF, "VG500 [VolumePro Volume Rendering Accelerator](0x1002)"}, }; /* pci_vid_10BA[] */ -pci_id_t pci_vid_10BB[] = { +static pci_id_t const pci_vid_10BB[] = { {0x10BB, 0xFFFF, 0xFFFF, 0xFFFF, "Dapha Electronics Corporation(0x10BB)"}, }; /* pci_vid_10BB[] */ -pci_id_t pci_vid_10BC[] = { +static pci_id_t const pci_vid_10BC[] = { {0x10BC, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Logic Research(0x10BC)"}, }; /* pci_vid_10BC[] */ -pci_id_t pci_vid_10BD[] = { +static pci_id_t const pci_vid_10BD[] = { {0x10BD, 0xFFFF, 0xFFFF, 0xFFFF, "Surecom Technology(0x10BD)"}, {0x10BD, 0x0E34, 0xFFFF, 0xFFFF, "NE-34(0x0E34)"}, }; /* pci_vid_10BD[] */ -pci_id_t pci_vid_10BE[] = { +static pci_id_t const pci_vid_10BE[] = { {0x10BE, 0xFFFF, 0xFFFF, 0xFFFF, "Tseng Labs International Co.(0x10BE)"}, }; /* pci_vid_10BE[] */ -pci_id_t pci_vid_10BF[] = { +static pci_id_t const pci_vid_10BF[] = { {0x10BF, 0xFFFF, 0xFFFF, 0xFFFF, "Most Inc(0x10BF)"}, }; /* pci_vid_10BF[] */ -pci_id_t pci_vid_10C0[] = { +static pci_id_t const pci_vid_10C0[] = { {0x10C0, 0xFFFF, 0xFFFF, 0xFFFF, "Boca Research Inc.(0x10C0)"}, {0x10C0, 0x9135, 0xFFFF, 0xFFFF, "iX3D Ultimate Rez(0x9135)"}, }; /* pci_vid_10C0[] */ -pci_id_t pci_vid_10C1[] = { +static pci_id_t const pci_vid_10C1[] = { {0x10C1, 0xFFFF, 0xFFFF, 0xFFFF, "ICM Co., Ltd.(0x10C1)"}, }; /* pci_vid_10C1[] */ -pci_id_t pci_vid_10C2[] = { +static pci_id_t const pci_vid_10C2[] = { {0x10C2, 0xFFFF, 0xFFFF, 0xFFFF, "Auspex Systems Inc.(0x10C2)"}, }; /* pci_vid_10C2[] */ -pci_id_t pci_vid_10C3[] = { +static pci_id_t const pci_vid_10C3[] = { {0x10C3, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Semiconductors, Inc.(0x10C3)"}, }; /* pci_vid_10C3[] */ -pci_id_t pci_vid_10C4[] = { +static pci_id_t const pci_vid_10C4[] = { {0x10C4, 0xFFFF, 0xFFFF, 0xFFFF, "Award Software International Inc.(0x10C4)"}, }; /* pci_vid_10C4[] */ -pci_id_t pci_vid_10C5[] = { +static pci_id_t const pci_vid_10C5[] = { {0x10C5, 0xFFFF, 0xFFFF, 0xFFFF, "Xerox Corporation(0x10C5)"}, }; /* pci_vid_10C5[] */ -pci_id_t pci_vid_10C6[] = { +static pci_id_t const pci_vid_10C6[] = { {0x10C6, 0xFFFF, 0xFFFF, 0xFFFF, "Rambus Inc.(0x10C6)"}, }; /* pci_vid_10C6[] */ -pci_id_t pci_vid_10C7[] = { +static pci_id_t const pci_vid_10C7[] = { {0x10C7, 0xFFFF, 0xFFFF, 0xFFFF, "Media Vision(0x10C7)"}, }; /* pci_vid_10C7[] */ -pci_id_t pci_vid_10C8[] = { +static pci_id_t const pci_vid_10C8[] = { {0x10C8, 0xFFFF, 0xFFFF, 0xFFFF, "Neomagic Corporation(0x10C8)"}, {0x10C8, 0x0001, 0xFFFF, 0xFFFF, "NM2070 [MagicGraph 128](0x0001)"}, {0x10C8, 0x0002, 0xFFFF, 0xFFFF, "NM2090 [MagicGraph 128V](0x0002)"}, @@ -10269,25 +10315,25 @@ pci_id_t pci_vid_10C8[] = { {0x10C8, 0x8016, 0xFFFF, 0xFFFF, "NM2380 [MagicMedia 256XL+ Audio](0x8016)"}, }; /* pci_vid_10C8[] */ -pci_id_t pci_vid_10C9[] = { +static pci_id_t const pci_vid_10C9[] = { {0x10C9, 0xFFFF, 0xFFFF, 0xFFFF, "Dataexpert Corporation(0x10C9)"}, }; /* pci_vid_10C9[] */ -pci_id_t pci_vid_10CA[] = { +static pci_id_t const pci_vid_10CA[] = { {0x10CA, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Microelectr., Inc.(0x10CA)"}, }; /* pci_vid_10CA[] */ -pci_id_t pci_vid_10CB[] = { +static pci_id_t const pci_vid_10CB[] = { {0x10CB, 0xFFFF, 0xFFFF, 0xFFFF, "Omron Corporation(0x10CB)"}, }; /* pci_vid_10CB[] */ -pci_id_t pci_vid_10CC[] = { +static pci_id_t const pci_vid_10CC[] = { {0x10CC, 0xFFFF, 0xFFFF, 0xFFFF, "Mai Logic Incorporated(0x10CC)"}, {0x10CC, 0x0660, 0xFFFF, 0xFFFF, "Articia S Host Bridge(0x0660)"}, {0x10CC, 0x0661, 0xFFFF, 0xFFFF, "Articia S PCI Bridge(0x0661)"}, }; /* pci_vid_10CC[] */ -pci_id_t pci_vid_10CD[] = { +static pci_id_t const pci_vid_10CD[] = { {0x10CD, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced System Products, Inc(0x10CD)"}, {0x10CD, 0x1100, 0xFFFF, 0xFFFF, "ASC1100(0x1100)"}, {0x10CD, 0x1200, 0xFFFF, 0xFFFF, "ASC1200 [(abp940) Fast SCSI-II](0x1200)"}, @@ -10299,11 +10345,11 @@ pci_id_t pci_vid_10CD[] = { {0x10CD, 0x2700, 0xFFFF, 0xFFFF, "ABP3950-U3W(0x2700)"}, }; /* pci_vid_10CD[] */ -pci_id_t pci_vid_10CE[] = { +static pci_id_t const pci_vid_10CE[] = { {0x10CE, 0xFFFF, 0xFFFF, 0xFFFF, "Radius(0x10CE)"}, }; /* pci_vid_10CE[] */ -pci_id_t pci_vid_10CF[] = { +static pci_id_t const pci_vid_10CF[] = { {0x10CF, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Limited.(0x10CF)"}, {0x10CF, 0x01EF, 0xFFFF, 0xFFFF, "PCEA4 PCI-Express Dual Port ESCON Adapter(0x01EF)"}, {0x10CF, 0x1414, 0xFFFF, 0xFFFF, "On-board USB 1.1 companion controller(0x1414)"}, @@ -10320,39 +10366,39 @@ pci_id_t pci_vid_10CF[] = { {0x10CF, 0x202B, 0xFFFF, 0xFFFF, "MB86297A [Carmine Graphics Controller](0x202B)"}, }; /* pci_vid_10CF[] */ -pci_id_t pci_vid_10D1[] = { +static pci_id_t const pci_vid_10D1[] = { {0x10D1, 0xFFFF, 0xFFFF, 0xFFFF, "FuturePlus Systems Corp.(0x10D1)"}, }; /* pci_vid_10D1[] */ -pci_id_t pci_vid_10D2[] = { +static pci_id_t const pci_vid_10D2[] = { {0x10D2, 0xFFFF, 0xFFFF, 0xFFFF, "Molex Incorporated(0x10D2)"}, }; /* pci_vid_10D2[] */ -pci_id_t pci_vid_10D3[] = { +static pci_id_t const pci_vid_10D3[] = { {0x10D3, 0xFFFF, 0xFFFF, 0xFFFF, "Jabil Circuit Inc(0x10D3)"}, }; /* pci_vid_10D3[] */ -pci_id_t pci_vid_10D4[] = { +static pci_id_t const pci_vid_10D4[] = { {0x10D4, 0xFFFF, 0xFFFF, 0xFFFF, "Hualon Microelectronics(0x10D4)"}, }; /* pci_vid_10D4[] */ -pci_id_t pci_vid_10D5[] = { +static pci_id_t const pci_vid_10D5[] = { {0x10D5, 0xFFFF, 0xFFFF, 0xFFFF, "Autologic Inc.(0x10D5)"}, }; /* pci_vid_10D5[] */ -pci_id_t pci_vid_10D6[] = { +static pci_id_t const pci_vid_10D6[] = { {0x10D6, 0xFFFF, 0xFFFF, 0xFFFF, "Cetia(0x10D6)"}, }; /* pci_vid_10D6[] */ -pci_id_t pci_vid_10D7[] = { +static pci_id_t const pci_vid_10D7[] = { {0x10D7, 0xFFFF, 0xFFFF, 0xFFFF, "BCM Advanced Research(0x10D7)"}, }; /* pci_vid_10D7[] */ -pci_id_t pci_vid_10D8[] = { +static pci_id_t const pci_vid_10D8[] = { {0x10D8, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Peripherals Labs(0x10D8)"}, }; /* pci_vid_10D8[] */ -pci_id_t pci_vid_10D9[] = { +static pci_id_t const pci_vid_10D9[] = { {0x10D9, 0xFFFF, 0xFFFF, 0xFFFF, "Macronix, Inc. [MXIC](0x10D9)"}, {0x10D9, 0x0431, 0xFFFF, 0xFFFF, "MX98715(0x0431)"}, {0x10D9, 0x0512, 0xFFFF, 0xFFFF, "MX98713(0x0512)"}, @@ -10363,17 +10409,17 @@ pci_id_t pci_vid_10D9[] = { {0x10D9, 0x8888, 0xFFFF, 0xFFFF, "MX86200(0x8888)"}, }; /* pci_vid_10D9[] */ -pci_id_t pci_vid_10DA[] = { +static pci_id_t const pci_vid_10DA[] = { {0x10DA, 0xFFFF, 0xFFFF, 0xFFFF, "Compaq IPG-Austin(0x10DA)"}, {0x10DA, 0x0508, 0xFFFF, 0xFFFF, "TC4048 Token Ring 4/16(0x0508)"}, {0x10DA, 0x3390, 0xFFFF, 0xFFFF, "Tl3c3x9(0x3390)"}, }; /* pci_vid_10DA[] */ -pci_id_t pci_vid_10DB[] = { +static pci_id_t const pci_vid_10DB[] = { {0x10DB, 0xFFFF, 0xFFFF, 0xFFFF, "Rohm LSI Systems, Inc.(0x10DB)"}, }; /* pci_vid_10DB[] */ -pci_id_t pci_vid_10DC[] = { +static pci_id_t const pci_vid_10DC[] = { {0x10DC, 0xFFFF, 0xFFFF, 0xFFFF, "CERN/ECP/EDU(0x10DC)"}, {0x10DC, 0x0001, 0xFFFF, 0xFFFF, "STAR/RD24 SCI-PCI (PMC)(0x0001)"}, {0x10DC, 0x0002, 0xFFFF, 0xFFFF, "TAR/RD24 SCI-PCI (PMC)(0x0002)"}, @@ -10382,13 +10428,13 @@ pci_id_t pci_vid_10DC[] = { {0x10DC, 0x10DC, 0xFFFF, 0xFFFF, "ATT2C15-3 FPGA(0x10DC)"}, }; /* pci_vid_10DC[] */ -pci_id_t pci_vid_10DD[] = { +static pci_id_t const pci_vid_10DD[] = { {0x10DD, 0xFFFF, 0xFFFF, 0xFFFF, "Evans & Sutherland(0x10DD)"}, {0x10DD, 0x0100, 0xFFFF, 0xFFFF, "Lightning 1200(0x0100)"}, {0x10DD, 0x0100, 0x10DD, 0x0023, "Lightning 1200 15+16M(0x10DD-0x0023)"}, }; /* pci_vid_10DD[] */ -pci_id_t pci_vid_10DE[] = { +static pci_id_t const pci_vid_10DE[] = { {0x10DE, 0xFFFF, 0xFFFF, 0xFFFF, "NVIDIA Corporation(0x10DE)"}, {0x10DE, 0x0008, 0xFFFF, 0xFFFF, "NV1 [STG2000X-B Series](0x0008)"}, {0x10DE, 0x0009, 0xFFFF, 0xFFFF, "NV1 [NV1 Series](0x0009)"}, @@ -10986,6 +11032,7 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x0200, 0x1043, 0x402F, "AGP-V8200 DDR(0x1043-0x402F)"}, {0x10DE, 0x0200, 0x1048, 0x0C70, "GLADIAC 920(0x1048-0x0C70)"}, {0x10DE, 0x0201, 0xFFFF, 0xFFFF, "NV20 [GeForce3 Ti 200](0x0201)"}, +{0x10DE, 0x0201, 0x1462, 0x8503, "G3Ti200 Pro VT128(0x1462-0x8503)"}, {0x10DE, 0x0202, 0xFFFF, 0xFFFF, "NV20 [GeForce3 Ti 500](0x0202)"}, {0x10DE, 0x0202, 0x1043, 0x405B, "V8200 T5(0x1043-0x405B)"}, {0x10DE, 0x0202, 0x1545, 0x002F, "Xtasy 6964(0x1545-0x002F)"}, @@ -12280,6 +12327,7 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x0DE9, 0x1025, 0x0753, "GeForce GT 620M(0x1025-0x0753)"}, {0x10DE, 0x0DE9, 0x1025, 0x0754, "GeForce GT 620M(0x1025-0x0754)"}, {0x10DE, 0x0DE9, 0x17AA, 0x3977, "GeForce GT 640M LE(0x17AA-0x3977)"}, +{0x10DE, 0x0DE9, 0x1B0A, 0x20C6, "GeForce GT 630M(0x1B0A-0x20C6)"}, {0x10DE, 0x0DE9, 0x1B0A, 0x2210, "GeForce GT 635M(0x1B0A-0x2210)"}, {0x10DE, 0x0DEA, 0xFFFF, 0xFFFF, "GF108M [GeForce 610M](0x0DEA)"}, {0x10DE, 0x0DEA, 0x17AA, 0x365A, "GeForce 615(0x17AA-0x365A)"}, @@ -13127,6 +13175,9 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x15F7, 0xFFFF, 0xFFFF, "GP100GL [Tesla P100 PCIe 12GB](0x15F7)"}, {0x10DE, 0x15F8, 0xFFFF, 0xFFFF, "GP100GL [Tesla P100 PCIe 16GB](0x15F8)"}, {0x10DE, 0x15F9, 0xFFFF, 0xFFFF, "GP100GL [Tesla P100 SXM2 16GB](0x15F9)"}, +{0x10DE, 0x15FA, 0xFFFF, 0xFFFF, "GP100GL [DGX Station / PH402 SKU 200](0x15FA)"}, +{0x10DE, 0x15FB, 0xFFFF, 0xFFFF, "GP100GL [GP100 SKU 200](0x15FB)"}, +{0x10DE, 0x15FF, 0xFFFF, 0xFFFF, "GP100GL [GP100 SKU 15ff](0x15FF)"}, {0x10DE, 0x1617, 0xFFFF, 0xFFFF, "GM204M [GeForce GTX 980M](0x1617)"}, {0x10DE, 0x1618, 0xFFFF, 0xFFFF, "GM204M [GeForce GTX 970M](0x1618)"}, {0x10DE, 0x1619, 0xFFFF, 0xFFFF, "GM204M [GeForce GTX 965M](0x1619)"}, @@ -13296,6 +13347,7 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x1DB8, 0x10DE, 0x131D, "Tesla V100-SXM3-32GB-H(0x10DE-0x131D)"}, {0x10DE, 0x1DBA, 0xFFFF, 0xFFFF, "GV100GL [Quadro GV100](0x1DBA)"}, {0x10DE, 0x1DBA, 0x10DE, 0x12EB, "TITAN V CEO Edition(0x10DE-0x12EB)"}, +{0x10DE, 0x1DBD, 0xFFFF, 0xFFFF, "GV100GL [Tesla GV100 DGX1-V](0x1DBD)"}, {0x10DE, 0x1DBE, 0xFFFF, 0xFFFF, "GV100 Engineering Sample(0x1DBE)"}, {0x10DE, 0x1DC1, 0xFFFF, 0xFFFF, "GV100 [CMP 100-200](0x1DC1)"}, {0x10DE, 0x1DF0, 0xFFFF, 0xFFFF, "GV100GL [Tesla PG500-216](0x1DF0)"}, @@ -13450,6 +13502,7 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x21AE, 0xFFFF, 0xFFFF, "TU116GL(0x21AE)"}, {0x10DE, 0x21BF, 0xFFFF, 0xFFFF, "TU116GL(0x21BF)"}, {0x10DE, 0x21C2, 0xFFFF, 0xFFFF, "TU116(0x21C2)"}, +{0x10DE, 0x21C3, 0xFFFF, 0xFFFF, "TU116(0x21C3)"}, {0x10DE, 0x21C4, 0xFFFF, 0xFFFF, "TU116 [GeForce GTX 1660 SUPER](0x21C4)"}, {0x10DE, 0x21D1, 0xFFFF, 0xFFFF, "TU116BM [GeForce GTX 1660 Ti Mobile](0x21D1)"}, {0x10DE, 0x2200, 0xFFFF, 0xFFFF, "GA102(0x2200)"}, @@ -13495,9 +13548,10 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x2339, 0xFFFF, 0xFFFF, "GH100 [H100 SXM5 94GB](0x2339)"}, {0x10DE, 0x233A, 0xFFFF, 0xFFFF, "GH100 [H800L 94GB](0x233A)"}, {0x10DE, 0x233D, 0xFFFF, 0xFFFF, "GH100 [H100 96GB](0x233D)"}, -{0x10DE, 0x2342, 0xFFFF, 0xFFFF, "GH100 [GH200 120GB](0x2342)"}, +{0x10DE, 0x2342, 0xFFFF, 0xFFFF, "GH100 [GH200 120GB / 480GB](0x2342)"}, {0x10DE, 0x2343, 0xFFFF, 0xFFFF, "GH100(0x2343)"}, -{0x10DE, 0x2345, 0xFFFF, 0xFFFF, "GH100 [GH200 480GB](0x2345)"}, +{0x10DE, 0x2345, 0xFFFF, 0xFFFF, "GH100 [GH100-88K-A1](0x2345)"}, +{0x10DE, 0x237F, 0xFFFF, 0xFFFF, "GH100 [Skinny Joe](0x237F)"}, {0x10DE, 0x23B0, 0xFFFF, 0xFFFF, "GH100(0x23B0)"}, {0x10DE, 0x23F0, 0xFFFF, 0xFFFF, "GH100(0x23F0)"}, {0x10DE, 0x2414, 0xFFFF, 0xFFFF, "GA103 [GeForce RTX 3060 Ti](0x2414)"}, @@ -13593,25 +13647,33 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x25FB, 0xFFFF, 0xFFFF, "GA107 [RTX A500 Embedded GPU](0x25FB)"}, {0x10DE, 0x2681, 0xFFFF, 0xFFFF, "AD102 [RTX TITAN Ada](0x2681)"}, {0x10DE, 0x2684, 0xFFFF, 0xFFFF, "AD102 [GeForce RTX 4090](0x2684)"}, +{0x10DE, 0x2685, 0xFFFF, 0xFFFF, "AD102 [GeForce RTX 4090 D](0x2685)"}, {0x10DE, 0x26B1, 0xFFFF, 0xFFFF, "AD102GL [RTX 6000 Ada Generation](0x26B1)"}, {0x10DE, 0x26B2, 0xFFFF, 0xFFFF, "AD102GL [RTX 5000 Ada Generation](0x26B2)"}, +{0x10DE, 0x26B3, 0xFFFF, 0xFFFF, "AD102GL [RTX 5880 Ada Generation](0x26B3)"}, {0x10DE, 0x26B5, 0xFFFF, 0xFFFF, "AD102GL [L40](0x26B5)"}, +{0x10DE, 0x26B7, 0xFFFF, 0xFFFF, "AD102GL [L20](0x26B7)"}, {0x10DE, 0x26B8, 0xFFFF, 0xFFFF, "AD102GL [L40G](0x26B8)"}, {0x10DE, 0x26B9, 0xFFFF, 0xFFFF, "AD102GL [L40S](0x26B9)"}, +{0x10DE, 0x26BA, 0xFFFF, 0xFFFF, "AD102GL [L20](0x26BA)"}, {0x10DE, 0x26F5, 0xFFFF, 0xFFFF, "AD102GL [L40 CNX](0x26F5)"}, +{0x10DE, 0x2702, 0xFFFF, 0xFFFF, "AD103 [GeForce RTX 4080 SUPER](0x2702)"}, {0x10DE, 0x2703, 0xFFFF, 0xFFFF, "AD103 [GeForce RTX 4080 SUPER](0x2703)"}, {0x10DE, 0x2704, 0xFFFF, 0xFFFF, "AD103 [GeForce RTX 4080](0x2704)"}, +{0x10DE, 0x2705, 0xFFFF, 0xFFFF, "AD103 [GeForce RTX 4070 Ti SUPER](0x2705)"}, {0x10DE, 0x2717, 0xFFFF, 0xFFFF, "GN21-X11 [GeForce RTX 4090 Laptop GPU](0x2717)"}, {0x10DE, 0x2730, 0xFFFF, 0xFFFF, "AD103GLM [RTX 5000 Ada Generation Laptop GPU](0x2730)"}, {0x10DE, 0x2757, 0xFFFF, 0xFFFF, "GN21-X11(0x2757)"}, {0x10DE, 0x2770, 0xFFFF, 0xFFFF, "AD103GLM [RTX 5000 Ada Generation Embedded GPU](0x2770)"}, {0x10DE, 0x2782, 0xFFFF, 0xFFFF, "AD104 [GeForce RTX 4070 Ti](0x2782)"}, +{0x10DE, 0x2783, 0xFFFF, 0xFFFF, "AD104 [GeForce RTX 4070 SUPER](0x2783)"}, {0x10DE, 0x2785, 0xFFFF, 0xFFFF, "AD104 [AC AD104 20GB](0x2785)"}, {0x10DE, 0x2786, 0xFFFF, 0xFFFF, "AD104 [GeForce RTX 4070](0x2786)"}, {0x10DE, 0x27A0, 0xFFFF, 0xFFFF, "AD104M [GeForce RTX 4080 Max-Q / Mobile](0x27A0)"}, {0x10DE, 0x27B0, 0xFFFF, 0xFFFF, "AD104GL [RTX 4000 SFF Ada Generation](0x27B0)"}, {0x10DE, 0x27B1, 0xFFFF, 0xFFFF, "AD104GL [RTX 4500 Ada Generation](0x27B1)"}, {0x10DE, 0x27B2, 0xFFFF, 0xFFFF, "AD104GL [RTX 4000 Ada Generation](0x27B2)"}, +{0x10DE, 0x27B6, 0xFFFF, 0xFFFF, "AD104GL [L2](0x27B6)"}, {0x10DE, 0x27B7, 0xFFFF, 0xFFFF, "AD104GL [L16](0x27B7)"}, {0x10DE, 0x27B8, 0xFFFF, 0xFFFF, "AD104GL [L4](0x27B8)"}, {0x10DE, 0x27BA, 0xFFFF, 0xFFFF, "AD104GLM [RTX 4000 Ada Generation Laptop GPU](0x27BA)"}, @@ -13634,7 +13696,7 @@ pci_id_t pci_vid_10DE[] = { {0x10DE, 0x28F8, 0xFFFF, 0xFFFF, "AD107GLM [RTX 2000 Ada Generation Embedded GPU](0x28F8)"}, }; /* pci_vid_10DE[] */ -pci_id_t pci_vid_10DF[] = { +static pci_id_t const pci_vid_10DF[] = { {0x10DF, 0xFFFF, 0xFFFF, 0xFFFF, "Emulex Corporation(0x10DF)"}, {0x10DF, 0x0720, 0xFFFF, 0xFFFF, "OneConnect NIC (Skyhawk)(0x0720)"}, {0x10DF, 0x0720, 0x103C, 0x1934, "FlexFabric 20Gb 2-port 650M Adapter(0x103C-0x1934)"}, @@ -13764,7 +13826,7 @@ pci_id_t pci_vid_10DF[] = { {0x10DF, 0xFF00, 0xFFFF, 0xFFFF, "Neptune LightPulse Fibre Channel Host Adapter(0xFF00)"}, }; /* pci_vid_10DF[] */ -pci_id_t pci_vid_10E0[] = { +static pci_id_t const pci_vid_10E0[] = { {0x10E0, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Micro Solutions Inc.(0x10E0)"}, {0x10E0, 0x5026, 0xFFFF, 0xFFFF, "IMS5026/27/28(0x5026)"}, {0x10E0, 0x5027, 0xFFFF, 0xFFFF, "IMS5027(0x5027)"}, @@ -13774,7 +13836,7 @@ pci_id_t pci_vid_10E0[] = { {0x10E0, 0x9128, 0xFFFF, 0xFFFF, "IMS9128 [Twin turbo 128](0x9128)"}, }; /* pci_vid_10E0[] */ -pci_id_t pci_vid_10E1[] = { +static pci_id_t const pci_vid_10E1[] = { {0x10E1, 0xFFFF, 0xFFFF, 0xFFFF, "Tekram Technology Co.,Ltd.(0x10E1)"}, {0x10E1, 0x0391, 0xFFFF, 0xFFFF, "TRM-S1040(0x0391)"}, {0x10E1, 0x0391, 0x10E1, 0x0391, "DC-315U SCSI-3 Host Adapter(0x10E1-0x0391)"}, @@ -13782,11 +13844,11 @@ pci_id_t pci_vid_10E1[] = { {0x10E1, 0xDC29, 0xFFFF, 0xFFFF, "DC-290(0xDC29)"}, }; /* pci_vid_10E1[] */ -pci_id_t pci_vid_10E2[] = { +static pci_id_t const pci_vid_10E2[] = { {0x10E2, 0xFFFF, 0xFFFF, 0xFFFF, "Aptix Corporation(0x10E2)"}, }; /* pci_vid_10E2[] */ -pci_id_t pci_vid_10E3[] = { +static pci_id_t const pci_vid_10E3[] = { {0x10E3, 0xFFFF, 0xFFFF, 0xFFFF, "Tundra Semiconductor Corp.(0x10E3)"}, {0x10E3, 0x0000, 0xFFFF, 0xFFFF, "CA91C042 [Universe](0x0000)"}, {0x10E3, 0x0108, 0xFFFF, 0xFFFF, "Tsi108 Host Bridge for Single PowerPC(0x0108)"}, @@ -13800,24 +13862,24 @@ pci_id_t pci_vid_10E3[] = { {0x10E3, 0xA108, 0xFFFF, 0xFFFF, "Tsi109 Host Bridge for Dual PowerPC(0xA108)"}, }; /* pci_vid_10E3[] */ -pci_id_t pci_vid_10E4[] = { +static pci_id_t const pci_vid_10E4[] = { {0x10E4, 0xFFFF, 0xFFFF, 0xFFFF, "Tandem Computers(0x10E4)"}, {0x10E4, 0x8029, 0xFFFF, 0xFFFF, "Realtek 8029 Network Card(0x8029)"}, }; /* pci_vid_10E4[] */ -pci_id_t pci_vid_10E5[] = { +static pci_id_t const pci_vid_10E5[] = { {0x10E5, 0xFFFF, 0xFFFF, 0xFFFF, "Micro Industries Corporation(0x10E5)"}, }; /* pci_vid_10E5[] */ -pci_id_t pci_vid_10E6[] = { +static pci_id_t const pci_vid_10E6[] = { {0x10E6, 0xFFFF, 0xFFFF, 0xFFFF, "Gainbery Computer Products Inc.(0x10E6)"}, }; /* pci_vid_10E6[] */ -pci_id_t pci_vid_10E7[] = { +static pci_id_t const pci_vid_10E7[] = { {0x10E7, 0xFFFF, 0xFFFF, 0xFFFF, "Vadem(0x10E7)"}, }; /* pci_vid_10E7[] */ -pci_id_t pci_vid_10E8[] = { +static pci_id_t const pci_vid_10E8[] = { {0x10E8, 0xFFFF, 0xFFFF, 0xFFFF, "Applied Micro Circuits Corp.(0x10E8)"}, {0x10E8, 0x1072, 0xFFFF, 0xFFFF, "INES GPIB-PCI (AMCC5920 based)(0x1072)"}, {0x10E8, 0x2011, 0xFFFF, 0xFFFF, "Q-Motion Video Capture/Edit board(0x2011)"}, @@ -13855,11 +13917,11 @@ pci_id_t pci_vid_10E8[] = { {0x10E8, 0xE004, 0xFFFF, 0xFFFF, "X-Gene PCIe bridge(0xE004)"}, }; /* pci_vid_10E8[] */ -pci_id_t pci_vid_10E9[] = { +static pci_id_t const pci_vid_10E9[] = { {0x10E9, 0xFFFF, 0xFFFF, 0xFFFF, "Alps Electric Co., Ltd.(0x10E9)"}, }; /* pci_vid_10E9[] */ -pci_id_t pci_vid_10EA[] = { +static pci_id_t const pci_vid_10EA[] = { {0x10EA, 0xFFFF, 0xFFFF, 0xFFFF, "Integraphics(0x10EA)"}, {0x10EA, 0x1680, 0xFFFF, 0xFFFF, "IGA-1680(0x1680)"}, {0x10EA, 0x1682, 0xFFFF, 0xFFFF, "IGA-1682(0x1682)"}, @@ -13872,15 +13934,16 @@ pci_id_t pci_vid_10EA[] = { {0x10EA, 0x5252, 0xFFFF, 0xFFFF, "CyberPro5252(0x5252)"}, }; /* pci_vid_10EA[] */ -pci_id_t pci_vid_10EB[] = { +static pci_id_t const pci_vid_10EB[] = { {0x10EB, 0xFFFF, 0xFFFF, 0xFFFF, "Artists Graphics(0x10EB)"}, {0x10EB, 0x0101, 0xFFFF, 0xFFFF, "3GA(0x0101)"}, {0x10EB, 0x8111, 0xFFFF, 0xFFFF, "Twist3 Frame Grabber(0x8111)"}, }; /* pci_vid_10EB[] */ -pci_id_t pci_vid_10EC[] = { +static pci_id_t const pci_vid_10EC[] = { {0x10EC, 0xFFFF, 0xFFFF, 0xFFFF, "Realtek Semiconductor Co., Ltd.(0x10EC)"}, {0x10EC, 0x0139, 0xFFFF, 0xFFFF, "RTL-8139/8139C/8139C+ Ethernet Controller(0x0139)"}, +{0x10EC, 0x2600, 0xFFFF, 0xFFFF, "Killer E2600 GbE Controller(0x2600)"}, {0x10EC, 0x3000, 0xFFFF, 0xFFFF, "Killer E3000 2.5GbE Controller(0x3000)"}, {0x10EC, 0x4321, 0xFFFF, 0xFFFF, "RTL8852BE 802.11ax PCIe Wireless Network Adapter(0x4321)"}, {0x10EC, 0x5208, 0xFFFF, 0xFFFF, "RTS5208 PCI Express Card Reader(0x5208)"}, @@ -14002,7 +14065,7 @@ pci_id_t pci_vid_10EC[] = { {0x10EC, 0x8167, 0x1458, 0xE000, "GA-MA69G-S3H Motherboard(0x1458-0xE000)"}, {0x10EC, 0x8167, 0x1462, 0x235C, "P965 Neo MS-7235 mainboard(0x1462-0x235C)"}, {0x10EC, 0x8167, 0x1462, 0x236C, "945P Neo3-F motherboard(0x1462-0x236C)"}, -{0x10EC, 0x8168, 0xFFFF, 0xFFFF, "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller(0x8168)"}, +{0x10EC, 0x8168, 0xFFFF, 0xFFFF, "RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller(0x8168)"}, {0x10EC, 0x8168, 0x1019, 0x8168, "RTL8111/8168 PCI Express Gigabit Ethernet controller(0x1019-0x8168)"}, {0x10EC, 0x8168, 0x1025, 0x1094, "Acer Aspire E5-575G(0x1025-0x1094)"}, {0x10EC, 0x8168, 0x1028, 0x0283, "Vostro 220(0x1028-0x0283)"}, @@ -14040,6 +14103,7 @@ pci_id_t pci_vid_10EC[] = { {0x10EC, 0x8168, 0x1462, 0x4180, "Wind PC MS-7418(0x1462-0x4180)"}, {0x10EC, 0x8168, 0x1462, 0x7522, "X58 Pro-E(0x1462-0x7522)"}, {0x10EC, 0x8168, 0x1462, 0x7C37, "X570-A PRO motherboard(0x1462-0x7C37)"}, +{0x10EC, 0x8168, 0x1734, 0x11C0, "RTL8211DN on Esprimo P510 D3171 motherboard(0x1734-0x11C0)"}, {0x10EC, 0x8168, 0x1775, 0x11CC, "CC11/CL11(0x1775-0x11CC)"}, {0x10EC, 0x8168, 0x17AA, 0x3098, "ThinkCentre E73(0x17AA-0x3098)"}, {0x10EC, 0x8168, 0x17AA, 0x3814, "Z50-75(0x17AA-0x3814)"}, @@ -14118,15 +14182,16 @@ pci_id_t pci_vid_10EC[] = { {0x10EC, 0xC821, 0xFFFF, 0xFFFF, "RTL8821CE 802.11ac PCIe Wireless Network Adapter(0xC821)"}, {0x10EC, 0xC822, 0xFFFF, 0xFFFF, "RTL8822CE 802.11ac PCIe Wireless Network Adapter(0xC822)"}, {0x10EC, 0xC82F, 0xFFFF, 0xFFFF, "RTL8822CE 802.11ac PCIe Wireless Network Adapter(0xC82F)"}, +{0x10EC, 0xC852, 0xFFFF, 0xFFFF, "RTL8852CE PCIe 802.11ax Wireless Network Controller(0xC852)"}, {0x10EC, 0xD723, 0xFFFF, 0xFFFF, "RTL8723DE 802.11b/g/n PCIe Adapter(0xD723)"}, }; /* pci_vid_10EC[] */ -pci_id_t pci_vid_10ED[] = { +static pci_id_t const pci_vid_10ED[] = { {0x10ED, 0xFFFF, 0xFFFF, 0xFFFF, "Ascii Corporation(0x10ED)"}, {0x10ED, 0x7310, 0xFFFF, 0xFFFF, "V7310(0x7310)"}, }; /* pci_vid_10ED[] */ -pci_id_t pci_vid_10EE[] = { +static pci_id_t const pci_vid_10EE[] = { {0x10EE, 0xFFFF, 0xFFFF, 0xFFFF, "Xilinx Corporation(0x10EE)"}, {0x10EE, 0x0001, 0xFFFF, 0xFFFF, "EUROCOM for PCI (ECOMP)(0x0001)"}, {0x10EE, 0x0002, 0xFFFF, 0xFFFF, "Octal E1/T1 for PCI ETP Card(0x0002)"}, @@ -14176,87 +14241,87 @@ pci_id_t pci_vid_10EE[] = { {0x10EE, 0xEBF3, 0xFFFF, 0xFFFF, "SED Systems PCIe-AXI Bridge(0xEBF3)"}, }; /* pci_vid_10EE[] */ -pci_id_t pci_vid_10EF[] = { +static pci_id_t const pci_vid_10EF[] = { {0x10EF, 0xFFFF, 0xFFFF, 0xFFFF, "Racore Computer Products, Inc.(0x10EF)"}, {0x10EF, 0x8154, 0xFFFF, 0xFFFF, "M815x Token Ring Adapter(0x8154)"}, }; /* pci_vid_10EF[] */ -pci_id_t pci_vid_10F0[] = { +static pci_id_t const pci_vid_10F0[] = { {0x10F0, 0xFFFF, 0xFFFF, 0xFFFF, "Peritek Corporation(0x10F0)"}, }; /* pci_vid_10F0[] */ -pci_id_t pci_vid_10F1[] = { +static pci_id_t const pci_vid_10F1[] = { {0x10F1, 0xFFFF, 0xFFFF, 0xFFFF, "Tyan Computer(0x10F1)"}, {0x10F1, 0x2865, 0xFFFF, 0xFFFF, "Tyan Thunder K8E S2865(0x2865)"}, {0x10F1, 0x5300, 0xFFFF, 0xFFFF, "Tyan S5380 Mainboard(0x5300)"}, }; /* pci_vid_10F1[] */ -pci_id_t pci_vid_10F2[] = { +static pci_id_t const pci_vid_10F2[] = { {0x10F2, 0xFFFF, 0xFFFF, 0xFFFF, "Achme Computer, Inc.(0x10F2)"}, }; /* pci_vid_10F2[] */ -pci_id_t pci_vid_10F3[] = { +static pci_id_t const pci_vid_10F3[] = { {0x10F3, 0xFFFF, 0xFFFF, 0xFFFF, "Alaris, Inc.(0x10F3)"}, }; /* pci_vid_10F3[] */ -pci_id_t pci_vid_10F4[] = { +static pci_id_t const pci_vid_10F4[] = { {0x10F4, 0xFFFF, 0xFFFF, 0xFFFF, "S-MOS Systems, Inc.(0x10F4)"}, }; /* pci_vid_10F4[] */ -pci_id_t pci_vid_10F5[] = { +static pci_id_t const pci_vid_10F5[] = { {0x10F5, 0xFFFF, 0xFFFF, 0xFFFF, "NKK Corporation(0x10F5)"}, {0x10F5, 0xA001, 0xFFFF, 0xFFFF, "NDR4000 [NR4600 Bridge](0xA001)"}, }; /* pci_vid_10F5[] */ -pci_id_t pci_vid_10F6[] = { +static pci_id_t const pci_vid_10F6[] = { {0x10F6, 0xFFFF, 0xFFFF, 0xFFFF, "Creative Electronic Systems SA(0x10F6)"}, }; /* pci_vid_10F6[] */ -pci_id_t pci_vid_10F7[] = { +static pci_id_t const pci_vid_10F7[] = { {0x10F7, 0xFFFF, 0xFFFF, 0xFFFF, "Matsushita Electric Industrial Co., Ltd.(0x10F7)"}, }; /* pci_vid_10F7[] */ -pci_id_t pci_vid_10F8[] = { +static pci_id_t const pci_vid_10F8[] = { {0x10F8, 0xFFFF, 0xFFFF, 0xFFFF, "Altos India Ltd(0x10F8)"}, }; /* pci_vid_10F8[] */ -pci_id_t pci_vid_10F9[] = { +static pci_id_t const pci_vid_10F9[] = { {0x10F9, 0xFFFF, 0xFFFF, 0xFFFF, "PC Direct(0x10F9)"}, }; /* pci_vid_10F9[] */ -pci_id_t pci_vid_10FA[] = { +static pci_id_t const pci_vid_10FA[] = { {0x10FA, 0xFFFF, 0xFFFF, 0xFFFF, "Truevision(0x10FA)"}, {0x10FA, 0x000C, 0xFFFF, 0xFFFF, "TARGA 1000(0x000C)"}, }; /* pci_vid_10FA[] */ -pci_id_t pci_vid_10FB[] = { +static pci_id_t const pci_vid_10FB[] = { {0x10FB, 0xFFFF, 0xFFFF, 0xFFFF, "Thesys Gesellschaft fuer Mikroelektronik mbH(0x10FB)"}, {0x10FB, 0x186F, 0xFFFF, 0xFFFF, "TH 6255(0x186F)"}, }; /* pci_vid_10FB[] */ -pci_id_t pci_vid_10FC[] = { +static pci_id_t const pci_vid_10FC[] = { {0x10FC, 0xFFFF, 0xFFFF, 0xFFFF, "I-O Data Device, Inc.(0x10FC)"}, {0x10FC, 0x0003, 0xFFFF, 0xFFFF, "Cardbus IDE Controller(0x0003)"}, {0x10FC, 0x0005, 0xFFFF, 0xFFFF, "Cardbus SCSI CBSC II(0x0005)"}, }; /* pci_vid_10FC[] */ -pci_id_t pci_vid_10FD[] = { +static pci_id_t const pci_vid_10FD[] = { {0x10FD, 0xFFFF, 0xFFFF, 0xFFFF, "Soyo Computer, Inc(0x10FD)"}, }; /* pci_vid_10FD[] */ -pci_id_t pci_vid_10FE[] = { +static pci_id_t const pci_vid_10FE[] = { {0x10FE, 0xFFFF, 0xFFFF, 0xFFFF, "Fast Multimedia AG(0x10FE)"}, }; /* pci_vid_10FE[] */ -pci_id_t pci_vid_10FF[] = { +static pci_id_t const pci_vid_10FF[] = { {0x10FF, 0xFFFF, 0xFFFF, 0xFFFF, "NCube(0x10FF)"}, }; /* pci_vid_10FF[] */ -pci_id_t pci_vid_1100[] = { +static pci_id_t const pci_vid_1100[] = { {0x1100, 0xFFFF, 0xFFFF, 0xFFFF, "Jazz Multimedia(0x1100)"}, }; /* pci_vid_1100[] */ -pci_id_t pci_vid_1101[] = { +static pci_id_t const pci_vid_1101[] = { {0x1101, 0xFFFF, 0xFFFF, 0xFFFF, "Initio Corporation(0x1101)"}, {0x1101, 0x0002, 0xFFFF, 0xFFFF, "INI-920 Ultra SCSI Adapter(0x0002)"}, {0x1101, 0x1060, 0xFFFF, 0xFFFF, "INI-A100U2W(0x1060)"}, @@ -14268,7 +14333,7 @@ pci_id_t pci_vid_1101[] = { {0x1101, 0x9502, 0xFFFF, 0xFFFF, "INI-950P Ultra Wide SCSI Adapter(0x9502)"}, }; /* pci_vid_1101[] */ -pci_id_t pci_vid_1102[] = { +static pci_id_t const pci_vid_1102[] = { {0x1102, 0xFFFF, 0xFFFF, 0xFFFF, "Creative Labs(0x1102)"}, {0x1102, 0x0002, 0xFFFF, 0xFFFF, "EMU10k1 [Sound Blaster Live! Series](0x0002)"}, {0x1102, 0x0002, 0x100A, 0x1102, "SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF(0x100A-0x1102)"}, @@ -14419,7 +14484,7 @@ pci_id_t pci_vid_1102[] = { {0x1102, 0x8938, 0x156D, 0xB797, "G797 (AlphaTop (Taiwan))(0x156D-0xB797)"}, }; /* pci_vid_1102[] */ -pci_id_t pci_vid_1103[] = { +static pci_id_t const pci_vid_1103[] = { {0x1103, 0xFFFF, 0xFFFF, 0xFFFF, "HighPoint Technologies, Inc.(0x1103)"}, {0x1103, 0x0003, 0xFFFF, 0xFFFF, "HPT343/345/346/363(0x0003)"}, {0x1103, 0x0004, 0xFFFF, 0xFFFF, "HPT366/368/370/370A/372/372N(0x0004)"}, @@ -14440,6 +14505,8 @@ pci_id_t pci_vid_1103[] = { {0x1103, 0x0644, 0xFFFF, 0xFFFF, "RocketRAID 644 4 Port SATA-III Controller (eSATA)(0x0644)"}, {0x1103, 0x0645, 0xFFFF, 0xFFFF, "RocketRAID 644L 4 Port SATA-III Controller (eSATA)(0x0645)"}, {0x1103, 0x0646, 0xFFFF, 0xFFFF, "RocketRAID 644LS SATA-III Controller (4 eSATA devices connected by 1 SAS cable)(0x0646)"}, +{0x1103, 0x0750, 0xFFFF, 0xFFFF, "Rocket 750 PCIe Gen2 SATA III Controller(0x0750)"}, +{0x1103, 0x0840, 0xFFFF, 0xFFFF, "RocketRAID 840 PCIe Gen3 SATA III Controller(0x0840)"}, {0x1103, 0x1720, 0xFFFF, 0xFFFF, "RocketRAID 1720 (2x SATA II RAID Controller)(0x1720)"}, {0x1103, 0x1740, 0xFFFF, 0xFFFF, "RocketRAID 1740(0x1740)"}, {0x1103, 0x1742, 0xFFFF, 0xFFFF, "RocketRAID 1742(0x1742)"}, @@ -14451,23 +14518,33 @@ pci_id_t pci_vid_1103[] = { {0x1103, 0x2322, 0xFFFF, 0xFFFF, "RocketRAID 2322 SATA-II Controller(0x2322)"}, {0x1103, 0x2340, 0xFFFF, 0xFFFF, "RocketRAID 2340 16 Port SATA-II Controller(0x2340)"}, {0x1103, 0x2640, 0xFFFF, 0xFFFF, "RocketRAID 2640 SAS/SATA Controller(0x2640)"}, +{0x1103, 0x2720, 0xFFFF, 0xFFFF, "RocketRAID 2720 PCIe Gen2 6Gb/s SAS/SATA Controller(0x2720)"}, {0x1103, 0x2722, 0xFFFF, 0xFFFF, "RocketRAID 2722(0x2722)"}, {0x1103, 0x2740, 0xFFFF, 0xFFFF, "RocketRAID 2740(0x2740)"}, {0x1103, 0x2744, 0xFFFF, 0xFFFF, "RocketRaid 2744(0x2744)"}, {0x1103, 0x2782, 0xFFFF, 0xFFFF, "RocketRAID 2782(0x2782)"}, +{0x1103, 0x2840, 0xFFFF, 0xFFFF, "RocketRAID 2840 PCIe Gen3 6Gb/s SAS/SATA Controller(0x2840)"}, {0x1103, 0x3120, 0xFFFF, 0xFFFF, "RocketRAID 3120(0x3120)"}, {0x1103, 0x3220, 0xFFFF, 0xFFFF, "RocketRAID 3220(0x3220)"}, {0x1103, 0x3320, 0xFFFF, 0xFFFF, "RocketRAID 3320(0x3320)"}, +{0x1103, 0x3520, 0xFFFF, 0xFFFF, "RocketRAID 3520 PCIe Gen1 8-Port SATA II Controller(0x3520)"}, +{0x1103, 0x3530, 0xFFFF, 0xFFFF, "RocketRAID 3530 PCIe Gen1 12-Port SATA II Controller(0x3530)"}, +{0x1103, 0x3740, 0xFFFF, 0xFFFF, "RocketRAID 3740 PCIe Gen3 12Gb/s SAS/SATA Controller(0x3740)"}, {0x1103, 0x4310, 0xFFFF, 0xFFFF, "RocketRaid 4310(0x4310)"}, +{0x1103, 0x4320, 0xFFFF, 0xFFFF, "RocketRAID 4320 SAS Controller(0x4320)"}, +{0x1103, 0x7103, 0xFFFF, 0xFFFF, "SSD7103 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller(0x7103)"}, +{0x1103, 0x7105, 0xFFFF, 0xFFFF, "SSD7105 PCIe Gen3 x16 4-Port M.2 NVMe RAID Controller(0x7105)"}, +{0x1103, 0x7110, 0xFFFF, 0xFFFF, "SSD7110 PCIe Gen3 x16 NVMe RAID Controller(0x7110)"}, {0x1103, 0x7505, 0xFFFF, 0xFFFF, "SSD7505 PCIe Gen4 x16 4-Port M.2 NVMe RAID Controller(0x7505)"}, {0x1103, 0x7540, 0xFFFF, 0xFFFF, "SSD7540 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller(0x7540)"}, +{0x1103, 0x7580, 0xFFFF, 0xFFFF, "SSD7580 PCIe Gen4 x16 8-Port M.2 NVMe RAID Controller(0x7580)"}, }; /* pci_vid_1103[] */ -pci_id_t pci_vid_1104[] = { +static pci_id_t const pci_vid_1104[] = { {0x1104, 0xFFFF, 0xFFFF, 0xFFFF, "RasterOps Corp.(0x1104)"}, }; /* pci_vid_1104[] */ -pci_id_t pci_vid_1105[] = { +static pci_id_t const pci_vid_1105[] = { {0x1105, 0xFFFF, 0xFFFF, 0xFFFF, "Sigma Designs, Inc.(0x1105)"}, {0x1105, 0x1105, 0xFFFF, 0xFFFF, "REALmagic Xcard MPEG 1/2/3/4 DVD Decoder(0x1105)"}, {0x1105, 0x8300, 0xFFFF, 0xFFFF, "REALmagic Hollywood Plus DVD Decoder(0x8300)"}, @@ -14485,7 +14562,7 @@ pci_id_t pci_vid_1105[] = { {0x1105, 0xC622, 0xFFFF, 0xFFFF, "EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder(0xC622)"}, }; /* pci_vid_1105[] */ -pci_id_t pci_vid_1106[] = { +static pci_id_t const pci_vid_1106[] = { {0x1106, 0xFFFF, 0xFFFF, 0xFFFF, "VIA Technologies, Inc.(0x1106)"}, {0x1106, 0x0102, 0xFFFF, 0xFFFF, "Embedded VIA Ethernet Controller(0x0102)"}, {0x1106, 0x0130, 0xFFFF, 0xFFFF, "VT6305 1394.A Controller(0x0130)"}, @@ -14651,6 +14728,7 @@ pci_id_t pci_vid_1106[] = { {0x1106, 0x3038, 0x1043, 0x808C, "VT62xx USB1.1 4 port controller(0x1043-0x808C)"}, {0x1106, 0x3038, 0x1043, 0x80A1, "A7V8X-X motherboard(0x1043-0x80A1)"}, {0x1106, 0x3038, 0x1043, 0x80ED, "A7V600/K8V-X/A8V Deluxe motherboard(0x1043-0x80ED)"}, +{0x1106, 0x3038, 0x1106, 0x3038, "USB 1.1 UHCI controller(0x1106-0x3038)"}, {0x1106, 0x3038, 0x1179, 0x0001, "Magnia Z310(0x1179-0x0001)"}, {0x1106, 0x3038, 0x1234, 0x0925, "MVP3 USB Controller(0x1234-0x0925)"}, {0x1106, 0x3038, 0x1458, 0x5004, "GA-7VAX Mainboard(0x1458-0x5004)"}, @@ -14682,6 +14760,7 @@ pci_id_t pci_vid_1106[] = { {0x1106, 0x3044, 0x1462, 0x590D, "KT6 Delta-FIS2R (MS-6590)(0x1462-0x590D)"}, {0x1106, 0x3044, 0x1462, 0x702D, "K8T NEO 2 motherboard(0x1462-0x702D)"}, {0x1106, 0x3044, 0x1462, 0x971D, "MS-6917(0x1462-0x971D)"}, +{0x1106, 0x3044, 0x153B, 0x1146, "Cameo DV Firewire controller(0x153B-0x1146)"}, {0x1106, 0x3050, 0xFFFF, 0xFFFF, "VT82C596 Power Management(0x3050)"}, {0x1106, 0x3051, 0xFFFF, 0xFFFF, "VT82C596 Power Management(0x3051)"}, {0x1106, 0x3053, 0xFFFF, 0xFFFF, "VT6105M [Rhine-III](0x3053)"}, @@ -14774,7 +14853,7 @@ pci_id_t pci_vid_1106[] = { {0x1106, 0x3104, 0x1043, 0x808C, "A7V8X motherboard(0x1043-0x808C)"}, {0x1106, 0x3104, 0x1043, 0x80A1, "A7V8X-X motherboard rev 1.01(0x1043-0x80A1)"}, {0x1106, 0x3104, 0x1043, 0x80ED, "A7V600/K8V-X/A8V Deluxe motherboard(0x1043-0x80ED)"}, -{0x1106, 0x3104, 0x1106, 0x3104, "USB 2.0 Controller(0x1106-0x3104)"}, +{0x1106, 0x3104, 0x1106, 0x3104, "USB 2.0 EHCI controller(0x1106-0x3104)"}, {0x1106, 0x3104, 0x1297, 0xF641, "FX41 motherboard(0x1297-0xF641)"}, {0x1106, 0x3104, 0x1458, 0x5004, "GA-7VAX Mainboard(0x1458-0x5004)"}, {0x1106, 0x3104, 0x1462, 0x5901, "KT6 Delta-FIS2R (MS-6590)(0x1462-0x5901)"}, @@ -15065,12 +15144,12 @@ pci_id_t pci_vid_1106[] = { {0x1106, 0xF410, 0xFFFF, 0xFFFF, "VX900 Series PCI UART Port 0-3(0xF410)"}, }; /* pci_vid_1106[] */ -pci_id_t pci_vid_1107[] = { +static pci_id_t const pci_vid_1107[] = { {0x1107, 0xFFFF, 0xFFFF, 0xFFFF, "Stratus Computers(0x1107)"}, {0x1107, 0x0576, 0xFFFF, 0xFFFF, "VIA VT82C570MV [Apollo] (Wrong vendor ID!)(0x0576)"}, }; /* pci_vid_1107[] */ -pci_id_t pci_vid_1108[] = { +static pci_id_t const pci_vid_1108[] = { {0x1108, 0xFFFF, 0xFFFF, 0xFFFF, "Proteon, Inc.(0x1108)"}, {0x1108, 0x0100, 0xFFFF, 0xFFFF, "p1690plus_AA(0x0100)"}, {0x1108, 0x0101, 0xFFFF, 0xFFFF, "p1690plus_AB(0x0101)"}, @@ -15082,12 +15161,12 @@ pci_id_t pci_vid_1108[] = { {0x1108, 0x013D, 0xFFFF, 0xFFFF, "P1690Plus(0x013D)"}, }; /* pci_vid_1108[] */ -pci_id_t pci_vid_1109[] = { +static pci_id_t const pci_vid_1109[] = { {0x1109, 0xFFFF, 0xFFFF, 0xFFFF, "Cogent Data Technologies, Inc.(0x1109)"}, {0x1109, 0x1400, 0xFFFF, 0xFFFF, "EM110TX [EX110TX](0x1400)"}, }; /* pci_vid_1109[] */ -pci_id_t pci_vid_110A[] = { +static pci_id_t const pci_vid_110A[] = { {0x110A, 0xFFFF, 0xFFFF, 0xFFFF, "Siemens AG(0x110A)"}, {0x110A, 0x0002, 0xFFFF, 0xFFFF, "Pirahna 2-port(0x0002)"}, {0x110A, 0x0005, 0xFFFF, 0xFFFF, "Tulip controller, power management, switch extender(0x0005)"}, @@ -15100,6 +15179,7 @@ pci_id_t pci_vid_110A[] = { {0x110A, 0x2101, 0xFFFF, 0xFFFF, "HST SAPHIR V Primary PCI (ISDN/PMx)(0x2101)"}, {0x110A, 0x2102, 0xFFFF, 0xFFFF, "DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels(0x2102)"}, {0x110A, 0x2104, 0xFFFF, 0xFFFF, "Eicon Diva 2.02 compatible passive ISDN card(0x2104)"}, +{0x110A, 0x3101, 0xFFFF, 0xFFFF, "HiPath 4000 PCI card(0x3101)"}, {0x110A, 0x3141, 0xFFFF, 0xFFFF, "SIMATIC NET CP 5611 / 5621(0x3141)"}, {0x110A, 0x3142, 0xFFFF, 0xFFFF, "SIMATIC NET CP 5613 / 5614(0x3142)"}, {0x110A, 0x3143, 0xFFFF, 0xFFFF, "SIMATIC NET CP 1613(0x3143)"}, @@ -15122,39 +15202,39 @@ pci_id_t pci_vid_110A[] = { {0x110A, 0x6120, 0xFFFF, 0xFFFF, "SZB6120(0x6120)"}, }; /* pci_vid_110A[] */ -pci_id_t pci_vid_110B[] = { +static pci_id_t const pci_vid_110B[] = { {0x110B, 0xFFFF, 0xFFFF, 0xFFFF, "Chromatic Research Inc.(0x110B)"}, {0x110B, 0x0001, 0xFFFF, 0xFFFF, "Mpact Media Processor(0x0001)"}, {0x110B, 0x0004, 0xFFFF, 0xFFFF, "Mpact 2(0x0004)"}, }; /* pci_vid_110B[] */ -pci_id_t pci_vid_110C[] = { +static pci_id_t const pci_vid_110C[] = { {0x110C, 0xFFFF, 0xFFFF, 0xFFFF, "Mini-Max Technology, Inc.(0x110C)"}, }; /* pci_vid_110C[] */ -pci_id_t pci_vid_110D[] = { +static pci_id_t const pci_vid_110D[] = { {0x110D, 0xFFFF, 0xFFFF, 0xFFFF, "Znyx Advanced Systems(0x110D)"}, }; /* pci_vid_110D[] */ -pci_id_t pci_vid_110E[] = { +static pci_id_t const pci_vid_110E[] = { {0x110E, 0xFFFF, 0xFFFF, 0xFFFF, "CPU Technology(0x110E)"}, }; /* pci_vid_110E[] */ -pci_id_t pci_vid_110F[] = { +static pci_id_t const pci_vid_110F[] = { {0x110F, 0xFFFF, 0xFFFF, 0xFFFF, "Ross Technology(0x110F)"}, }; /* pci_vid_110F[] */ -pci_id_t pci_vid_1110[] = { +static pci_id_t const pci_vid_1110[] = { {0x1110, 0xFFFF, 0xFFFF, 0xFFFF, "Powerhouse Systems(0x1110)"}, {0x1110, 0x6037, 0xFFFF, 0xFFFF, "Firepower Powerized SMP I/O ASIC(0x6037)"}, {0x1110, 0x6073, 0xFFFF, 0xFFFF, "Firepower Powerized SMP I/O ASIC(0x6073)"}, }; /* pci_vid_1110[] */ -pci_id_t pci_vid_1111[] = { +static pci_id_t const pci_vid_1111[] = { {0x1111, 0xFFFF, 0xFFFF, 0xFFFF, "Santa Cruz Operation(0x1111)"}, }; /* pci_vid_1111[] */ -pci_id_t pci_vid_1112[] = { +static pci_id_t const pci_vid_1112[] = { {0x1112, 0xFFFF, 0xFFFF, 0xFFFF, "Osicom Technologies Inc(0x1112)"}, {0x1112, 0x2200, 0xFFFF, 0xFFFF, "FDDI Adapter(0x2200)"}, {0x1112, 0x2300, 0xFFFF, 0xFFFF, "Fast Ethernet Adapter(0x2300)"}, @@ -15162,7 +15242,7 @@ pci_id_t pci_vid_1112[] = { {0x1112, 0x2400, 0xFFFF, 0xFFFF, "ATM Adapter(0x2400)"}, }; /* pci_vid_1112[] */ -pci_id_t pci_vid_1113[] = { +static pci_id_t const pci_vid_1113[] = { {0x1113, 0xFFFF, 0xFFFF, 0xFFFF, "Accton Technology Corporation(0x1113)"}, {0x1113, 0x1211, 0xFFFF, 0xFFFF, "SMC2-1211TX(0x1211)"}, {0x1113, 0x1211, 0x103C, 0x1207, "EN-1207D Fast Ethernet Adapter(0x103C-0x1207)"}, @@ -15182,16 +15262,16 @@ pci_id_t pci_vid_1113[] = { {0x1113, 0xEE23, 0xFFFF, 0xFFFF, "SMCWPCIT-G 108Mbps Wireless PCI adapter(0xEE23)"}, }; /* pci_vid_1113[] */ -pci_id_t pci_vid_1114[] = { +static pci_id_t const pci_vid_1114[] = { {0x1114, 0xFFFF, 0xFFFF, 0xFFFF, "Atmel Corporation(0x1114)"}, {0x1114, 0x0506, 0xFFFF, 0xFFFF, "at76c506 802.11b Wireless Network Adaptor(0x0506)"}, }; /* pci_vid_1114[] */ -pci_id_t pci_vid_1115[] = { +static pci_id_t const pci_vid_1115[] = { {0x1115, 0xFFFF, 0xFFFF, 0xFFFF, "3D Labs(0x1115)"}, }; /* pci_vid_1115[] */ -pci_id_t pci_vid_1116[] = { +static pci_id_t const pci_vid_1116[] = { {0x1116, 0xFFFF, 0xFFFF, 0xFFFF, "Data Translation(0x1116)"}, {0x1116, 0x0022, 0xFFFF, 0xFFFF, "DT3001(0x0022)"}, {0x1116, 0x0023, 0xFFFF, 0xFFFF, "DT3002(0x0023)"}, @@ -15206,17 +15286,17 @@ pci_id_t pci_vid_1116[] = { {0x1116, 0x80C2, 0xFFFF, 0xFFFF, "DT3162(0x80C2)"}, }; /* pci_vid_1116[] */ -pci_id_t pci_vid_1117[] = { +static pci_id_t const pci_vid_1117[] = { {0x1117, 0xFFFF, 0xFFFF, 0xFFFF, "Datacube, Inc(0x1117)"}, {0x1117, 0x9500, 0xFFFF, 0xFFFF, "Max-1C SVGA card(0x9500)"}, {0x1117, 0x9501, 0xFFFF, 0xFFFF, "Max-1C image processing(0x9501)"}, }; /* pci_vid_1117[] */ -pci_id_t pci_vid_1118[] = { +static pci_id_t const pci_vid_1118[] = { {0x1118, 0xFFFF, 0xFFFF, 0xFFFF, "Berg Electronics(0x1118)"}, }; /* pci_vid_1118[] */ -pci_id_t pci_vid_1119[] = { +static pci_id_t const pci_vid_1119[] = { {0x1119, 0xFFFF, 0xFFFF, 0xFFFF, "ICP Vortex Computersysteme GmbH(0x1119)"}, {0x1119, 0x0000, 0xFFFF, 0xFFFF, "GDT 6000/6020/6050(0x0000)"}, {0x1119, 0x0001, 0xFFFF, 0xFFFF, "GDT 6000B/6010(0x0001)"}, @@ -15291,7 +15371,7 @@ pci_id_t pci_vid_1119[] = { {0x1119, 0x0301, 0xFFFF, 0xFFFF, "GDT NEWRX2(0x0301)"}, }; /* pci_vid_1119[] */ -pci_id_t pci_vid_111A[] = { +static pci_id_t const pci_vid_111A[] = { {0x111A, 0xFFFF, 0xFFFF, 0xFFFF, "Efficient Networks, Inc(0x111A)"}, {0x111A, 0x0000, 0xFFFF, 0xFFFF, "155P-MF1 (FPGA)(0x0000)"}, {0x111A, 0x0002, 0xFFFF, 0xFFFF, "155P-MF1 (ASIC)(0x0002)"}, @@ -15311,16 +15391,16 @@ pci_id_t pci_vid_111A[] = { {0x111A, 0x1203, 0xFFFF, 0xFFFF, "SpeedStream 1023 Wireless PCI Adapter(0x1203)"}, }; /* pci_vid_111A[] */ -pci_id_t pci_vid_111B[] = { +static pci_id_t const pci_vid_111B[] = { {0x111B, 0xFFFF, 0xFFFF, 0xFFFF, "Teledyne Electronic Systems(0x111B)"}, }; /* pci_vid_111B[] */ -pci_id_t pci_vid_111C[] = { +static pci_id_t const pci_vid_111C[] = { {0x111C, 0xFFFF, 0xFFFF, 0xFFFF, "Tricord Systems Inc.(0x111C)"}, {0x111C, 0x0001, 0xFFFF, 0xFFFF, "Powerbis Bridge(0x0001)"}, }; /* pci_vid_111C[] */ -pci_id_t pci_vid_111D[] = { +static pci_id_t const pci_vid_111D[] = { {0x111D, 0xFFFF, 0xFFFF, 0xFFFF, "Microsemi / PMC / IDT(0x111D)"}, {0x111D, 0x0001, 0xFFFF, 0xFFFF, "IDT77201/77211 155Mbps ATM SAR Controller [NICStAR](0x0001)"}, {0x111D, 0x0003, 0xFFFF, 0xFFFF, "IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller(0x0003)"}, @@ -15386,49 +15466,49 @@ pci_id_t pci_vid_111D[] = { {0x111D, 0x80D2, 0xFFFF, 0xFFFF, "F32P08xG3 NVMe controller(0x80D2)"}, }; /* pci_vid_111D[] */ -pci_id_t pci_vid_111E[] = { +static pci_id_t const pci_vid_111E[] = { {0x111E, 0xFFFF, 0xFFFF, 0xFFFF, "Eldec(0x111E)"}, }; /* pci_vid_111E[] */ -pci_id_t pci_vid_111F[] = { +static pci_id_t const pci_vid_111F[] = { {0x111F, 0xFFFF, 0xFFFF, 0xFFFF, "Precision Digital Images(0x111F)"}, {0x111F, 0x4A47, 0xFFFF, 0xFFFF, "Precision MX Video engine interface(0x4A47)"}, {0x111F, 0x5243, 0xFFFF, 0xFFFF, "Frame capture bus interface(0x5243)"}, }; /* pci_vid_111F[] */ -pci_id_t pci_vid_1120[] = { +static pci_id_t const pci_vid_1120[] = { {0x1120, 0xFFFF, 0xFFFF, 0xFFFF, "Dell EMC(0x1120)"}, {0x1120, 0x2306, 0xFFFF, 0xFFFF, "Unity Fibre Channel Controller(0x2306)"}, {0x1120, 0x2501, 0xFFFF, 0xFFFF, "Unity Ethernet Controller(0x2501)"}, {0x1120, 0x2505, 0xFFFF, 0xFFFF, "Unity Fibre Channel Controller(0x2505)"}, }; /* pci_vid_1120[] */ -pci_id_t pci_vid_1121[] = { +static pci_id_t const pci_vid_1121[] = { {0x1121, 0xFFFF, 0xFFFF, 0xFFFF, "Zilog(0x1121)"}, }; /* pci_vid_1121[] */ -pci_id_t pci_vid_1122[] = { +static pci_id_t const pci_vid_1122[] = { {0x1122, 0xFFFF, 0xFFFF, 0xFFFF, "Multi-tech Systems, Inc.(0x1122)"}, }; /* pci_vid_1122[] */ -pci_id_t pci_vid_1123[] = { +static pci_id_t const pci_vid_1123[] = { {0x1123, 0xFFFF, 0xFFFF, 0xFFFF, "Excellent Design, Inc.(0x1123)"}, }; /* pci_vid_1123[] */ -pci_id_t pci_vid_1124[] = { +static pci_id_t const pci_vid_1124[] = { {0x1124, 0xFFFF, 0xFFFF, 0xFFFF, "Leutron Vision AG(0x1124)"}, {0x1124, 0x2581, 0xFFFF, 0xFFFF, "Picport Monochrome(0x2581)"}, }; /* pci_vid_1124[] */ -pci_id_t pci_vid_1125[] = { +static pci_id_t const pci_vid_1125[] = { {0x1125, 0xFFFF, 0xFFFF, 0xFFFF, "Eurocore(0x1125)"}, }; /* pci_vid_1125[] */ -pci_id_t pci_vid_1126[] = { +static pci_id_t const pci_vid_1126[] = { {0x1126, 0xFFFF, 0xFFFF, 0xFFFF, "Vigra(0x1126)"}, }; /* pci_vid_1126[] */ -pci_id_t pci_vid_1127[] = { +static pci_id_t const pci_vid_1127[] = { {0x1127, 0xFFFF, 0xFFFF, 0xFFFF, "FORE Systems Inc(0x1127)"}, {0x1127, 0x0200, 0xFFFF, 0xFFFF, "ForeRunner PCA-200 ATM(0x0200)"}, {0x1127, 0x0210, 0xFFFF, 0xFFFF, "PCA-200PC(0x0210)"}, @@ -15439,32 +15519,32 @@ pci_id_t pci_vid_1127[] = { {0x1127, 0x0400, 0x1127, 0x0400, "ForeRunnerHE ATM(0x1127-0x0400)"}, }; /* pci_vid_1127[] */ -pci_id_t pci_vid_1129[] = { +static pci_id_t const pci_vid_1129[] = { {0x1129, 0xFFFF, 0xFFFF, 0xFFFF, "Firmworks(0x1129)"}, }; /* pci_vid_1129[] */ -pci_id_t pci_vid_112A[] = { +static pci_id_t const pci_vid_112A[] = { {0x112A, 0xFFFF, 0xFFFF, 0xFFFF, "Hermes Electronics Company, Ltd.(0x112A)"}, }; /* pci_vid_112A[] */ -pci_id_t pci_vid_112B[] = { +static pci_id_t const pci_vid_112B[] = { {0x112B, 0xFFFF, 0xFFFF, 0xFFFF, "Heidelberger Druckmaschinen AG(0x112B)"}, {0x112B, 0x0001, 0xFFFF, 0xFFFF, "SCU5(0x0001)"}, }; /* pci_vid_112B[] */ -pci_id_t pci_vid_112C[] = { +static pci_id_t const pci_vid_112C[] = { {0x112C, 0xFFFF, 0xFFFF, 0xFFFF, "Zenith Data Systems(0x112C)"}, }; /* pci_vid_112C[] */ -pci_id_t pci_vid_112D[] = { +static pci_id_t const pci_vid_112D[] = { {0x112D, 0xFFFF, 0xFFFF, 0xFFFF, "Ravicad(0x112D)"}, }; /* pci_vid_112D[] */ -pci_id_t pci_vid_112E[] = { +static pci_id_t const pci_vid_112E[] = { {0x112E, 0xFFFF, 0xFFFF, 0xFFFF, "Infomedia Microelectronics Inc.(0x112E)"}, }; /* pci_vid_112E[] */ -pci_id_t pci_vid_112F[] = { +static pci_id_t const pci_vid_112F[] = { {0x112F, 0xFFFF, 0xFFFF, 0xFFFF, "Dalsa Inc.(0x112F)"}, {0x112F, 0x0000, 0xFFFF, 0xFFFF, "MVC IC-PCI(0x0000)"}, {0x112F, 0x0001, 0xFFFF, 0xFFFF, "MVC IM-PCI Video frame grabber/processor(0x0001)"}, @@ -15472,11 +15552,11 @@ pci_id_t pci_vid_112F[] = { {0x112F, 0x0008, 0xFFFF, 0xFFFF, "PC-CamLink PCI framegrabber(0x0008)"}, }; /* pci_vid_112F[] */ -pci_id_t pci_vid_1130[] = { +static pci_id_t const pci_vid_1130[] = { {0x1130, 0xFFFF, 0xFFFF, 0xFFFF, "Computervision(0x1130)"}, }; /* pci_vid_1130[] */ -pci_id_t pci_vid_1131[] = { +static pci_id_t const pci_vid_1131[] = { {0x1131, 0xFFFF, 0xFFFF, 0xFFFF, "Philips Semiconductors(0x1131)"}, {0x1131, 0x1561, 0xFFFF, 0xFFFF, "USB 1.1 Host Controller(0x1561)"}, {0x1131, 0x1561, 0x1775, 0xC200, "C2K onboard USB 1.1 host controller(0x1775-0xC200)"}, @@ -15720,11 +15800,11 @@ pci_id_t pci_vid_1131[] = { {0x1131, 0x9730, 0x1131, 0x0000, "Integrated Multimedia and Peripheral Controller(0x1131-0x0000)"}, }; /* pci_vid_1131[] */ -pci_id_t pci_vid_1132[] = { +static pci_id_t const pci_vid_1132[] = { {0x1132, 0xFFFF, 0xFFFF, 0xFFFF, "Mitel Corp.(0x1132)"}, }; /* pci_vid_1132[] */ -pci_id_t pci_vid_1133[] = { +static pci_id_t const pci_vid_1133[] = { {0x1133, 0xFFFF, 0xFFFF, 0xFFFF, "Dialogic Corporation(0x1133)"}, {0x1133, 0x7701, 0xFFFF, 0xFFFF, "Eiconcard C90(0x7701)"}, {0x1133, 0x7711, 0xFFFF, 0xFFFF, "Eiconcard C91(0x7711)"}, @@ -15819,7 +15899,7 @@ pci_id_t pci_vid_1133[] = { {0x1133, 0xE034, 0xFFFF, 0xFFFF, "Diva BRI-CTI PCI v2(0xE034)"}, }; /* pci_vid_1133[] */ -pci_id_t pci_vid_1134[] = { +static pci_id_t const pci_vid_1134[] = { {0x1134, 0xFFFF, 0xFFFF, 0xFFFF, "Mercury Computer Systems(0x1134)"}, {0x1134, 0x0001, 0xFFFF, 0xFFFF, "Raceway Bridge(0x0001)"}, {0x1134, 0x0002, 0xFFFF, 0xFFFF, "Dual PCI to RapidIO Bridge(0x0002)"}, @@ -15827,17 +15907,17 @@ pci_id_t pci_vid_1134[] = { {0x1134, 0x000D, 0xFFFF, 0xFFFF, "POET PSDMS Device(0x000D)"}, }; /* pci_vid_1134[] */ -pci_id_t pci_vid_1135[] = { +static pci_id_t const pci_vid_1135[] = { {0x1135, 0xFFFF, 0xFFFF, 0xFFFF, "FUJIFILM Business Innovation Corp.(0x1135)"}, {0x1135, 0x0001, 0xFFFF, 0xFFFF, "Printer controller(0x0001)"}, }; /* pci_vid_1135[] */ -pci_id_t pci_vid_1136[] = { +static pci_id_t const pci_vid_1136[] = { {0x1136, 0xFFFF, 0xFFFF, 0xFFFF, "Momentum Data Systems(0x1136)"}, {0x1136, 0x0002, 0xFFFF, 0xFFFF, "PCI-JTAG(0x0002)"}, }; /* pci_vid_1136[] */ -pci_id_t pci_vid_1137[] = { +static pci_id_t const pci_vid_1137[] = { {0x1137, 0xFFFF, 0xFFFF, 0xFFFF, "Cisco Systems Inc(0x1137)"}, {0x1137, 0x0023, 0xFFFF, 0xFFFF, "VIC 81 PCIe Upstream Port(0x0023)"}, {0x1137, 0x0040, 0xFFFF, 0xFFFF, "VIC PCIe Upstream Port(0x0040)"}, @@ -15931,25 +16011,25 @@ pci_id_t pci_vid_1137[] = { {0x1137, 0x023E, 0xFFFF, 0xFFFF, "1GigE I350 LOM(0x023E)"}, }; /* pci_vid_1137[] */ -pci_id_t pci_vid_1138[] = { +static pci_id_t const pci_vid_1138[] = { {0x1138, 0xFFFF, 0xFFFF, 0xFFFF, "Ziatech Corporation(0x1138)"}, {0x1138, 0x8905, 0xFFFF, 0xFFFF, "8905 [STD 32 Bridge](0x8905)"}, }; /* pci_vid_1138[] */ -pci_id_t pci_vid_1139[] = { +static pci_id_t const pci_vid_1139[] = { {0x1139, 0xFFFF, 0xFFFF, 0xFFFF, "Dynamic Pictures, Inc(0x1139)"}, {0x1139, 0x0001, 0xFFFF, 0xFFFF, "VGA Compatible 3D Graphics(0x0001)"}, }; /* pci_vid_1139[] */ -pci_id_t pci_vid_113A[] = { +static pci_id_t const pci_vid_113A[] = { {0x113A, 0xFFFF, 0xFFFF, 0xFFFF, "FWB Inc(0x113A)"}, }; /* pci_vid_113A[] */ -pci_id_t pci_vid_113B[] = { +static pci_id_t const pci_vid_113B[] = { {0x113B, 0xFFFF, 0xFFFF, 0xFFFF, "Network Computing Devices(0x113B)"}, }; /* pci_vid_113B[] */ -pci_id_t pci_vid_113C[] = { +static pci_id_t const pci_vid_113C[] = { {0x113C, 0xFFFF, 0xFFFF, 0xFFFF, "Cyclone Microsystems, Inc.(0x113C)"}, {0x113C, 0x0000, 0xFFFF, 0xFFFF, "PCI-9060 i960 Bridge(0x0000)"}, {0x113C, 0x0001, 0xFFFF, 0xFFFF, "PCI-SDK [PCI i960 Evaluation Platform](0x0001)"}, @@ -15959,15 +16039,15 @@ pci_id_t pci_vid_113C[] = { {0x113C, 0x0914, 0xFFFF, 0xFFFF, "PCI-914 [I/O Controller w/ secondary PCI bus](0x0914)"}, }; /* pci_vid_113C[] */ -pci_id_t pci_vid_113D[] = { +static pci_id_t const pci_vid_113D[] = { {0x113D, 0xFFFF, 0xFFFF, 0xFFFF, "Leading Edge Products Inc(0x113D)"}, }; /* pci_vid_113D[] */ -pci_id_t pci_vid_113E[] = { +static pci_id_t const pci_vid_113E[] = { {0x113E, 0xFFFF, 0xFFFF, 0xFFFF, "Sanyo Electric Co - Computer Engineering Dept(0x113E)"}, }; /* pci_vid_113E[] */ -pci_id_t pci_vid_113F[] = { +static pci_id_t const pci_vid_113F[] = { {0x113F, 0xFFFF, 0xFFFF, 0xFFFF, "Equinox Systems, Inc.(0x113F)"}, {0x113F, 0x0808, 0xFFFF, 0xFFFF, "SST-64P Adapter(0x0808)"}, {0x113F, 0x1010, 0xFFFF, 0xFFFF, "SST-128P Adapter(0x1010)"}, @@ -15978,15 +16058,15 @@ pci_id_t pci_vid_113F[] = { {0x113F, 0x9090, 0xFFFF, 0xFFFF, "SST-8P Adapter(0x9090)"}, }; /* pci_vid_113F[] */ -pci_id_t pci_vid_1140[] = { +static pci_id_t const pci_vid_1140[] = { {0x1140, 0xFFFF, 0xFFFF, 0xFFFF, "Intervoice Inc(0x1140)"}, }; /* pci_vid_1140[] */ -pci_id_t pci_vid_1141[] = { +static pci_id_t const pci_vid_1141[] = { {0x1141, 0xFFFF, 0xFFFF, 0xFFFF, "Crest Microsystem Inc(0x1141)"}, }; /* pci_vid_1141[] */ -pci_id_t pci_vid_1142[] = { +static pci_id_t const pci_vid_1142[] = { {0x1142, 0xFFFF, 0xFFFF, 0xFFFF, "Alliance Semiconductor Corporation(0x1142)"}, {0x1142, 0x3210, 0xFFFF, 0xFFFF, "AP6410(0x3210)"}, {0x1142, 0x6422, 0xFFFF, 0xFFFF, "ProVideo 6422(0x6422)"}, @@ -15995,16 +16075,16 @@ pci_id_t pci_vid_1142[] = { {0x1142, 0x643D, 0xFFFF, 0xFFFF, "ProMotion AT3D(0x643D)"}, }; /* pci_vid_1142[] */ -pci_id_t pci_vid_1143[] = { +static pci_id_t const pci_vid_1143[] = { {0x1143, 0xFFFF, 0xFFFF, 0xFFFF, "NetPower, Inc(0x1143)"}, }; /* pci_vid_1143[] */ -pci_id_t pci_vid_1144[] = { +static pci_id_t const pci_vid_1144[] = { {0x1144, 0xFFFF, 0xFFFF, 0xFFFF, "Cincinnati Milacron(0x1144)"}, {0x1144, 0x0001, 0xFFFF, 0xFFFF, "Noservo controller(0x0001)"}, }; /* pci_vid_1144[] */ -pci_id_t pci_vid_1145[] = { +static pci_id_t const pci_vid_1145[] = { {0x1145, 0xFFFF, 0xFFFF, 0xFFFF, "Workbit Corporation(0x1145)"}, {0x1145, 0x8007, 0xFFFF, 0xFFFF, "NinjaSCSI-32 Workbit(0x8007)"}, {0x1145, 0xF007, 0xFFFF, 0xFFFF, "NinjaSCSI-32 KME(0xF007)"}, @@ -16018,15 +16098,15 @@ pci_id_t pci_vid_1145[] = { {0x1145, 0xF103, 0xFFFF, 0xFFFF, "NinjaPATA-32 Delkin Cardbus UDMA(0xF103)"}, }; /* pci_vid_1145[] */ -pci_id_t pci_vid_1146[] = { +static pci_id_t const pci_vid_1146[] = { {0x1146, 0xFFFF, 0xFFFF, 0xFFFF, "Force Computers(0x1146)"}, }; /* pci_vid_1146[] */ -pci_id_t pci_vid_1147[] = { +static pci_id_t const pci_vid_1147[] = { {0x1147, 0xFFFF, 0xFFFF, 0xFFFF, "Interface Corp(0x1147)"}, }; /* pci_vid_1147[] */ -pci_id_t pci_vid_1148[] = { +static pci_id_t const pci_vid_1148[] = { {0x1148, 0xFFFF, 0xFFFF, 0xFFFF, "SysKonnect(0x1148)"}, {0x1148, 0x4000, 0xFFFF, 0xFFFF, "FDDI Adapter(0x4000)"}, {0x1148, 0x4000, 0x0E11, 0xB03B, "Netelligent 100 FDDI DAS Fibre SC(0x0E11-0xB03B)"}, @@ -16112,11 +16192,11 @@ pci_id_t pci_vid_1148[] = { {0x1148, 0x9E01, 0xFFFF, 0xFFFF, "SK-9E21M 10/100/1000Base-T Adapter(0x9E01)"}, }; /* pci_vid_1148[] */ -pci_id_t pci_vid_1149[] = { +static pci_id_t const pci_vid_1149[] = { {0x1149, 0xFFFF, 0xFFFF, 0xFFFF, "Win System Corporation(0x1149)"}, }; /* pci_vid_1149[] */ -pci_id_t pci_vid_114A[] = { +static pci_id_t const pci_vid_114A[] = { {0x114A, 0xFFFF, 0xFFFF, 0xFFFF, "VMIC(0x114A)"}, {0x114A, 0x5565, 0xFFFF, 0xFFFF, "GE-IP PCI5565,PMC5565 Reflective Memory Node(0x5565)"}, {0x114A, 0x5579, 0xFFFF, 0xFFFF, "VMIPCI-5579 (Reflective Memory Card)(0x5579)"}, @@ -16125,23 +16205,23 @@ pci_id_t pci_vid_114A[] = { {0x114A, 0x7587, 0xFFFF, 0xFFFF, "VMIVME-7587(0x7587)"}, }; /* pci_vid_114A[] */ -pci_id_t pci_vid_114B[] = { +static pci_id_t const pci_vid_114B[] = { {0x114B, 0xFFFF, 0xFFFF, 0xFFFF, "Canopus Co., Ltd(0x114B)"}, }; /* pci_vid_114B[] */ -pci_id_t pci_vid_114C[] = { +static pci_id_t const pci_vid_114C[] = { {0x114C, 0xFFFF, 0xFFFF, 0xFFFF, "Annabooks(0x114C)"}, }; /* pci_vid_114C[] */ -pci_id_t pci_vid_114D[] = { +static pci_id_t const pci_vid_114D[] = { {0x114D, 0xFFFF, 0xFFFF, 0xFFFF, "IC Corporation(0x114D)"}, }; /* pci_vid_114D[] */ -pci_id_t pci_vid_114E[] = { +static pci_id_t const pci_vid_114E[] = { {0x114E, 0xFFFF, 0xFFFF, 0xFFFF, "Nikon Systems Inc(0x114E)"}, }; /* pci_vid_114E[] */ -pci_id_t pci_vid_114F[] = { +static pci_id_t const pci_vid_114F[] = { {0x114F, 0xFFFF, 0xFFFF, 0xFFFF, "Digi International(0x114F)"}, {0x114F, 0x0002, 0xFFFF, 0xFFFF, "AccelePort EPC(0x0002)"}, {0x114F, 0x0003, 0xFFFF, 0xFFFF, "RightSwitch SE-6(0x0003)"}, @@ -16208,64 +16288,64 @@ pci_id_t pci_vid_114F[] = { {0x114F, 0x6001, 0xFFFF, 0xFFFF, "Avanstar(0x6001)"}, }; /* pci_vid_114F[] */ -pci_id_t pci_vid_1150[] = { +static pci_id_t const pci_vid_1150[] = { {0x1150, 0xFFFF, 0xFFFF, 0xFFFF, "Thinking Machines Corp(0x1150)"}, }; /* pci_vid_1150[] */ -pci_id_t pci_vid_1151[] = { +static pci_id_t const pci_vid_1151[] = { {0x1151, 0xFFFF, 0xFFFF, 0xFFFF, "JAE Electronics Inc.(0x1151)"}, }; /* pci_vid_1151[] */ -pci_id_t pci_vid_1152[] = { +static pci_id_t const pci_vid_1152[] = { {0x1152, 0xFFFF, 0xFFFF, 0xFFFF, "Megatek(0x1152)"}, }; /* pci_vid_1152[] */ -pci_id_t pci_vid_1153[] = { +static pci_id_t const pci_vid_1153[] = { {0x1153, 0xFFFF, 0xFFFF, 0xFFFF, "Land Win Electronic Corp(0x1153)"}, }; /* pci_vid_1153[] */ -pci_id_t pci_vid_1154[] = { +static pci_id_t const pci_vid_1154[] = { {0x1154, 0xFFFF, 0xFFFF, 0xFFFF, "Melco Inc(0x1154)"}, }; /* pci_vid_1154[] */ -pci_id_t pci_vid_1155[] = { +static pci_id_t const pci_vid_1155[] = { {0x1155, 0xFFFF, 0xFFFF, 0xFFFF, "Pine Technology Ltd(0x1155)"}, }; /* pci_vid_1155[] */ -pci_id_t pci_vid_1156[] = { +static pci_id_t const pci_vid_1156[] = { {0x1156, 0xFFFF, 0xFFFF, 0xFFFF, "Periscope Engineering(0x1156)"}, }; /* pci_vid_1156[] */ -pci_id_t pci_vid_1157[] = { +static pci_id_t const pci_vid_1157[] = { {0x1157, 0xFFFF, 0xFFFF, 0xFFFF, "Avsys Corporation(0x1157)"}, }; /* pci_vid_1157[] */ -pci_id_t pci_vid_1158[] = { +static pci_id_t const pci_vid_1158[] = { {0x1158, 0xFFFF, 0xFFFF, 0xFFFF, "Voarx R & D Inc(0x1158)"}, {0x1158, 0x3011, 0xFFFF, 0xFFFF, "Tokenet/vg 1001/10m anylan(0x3011)"}, {0x1158, 0x9050, 0xFFFF, 0xFFFF, "Lanfleet/Truevalue(0x9050)"}, {0x1158, 0x9051, 0xFFFF, 0xFFFF, "Lanfleet/Truevalue(0x9051)"}, }; /* pci_vid_1158[] */ -pci_id_t pci_vid_1159[] = { +static pci_id_t const pci_vid_1159[] = { {0x1159, 0xFFFF, 0xFFFF, 0xFFFF, "MuTech Corporation(0x1159)"}, {0x1159, 0x0001, 0xFFFF, 0xFFFF, "MV-1000(0x0001)"}, {0x1159, 0x0002, 0xFFFF, 0xFFFF, "MV-1500(0x0002)"}, }; /* pci_vid_1159[] */ -pci_id_t pci_vid_115A[] = { +static pci_id_t const pci_vid_115A[] = { {0x115A, 0xFFFF, 0xFFFF, 0xFFFF, "Harlequin Ltd(0x115A)"}, }; /* pci_vid_115A[] */ -pci_id_t pci_vid_115B[] = { +static pci_id_t const pci_vid_115B[] = { {0x115B, 0xFFFF, 0xFFFF, 0xFFFF, "Parallax Graphics(0x115B)"}, }; /* pci_vid_115B[] */ -pci_id_t pci_vid_115C[] = { +static pci_id_t const pci_vid_115C[] = { {0x115C, 0xFFFF, 0xFFFF, 0xFFFF, "Photron Ltd.(0x115C)"}, }; /* pci_vid_115C[] */ -pci_id_t pci_vid_115D[] = { +static pci_id_t const pci_vid_115D[] = { {0x115D, 0xFFFF, 0xFFFF, 0xFFFF, "Xircom(0x115D)"}, {0x115D, 0x0003, 0xFFFF, 0xFFFF, "Cardbus Ethernet 10/100(0x0003)"}, {0x115D, 0x0003, 0x1014, 0x0181, "10/100 EtherJet Cardbus Adapter(0x1014-0x0181)"}, @@ -16305,43 +16385,43 @@ pci_id_t pci_vid_115D[] = { {0x115D, 0x0103, 0x8086, 0x9181, "PRO/100 LAN + Modem56 CardBus(0x8086-0x9181)"}, }; /* pci_vid_115D[] */ -pci_id_t pci_vid_115E[] = { +static pci_id_t const pci_vid_115E[] = { {0x115E, 0xFFFF, 0xFFFF, 0xFFFF, "Peer Protocols Inc(0x115E)"}, }; /* pci_vid_115E[] */ -pci_id_t pci_vid_115F[] = { +static pci_id_t const pci_vid_115F[] = { {0x115F, 0xFFFF, 0xFFFF, 0xFFFF, "Maxtor Corporation(0x115F)"}, }; /* pci_vid_115F[] */ -pci_id_t pci_vid_1160[] = { +static pci_id_t const pci_vid_1160[] = { {0x1160, 0xFFFF, 0xFFFF, 0xFFFF, "Megasoft Inc(0x1160)"}, }; /* pci_vid_1160[] */ -pci_id_t pci_vid_1161[] = { +static pci_id_t const pci_vid_1161[] = { {0x1161, 0xFFFF, 0xFFFF, 0xFFFF, "PFU Limited(0x1161)"}, }; /* pci_vid_1161[] */ -pci_id_t pci_vid_1162[] = { +static pci_id_t const pci_vid_1162[] = { {0x1162, 0xFFFF, 0xFFFF, 0xFFFF, "OA Laboratory Co Ltd(0x1162)"}, }; /* pci_vid_1162[] */ -pci_id_t pci_vid_1163[] = { +static pci_id_t const pci_vid_1163[] = { {0x1163, 0xFFFF, 0xFFFF, 0xFFFF, "Rendition(0x1163)"}, {0x1163, 0x0001, 0xFFFF, 0xFFFF, "Verite 1000(0x0001)"}, {0x1163, 0x2000, 0xFFFF, 0xFFFF, "Verite V2000/V2100/V2200(0x2000)"}, {0x1163, 0x2000, 0x1092, 0x2000, "Stealth II S220(0x1092-0x2000)"}, }; /* pci_vid_1163[] */ -pci_id_t pci_vid_1164[] = { +static pci_id_t const pci_vid_1164[] = { {0x1164, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Peripherals Technologies(0x1164)"}, }; /* pci_vid_1164[] */ -pci_id_t pci_vid_1165[] = { +static pci_id_t const pci_vid_1165[] = { {0x1165, 0xFFFF, 0xFFFF, 0xFFFF, "Imagraph Corporation(0x1165)"}, {0x1165, 0x0001, 0xFFFF, 0xFFFF, "Motion TPEG Recorder/Player with audio(0x0001)"}, }; /* pci_vid_1165[] */ -pci_id_t pci_vid_1166[] = { +static pci_id_t const pci_vid_1166[] = { {0x1166, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom(0x1166)"}, {0x1166, 0x0000, 0xFFFF, 0xFFFF, "CMIC-LE(0x0000)"}, {0x1166, 0x0005, 0xFFFF, 0xFFFF, "CNB20-LE Host Bridge(0x0005)"}, @@ -16428,19 +16508,19 @@ pci_id_t pci_vid_1166[] = { {0x1166, 0x0422, 0xFFFF, 0xFFFF, "HT1100 PCI-Express Bridge(0x0422)"}, }; /* pci_vid_1166[] */ -pci_id_t pci_vid_1167[] = { +static pci_id_t const pci_vid_1167[] = { {0x1167, 0xFFFF, 0xFFFF, 0xFFFF, "Mutoh Industries Inc(0x1167)"}, }; /* pci_vid_1167[] */ -pci_id_t pci_vid_1168[] = { +static pci_id_t const pci_vid_1168[] = { {0x1168, 0xFFFF, 0xFFFF, 0xFFFF, "Thine Electronics Inc(0x1168)"}, }; /* pci_vid_1168[] */ -pci_id_t pci_vid_1169[] = { +static pci_id_t const pci_vid_1169[] = { {0x1169, 0xFFFF, 0xFFFF, 0xFFFF, "Centre for Development of Advanced Computing(0x1169)"}, }; /* pci_vid_1169[] */ -pci_id_t pci_vid_116A[] = { +static pci_id_t const pci_vid_116A[] = { {0x116A, 0xFFFF, 0xFFFF, 0xFFFF, "Luminex Software, Inc.(0x116A)"}, {0x116A, 0x6100, 0xFFFF, 0xFFFF, "Bus/Tag Channel(0x6100)"}, {0x116A, 0x6800, 0xFFFF, 0xFFFF, "Escon Channel(0x6800)"}, @@ -16448,67 +16528,67 @@ pci_id_t pci_vid_116A[] = { {0x116A, 0x7800, 0xFFFF, 0xFFFF, "Escon Channel(0x7800)"}, }; /* pci_vid_116A[] */ -pci_id_t pci_vid_116B[] = { +static pci_id_t const pci_vid_116B[] = { {0x116B, 0xFFFF, 0xFFFF, 0xFFFF, "Connectware Inc(0x116B)"}, }; /* pci_vid_116B[] */ -pci_id_t pci_vid_116C[] = { +static pci_id_t const pci_vid_116C[] = { {0x116C, 0xFFFF, 0xFFFF, 0xFFFF, "Intelligent Resources Integrated Systems(0x116C)"}, }; /* pci_vid_116C[] */ -pci_id_t pci_vid_116D[] = { +static pci_id_t const pci_vid_116D[] = { {0x116D, 0xFFFF, 0xFFFF, 0xFFFF, "Martin-Marietta(0x116D)"}, }; /* pci_vid_116D[] */ -pci_id_t pci_vid_116E[] = { +static pci_id_t const pci_vid_116E[] = { {0x116E, 0xFFFF, 0xFFFF, 0xFFFF, "Electronics for Imaging(0x116E)"}, }; /* pci_vid_116E[] */ -pci_id_t pci_vid_116F[] = { +static pci_id_t const pci_vid_116F[] = { {0x116F, 0xFFFF, 0xFFFF, 0xFFFF, "Workstation Technology(0x116F)"}, }; /* pci_vid_116F[] */ -pci_id_t pci_vid_1170[] = { +static pci_id_t const pci_vid_1170[] = { {0x1170, 0xFFFF, 0xFFFF, 0xFFFF, "Inventec Corporation(0x1170)"}, }; /* pci_vid_1170[] */ -pci_id_t pci_vid_1171[] = { +static pci_id_t const pci_vid_1171[] = { {0x1171, 0xFFFF, 0xFFFF, 0xFFFF, "Loughborough Sound Images Plc(0x1171)"}, }; /* pci_vid_1171[] */ -pci_id_t pci_vid_1172[] = { +static pci_id_t const pci_vid_1172[] = { {0x1172, 0xFFFF, 0xFFFF, 0xFFFF, "Altera Corporation(0x1172)"}, {0x1172, 0x00A7, 0xFFFF, 0xFFFF, "Stratix V(0x00A7)"}, {0x1172, 0x0530, 0xFFFF, 0xFFFF, "Stratix IV(0x0530)"}, {0x1172, 0x646C, 0xFFFF, 0xFFFF, "KT-500/KT-521 board(0x646C)"}, }; /* pci_vid_1172[] */ -pci_id_t pci_vid_1173[] = { +static pci_id_t const pci_vid_1173[] = { {0x1173, 0xFFFF, 0xFFFF, 0xFFFF, "Adobe Systems, Inc(0x1173)"}, }; /* pci_vid_1173[] */ -pci_id_t pci_vid_1174[] = { +static pci_id_t const pci_vid_1174[] = { {0x1174, 0xFFFF, 0xFFFF, 0xFFFF, "Bridgeport Machines(0x1174)"}, }; /* pci_vid_1174[] */ -pci_id_t pci_vid_1175[] = { +static pci_id_t const pci_vid_1175[] = { {0x1175, 0xFFFF, 0xFFFF, 0xFFFF, "Mitron Computer Inc.(0x1175)"}, }; /* pci_vid_1175[] */ -pci_id_t pci_vid_1176[] = { +static pci_id_t const pci_vid_1176[] = { {0x1176, 0xFFFF, 0xFFFF, 0xFFFF, "SBE Incorporated(0x1176)"}, }; /* pci_vid_1176[] */ -pci_id_t pci_vid_1177[] = { +static pci_id_t const pci_vid_1177[] = { {0x1177, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Engineering(0x1177)"}, }; /* pci_vid_1177[] */ -pci_id_t pci_vid_1178[] = { +static pci_id_t const pci_vid_1178[] = { {0x1178, 0xFFFF, 0xFFFF, 0xFFFF, "Alfa, Inc.(0x1178)"}, {0x1178, 0xAFA1, 0xFFFF, 0xFFFF, "Fast Ethernet Adapter(0xAFA1)"}, }; /* pci_vid_1178[] */ -pci_id_t pci_vid_1179[] = { +static pci_id_t const pci_vid_1179[] = { {0x1179, 0xFFFF, 0xFFFF, 0xFFFF, "Toshiba Corporation(0x1179)"}, {0x1179, 0x0102, 0xFFFF, 0xFFFF, "Extended IDE Controller(0x0102)"}, {0x1179, 0x0103, 0xFFFF, 0xFFFF, "EX-IDE Type-B(0x0103)"}, @@ -16549,17 +16629,18 @@ pci_id_t pci_vid_1179[] = { {0x1179, 0x0805, 0xFFFF, 0xFFFF, "SD TypA Controller(0x0805)"}, {0x1179, 0x0D01, 0xFFFF, 0xFFFF, "FIR Port Type-DO(0x0D01)"}, {0x1179, 0x0D01, 0x1179, 0x0001, "FIR Port Type-DO(0x1179-0x0001)"}, +{0x1179, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1179[] */ -pci_id_t pci_vid_117A[] = { +static pci_id_t const pci_vid_117A[] = { {0x117A, 0xFFFF, 0xFFFF, 0xFFFF, "A-Trend Technology(0x117A)"}, }; /* pci_vid_117A[] */ -pci_id_t pci_vid_117B[] = { +static pci_id_t const pci_vid_117B[] = { {0x117B, 0xFFFF, 0xFFFF, 0xFFFF, "L G Electronics, Inc.(0x117B)"}, }; /* pci_vid_117B[] */ -pci_id_t pci_vid_117C[] = { +static pci_id_t const pci_vid_117C[] = { {0x117C, 0xFFFF, 0xFFFF, 0xFFFF, "ATTO Technology, Inc.(0x117C)"}, {0x117C, 0x002C, 0xFFFF, 0xFFFF, "ExpressSAS R380(0x002C)"}, {0x117C, 0x002D, 0xFFFF, 0xFFFF, "ExpressSAS R348(0x002D)"}, @@ -16628,19 +16709,19 @@ pci_id_t pci_vid_117C[] = { {0x117C, 0x8072, 0x117C, 0x0082, "ExpressSAS H1288(0x117C-0x0082)"}, }; /* pci_vid_117C[] */ -pci_id_t pci_vid_117D[] = { +static pci_id_t const pci_vid_117D[] = { {0x117D, 0xFFFF, 0xFFFF, 0xFFFF, "Becton & Dickinson(0x117D)"}, }; /* pci_vid_117D[] */ -pci_id_t pci_vid_117E[] = { +static pci_id_t const pci_vid_117E[] = { {0x117E, 0xFFFF, 0xFFFF, 0xFFFF, "T/R Systems(0x117E)"}, }; /* pci_vid_117E[] */ -pci_id_t pci_vid_117F[] = { +static pci_id_t const pci_vid_117F[] = { {0x117F, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Circuit Systems(0x117F)"}, }; /* pci_vid_117F[] */ -pci_id_t pci_vid_1180[] = { +static pci_id_t const pci_vid_1180[] = { {0x1180, 0xFFFF, 0xFFFF, 0xFFFF, "Ricoh Co Ltd(0x1180)"}, {0x1180, 0x0465, 0xFFFF, 0xFFFF, "RL5c465(0x0465)"}, {0x1180, 0x0466, 0xFFFF, 0xFFFF, "RL5c466(0x0466)"}, @@ -16783,23 +16864,23 @@ pci_id_t pci_vid_1180[] = { {0x1180, 0xE852, 0xFFFF, 0xFFFF, "PCIe xD-Picture Card Controller(0xE852)"}, }; /* pci_vid_1180[] */ -pci_id_t pci_vid_1181[] = { +static pci_id_t const pci_vid_1181[] = { {0x1181, 0xFFFF, 0xFFFF, 0xFFFF, "Telmatics International(0x1181)"}, }; /* pci_vid_1181[] */ -pci_id_t pci_vid_1183[] = { +static pci_id_t const pci_vid_1183[] = { {0x1183, 0xFFFF, 0xFFFF, 0xFFFF, "Fujikura Ltd(0x1183)"}, }; /* pci_vid_1183[] */ -pci_id_t pci_vid_1184[] = { +static pci_id_t const pci_vid_1184[] = { {0x1184, 0xFFFF, 0xFFFF, 0xFFFF, "Forks Inc(0x1184)"}, }; /* pci_vid_1184[] */ -pci_id_t pci_vid_1185[] = { +static pci_id_t const pci_vid_1185[] = { {0x1185, 0xFFFF, 0xFFFF, 0xFFFF, "Dataworld International Ltd(0x1185)"}, }; /* pci_vid_1185[] */ -pci_id_t pci_vid_1186[] = { +static pci_id_t const pci_vid_1186[] = { {0x1186, 0xFFFF, 0xFFFF, 0xFFFF, "D-Link System Inc(0x1186)"}, {0x1186, 0x1002, 0xFFFF, 0xFFFF, "DL10050 Sundance Ethernet(0x1002)"}, {0x1186, 0x1002, 0x1186, 0x1002, "DFE-550TX/FX(0x1186-0x1002)"}, @@ -16837,33 +16918,33 @@ pci_id_t pci_vid_1186[] = { {0x1186, 0x8400, 0xFFFF, 0xFFFF, "D-Link DWL-650+ CardBus PC Card(0x8400)"}, }; /* pci_vid_1186[] */ -pci_id_t pci_vid_1187[] = { +static pci_id_t const pci_vid_1187[] = { {0x1187, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Technology Laboratories, Inc.(0x1187)"}, }; /* pci_vid_1187[] */ -pci_id_t pci_vid_1188[] = { +static pci_id_t const pci_vid_1188[] = { {0x1188, 0xFFFF, 0xFFFF, 0xFFFF, "Shima Seiki Manufacturing Ltd.(0x1188)"}, }; /* pci_vid_1188[] */ -pci_id_t pci_vid_1189[] = { +static pci_id_t const pci_vid_1189[] = { {0x1189, 0xFFFF, 0xFFFF, 0xFFFF, "Matsushita Electronics Co Ltd(0x1189)"}, }; /* pci_vid_1189[] */ -pci_id_t pci_vid_118A[] = { +static pci_id_t const pci_vid_118A[] = { {0x118A, 0xFFFF, 0xFFFF, 0xFFFF, "Hilevel Technology(0x118A)"}, }; /* pci_vid_118A[] */ -pci_id_t pci_vid_118B[] = { +static pci_id_t const pci_vid_118B[] = { {0x118B, 0xFFFF, 0xFFFF, 0xFFFF, "Hypertec Pty Limited(0x118B)"}, }; /* pci_vid_118B[] */ -pci_id_t pci_vid_118C[] = { +static pci_id_t const pci_vid_118C[] = { {0x118C, 0xFFFF, 0xFFFF, 0xFFFF, "Corollary, Inc(0x118C)"}, {0x118C, 0x0014, 0xFFFF, 0xFFFF, "PCIB [C-bus II to PCI bus host bridge chip](0x0014)"}, {0x118C, 0x1117, 0xFFFF, 0xFFFF, "Intel 8-way XEON Profusion Chipset [Cache Coherency Filter](0x1117)"}, }; /* pci_vid_118C[] */ -pci_id_t pci_vid_118D[] = { +static pci_id_t const pci_vid_118D[] = { {0x118D, 0xFFFF, 0xFFFF, 0xFFFF, "BitFlow Inc(0x118D)"}, {0x118D, 0x0001, 0xFFFF, 0xFFFF, "Raptor-PCI framegrabber(0x0001)"}, {0x118D, 0x0012, 0xFFFF, 0xFFFF, "Model 12 Road Runner Frame Grabber(0x0012)"}, @@ -16885,20 +16966,20 @@ pci_id_t pci_vid_118D[] = { {0x118D, 0xB04E, 0xFFFF, 0xFFFF, "Claxon CXP4 CoaXPress frame grabber(0xB04E)"}, }; /* pci_vid_118D[] */ -pci_id_t pci_vid_118E[] = { +static pci_id_t const pci_vid_118E[] = { {0x118E, 0xFFFF, 0xFFFF, 0xFFFF, "Hermstedt GmbH(0x118E)"}, }; /* pci_vid_118E[] */ -pci_id_t pci_vid_118F[] = { +static pci_id_t const pci_vid_118F[] = { {0x118F, 0xFFFF, 0xFFFF, 0xFFFF, "Green Logic(0x118F)"}, }; /* pci_vid_118F[] */ -pci_id_t pci_vid_1190[] = { +static pci_id_t const pci_vid_1190[] = { {0x1190, 0xFFFF, 0xFFFF, 0xFFFF, "Tripace(0x1190)"}, {0x1190, 0xC731, 0xFFFF, 0xFFFF, "TP-910/920/940 PCI Ultra(Wide) SCSI Adapter(0xC731)"}, }; /* pci_vid_1190[] */ -pci_id_t pci_vid_1191[] = { +static pci_id_t const pci_vid_1191[] = { {0x1191, 0xFFFF, 0xFFFF, 0xFFFF, "Artop Electronic Corp(0x1191)"}, {0x1191, 0x0003, 0xFFFF, 0xFFFF, "SCSI Cache Host Adapter(0x0003)"}, {0x1191, 0x0004, 0xFFFF, 0xFFFF, "ATP8400(0x0004)"}, @@ -16925,118 +17006,118 @@ pci_id_t pci_vid_1191[] = { {0x1191, 0x808A, 0xFFFF, 0xFFFF, "AEC67162 2-ch. LVD SCSI(0x808A)"}, }; /* pci_vid_1191[] */ -pci_id_t pci_vid_1192[] = { +static pci_id_t const pci_vid_1192[] = { {0x1192, 0xFFFF, 0xFFFF, 0xFFFF, "Densan Company Ltd(0x1192)"}, }; /* pci_vid_1192[] */ -pci_id_t pci_vid_1193[] = { +static pci_id_t const pci_vid_1193[] = { {0x1193, 0xFFFF, 0xFFFF, 0xFFFF, "Zeitnet Inc.(0x1193)"}, {0x1193, 0x0001, 0xFFFF, 0xFFFF, "1221(0x0001)"}, {0x1193, 0x0002, 0xFFFF, 0xFFFF, "1225(0x0002)"}, }; /* pci_vid_1193[] */ -pci_id_t pci_vid_1194[] = { +static pci_id_t const pci_vid_1194[] = { {0x1194, 0xFFFF, 0xFFFF, 0xFFFF, "Toucan Technology(0x1194)"}, }; /* pci_vid_1194[] */ -pci_id_t pci_vid_1195[] = { +static pci_id_t const pci_vid_1195[] = { {0x1195, 0xFFFF, 0xFFFF, 0xFFFF, "Ratoc System Inc(0x1195)"}, }; /* pci_vid_1195[] */ -pci_id_t pci_vid_1196[] = { +static pci_id_t const pci_vid_1196[] = { {0x1196, 0xFFFF, 0xFFFF, 0xFFFF, "Hytec Electronics Ltd(0x1196)"}, }; /* pci_vid_1196[] */ -pci_id_t pci_vid_1197[] = { +static pci_id_t const pci_vid_1197[] = { {0x1197, 0xFFFF, 0xFFFF, 0xFFFF, "Gage Applied Sciences, Inc.(0x1197)"}, {0x1197, 0x010C, 0xFFFF, 0xFFFF, "CompuScope 82G 8bit 2GS/s Analog Input Card(0x010C)"}, }; /* pci_vid_1197[] */ -pci_id_t pci_vid_1198[] = { +static pci_id_t const pci_vid_1198[] = { {0x1198, 0xFFFF, 0xFFFF, 0xFFFF, "Lambda Systems Inc(0x1198)"}, }; /* pci_vid_1198[] */ -pci_id_t pci_vid_1199[] = { +static pci_id_t const pci_vid_1199[] = { {0x1199, 0xFFFF, 0xFFFF, 0xFFFF, "Attachmate Corporation(0x1199)"}, {0x1199, 0x0101, 0xFFFF, 0xFFFF, "Advanced ISCA/PCI Adapter(0x0101)"}, }; /* pci_vid_1199[] */ -pci_id_t pci_vid_119A[] = { +static pci_id_t const pci_vid_119A[] = { {0x119A, 0xFFFF, 0xFFFF, 0xFFFF, "Mind Share, Inc.(0x119A)"}, }; /* pci_vid_119A[] */ -pci_id_t pci_vid_119B[] = { +static pci_id_t const pci_vid_119B[] = { {0x119B, 0xFFFF, 0xFFFF, 0xFFFF, "Omega Micro Inc.(0x119B)"}, {0x119B, 0x1221, 0xFFFF, 0xFFFF, "82C092G(0x1221)"}, }; /* pci_vid_119B[] */ -pci_id_t pci_vid_119C[] = { +static pci_id_t const pci_vid_119C[] = { {0x119C, 0xFFFF, 0xFFFF, 0xFFFF, "Information Technology Inst.(0x119C)"}, }; /* pci_vid_119C[] */ -pci_id_t pci_vid_119D[] = { +static pci_id_t const pci_vid_119D[] = { {0x119D, 0xFFFF, 0xFFFF, 0xFFFF, "Bug, Inc. Sapporo Japan(0x119D)"}, }; /* pci_vid_119D[] */ -pci_id_t pci_vid_119E[] = { +static pci_id_t const pci_vid_119E[] = { {0x119E, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Microelectronics Ltd.(0x119E)"}, {0x119E, 0x0001, 0xFFFF, 0xFFFF, "FireStream 155(0x0001)"}, {0x119E, 0x0003, 0xFFFF, 0xFFFF, "FireStream 50(0x0003)"}, }; /* pci_vid_119E[] */ -pci_id_t pci_vid_119F[] = { +static pci_id_t const pci_vid_119F[] = { {0x119F, 0xFFFF, 0xFFFF, 0xFFFF, "Bull HN Information Systems(0x119F)"}, {0x119F, 0x1081, 0xFFFF, 0xFFFF, "BXI Host Channel Adapter(0x1081)"}, {0x119F, 0x1101, 0xFFFF, 0xFFFF, "BXI Host Channel Adapter v1.2(0x1101)"}, {0x119F, 0x1121, 0xFFFF, 0xFFFF, "BXI Host Channel Adapter v1.3(0x1121)"}, }; /* pci_vid_119F[] */ -pci_id_t pci_vid_11A0[] = { +static pci_id_t const pci_vid_11A0[] = { {0x11A0, 0xFFFF, 0xFFFF, 0xFFFF, "Convex Computer Corporation(0x11A0)"}, }; /* pci_vid_11A0[] */ -pci_id_t pci_vid_11A1[] = { +static pci_id_t const pci_vid_11A1[] = { {0x11A1, 0xFFFF, 0xFFFF, 0xFFFF, "Hamamatsu Photonics K.K.(0x11A1)"}, }; /* pci_vid_11A1[] */ -pci_id_t pci_vid_11A2[] = { +static pci_id_t const pci_vid_11A2[] = { {0x11A2, 0xFFFF, 0xFFFF, 0xFFFF, "Sierra Research and Technology(0x11A2)"}, }; /* pci_vid_11A2[] */ -pci_id_t pci_vid_11A3[] = { +static pci_id_t const pci_vid_11A3[] = { {0x11A3, 0xFFFF, 0xFFFF, 0xFFFF, "Deuretzbacher GmbH & Co. Eng. KG(0x11A3)"}, }; /* pci_vid_11A3[] */ -pci_id_t pci_vid_11A4[] = { +static pci_id_t const pci_vid_11A4[] = { {0x11A4, 0xFFFF, 0xFFFF, 0xFFFF, "Barco Graphics NV(0x11A4)"}, }; /* pci_vid_11A4[] */ -pci_id_t pci_vid_11A5[] = { +static pci_id_t const pci_vid_11A5[] = { {0x11A5, 0xFFFF, 0xFFFF, 0xFFFF, "Microunity Systems Eng. Inc(0x11A5)"}, }; /* pci_vid_11A5[] */ -pci_id_t pci_vid_11A6[] = { +static pci_id_t const pci_vid_11A6[] = { {0x11A6, 0xFFFF, 0xFFFF, 0xFFFF, "Pure Data Ltd.(0x11A6)"}, }; /* pci_vid_11A6[] */ -pci_id_t pci_vid_11A7[] = { +static pci_id_t const pci_vid_11A7[] = { {0x11A7, 0xFFFF, 0xFFFF, 0xFFFF, "Power Computing Corp.(0x11A7)"}, }; /* pci_vid_11A7[] */ -pci_id_t pci_vid_11A8[] = { +static pci_id_t const pci_vid_11A8[] = { {0x11A8, 0xFFFF, 0xFFFF, 0xFFFF, "Systech Corp.(0x11A8)"}, }; /* pci_vid_11A8[] */ -pci_id_t pci_vid_11A9[] = { +static pci_id_t const pci_vid_11A9[] = { {0x11A9, 0xFFFF, 0xFFFF, 0xFFFF, "InnoSys Inc.(0x11A9)"}, {0x11A9, 0x4240, 0xFFFF, 0xFFFF, "AMCC S933Q Intelligent Serial Card(0x4240)"}, }; /* pci_vid_11A9[] */ -pci_id_t pci_vid_11AA[] = { +static pci_id_t const pci_vid_11AA[] = { {0x11AA, 0xFFFF, 0xFFFF, 0xFFFF, "Actel(0x11AA)"}, }; /* pci_vid_11AA[] */ -pci_id_t pci_vid_11AB[] = { +static pci_id_t const pci_vid_11AB[] = { {0x11AB, 0xFFFF, 0xFFFF, 0xFFFF, "Marvell Technology Group Ltd.(0x11AB)"}, {0x11AB, 0x0100, 0xFFFF, 0xFFFF, "88F3700 [Armada 3700 Family] ARM SoC(0x0100)"}, {0x11AB, 0x0110, 0xFFFF, 0xFFFF, "88F60x0/88F70x0/88F80x0/CN913x ARM SoC(0x0110)"}, @@ -17269,11 +17350,11 @@ pci_id_t pci_vid_11AB[] = { {0x11AB, 0xF003, 0xFFFF, 0xFFFF, "GT-64010 Primary Image Piranha Image Generator(0xF003)"}, }; /* pci_vid_11AB[] */ -pci_id_t pci_vid_11AC[] = { +static pci_id_t const pci_vid_11AC[] = { {0x11AC, 0xFFFF, 0xFFFF, 0xFFFF, "Canon Information Systems Research Aust.(0x11AC)"}, }; /* pci_vid_11AC[] */ -pci_id_t pci_vid_11AD[] = { +static pci_id_t const pci_vid_11AD[] = { {0x11AD, 0xFFFF, 0xFFFF, 0xFFFF, "Lite-On Communications Inc(0x11AD)"}, {0x11AD, 0x0002, 0xFFFF, 0xFFFF, "LNE100TX(0x0002)"}, {0x11AD, 0x0002, 0x11AD, 0x0002, "LNE100TX(0x11AD-0x0002)"}, @@ -17287,17 +17368,17 @@ pci_id_t pci_vid_11AD[] = { {0x11AD, 0xC115, 0x2646, 0x000B, "KNE111TX(0x2646-0x000B)"}, }; /* pci_vid_11AD[] */ -pci_id_t pci_vid_11AE[] = { +static pci_id_t const pci_vid_11AE[] = { {0x11AE, 0xFFFF, 0xFFFF, 0xFFFF, "Aztech System Ltd(0x11AE)"}, }; /* pci_vid_11AE[] */ -pci_id_t pci_vid_11AF[] = { +static pci_id_t const pci_vid_11AF[] = { {0x11AF, 0xFFFF, 0xFFFF, 0xFFFF, "Avid Technology Inc.(0x11AF)"}, {0x11AF, 0x0001, 0xFFFF, 0xFFFF, "Cinema(0x0001)"}, {0x11AF, 0xEE40, 0xFFFF, 0xFFFF, "Digidesign Audiomedia III(0xEE40)"}, }; /* pci_vid_11AF[] */ -pci_id_t pci_vid_11B0[] = { +static pci_id_t const pci_vid_11B0[] = { {0x11B0, 0xFFFF, 0xFFFF, 0xFFFF, "V3 Semiconductor Inc.(0x11B0)"}, {0x11B0, 0x0002, 0xFFFF, 0xFFFF, "V300PSC(0x0002)"}, {0x11B0, 0x0292, 0xFFFF, 0xFFFF, "V292PBC [Am29030/40 Bridge](0x0292)"}, @@ -17306,58 +17387,58 @@ pci_id_t pci_vid_11B0[] = { {0x11B0, 0xC960, 0xFFFF, 0xFFFF, "V96DPC(0xC960)"}, }; /* pci_vid_11B0[] */ -pci_id_t pci_vid_11B1[] = { +static pci_id_t const pci_vid_11B1[] = { {0x11B1, 0xFFFF, 0xFFFF, 0xFFFF, "Apricot Computers(0x11B1)"}, }; /* pci_vid_11B1[] */ -pci_id_t pci_vid_11B2[] = { +static pci_id_t const pci_vid_11B2[] = { {0x11B2, 0xFFFF, 0xFFFF, 0xFFFF, "Eastman Kodak(0x11B2)"}, }; /* pci_vid_11B2[] */ -pci_id_t pci_vid_11B3[] = { +static pci_id_t const pci_vid_11B3[] = { {0x11B3, 0xFFFF, 0xFFFF, 0xFFFF, "Barr Systems Inc.(0x11B3)"}, }; /* pci_vid_11B3[] */ -pci_id_t pci_vid_11B4[] = { +static pci_id_t const pci_vid_11B4[] = { {0x11B4, 0xFFFF, 0xFFFF, 0xFFFF, "Leitch Technology International(0x11B4)"}, }; /* pci_vid_11B4[] */ -pci_id_t pci_vid_11B5[] = { +static pci_id_t const pci_vid_11B5[] = { {0x11B5, 0xFFFF, 0xFFFF, 0xFFFF, "Radstone Technology Plc(0x11B5)"}, }; /* pci_vid_11B5[] */ -pci_id_t pci_vid_11B6[] = { +static pci_id_t const pci_vid_11B6[] = { {0x11B6, 0xFFFF, 0xFFFF, 0xFFFF, "United Video Corp(0x11B6)"}, }; /* pci_vid_11B6[] */ -pci_id_t pci_vid_11B7[] = { +static pci_id_t const pci_vid_11B7[] = { {0x11B7, 0xFFFF, 0xFFFF, 0xFFFF, "Motorola(0x11B7)"}, }; /* pci_vid_11B7[] */ -pci_id_t pci_vid_11B8[] = { +static pci_id_t const pci_vid_11B8[] = { {0x11B8, 0xFFFF, 0xFFFF, 0xFFFF, "XPoint Technologies, Inc(0x11B8)"}, {0x11B8, 0x0001, 0xFFFF, 0xFFFF, "Quad PeerMaster(0x0001)"}, }; /* pci_vid_11B8[] */ -pci_id_t pci_vid_11B9[] = { +static pci_id_t const pci_vid_11B9[] = { {0x11B9, 0xFFFF, 0xFFFF, 0xFFFF, "Pathlight Technology Inc.(0x11B9)"}, {0x11B9, 0xC0ED, 0xFFFF, 0xFFFF, "SSA Controller(0xC0ED)"}, }; /* pci_vid_11B9[] */ -pci_id_t pci_vid_11BA[] = { +static pci_id_t const pci_vid_11BA[] = { {0x11BA, 0xFFFF, 0xFFFF, 0xFFFF, "Videotron Corp(0x11BA)"}, }; /* pci_vid_11BA[] */ -pci_id_t pci_vid_11BB[] = { +static pci_id_t const pci_vid_11BB[] = { {0x11BB, 0xFFFF, 0xFFFF, 0xFFFF, "Pyramid Technology(0x11BB)"}, }; /* pci_vid_11BB[] */ -pci_id_t pci_vid_11BC[] = { +static pci_id_t const pci_vid_11BC[] = { {0x11BC, 0xFFFF, 0xFFFF, 0xFFFF, "Network Peripherals Inc(0x11BC)"}, {0x11BC, 0x0001, 0xFFFF, 0xFFFF, "NP-PCI(0x0001)"}, }; /* pci_vid_11BC[] */ -pci_id_t pci_vid_11BD[] = { +static pci_id_t const pci_vid_11BD[] = { {0x11BD, 0xFFFF, 0xFFFF, 0xFFFF, "Pinnacle Systems Inc.(0x11BD)"}, {0x11BD, 0x002E, 0xFFFF, 0xFFFF, "PCTV 40i(0x002E)"}, {0x11BD, 0x0040, 0xFFFF, 0xFFFF, "Royal TS Function 1(0x0040)"}, @@ -17373,19 +17454,19 @@ pci_id_t pci_vid_11BD[] = { {0x11BD, 0xBEDE, 0xFFFF, 0xFFFF, "AV/DV Studio Capture Card(0xBEDE)"}, }; /* pci_vid_11BD[] */ -pci_id_t pci_vid_11BE[] = { +static pci_id_t const pci_vid_11BE[] = { {0x11BE, 0xFFFF, 0xFFFF, 0xFFFF, "International Microcircuits Inc(0x11BE)"}, }; /* pci_vid_11BE[] */ -pci_id_t pci_vid_11BF[] = { +static pci_id_t const pci_vid_11BF[] = { {0x11BF, 0xFFFF, 0xFFFF, 0xFFFF, "Astrodesign, Inc.(0x11BF)"}, }; /* pci_vid_11BF[] */ -pci_id_t pci_vid_11C0[] = { +static pci_id_t const pci_vid_11C0[] = { {0x11C0, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett Packard(0x11C0)"}, }; /* pci_vid_11C0[] */ -pci_id_t pci_vid_11C1[] = { +static pci_id_t const pci_vid_11C1[] = { {0x11C1, 0xFFFF, 0xFFFF, 0xFFFF, "LSI Corporation(0x11C1)"}, {0x11C1, 0x0440, 0xFFFF, 0xFFFF, "56k WinModem(0x0440)"}, {0x11C1, 0x0440, 0x1033, 0x8015, "LT WinModem 56k Data+Fax+Voice+Dsvd(0x1033-0x8015)"}, @@ -17528,48 +17609,48 @@ pci_id_t pci_vid_11C1[] = { {0x11C1, 0xED01, 0xFFFF, 0xFFFF, "ET-131x PCI-E Ethernet Controller(0xED01)"}, }; /* pci_vid_11C1[] */ -pci_id_t pci_vid_11C2[] = { +static pci_id_t const pci_vid_11C2[] = { {0x11C2, 0xFFFF, 0xFFFF, 0xFFFF, "Sand Microelectronics(0x11C2)"}, }; /* pci_vid_11C2[] */ -pci_id_t pci_vid_11C3[] = { +static pci_id_t const pci_vid_11C3[] = { {0x11C3, 0xFFFF, 0xFFFF, 0xFFFF, "NEC Corporation(0x11C3)"}, }; /* pci_vid_11C3[] */ -pci_id_t pci_vid_11C4[] = { +static pci_id_t const pci_vid_11C4[] = { {0x11C4, 0xFFFF, 0xFFFF, 0xFFFF, "Document Technologies, Inc(0x11C4)"}, }; /* pci_vid_11C4[] */ -pci_id_t pci_vid_11C5[] = { +static pci_id_t const pci_vid_11C5[] = { {0x11C5, 0xFFFF, 0xFFFF, 0xFFFF, "Shiva Corporation(0x11C5)"}, }; /* pci_vid_11C5[] */ -pci_id_t pci_vid_11C6[] = { +static pci_id_t const pci_vid_11C6[] = { {0x11C6, 0xFFFF, 0xFFFF, 0xFFFF, "Dainippon Screen Mfg. Co. Ltd(0x11C6)"}, }; /* pci_vid_11C6[] */ -pci_id_t pci_vid_11C7[] = { +static pci_id_t const pci_vid_11C7[] = { {0x11C7, 0xFFFF, 0xFFFF, 0xFFFF, "D.C.M. Data Systems(0x11C7)"}, }; /* pci_vid_11C7[] */ -pci_id_t pci_vid_11C8[] = { +static pci_id_t const pci_vid_11C8[] = { {0x11C8, 0xFFFF, 0xFFFF, 0xFFFF, "Dolphin Interconnect Solutions AS(0x11C8)"}, {0x11C8, 0x0658, 0xFFFF, 0xFFFF, "PSB32 SCI-Adapter D31x(0x0658)"}, {0x11C8, 0xD665, 0xFFFF, 0xFFFF, "PSB64 SCI-Adapter D32x(0xD665)"}, {0x11C8, 0xD667, 0xFFFF, 0xFFFF, "PSB66 SCI-Adapter D33x(0xD667)"}, }; /* pci_vid_11C8[] */ -pci_id_t pci_vid_11C9[] = { +static pci_id_t const pci_vid_11C9[] = { {0x11C9, 0xFFFF, 0xFFFF, 0xFFFF, "Magma(0x11C9)"}, {0x11C9, 0x0010, 0xFFFF, 0xFFFF, "16-line serial port w/- DMA(0x0010)"}, {0x11C9, 0x0011, 0xFFFF, 0xFFFF, "4-line serial port w/- DMA(0x0011)"}, }; /* pci_vid_11C9[] */ -pci_id_t pci_vid_11CA[] = { +static pci_id_t const pci_vid_11CA[] = { {0x11CA, 0xFFFF, 0xFFFF, 0xFFFF, "LSI Systems, Inc(0x11CA)"}, }; /* pci_vid_11CA[] */ -pci_id_t pci_vid_11CB[] = { +static pci_id_t const pci_vid_11CB[] = { {0x11CB, 0xFFFF, 0xFFFF, 0xFFFF, "Specialix Research Ltd.(0x11CB)"}, {0x11CB, 0x2000, 0xFFFF, 0xFFFF, "PCI_9050(0x2000)"}, {0x11CB, 0x2000, 0x11CB, 0x0200, "SX(0x11CB-0x0200)"}, @@ -17578,85 +17659,85 @@ pci_id_t pci_vid_11CB[] = { {0x11CB, 0x8000, 0xFFFF, 0xFFFF, "T225(0x8000)"}, }; /* pci_vid_11CB[] */ -pci_id_t pci_vid_11CC[] = { +static pci_id_t const pci_vid_11CC[] = { {0x11CC, 0xFFFF, 0xFFFF, 0xFFFF, "Michels & Kleberhoff Computer GmbH(0x11CC)"}, }; /* pci_vid_11CC[] */ -pci_id_t pci_vid_11CD[] = { +static pci_id_t const pci_vid_11CD[] = { {0x11CD, 0xFFFF, 0xFFFF, 0xFFFF, "HAL Computer Systems, Inc.(0x11CD)"}, }; /* pci_vid_11CD[] */ -pci_id_t pci_vid_11CE[] = { +static pci_id_t const pci_vid_11CE[] = { {0x11CE, 0xFFFF, 0xFFFF, 0xFFFF, "Netaccess(0x11CE)"}, }; /* pci_vid_11CE[] */ -pci_id_t pci_vid_11CF[] = { +static pci_id_t const pci_vid_11CF[] = { {0x11CF, 0xFFFF, 0xFFFF, 0xFFFF, "Pioneer Electronic Corporation(0x11CF)"}, }; /* pci_vid_11CF[] */ -pci_id_t pci_vid_11D0[] = { +static pci_id_t const pci_vid_11D0[] = { {0x11D0, 0xFFFF, 0xFFFF, 0xFFFF, "Lockheed Martin Federal Systems-Manassas(0x11D0)"}, }; /* pci_vid_11D0[] */ -pci_id_t pci_vid_11D1[] = { +static pci_id_t const pci_vid_11D1[] = { {0x11D1, 0xFFFF, 0xFFFF, 0xFFFF, "Auravision(0x11D1)"}, {0x11D1, 0x01F7, 0xFFFF, 0xFFFF, "VxP524(0x01F7)"}, {0x11D1, 0x01F9, 0xFFFF, 0xFFFF, "VxP951(0x01F9)"}, }; /* pci_vid_11D1[] */ -pci_id_t pci_vid_11D2[] = { +static pci_id_t const pci_vid_11D2[] = { {0x11D2, 0xFFFF, 0xFFFF, 0xFFFF, "Intercom Inc.(0x11D2)"}, }; /* pci_vid_11D2[] */ -pci_id_t pci_vid_11D3[] = { +static pci_id_t const pci_vid_11D3[] = { {0x11D3, 0xFFFF, 0xFFFF, 0xFFFF, "Trancell Systems Inc(0x11D3)"}, }; /* pci_vid_11D3[] */ -pci_id_t pci_vid_11D4[] = { +static pci_id_t const pci_vid_11D4[] = { {0x11D4, 0xFFFF, 0xFFFF, 0xFFFF, "Analog Devices(0x11D4)"}, {0x11D4, 0x1535, 0xFFFF, 0xFFFF, "Blackfin BF535 processor(0x1535)"}, {0x11D4, 0x1805, 0xFFFF, 0xFFFF, "SM56 PCI modem(0x1805)"}, }; /* pci_vid_11D4[] */ -pci_id_t pci_vid_11D5[] = { +static pci_id_t const pci_vid_11D5[] = { {0x11D5, 0xFFFF, 0xFFFF, 0xFFFF, "Ikon Corporation(0x11D5)"}, {0x11D5, 0x0115, 0xFFFF, 0xFFFF, "10115(0x0115)"}, {0x11D5, 0x0117, 0xFFFF, 0xFFFF, "10117(0x0117)"}, }; /* pci_vid_11D5[] */ -pci_id_t pci_vid_11D6[] = { +static pci_id_t const pci_vid_11D6[] = { {0x11D6, 0xFFFF, 0xFFFF, 0xFFFF, "Tekelec Telecom(0x11D6)"}, }; /* pci_vid_11D6[] */ -pci_id_t pci_vid_11D7[] = { +static pci_id_t const pci_vid_11D7[] = { {0x11D7, 0xFFFF, 0xFFFF, 0xFFFF, "Trenton Technology, Inc.(0x11D7)"}, }; /* pci_vid_11D7[] */ -pci_id_t pci_vid_11D8[] = { +static pci_id_t const pci_vid_11D8[] = { {0x11D8, 0xFFFF, 0xFFFF, 0xFFFF, "Image Technologies Development(0x11D8)"}, }; /* pci_vid_11D8[] */ -pci_id_t pci_vid_11D9[] = { +static pci_id_t const pci_vid_11D9[] = { {0x11D9, 0xFFFF, 0xFFFF, 0xFFFF, "TEC Corporation(0x11D9)"}, }; /* pci_vid_11D9[] */ -pci_id_t pci_vid_11DA[] = { +static pci_id_t const pci_vid_11DA[] = { {0x11DA, 0xFFFF, 0xFFFF, 0xFFFF, "Novell(0x11DA)"}, }; /* pci_vid_11DA[] */ -pci_id_t pci_vid_11DB[] = { +static pci_id_t const pci_vid_11DB[] = { {0x11DB, 0xFFFF, 0xFFFF, 0xFFFF, "Sega Enterprises Ltd(0x11DB)"}, }; /* pci_vid_11DB[] */ -pci_id_t pci_vid_11DC[] = { +static pci_id_t const pci_vid_11DC[] = { {0x11DC, 0xFFFF, 0xFFFF, 0xFFFF, "Questra Corporation(0x11DC)"}, }; /* pci_vid_11DC[] */ -pci_id_t pci_vid_11DD[] = { +static pci_id_t const pci_vid_11DD[] = { {0x11DD, 0xFFFF, 0xFFFF, 0xFFFF, "Crosfield Electronics Limited(0x11DD)"}, }; /* pci_vid_11DD[] */ -pci_id_t pci_vid_11DE[] = { +static pci_id_t const pci_vid_11DE[] = { {0x11DE, 0xFFFF, 0xFFFF, 0xFFFF, "Zoran Corporation(0x11DE)"}, {0x11DE, 0x6017, 0xFFFF, 0xFFFF, "miroVIDEO DC30(0x6017)"}, {0x11DE, 0x6057, 0xFFFF, 0xFFFF, "ZR36057PQC Video cutting chipset(0x6057)"}, @@ -17670,23 +17751,23 @@ pci_id_t pci_vid_11DE[] = { {0x11DE, 0x6120, 0x1DE1, 0x9FFF, "Video Kit C210(0x1DE1-0x9FFF)"}, }; /* pci_vid_11DE[] */ -pci_id_t pci_vid_11DF[] = { +static pci_id_t const pci_vid_11DF[] = { {0x11DF, 0xFFFF, 0xFFFF, 0xFFFF, "New Wave PDG(0x11DF)"}, }; /* pci_vid_11DF[] */ -pci_id_t pci_vid_11E0[] = { +static pci_id_t const pci_vid_11E0[] = { {0x11E0, 0xFFFF, 0xFFFF, 0xFFFF, "Cray Communications A/S(0x11E0)"}, }; /* pci_vid_11E0[] */ -pci_id_t pci_vid_11E1[] = { +static pci_id_t const pci_vid_11E1[] = { {0x11E1, 0xFFFF, 0xFFFF, 0xFFFF, "GEC Plessey Semi Inc.(0x11E1)"}, }; /* pci_vid_11E1[] */ -pci_id_t pci_vid_11E2[] = { +static pci_id_t const pci_vid_11E2[] = { {0x11E2, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Information Systems America(0x11E2)"}, }; /* pci_vid_11E2[] */ -pci_id_t pci_vid_11E3[] = { +static pci_id_t const pci_vid_11E3[] = { {0x11E3, 0xFFFF, 0xFFFF, 0xFFFF, "Quicklogic Corporation(0x11E3)"}, {0x11E3, 0x0001, 0xFFFF, 0xFFFF, "COM-ON-AIR Dosch&Amand DECT(0x0001)"}, {0x11E3, 0x0560, 0xFFFF, 0xFFFF, "QL5064 Companion Design Demo Board(0x0560)"}, @@ -17694,57 +17775,57 @@ pci_id_t pci_vid_11E3[] = { {0x11E3, 0x8417, 0xFFFF, 0xFFFF, "QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module(0x8417)"}, }; /* pci_vid_11E3[] */ -pci_id_t pci_vid_11E4[] = { +static pci_id_t const pci_vid_11E4[] = { {0x11E4, 0xFFFF, 0xFFFF, 0xFFFF, "Second Wave Inc(0x11E4)"}, }; /* pci_vid_11E4[] */ -pci_id_t pci_vid_11E5[] = { +static pci_id_t const pci_vid_11E5[] = { {0x11E5, 0xFFFF, 0xFFFF, 0xFFFF, "IIX Consulting(0x11E5)"}, }; /* pci_vid_11E5[] */ -pci_id_t pci_vid_11E6[] = { +static pci_id_t const pci_vid_11E6[] = { {0x11E6, 0xFFFF, 0xFFFF, 0xFFFF, "Mitsui-Zosen System Research(0x11E6)"}, }; /* pci_vid_11E6[] */ -pci_id_t pci_vid_11E7[] = { +static pci_id_t const pci_vid_11E7[] = { {0x11E7, 0xFFFF, 0xFFFF, 0xFFFF, "Toshiba America, Elec. Company(0x11E7)"}, }; /* pci_vid_11E7[] */ -pci_id_t pci_vid_11E8[] = { +static pci_id_t const pci_vid_11E8[] = { {0x11E8, 0xFFFF, 0xFFFF, 0xFFFF, "Digital Processing Systems Inc.(0x11E8)"}, }; /* pci_vid_11E8[] */ -pci_id_t pci_vid_11E9[] = { +static pci_id_t const pci_vid_11E9[] = { {0x11E9, 0xFFFF, 0xFFFF, 0xFFFF, "Highwater Designs Ltd.(0x11E9)"}, }; /* pci_vid_11E9[] */ -pci_id_t pci_vid_11EA[] = { +static pci_id_t const pci_vid_11EA[] = { {0x11EA, 0xFFFF, 0xFFFF, 0xFFFF, "Elsag Bailey(0x11EA)"}, }; /* pci_vid_11EA[] */ -pci_id_t pci_vid_11EB[] = { +static pci_id_t const pci_vid_11EB[] = { {0x11EB, 0xFFFF, 0xFFFF, 0xFFFF, "Formation Inc.(0x11EB)"}, }; /* pci_vid_11EB[] */ -pci_id_t pci_vid_11EC[] = { +static pci_id_t const pci_vid_11EC[] = { {0x11EC, 0xFFFF, 0xFFFF, 0xFFFF, "Coreco Inc(0x11EC)"}, {0x11EC, 0x000D, 0xFFFF, 0xFFFF, "Oculus-F/64P(0x000D)"}, {0x11EC, 0x1800, 0xFFFF, 0xFFFF, "Cobra/C6(0x1800)"}, }; /* pci_vid_11EC[] */ -pci_id_t pci_vid_11ED[] = { +static pci_id_t const pci_vid_11ED[] = { {0x11ED, 0xFFFF, 0xFFFF, 0xFFFF, "Mediamatics(0x11ED)"}, }; /* pci_vid_11ED[] */ -pci_id_t pci_vid_11EE[] = { +static pci_id_t const pci_vid_11EE[] = { {0x11EE, 0xFFFF, 0xFFFF, 0xFFFF, "Dome Imaging Systems Inc(0x11EE)"}, }; /* pci_vid_11EE[] */ -pci_id_t pci_vid_11EF[] = { +static pci_id_t const pci_vid_11EF[] = { {0x11EF, 0xFFFF, 0xFFFF, 0xFFFF, "Nicolet Technologies B.V.(0x11EF)"}, }; /* pci_vid_11EF[] */ -pci_id_t pci_vid_11F0[] = { +static pci_id_t const pci_vid_11F0[] = { {0x11F0, 0xFFFF, 0xFFFF, 0xFFFF, "Compu-Shack(0x11F0)"}, {0x11F0, 0x4231, 0xFFFF, 0xFFFF, "FDDI(0x4231)"}, {0x11F0, 0x4232, 0xFFFF, 0xFFFF, "FASTline UTP Quattro(0x4232)"}, @@ -17755,29 +17836,29 @@ pci_id_t pci_vid_11F0[] = { {0x11F0, 0x4731, 0xFFFF, 0xFFFF, "GIGAline(0x4731)"}, }; /* pci_vid_11F0[] */ -pci_id_t pci_vid_11F1[] = { +static pci_id_t const pci_vid_11F1[] = { {0x11F1, 0xFFFF, 0xFFFF, 0xFFFF, "Symbios Logic Inc(0x11F1)"}, }; /* pci_vid_11F1[] */ -pci_id_t pci_vid_11F2[] = { +static pci_id_t const pci_vid_11F2[] = { {0x11F2, 0xFFFF, 0xFFFF, 0xFFFF, "Picture Tel Japan K.K.(0x11F2)"}, }; /* pci_vid_11F2[] */ -pci_id_t pci_vid_11F3[] = { +static pci_id_t const pci_vid_11F3[] = { {0x11F3, 0xFFFF, 0xFFFF, 0xFFFF, "Keithley Metrabyte(0x11F3)"}, {0x11F3, 0x0011, 0xFFFF, 0xFFFF, "KPCI-PIO24(0x0011)"}, }; /* pci_vid_11F3[] */ -pci_id_t pci_vid_11F4[] = { +static pci_id_t const pci_vid_11F4[] = { {0x11F4, 0xFFFF, 0xFFFF, 0xFFFF, "Kinetic Systems Corporation(0x11F4)"}, {0x11F4, 0x2915, 0xFFFF, 0xFFFF, "CAMAC controller(0x2915)"}, }; /* pci_vid_11F4[] */ -pci_id_t pci_vid_11F5[] = { +static pci_id_t const pci_vid_11F5[] = { {0x11F5, 0xFFFF, 0xFFFF, 0xFFFF, "Computing Devices International(0x11F5)"}, }; /* pci_vid_11F5[] */ -pci_id_t pci_vid_11F6[] = { +static pci_id_t const pci_vid_11F6[] = { {0x11F6, 0xFFFF, 0xFFFF, 0xFFFF, "Compex(0x11F6)"}, {0x11F6, 0x0112, 0xFFFF, 0xFFFF, "ENet100VG4(0x0112)"}, {0x11F6, 0x0113, 0xFFFF, 0xFFFF, "FreedomLine 100(0x0113)"}, @@ -17789,11 +17870,11 @@ pci_id_t pci_vid_11F6[] = { {0x11F6, 0x9881, 0xFFFF, 0xFFFF, "RL100TX Fast Ethernet(0x9881)"}, }; /* pci_vid_11F6[] */ -pci_id_t pci_vid_11F7[] = { +static pci_id_t const pci_vid_11F7[] = { {0x11F7, 0xFFFF, 0xFFFF, 0xFFFF, "Scientific Atlanta(0x11F7)"}, }; /* pci_vid_11F7[] */ -pci_id_t pci_vid_11F8[] = { +static pci_id_t const pci_vid_11F8[] = { {0x11F8, 0xFFFF, 0xFFFF, 0xFFFF, "PMC-Sierra Inc.(0x11F8)"}, {0x11F8, 0x5220, 0xFFFF, 0xFFFF, "BR522x [PMC-Sierra maxRAID SAS Controller](0x5220)"}, {0x11F8, 0x7364, 0xFFFF, 0xFFFF, "PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr](0x7364)"}, @@ -17828,27 +17909,27 @@ pci_id_t pci_vid_11F8[] = { {0x11F8, 0x8562, 0xFFFF, 0xFFFF, "PM8562 Switchtec PFX-L 32xG3 Fanout-Lite PCIe Gen3 Switch(0x8562)"}, }; /* pci_vid_11F8[] */ -pci_id_t pci_vid_11F9[] = { +static pci_id_t const pci_vid_11F9[] = { {0x11F9, 0xFFFF, 0xFFFF, 0xFFFF, "I-Cube Inc(0x11F9)"}, }; /* pci_vid_11F9[] */ -pci_id_t pci_vid_11FA[] = { +static pci_id_t const pci_vid_11FA[] = { {0x11FA, 0xFFFF, 0xFFFF, 0xFFFF, "Kasan Electronics Company, Ltd.(0x11FA)"}, }; /* pci_vid_11FA[] */ -pci_id_t pci_vid_11FB[] = { +static pci_id_t const pci_vid_11FB[] = { {0x11FB, 0xFFFF, 0xFFFF, 0xFFFF, "Datel Inc(0x11FB)"}, }; /* pci_vid_11FB[] */ -pci_id_t pci_vid_11FC[] = { +static pci_id_t const pci_vid_11FC[] = { {0x11FC, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Magic(0x11FC)"}, }; /* pci_vid_11FC[] */ -pci_id_t pci_vid_11FD[] = { +static pci_id_t const pci_vid_11FD[] = { {0x11FD, 0xFFFF, 0xFFFF, 0xFFFF, "High Street Consultants(0x11FD)"}, }; /* pci_vid_11FD[] */ -pci_id_t pci_vid_11FE[] = { +static pci_id_t const pci_vid_11FE[] = { {0x11FE, 0xFFFF, 0xFFFF, 0xFFFF, "Pepperl+Fuchs(0x11FE)"}, {0x11FE, 0x0001, 0xFFFF, 0xFFFF, "RocketPort PCI 32-port w/external I/F(0x0001)"}, {0x11FE, 0x0002, 0xFFFF, 0xFFFF, "RocketPort PCI 8-port w/external I/F(0x0002)"}, @@ -17915,20 +17996,20 @@ pci_id_t pci_vid_11FE[] = { {0x11FE, 0x8812, 0xFFFF, 0xFFFF, "RocketPort Plus uPCI 4-port RS422 w/Quad Cable(0x8812)"}, }; /* pci_vid_11FE[] */ -pci_id_t pci_vid_11FF[] = { +static pci_id_t const pci_vid_11FF[] = { {0x11FF, 0xFFFF, 0xFFFF, 0xFFFF, "Scion Corporation(0x11FF)"}, {0x11FF, 0x0003, 0xFFFF, 0xFFFF, "AG-5(0x0003)"}, }; /* pci_vid_11FF[] */ -pci_id_t pci_vid_1200[] = { +static pci_id_t const pci_vid_1200[] = { {0x1200, 0xFFFF, 0xFFFF, 0xFFFF, "CSS Corporation(0x1200)"}, }; /* pci_vid_1200[] */ -pci_id_t pci_vid_1201[] = { +static pci_id_t const pci_vid_1201[] = { {0x1201, 0xFFFF, 0xFFFF, 0xFFFF, "Vista Controls Corp(0x1201)"}, }; /* pci_vid_1201[] */ -pci_id_t pci_vid_1202[] = { +static pci_id_t const pci_vid_1202[] = { {0x1202, 0xFFFF, 0xFFFF, 0xFFFF, "Network General Corp.(0x1202)"}, {0x1202, 0x4300, 0xFFFF, 0xFFFF, "Gigabit Ethernet Adapter(0x4300)"}, {0x1202, 0x4300, 0x1202, 0x9841, "SK-9841 LX(0x1202-0x9841)"}, @@ -17937,49 +18018,49 @@ pci_id_t pci_vid_1202[] = { {0x1202, 0x4300, 0x1202, 0x9844, "SK-9843 SX dual link(0x1202-0x9844)"}, }; /* pci_vid_1202[] */ -pci_id_t pci_vid_1203[] = { +static pci_id_t const pci_vid_1203[] = { {0x1203, 0xFFFF, 0xFFFF, 0xFFFF, "Bayer Corporation, Agfa Division(0x1203)"}, }; /* pci_vid_1203[] */ -pci_id_t pci_vid_1204[] = { +static pci_id_t const pci_vid_1204[] = { {0x1204, 0xFFFF, 0xFFFF, 0xFFFF, "Lattice Semiconductor Corporation(0x1204)"}, {0x1204, 0x1965, 0xFFFF, 0xFFFF, "SB6501 802.11ad Wireless Network Adapter(0x1965)"}, }; /* pci_vid_1204[] */ -pci_id_t pci_vid_1205[] = { +static pci_id_t const pci_vid_1205[] = { {0x1205, 0xFFFF, 0xFFFF, 0xFFFF, "Array Corporation(0x1205)"}, }; /* pci_vid_1205[] */ -pci_id_t pci_vid_1206[] = { +static pci_id_t const pci_vid_1206[] = { {0x1206, 0xFFFF, 0xFFFF, 0xFFFF, "Amdahl Corporation(0x1206)"}, }; /* pci_vid_1206[] */ -pci_id_t pci_vid_1208[] = { +static pci_id_t const pci_vid_1208[] = { {0x1208, 0xFFFF, 0xFFFF, 0xFFFF, "Parsytec GmbH(0x1208)"}, {0x1208, 0x4853, 0xFFFF, 0xFFFF, "HS-Link Device(0x4853)"}, }; /* pci_vid_1208[] */ -pci_id_t pci_vid_1209[] = { +static pci_id_t const pci_vid_1209[] = { {0x1209, 0xFFFF, 0xFFFF, 0xFFFF, "SCI Systems Inc(0x1209)"}, }; /* pci_vid_1209[] */ -pci_id_t pci_vid_120A[] = { +static pci_id_t const pci_vid_120A[] = { {0x120A, 0xFFFF, 0xFFFF, 0xFFFF, "Synaptel(0x120A)"}, }; /* pci_vid_120A[] */ -pci_id_t pci_vid_120B[] = { +static pci_id_t const pci_vid_120B[] = { {0x120B, 0xFFFF, 0xFFFF, 0xFFFF, "Adaptive Solutions(0x120B)"}, }; /* pci_vid_120B[] */ -pci_id_t pci_vid_120C[] = { +static pci_id_t const pci_vid_120C[] = { {0x120C, 0xFFFF, 0xFFFF, 0xFFFF, "Technical Corp.(0x120C)"}, }; /* pci_vid_120C[] */ -pci_id_t pci_vid_120D[] = { +static pci_id_t const pci_vid_120D[] = { {0x120D, 0xFFFF, 0xFFFF, 0xFFFF, "Compression Labs, Inc.(0x120D)"}, }; /* pci_vid_120D[] */ -pci_id_t pci_vid_120E[] = { +static pci_id_t const pci_vid_120E[] = { {0x120E, 0xFFFF, 0xFFFF, 0xFFFF, "Cyclades Corporation(0x120E)"}, {0x120E, 0x0100, 0xFFFF, 0xFFFF, "Cyclom-Y below first megabyte(0x0100)"}, {0x120E, 0x0101, 0xFFFF, 0xFFFF, "Cyclom-Y above first megabyte(0x0101)"}, @@ -17998,36 +18079,36 @@ pci_id_t pci_vid_120E[] = { {0x120E, 0x0400, 0xFFFF, 0xFFFF, "PC400(0x0400)"}, }; /* pci_vid_120E[] */ -pci_id_t pci_vid_120F[] = { +static pci_id_t const pci_vid_120F[] = { {0x120F, 0xFFFF, 0xFFFF, 0xFFFF, "Essential Communications(0x120F)"}, {0x120F, 0x0001, 0xFFFF, 0xFFFF, "Roadrunner serial HIPPI(0x0001)"}, }; /* pci_vid_120F[] */ -pci_id_t pci_vid_1210[] = { +static pci_id_t const pci_vid_1210[] = { {0x1210, 0xFFFF, 0xFFFF, 0xFFFF, "Hyperparallel Technologies(0x1210)"}, }; /* pci_vid_1210[] */ -pci_id_t pci_vid_1211[] = { +static pci_id_t const pci_vid_1211[] = { {0x1211, 0xFFFF, 0xFFFF, 0xFFFF, "Braintech Inc(0x1211)"}, }; /* pci_vid_1211[] */ -pci_id_t pci_vid_1213[] = { +static pci_id_t const pci_vid_1213[] = { {0x1213, 0xFFFF, 0xFFFF, 0xFFFF, "Applied Intelligent Systems, Inc.(0x1213)"}, }; /* pci_vid_1213[] */ -pci_id_t pci_vid_1214[] = { +static pci_id_t const pci_vid_1214[] = { {0x1214, 0xFFFF, 0xFFFF, 0xFFFF, "Performance Technologies, Inc.(0x1214)"}, }; /* pci_vid_1214[] */ -pci_id_t pci_vid_1215[] = { +static pci_id_t const pci_vid_1215[] = { {0x1215, 0xFFFF, 0xFFFF, 0xFFFF, "Interware Co., Ltd(0x1215)"}, }; /* pci_vid_1215[] */ -pci_id_t pci_vid_1216[] = { +static pci_id_t const pci_vid_1216[] = { {0x1216, 0xFFFF, 0xFFFF, 0xFFFF, "Purup Prepress A/S(0x1216)"}, }; /* pci_vid_1216[] */ -pci_id_t pci_vid_1217[] = { +static pci_id_t const pci_vid_1217[] = { {0x1217, 0xFFFF, 0xFFFF, 0xFFFF, "O2 Micro, Inc.(0x1217)"}, {0x1217, 0x00F7, 0xFFFF, 0xFFFF, "Firewire (IEEE 1394)(0x00F7)"}, {0x1217, 0x00F7, 0x1071, 0x8209, "Medion MIM 2240 Notebook PC [MD98100](0x1071-0x8209)"}, @@ -18088,15 +18169,15 @@ pci_id_t pci_vid_1217[] = { {0x1217, 0x8760, 0xFFFF, 0xFFFF, "FORESEE E2M2 NVMe SSD(0x8760)"}, }; /* pci_vid_1217[] */ -pci_id_t pci_vid_1218[] = { +static pci_id_t const pci_vid_1218[] = { {0x1218, 0xFFFF, 0xFFFF, 0xFFFF, "Hybricon Corp.(0x1218)"}, }; /* pci_vid_1218[] */ -pci_id_t pci_vid_1219[] = { +static pci_id_t const pci_vid_1219[] = { {0x1219, 0xFFFF, 0xFFFF, 0xFFFF, "First Virtual Corporation(0x1219)"}, }; /* pci_vid_1219[] */ -pci_id_t pci_vid_121A[] = { +static pci_id_t const pci_vid_121A[] = { {0x121A, 0xFFFF, 0xFFFF, 0xFFFF, "3Dfx Interactive, Inc.(0x121A)"}, {0x121A, 0x0001, 0xFFFF, 0xFFFF, "Voodoo(0x0001)"}, {0x121A, 0x0002, 0xFFFF, 0xFFFF, "Voodoo 2(0x0002)"}, @@ -18144,33 +18225,33 @@ pci_id_t pci_vid_121A[] = { {0x121A, 0x0057, 0xFFFF, 0xFFFF, "Voodoo 3/3000 [Avenger](0x0057)"}, }; /* pci_vid_121A[] */ -pci_id_t pci_vid_121B[] = { +static pci_id_t const pci_vid_121B[] = { {0x121B, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Telecommunications Modules(0x121B)"}, }; /* pci_vid_121B[] */ -pci_id_t pci_vid_121C[] = { +static pci_id_t const pci_vid_121C[] = { {0x121C, 0xFFFF, 0xFFFF, 0xFFFF, "Nippon Texaco., Ltd(0x121C)"}, }; /* pci_vid_121C[] */ -pci_id_t pci_vid_121D[] = { +static pci_id_t const pci_vid_121D[] = { {0x121D, 0xFFFF, 0xFFFF, 0xFFFF, "LiPPERT ADLINK Technology GmbH(0x121D)"}, }; /* pci_vid_121D[] */ -pci_id_t pci_vid_121E[] = { +static pci_id_t const pci_vid_121E[] = { {0x121E, 0xFFFF, 0xFFFF, 0xFFFF, "CSPI(0x121E)"}, {0x121E, 0x0201, 0xFFFF, 0xFFFF, "Myrinet 2000 Scalable Cluster Interconnect(0x0201)"}, }; /* pci_vid_121E[] */ -pci_id_t pci_vid_121F[] = { +static pci_id_t const pci_vid_121F[] = { {0x121F, 0xFFFF, 0xFFFF, 0xFFFF, "Arcus Technology, Inc.(0x121F)"}, }; /* pci_vid_121F[] */ -pci_id_t pci_vid_1220[] = { +static pci_id_t const pci_vid_1220[] = { {0x1220, 0xFFFF, 0xFFFF, 0xFFFF, "Ariel Corporation(0x1220)"}, {0x1220, 0x1220, 0xFFFF, 0xFFFF, "AMCC 5933 TMS320C80 DSP/Imaging board(0x1220)"}, }; /* pci_vid_1220[] */ -pci_id_t pci_vid_1221[] = { +static pci_id_t const pci_vid_1221[] = { {0x1221, 0xFFFF, 0xFFFF, 0xFFFF, "Contec Co., Ltd(0x1221)"}, {0x1221, 0x9172, 0xFFFF, 0xFFFF, "PO-64L(PCI)H [Isolated Digital Output Board for PCI](0x9172)"}, {0x1221, 0x91A2, 0xFFFF, 0xFFFF, "PO-32L(PCI)H [Isolated Digital Output Board for PCI](0x91A2)"}, @@ -18179,11 +18260,11 @@ pci_id_t pci_vid_1221[] = { {0x1221, 0xC103, 0xFFFF, 0xFFFF, "ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI](0xC103)"}, }; /* pci_vid_1221[] */ -pci_id_t pci_vid_1222[] = { +static pci_id_t const pci_vid_1222[] = { {0x1222, 0xFFFF, 0xFFFF, 0xFFFF, "Ancor Communications, Inc.(0x1222)"}, }; /* pci_vid_1222[] */ -pci_id_t pci_vid_1223[] = { +static pci_id_t const pci_vid_1223[] = { {0x1223, 0xFFFF, 0xFFFF, 0xFFFF, "Artesyn Communication Products(0x1223)"}, {0x1223, 0x0003, 0xFFFF, 0xFFFF, "PM/Link(0x0003)"}, {0x1223, 0x0004, 0xFFFF, 0xFFFF, "PM/T1(0x0004)"}, @@ -18197,15 +18278,15 @@ pci_id_t pci_vid_1223[] = { {0x1223, 0x000E, 0xFFFF, 0xFFFF, "PM/PPC(0x000E)"}, }; /* pci_vid_1223[] */ -pci_id_t pci_vid_1224[] = { +static pci_id_t const pci_vid_1224[] = { {0x1224, 0xFFFF, 0xFFFF, 0xFFFF, "Interactive Images(0x1224)"}, }; /* pci_vid_1224[] */ -pci_id_t pci_vid_1225[] = { +static pci_id_t const pci_vid_1225[] = { {0x1225, 0xFFFF, 0xFFFF, 0xFFFF, "Power I/O, Inc.(0x1225)"}, }; /* pci_vid_1225[] */ -pci_id_t pci_vid_1227[] = { +static pci_id_t const pci_vid_1227[] = { {0x1227, 0xFFFF, 0xFFFF, 0xFFFF, "EIZO Rugged Solutions(0x1227)"}, {0x1227, 0x0006, 0xFFFF, 0xFFFF, "Raptor GFX 8P(0x0006)"}, {0x1227, 0x0023, 0xFFFF, 0xFFFF, "Raptor GFX [1100T](0x0023)"}, @@ -18213,27 +18294,27 @@ pci_id_t pci_vid_1227[] = { {0x1227, 0x004A, 0xFFFF, 0xFFFF, "Raptor 4000-LR-L [Linux version](0x004A)"}, }; /* pci_vid_1227[] */ -pci_id_t pci_vid_1228[] = { +static pci_id_t const pci_vid_1228[] = { {0x1228, 0xFFFF, 0xFFFF, 0xFFFF, "Norsk Elektro Optikk A/S(0x1228)"}, }; /* pci_vid_1228[] */ -pci_id_t pci_vid_1229[] = { +static pci_id_t const pci_vid_1229[] = { {0x1229, 0xFFFF, 0xFFFF, 0xFFFF, "Data Kinesis Inc.(0x1229)"}, }; /* pci_vid_1229[] */ -pci_id_t pci_vid_122A[] = { +static pci_id_t const pci_vid_122A[] = { {0x122A, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Telecom(0x122A)"}, }; /* pci_vid_122A[] */ -pci_id_t pci_vid_122B[] = { +static pci_id_t const pci_vid_122B[] = { {0x122B, 0xFFFF, 0xFFFF, 0xFFFF, "LG Industrial Systems Co., Ltd(0x122B)"}, }; /* pci_vid_122B[] */ -pci_id_t pci_vid_122C[] = { +static pci_id_t const pci_vid_122C[] = { {0x122C, 0xFFFF, 0xFFFF, 0xFFFF, "Sican GmbH(0x122C)"}, }; /* pci_vid_122C[] */ -pci_id_t pci_vid_122D[] = { +static pci_id_t const pci_vid_122D[] = { {0x122D, 0xFFFF, 0xFFFF, 0xFFFF, "Aztech System Ltd(0x122D)"}, {0x122D, 0x1206, 0xFFFF, 0xFFFF, "368DSP(0x1206)"}, {0x122D, 0x1400, 0xFFFF, 0xFFFF, "Trident PCI288-Q3DII (NX)(0x1400)"}, @@ -18243,22 +18324,22 @@ pci_id_t pci_vid_122D[] = { {0x122D, 0x80DA, 0x122D, 0x0001, "3328 Audio(0x122D-0x0001)"}, }; /* pci_vid_122D[] */ -pci_id_t pci_vid_122E[] = { +static pci_id_t const pci_vid_122E[] = { {0x122E, 0xFFFF, 0xFFFF, 0xFFFF, "Xyratex(0x122E)"}, {0x122E, 0x7722, 0xFFFF, 0xFFFF, "Napatech XL1(0x7722)"}, {0x122E, 0x7724, 0xFFFF, 0xFFFF, "Napatech XL2/XA(0x7724)"}, {0x122E, 0x7729, 0xFFFF, 0xFFFF, "Napatech XD(0x7729)"}, }; /* pci_vid_122E[] */ -pci_id_t pci_vid_122F[] = { +static pci_id_t const pci_vid_122F[] = { {0x122F, 0xFFFF, 0xFFFF, 0xFFFF, "Andrew Corporation(0x122F)"}, }; /* pci_vid_122F[] */ -pci_id_t pci_vid_1230[] = { +static pci_id_t const pci_vid_1230[] = { {0x1230, 0xFFFF, 0xFFFF, 0xFFFF, "Fishcamp Engineering(0x1230)"}, }; /* pci_vid_1230[] */ -pci_id_t pci_vid_1231[] = { +static pci_id_t const pci_vid_1231[] = { {0x1231, 0xFFFF, 0xFFFF, 0xFFFF, "Woodward McCoach, Inc.(0x1231)"}, {0x1231, 0x04E1, 0xFFFF, 0xFFFF, "Desktop PCI Telephony 4(0x04E1)"}, {0x1231, 0x05E1, 0xFFFF, 0xFFFF, "Desktop PCI Telephony 5/6(0x05E1)"}, @@ -18267,49 +18348,49 @@ pci_id_t pci_vid_1231[] = { {0x1231, 0x0D13, 0xFFFF, 0xFFFF, "Desktop PCI L1/L3 Telephony(0x0D13)"}, }; /* pci_vid_1231[] */ -pci_id_t pci_vid_1232[] = { +static pci_id_t const pci_vid_1232[] = { {0x1232, 0xFFFF, 0xFFFF, 0xFFFF, "GPT Limited(0x1232)"}, }; /* pci_vid_1232[] */ -pci_id_t pci_vid_1233[] = { +static pci_id_t const pci_vid_1233[] = { {0x1233, 0xFFFF, 0xFFFF, 0xFFFF, "Bus-Tech, Inc.(0x1233)"}, }; /* pci_vid_1233[] */ -pci_id_t pci_vid_1235[] = { +static pci_id_t const pci_vid_1235[] = { {0x1235, 0xFFFF, 0xFFFF, 0xFFFF, "SMART Modular Technologies(0x1235)"}, }; /* pci_vid_1235[] */ -pci_id_t pci_vid_1236[] = { +static pci_id_t const pci_vid_1236[] = { {0x1236, 0xFFFF, 0xFFFF, 0xFFFF, "Sigma Designs Corporation(0x1236)"}, {0x1236, 0x0000, 0xFFFF, 0xFFFF, "RealMagic64/GX(0x0000)"}, {0x1236, 0x6401, 0xFFFF, 0xFFFF, "REALmagic 64/GX (SD 6425)(0x6401)"}, }; /* pci_vid_1236[] */ -pci_id_t pci_vid_1237[] = { +static pci_id_t const pci_vid_1237[] = { {0x1237, 0xFFFF, 0xFFFF, 0xFFFF, "Alta Technology Corporation(0x1237)"}, }; /* pci_vid_1237[] */ -pci_id_t pci_vid_1238[] = { +static pci_id_t const pci_vid_1238[] = { {0x1238, 0xFFFF, 0xFFFF, 0xFFFF, "Adtran(0x1238)"}, }; /* pci_vid_1238[] */ -pci_id_t pci_vid_1239[] = { +static pci_id_t const pci_vid_1239[] = { {0x1239, 0xFFFF, 0xFFFF, 0xFFFF, "3DO Company(0x1239)"}, }; /* pci_vid_1239[] */ -pci_id_t pci_vid_123A[] = { +static pci_id_t const pci_vid_123A[] = { {0x123A, 0xFFFF, 0xFFFF, 0xFFFF, "Visicom Laboratories, Inc.(0x123A)"}, }; /* pci_vid_123A[] */ -pci_id_t pci_vid_123B[] = { +static pci_id_t const pci_vid_123B[] = { {0x123B, 0xFFFF, 0xFFFF, 0xFFFF, "Seeq Technology, Inc.(0x123B)"}, }; /* pci_vid_123B[] */ -pci_id_t pci_vid_123C[] = { +static pci_id_t const pci_vid_123C[] = { {0x123C, 0xFFFF, 0xFFFF, 0xFFFF, "Century Systems, Inc.(0x123C)"}, }; /* pci_vid_123C[] */ -pci_id_t pci_vid_123D[] = { +static pci_id_t const pci_vid_123D[] = { {0x123D, 0xFFFF, 0xFFFF, 0xFFFF, "Engineering Design Team, Inc.(0x123D)"}, {0x123D, 0x0000, 0xFFFF, 0xFFFF, "EasyConnect 8/32(0x0000)"}, {0x123D, 0x0002, 0xFFFF, 0xFFFF, "EasyConnect 8/64(0x0002)"}, @@ -18324,11 +18405,11 @@ pci_id_t pci_vid_123D[] = { {0x123D, 0x00B5, 0xFFFF, 0xFFFF, "PCIe8 RFx SDR(0x00B5)"}, }; /* pci_vid_123D[] */ -pci_id_t pci_vid_123E[] = { +static pci_id_t const pci_vid_123E[] = { {0x123E, 0xFFFF, 0xFFFF, 0xFFFF, "Simutech, Inc.(0x123E)"}, }; /* pci_vid_123E[] */ -pci_id_t pci_vid_123F[] = { +static pci_id_t const pci_vid_123F[] = { {0x123F, 0xFFFF, 0xFFFF, 0xFFFF, "LSI Logic(0x123F)"}, {0x123F, 0x00E4, 0xFFFF, 0xFFFF, "MPEG(0x00E4)"}, {0x123F, 0x8120, 0xFFFF, 0xFFFF, "DVxplore Codec(0x8120)"}, @@ -18347,15 +18428,15 @@ pci_id_t pci_vid_123F[] = { {0x123F, 0x8888, 0x1328, 0x0001, "Cinemaster C 3.0 DVD Decoder(0x1328-0x0001)"}, }; /* pci_vid_123F[] */ -pci_id_t pci_vid_1240[] = { +static pci_id_t const pci_vid_1240[] = { {0x1240, 0xFFFF, 0xFFFF, 0xFFFF, "Marathon Technologies Corp.(0x1240)"}, }; /* pci_vid_1240[] */ -pci_id_t pci_vid_1241[] = { +static pci_id_t const pci_vid_1241[] = { {0x1241, 0xFFFF, 0xFFFF, 0xFFFF, "DSC Communications(0x1241)"}, }; /* pci_vid_1241[] */ -pci_id_t pci_vid_1242[] = { +static pci_id_t const pci_vid_1242[] = { {0x1242, 0xFFFF, 0xFFFF, 0xFFFF, "JNI Corporation(0x1242)"}, {0x1242, 0x1560, 0xFFFF, 0xFFFF, "JNIC-1560 PCI-X Fibre Channel Controller(0x1560)"}, {0x1242, 0x1560, 0x1242, 0x6562, "FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter(0x1242-0x6562)"}, @@ -18365,11 +18446,11 @@ pci_id_t pci_vid_1242[] = { {0x1242, 0x656A, 0xFFFF, 0xFFFF, "FCX-6562 PCI-X Fibre Channel Adapter(0x656A)"}, }; /* pci_vid_1242[] */ -pci_id_t pci_vid_1243[] = { +static pci_id_t const pci_vid_1243[] = { {0x1243, 0xFFFF, 0xFFFF, 0xFFFF, "Delphax(0x1243)"}, }; /* pci_vid_1243[] */ -pci_id_t pci_vid_1244[] = { +static pci_id_t const pci_vid_1244[] = { {0x1244, 0xFFFF, 0xFFFF, 0xFFFF, "AVM GmbH(0x1244)"}, {0x1244, 0x0700, 0xFFFF, 0xFFFF, "B1 ISDN(0x0700)"}, {0x1244, 0x0800, 0xFFFF, 0xFFFF, "C4 ISDN(0x0800)"}, @@ -18384,41 +18465,41 @@ pci_id_t pci_vid_1244[] = { {0x1244, 0x2900, 0xFFFF, 0xFFFF, "Fritz!Card DSL v2.0(0x2900)"}, }; /* pci_vid_1244[] */ -pci_id_t pci_vid_1245[] = { +static pci_id_t const pci_vid_1245[] = { {0x1245, 0xFFFF, 0xFFFF, 0xFFFF, "A.P.D., S.A.(0x1245)"}, }; /* pci_vid_1245[] */ -pci_id_t pci_vid_1246[] = { +static pci_id_t const pci_vid_1246[] = { {0x1246, 0xFFFF, 0xFFFF, 0xFFFF, "Dipix Technologies, Inc.(0x1246)"}, }; /* pci_vid_1246[] */ -pci_id_t pci_vid_1247[] = { +static pci_id_t const pci_vid_1247[] = { {0x1247, 0xFFFF, 0xFFFF, 0xFFFF, "Xylon Research, Inc.(0x1247)"}, }; /* pci_vid_1247[] */ -pci_id_t pci_vid_1248[] = { +static pci_id_t const pci_vid_1248[] = { {0x1248, 0xFFFF, 0xFFFF, 0xFFFF, "Central Data Corporation(0x1248)"}, }; /* pci_vid_1248[] */ -pci_id_t pci_vid_1249[] = { +static pci_id_t const pci_vid_1249[] = { {0x1249, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Electronics Co., Ltd.(0x1249)"}, }; /* pci_vid_1249[] */ -pci_id_t pci_vid_124A[] = { +static pci_id_t const pci_vid_124A[] = { {0x124A, 0xFFFF, 0xFFFF, 0xFFFF, "AEG Electrocom GmbH(0x124A)"}, }; /* pci_vid_124A[] */ -pci_id_t pci_vid_124B[] = { +static pci_id_t const pci_vid_124B[] = { {0x124B, 0xFFFF, 0xFFFF, 0xFFFF, "SBS/Greenspring Modular I/O(0x124B)"}, {0x124B, 0x0040, 0xFFFF, 0xFFFF, "PCI-40A or cPCI-200 Quad IndustryPack carrier(0x0040)"}, {0x124B, 0x0040, 0x124B, 0x9080, "PCI9080 Bridge(0x124B-0x9080)"}, }; /* pci_vid_124B[] */ -pci_id_t pci_vid_124C[] = { +static pci_id_t const pci_vid_124C[] = { {0x124C, 0xFFFF, 0xFFFF, 0xFFFF, "Solitron Technologies, Inc.(0x124C)"}, }; /* pci_vid_124C[] */ -pci_id_t pci_vid_124D[] = { +static pci_id_t const pci_vid_124D[] = { {0x124D, 0xFFFF, 0xFFFF, 0xFFFF, "Stallion Technologies, Inc.(0x124D)"}, {0x124D, 0x0000, 0xFFFF, 0xFFFF, "EasyConnection 8/32(0x0000)"}, {0x124D, 0x0002, 0xFFFF, 0xFFFF, "EasyConnection 8/64(0x0002)"}, @@ -18426,34 +18507,34 @@ pci_id_t pci_vid_124D[] = { {0x124D, 0x0004, 0xFFFF, 0xFFFF, "EasyConnection/RA(0x0004)"}, }; /* pci_vid_124D[] */ -pci_id_t pci_vid_124E[] = { +static pci_id_t const pci_vid_124E[] = { {0x124E, 0xFFFF, 0xFFFF, 0xFFFF, "Cylink(0x124E)"}, }; /* pci_vid_124E[] */ -pci_id_t pci_vid_124F[] = { +static pci_id_t const pci_vid_124F[] = { {0x124F, 0xFFFF, 0xFFFF, 0xFFFF, "Infortrend Technology, Inc.(0x124F)"}, {0x124F, 0x0041, 0xFFFF, 0xFFFF, "IFT-2000 Series RAID Controller(0x0041)"}, }; /* pci_vid_124F[] */ -pci_id_t pci_vid_1250[] = { +static pci_id_t const pci_vid_1250[] = { {0x1250, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Microcomputer System Ltd(0x1250)"}, }; /* pci_vid_1250[] */ -pci_id_t pci_vid_1251[] = { +static pci_id_t const pci_vid_1251[] = { {0x1251, 0xFFFF, 0xFFFF, 0xFFFF, "VLSI Solutions Oy(0x1251)"}, }; /* pci_vid_1251[] */ -pci_id_t pci_vid_1253[] = { +static pci_id_t const pci_vid_1253[] = { {0x1253, 0xFFFF, 0xFFFF, 0xFFFF, "Guzik Technical Enterprises(0x1253)"}, }; /* pci_vid_1253[] */ -pci_id_t pci_vid_1254[] = { +static pci_id_t const pci_vid_1254[] = { {0x1254, 0xFFFF, 0xFFFF, 0xFFFF, "Linear Systems Ltd.(0x1254)"}, {0x1254, 0x0065, 0xFFFF, 0xFFFF, "DVB Master FD(0x0065)"}, {0x1254, 0x007C, 0xFFFF, 0xFFFF, "DVB Master Quad/o(0x007C)"}, }; /* pci_vid_1254[] */ -pci_id_t pci_vid_1255[] = { +static pci_id_t const pci_vid_1255[] = { {0x1255, 0xFFFF, 0xFFFF, 0xFFFF, "Optibase Ltd(0x1255)"}, {0x1255, 0x1110, 0xFFFF, 0xFFFF, "MPEG Forge(0x1110)"}, {0x1255, 0x1210, 0xFFFF, 0xFFFF, "MPEG Fusion(0x1210)"}, @@ -18462,22 +18543,22 @@ pci_id_t pci_vid_1255[] = { {0x1255, 0x2130, 0xFFFF, 0xFFFF, "VideoQuest(0x2130)"}, }; /* pci_vid_1255[] */ -pci_id_t pci_vid_1256[] = { +static pci_id_t const pci_vid_1256[] = { {0x1256, 0xFFFF, 0xFFFF, 0xFFFF, "Perceptive Solutions, Inc.(0x1256)"}, {0x1256, 0x4201, 0xFFFF, 0xFFFF, "PCI-2220I(0x4201)"}, {0x1256, 0x4401, 0xFFFF, 0xFFFF, "PCI-2240I(0x4401)"}, {0x1256, 0x5201, 0xFFFF, 0xFFFF, "PCI-2000(0x5201)"}, }; /* pci_vid_1256[] */ -pci_id_t pci_vid_1257[] = { +static pci_id_t const pci_vid_1257[] = { {0x1257, 0xFFFF, 0xFFFF, 0xFFFF, "Vertex Networks, Inc.(0x1257)"}, }; /* pci_vid_1257[] */ -pci_id_t pci_vid_1258[] = { +static pci_id_t const pci_vid_1258[] = { {0x1258, 0xFFFF, 0xFFFF, 0xFFFF, "Gilbarco, Inc.(0x1258)"}, }; /* pci_vid_1258[] */ -pci_id_t pci_vid_1259[] = { +static pci_id_t const pci_vid_1259[] = { {0x1259, 0xFFFF, 0xFFFF, 0xFFFF, "Allied Telesis(0x1259)"}, {0x1259, 0x2560, 0xFFFF, 0xFFFF, "AT-2560 Fast Ethernet Adapter (i82557B)(0x2560)"}, {0x1259, 0x2801, 0xFFFF, 0xFFFF, "AT-2801FX (RTL-8139)(0x2801)"}, @@ -18486,11 +18567,11 @@ pci_id_t pci_vid_1259[] = { {0x1259, 0xA120, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0xA120)"}, }; /* pci_vid_1259[] */ -pci_id_t pci_vid_125A[] = { +static pci_id_t const pci_vid_125A[] = { {0x125A, 0xFFFF, 0xFFFF, 0xFFFF, "ABB Power Systems(0x125A)"}, }; /* pci_vid_125A[] */ -pci_id_t pci_vid_125B[] = { +static pci_id_t const pci_vid_125B[] = { {0x125B, 0xFFFF, 0xFFFF, 0xFFFF, "Asix Electronics Corporation(0x125B)"}, {0x125B, 0x1400, 0xFFFF, 0xFFFF, "AX88141 Fast Ethernet Controller(0x1400)"}, {0x125B, 0x1400, 0x1186, 0x1100, "AX8814X Based PCI Fast Ethernet Adapter(0x1186-0x1100)"}, @@ -18502,13 +18583,13 @@ pci_id_t pci_vid_125B[] = { {0x125B, 0x9100, 0xEA50, 0x1C10, "RXi2-BP(0xEA50-0x1C10)"}, }; /* pci_vid_125B[] */ -pci_id_t pci_vid_125C[] = { +static pci_id_t const pci_vid_125C[] = { {0x125C, 0xFFFF, 0xFFFF, 0xFFFF, "Aurora Technologies, Inc.(0x125C)"}, {0x125C, 0x0101, 0xFFFF, 0xFFFF, "Saturn 4520P(0x0101)"}, {0x125C, 0x0640, 0xFFFF, 0xFFFF, "Aries 16000P(0x0640)"}, }; /* pci_vid_125C[] */ -pci_id_t pci_vid_125D[] = { +static pci_id_t const pci_vid_125D[] = { {0x125D, 0xFFFF, 0xFFFF, 0xFFFF, "ESS Technology(0x125D)"}, {0x125D, 0x0000, 0xFFFF, 0xFFFF, "ES336H Fax Modem (Early Model)(0x0000)"}, {0x125D, 0x1948, 0xFFFF, 0xFFFF, "ES1948 Maestro-1(0x1948)"}, @@ -18557,18 +18638,18 @@ pci_id_t pci_vid_125D[] = { {0x125D, 0x2898, 0x14FE, 0x0429, "ES56-PI Data Fax Modem(0x14FE-0x0429)"}, }; /* pci_vid_125D[] */ -pci_id_t pci_vid_125E[] = { +static pci_id_t const pci_vid_125E[] = { {0x125E, 0xFFFF, 0xFFFF, 0xFFFF, "Specialvideo Engineering SRL(0x125E)"}, }; /* pci_vid_125E[] */ -pci_id_t pci_vid_125F[] = { +static pci_id_t const pci_vid_125F[] = { {0x125F, 0xFFFF, 0xFFFF, 0xFFFF, "Concurrent Technologies, Inc.(0x125F)"}, {0x125F, 0x2071, 0xFFFF, 0xFFFF, "CC PMC/232(0x2071)"}, {0x125F, 0x2084, 0xFFFF, 0xFFFF, "CC PMC/23P(0x2084)"}, {0x125F, 0x2091, 0xFFFF, 0xFFFF, "CC PMC/422(0x2091)"}, }; /* pci_vid_125F[] */ -pci_id_t pci_vid_1260[] = { +static pci_id_t const pci_vid_1260[] = { {0x1260, 0xFFFF, 0xFFFF, 0xFFFF, "Intersil Corporation(0x1260)"}, {0x1260, 0x3872, 0xFFFF, 0xFFFF, "ISL3872 [Prism 3](0x3872)"}, {0x1260, 0x3872, 0x1468, 0x0202, "LAN-Express IEEE 802.11b Wireless LAN(0x1468-0x0202)"}, @@ -18609,71 +18690,71 @@ pci_id_t pci_vid_1260[] = { {0x1260, 0xFFFF, 0x1260, 0x0000, "Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter(0x1260-0x0000)"}, }; /* pci_vid_1260[] */ -pci_id_t pci_vid_1261[] = { +static pci_id_t const pci_vid_1261[] = { {0x1261, 0xFFFF, 0xFFFF, 0xFFFF, "Matsushita-Kotobuki Electronics Industries, Ltd.(0x1261)"}, }; /* pci_vid_1261[] */ -pci_id_t pci_vid_1262[] = { +static pci_id_t const pci_vid_1262[] = { {0x1262, 0xFFFF, 0xFFFF, 0xFFFF, "ES Computer Company, Ltd.(0x1262)"}, }; /* pci_vid_1262[] */ -pci_id_t pci_vid_1263[] = { +static pci_id_t const pci_vid_1263[] = { {0x1263, 0xFFFF, 0xFFFF, 0xFFFF, "Sonic Solutions(0x1263)"}, }; /* pci_vid_1263[] */ -pci_id_t pci_vid_1264[] = { +static pci_id_t const pci_vid_1264[] = { {0x1264, 0xFFFF, 0xFFFF, 0xFFFF, "Aval Nagasaki Corporation(0x1264)"}, }; /* pci_vid_1264[] */ -pci_id_t pci_vid_1265[] = { +static pci_id_t const pci_vid_1265[] = { {0x1265, 0xFFFF, 0xFFFF, 0xFFFF, "Casio Computer Co., Ltd.(0x1265)"}, }; /* pci_vid_1265[] */ -pci_id_t pci_vid_1266[] = { +static pci_id_t const pci_vid_1266[] = { {0x1266, 0xFFFF, 0xFFFF, 0xFFFF, "Microdyne Corporation(0x1266)"}, {0x1266, 0x0001, 0xFFFF, 0xFFFF, "NE10/100 Adapter (i82557B)(0x0001)"}, {0x1266, 0x1910, 0xFFFF, 0xFFFF, "NE2000Plus (RT8029) Ethernet Adapter(0x1910)"}, {0x1266, 0x1910, 0x1266, 0x1910, "NE2000Plus Ethernet Adapter(0x1266-0x1910)"}, }; /* pci_vid_1266[] */ -pci_id_t pci_vid_1267[] = { +static pci_id_t const pci_vid_1267[] = { {0x1267, 0xFFFF, 0xFFFF, 0xFFFF, "S. A. Telecommunications(0x1267)"}, {0x1267, 0x5352, 0xFFFF, 0xFFFF, "PCR2101(0x5352)"}, {0x1267, 0x5A4B, 0xFFFF, 0xFFFF, "Telsat Turbo(0x5A4B)"}, }; /* pci_vid_1267[] */ -pci_id_t pci_vid_1268[] = { +static pci_id_t const pci_vid_1268[] = { {0x1268, 0xFFFF, 0xFFFF, 0xFFFF, "Tektronix(0x1268)"}, }; /* pci_vid_1268[] */ -pci_id_t pci_vid_1269[] = { +static pci_id_t const pci_vid_1269[] = { {0x1269, 0xFFFF, 0xFFFF, 0xFFFF, "Thales(0x1269)"}, {0x1269, 0x00B3, 0xFFFF, 0xFFFF, "5G Data Card [Cinterion MV31-W](0x00B3)"}, }; /* pci_vid_1269[] */ -pci_id_t pci_vid_126A[] = { +static pci_id_t const pci_vid_126A[] = { {0x126A, 0xFFFF, 0xFFFF, 0xFFFF, "Lexmark International, Inc.(0x126A)"}, }; /* pci_vid_126A[] */ -pci_id_t pci_vid_126B[] = { +static pci_id_t const pci_vid_126B[] = { {0x126B, 0xFFFF, 0xFFFF, 0xFFFF, "Adax, Inc.(0x126B)"}, }; /* pci_vid_126B[] */ -pci_id_t pci_vid_126C[] = { +static pci_id_t const pci_vid_126C[] = { {0x126C, 0xFFFF, 0xFFFF, 0xFFFF, "Northern Telecom(0x126C)"}, {0x126C, 0x1211, 0xFFFF, 0xFFFF, "10/100BaseTX [RTL81xx](0x1211)"}, {0x126C, 0x126C, 0xFFFF, 0xFFFF, "802.11b Wireless Ethernet Adapter(0x126C)"}, }; /* pci_vid_126C[] */ -pci_id_t pci_vid_126D[] = { +static pci_id_t const pci_vid_126D[] = { {0x126D, 0xFFFF, 0xFFFF, 0xFFFF, "Splash Technology, Inc.(0x126D)"}, }; /* pci_vid_126D[] */ -pci_id_t pci_vid_126E[] = { +static pci_id_t const pci_vid_126E[] = { {0x126E, 0xFFFF, 0xFFFF, 0xFFFF, "Sumitomo Metal Industries, Ltd.(0x126E)"}, }; /* pci_vid_126E[] */ -pci_id_t pci_vid_126F[] = { +static pci_id_t const pci_vid_126F[] = { {0x126F, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Motion, Inc.(0x126F)"}, {0x126F, 0x0501, 0xFFFF, 0xFFFF, "SM501 VoyagerGX Rev. AA(0x0501)"}, {0x126F, 0x0510, 0xFFFF, 0xFFFF, "SM501 VoyagerGX Rev. B(0x0510)"}, @@ -18695,24 +18776,24 @@ pci_id_t pci_vid_126F[] = { {0x126F, 0x8366, 0xFFFF, 0xFFFF, "SM8366 NVMe SSD Controller [MonTitan](0x8366)"}, }; /* pci_vid_126F[] */ -pci_id_t pci_vid_1270[] = { +static pci_id_t const pci_vid_1270[] = { {0x1270, 0xFFFF, 0xFFFF, 0xFFFF, "Olympus Optical Co., Ltd.(0x1270)"}, }; /* pci_vid_1270[] */ -pci_id_t pci_vid_1271[] = { +static pci_id_t const pci_vid_1271[] = { {0x1271, 0xFFFF, 0xFFFF, 0xFFFF, "GW Instruments(0x1271)"}, }; /* pci_vid_1271[] */ -pci_id_t pci_vid_1272[] = { +static pci_id_t const pci_vid_1272[] = { {0x1272, 0xFFFF, 0xFFFF, 0xFFFF, "Telematics International(0x1272)"}, }; /* pci_vid_1272[] */ -pci_id_t pci_vid_1273[] = { +static pci_id_t const pci_vid_1273[] = { {0x1273, 0xFFFF, 0xFFFF, 0xFFFF, "Hughes Network Systems(0x1273)"}, {0x1273, 0x0002, 0xFFFF, 0xFFFF, "DirecPC(0x0002)"}, }; /* pci_vid_1273[] */ -pci_id_t pci_vid_1274[] = { +static pci_id_t const pci_vid_1274[] = { {0x1274, 0xFFFF, 0xFFFF, 0xFFFF, "Ensoniq(0x1274)"}, {0x1274, 0x1171, 0xFFFF, 0xFFFF, "ES1373 / Creative Labs CT5803 [AudioPCI](0x1171)"}, {0x1274, 0x1371, 0xFFFF, 0xFFFF, "ES1371/ES1373 / Creative Labs CT2518(0x1371)"}, @@ -18776,7 +18857,7 @@ pci_id_t pci_vid_1274[] = { {0x1274, 0x5880, 0x1274, 0x2000, "Creative CT4810 [Sound Blaster AudioPCI 128](0x1274-0x2000)"}, {0x1274, 0x5880, 0x1274, 0x2003, "Creative SoundBlaster AudioPCI 128(0x1274-0x2003)"}, {0x1274, 0x5880, 0x1274, 0x5880, "Creative CT4750 [Sound Blaster PCI 128](0x1274-0x5880)"}, -{0x1274, 0x5880, 0x1274, 0x8001, "Sound Blaster 16PCI 4.1ch(0x1274-0x8001)"}, +{0x1274, 0x5880, 0x1274, 0x8001, "Creative CT4750 [Sound Blaster 16 PCI/PCI 128/4.1 Digital](0x1274-0x8001)"}, {0x1274, 0x5880, 0x1458, 0xA000, "5880 AudioPCI On Motherboard 6OXET(0x1458-0xA000)"}, {0x1274, 0x5880, 0x1462, 0x6880, "5880 AudioPCI On Motherboard MS-6188 1.00(0x1462-0x6880)"}, {0x1274, 0x5880, 0x270F, 0x2001, "5880 AudioPCI On Motherboard 6CTR(0x270F-0x2001)"}, @@ -18786,19 +18867,19 @@ pci_id_t pci_vid_1274[] = { {0x1274, 0x8002, 0xFFFF, 0xFFFF, "5880A [AudioPCI](0x8002)"}, }; /* pci_vid_1274[] */ -pci_id_t pci_vid_1275[] = { +static pci_id_t const pci_vid_1275[] = { {0x1275, 0xFFFF, 0xFFFF, 0xFFFF, "Network Appliance Corporation(0x1275)"}, }; /* pci_vid_1275[] */ -pci_id_t pci_vid_1276[] = { +static pci_id_t const pci_vid_1276[] = { {0x1276, 0xFFFF, 0xFFFF, 0xFFFF, "Switched Network Technologies, Inc.(0x1276)"}, }; /* pci_vid_1276[] */ -pci_id_t pci_vid_1277[] = { +static pci_id_t const pci_vid_1277[] = { {0x1277, 0xFFFF, 0xFFFF, 0xFFFF, "Comstream(0x1277)"}, }; /* pci_vid_1277[] */ -pci_id_t pci_vid_1278[] = { +static pci_id_t const pci_vid_1278[] = { {0x1278, 0xFFFF, 0xFFFF, 0xFFFF, "Transtech Parallel Systems Ltd.(0x1278)"}, {0x1278, 0x0701, 0xFFFF, 0xFFFF, "TPE3/TM3 PowerPC Node(0x0701)"}, {0x1278, 0x0710, 0xFFFF, 0xFFFF, "TPE5 PowerPC PCI board(0x0710)"}, @@ -18806,7 +18887,7 @@ pci_id_t pci_vid_1278[] = { {0x1278, 0x1101, 0xFFFF, 0xFFFF, "TS-C43 card with 4 ADSP-TS101 processors(0x1101)"}, }; /* pci_vid_1278[] */ -pci_id_t pci_vid_1279[] = { +static pci_id_t const pci_vid_1279[] = { {0x1279, 0xFFFF, 0xFFFF, 0xFFFF, "Transmeta Corporation(0x1279)"}, {0x1279, 0x0060, 0xFFFF, 0xFFFF, "TM8000 Northbridge(0x0060)"}, {0x1279, 0x0061, 0xFFFF, 0xFFFF, "TM8000 AGP bridge(0x0061)"}, @@ -18816,7 +18897,7 @@ pci_id_t pci_vid_1279[] = { {0x1279, 0x0397, 0xFFFF, 0xFFFF, "BIOS scratchpad(0x0397)"}, }; /* pci_vid_1279[] */ -pci_id_t pci_vid_127A[] = { +static pci_id_t const pci_vid_127A[] = { {0x127A, 0xFFFF, 0xFFFF, 0xFFFF, "Rockwell International(0x127A)"}, {0x127A, 0x1002, 0xFFFF, 0xFFFF, "HCF 56k Data/Fax Modem(0x1002)"}, {0x127A, 0x1002, 0x1092, 0x094C, "SupraExpress 56i PRO [Diamond SUP2380](0x1092-0x094C)"}, @@ -18935,36 +19016,36 @@ pci_id_t pci_vid_127A[] = { {0x127A, 0x8234, 0x108D, 0x0027, "RapidFire 616X ATM155 Adapter(0x108D-0x0027)"}, }; /* pci_vid_127A[] */ -pci_id_t pci_vid_127B[] = { +static pci_id_t const pci_vid_127B[] = { {0x127B, 0xFFFF, 0xFFFF, 0xFFFF, "Pixera Corporation(0x127B)"}, }; /* pci_vid_127B[] */ -pci_id_t pci_vid_127C[] = { +static pci_id_t const pci_vid_127C[] = { {0x127C, 0xFFFF, 0xFFFF, 0xFFFF, "Crosspoint Solutions, Inc.(0x127C)"}, }; /* pci_vid_127C[] */ -pci_id_t pci_vid_127D[] = { +static pci_id_t const pci_vid_127D[] = { {0x127D, 0xFFFF, 0xFFFF, 0xFFFF, "Vela Research(0x127D)"}, }; /* pci_vid_127D[] */ -pci_id_t pci_vid_127E[] = { +static pci_id_t const pci_vid_127E[] = { {0x127E, 0xFFFF, 0xFFFF, 0xFFFF, "Winnov, L.P.(0x127E)"}, {0x127E, 0x0010, 0xFFFF, 0xFFFF, "Videum 1000 Plus(0x0010)"}, }; /* pci_vid_127E[] */ -pci_id_t pci_vid_127F[] = { +static pci_id_t const pci_vid_127F[] = { {0x127F, 0xFFFF, 0xFFFF, 0xFFFF, "Fujifilm(0x127F)"}, }; /* pci_vid_127F[] */ -pci_id_t pci_vid_1280[] = { +static pci_id_t const pci_vid_1280[] = { {0x1280, 0xFFFF, 0xFFFF, 0xFFFF, "Photoscript Group Ltd.(0x1280)"}, }; /* pci_vid_1280[] */ -pci_id_t pci_vid_1281[] = { +static pci_id_t const pci_vid_1281[] = { {0x1281, 0xFFFF, 0xFFFF, 0xFFFF, "Yokogawa Electric Corporation(0x1281)"}, }; /* pci_vid_1281[] */ -pci_id_t pci_vid_1282[] = { +static pci_id_t const pci_vid_1282[] = { {0x1282, 0xFFFF, 0xFFFF, 0xFFFF, "Davicom Semiconductor, Inc.(0x1282)"}, {0x1282, 0x6585, 0xFFFF, 0xFFFF, "DM562P V90 Modem(0x6585)"}, {0x1282, 0x9009, 0xFFFF, 0xFFFF, "DM9009 Ethernet Controller(0x9009)"}, @@ -18974,7 +19055,7 @@ pci_id_t pci_vid_1282[] = { {0x1282, 0x9132, 0xFFFF, 0xFFFF, "Ethernet 100/10 MBit(0x9132)"}, }; /* pci_vid_1282[] */ -pci_id_t pci_vid_1283[] = { +static pci_id_t const pci_vid_1283[] = { {0x1283, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Technology Express, Inc.(0x1283)"}, {0x1283, 0x673A, 0xFFFF, 0xFFFF, "IT8330G(0x673A)"}, {0x1283, 0x8152, 0xFFFF, 0xFFFF, "IT8152F/G Advanced RISC-to-PCI Companion Chip(0x8152)"}, @@ -18994,51 +19075,51 @@ pci_id_t pci_vid_1283[] = { {0x1283, 0xE886, 0xFFFF, 0xFFFF, "IT8330G(0xE886)"}, }; /* pci_vid_1283[] */ -pci_id_t pci_vid_1284[] = { +static pci_id_t const pci_vid_1284[] = { {0x1284, 0xFFFF, 0xFFFF, 0xFFFF, "Sahara Networks, Inc.(0x1284)"}, }; /* pci_vid_1284[] */ -pci_id_t pci_vid_1285[] = { +static pci_id_t const pci_vid_1285[] = { {0x1285, 0xFFFF, 0xFFFF, 0xFFFF, "Platform Technologies, Inc.(0x1285)"}, {0x1285, 0x0100, 0xFFFF, 0xFFFF, "AGOGO sound chip (aka ESS Maestro 1)(0x0100)"}, }; /* pci_vid_1285[] */ -pci_id_t pci_vid_1286[] = { +static pci_id_t const pci_vid_1286[] = { {0x1286, 0xFFFF, 0xFFFF, 0xFFFF, "Mazet GmbH(0x1286)"}, }; /* pci_vid_1286[] */ -pci_id_t pci_vid_1287[] = { +static pci_id_t const pci_vid_1287[] = { {0x1287, 0xFFFF, 0xFFFF, 0xFFFF, "M-Pact, Inc.(0x1287)"}, {0x1287, 0x001E, 0xFFFF, 0xFFFF, "LS220D DVD Decoder(0x001E)"}, {0x1287, 0x001F, 0xFFFF, 0xFFFF, "LS220C DVD Decoder(0x001F)"}, }; /* pci_vid_1287[] */ -pci_id_t pci_vid_1288[] = { +static pci_id_t const pci_vid_1288[] = { {0x1288, 0xFFFF, 0xFFFF, 0xFFFF, "Timestep Corporation(0x1288)"}, }; /* pci_vid_1288[] */ -pci_id_t pci_vid_1289[] = { +static pci_id_t const pci_vid_1289[] = { {0x1289, 0xFFFF, 0xFFFF, 0xFFFF, "AVC Technology, Inc.(0x1289)"}, }; /* pci_vid_1289[] */ -pci_id_t pci_vid_128A[] = { +static pci_id_t const pci_vid_128A[] = { {0x128A, 0xFFFF, 0xFFFF, 0xFFFF, "Asante Technologies, Inc.(0x128A)"}, }; /* pci_vid_128A[] */ -pci_id_t pci_vid_128B[] = { +static pci_id_t const pci_vid_128B[] = { {0x128B, 0xFFFF, 0xFFFF, 0xFFFF, "Transwitch Corporation(0x128B)"}, }; /* pci_vid_128B[] */ -pci_id_t pci_vid_128C[] = { +static pci_id_t const pci_vid_128C[] = { {0x128C, 0xFFFF, 0xFFFF, 0xFFFF, "Retix Corporation(0x128C)"}, }; /* pci_vid_128C[] */ -pci_id_t pci_vid_128D[] = { +static pci_id_t const pci_vid_128D[] = { {0x128D, 0xFFFF, 0xFFFF, 0xFFFF, "G2 Networks, Inc.(0x128D)"}, {0x128D, 0x0021, 0xFFFF, 0xFFFF, "ATM155 Adapter(0x0021)"}, }; /* pci_vid_128D[] */ -pci_id_t pci_vid_128E[] = { +static pci_id_t const pci_vid_128E[] = { {0x128E, 0xFFFF, 0xFFFF, 0xFFFF, "Hoontech Corporation/Samho Multi Tech Ltd.(0x128E)"}, {0x128E, 0x0008, 0xFFFF, 0xFFFF, "ST128 WSS/SB(0x0008)"}, {0x128E, 0x0009, 0xFFFF, 0xFFFF, "ST128 SAM9407(0x0009)"}, @@ -19047,54 +19128,55 @@ pci_id_t pci_vid_128E[] = { {0x128E, 0x000C, 0xFFFF, 0xFFFF, "ST128 Ctrl Port(0x000C)"}, }; /* pci_vid_128E[] */ -pci_id_t pci_vid_128F[] = { +static pci_id_t const pci_vid_128F[] = { {0x128F, 0xFFFF, 0xFFFF, 0xFFFF, "Tateno Dennou, Inc.(0x128F)"}, }; /* pci_vid_128F[] */ -pci_id_t pci_vid_1290[] = { +static pci_id_t const pci_vid_1290[] = { {0x1290, 0xFFFF, 0xFFFF, 0xFFFF, "Sord Computer Corporation(0x1290)"}, }; /* pci_vid_1290[] */ -pci_id_t pci_vid_1291[] = { +static pci_id_t const pci_vid_1291[] = { {0x1291, 0xFFFF, 0xFFFF, 0xFFFF, "NCS Computer Italia(0x1291)"}, }; /* pci_vid_1291[] */ -pci_id_t pci_vid_1292[] = { +static pci_id_t const pci_vid_1292[] = { {0x1292, 0xFFFF, 0xFFFF, 0xFFFF, "Tritech Microelectronics Inc(0x1292)"}, {0x1292, 0xFC02, 0xFFFF, 0xFFFF, "Pyramid3D TR25202(0xFC02)"}, }; /* pci_vid_1292[] */ -pci_id_t pci_vid_1293[] = { +static pci_id_t const pci_vid_1293[] = { {0x1293, 0xFFFF, 0xFFFF, 0xFFFF, "Media Reality Technology(0x1293)"}, }; /* pci_vid_1293[] */ -pci_id_t pci_vid_1294[] = { +static pci_id_t const pci_vid_1294[] = { {0x1294, 0xFFFF, 0xFFFF, 0xFFFF, "Rhetorex, Inc.(0x1294)"}, }; /* pci_vid_1294[] */ -pci_id_t pci_vid_1295[] = { +static pci_id_t const pci_vid_1295[] = { {0x1295, 0xFFFF, 0xFFFF, 0xFFFF, "Imagenation Corporation(0x1295)"}, {0x1295, 0x0800, 0xFFFF, 0xFFFF, "PXR800(0x0800)"}, {0x1295, 0x1000, 0xFFFF, 0xFFFF, "PXD1000(0x1000)"}, }; /* pci_vid_1295[] */ -pci_id_t pci_vid_1296[] = { +static pci_id_t const pci_vid_1296[] = { {0x1296, 0xFFFF, 0xFFFF, 0xFFFF, "Kofax Image Products(0x1296)"}, }; /* pci_vid_1296[] */ -pci_id_t pci_vid_1297[] = { +static pci_id_t const pci_vid_1297[] = { {0x1297, 0xFFFF, 0xFFFF, 0xFFFF, "Holco Enterprise Co, Ltd/Shuttle Computer(0x1297)"}, +{0x1297, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1297[] */ -pci_id_t pci_vid_1298[] = { +static pci_id_t const pci_vid_1298[] = { {0x1298, 0xFFFF, 0xFFFF, 0xFFFF, "Spellcaster Telecommunications Inc.(0x1298)"}, }; /* pci_vid_1298[] */ -pci_id_t pci_vid_1299[] = { +static pci_id_t const pci_vid_1299[] = { {0x1299, 0xFFFF, 0xFFFF, 0xFFFF, "Knowledge Technology Lab.(0x1299)"}, }; /* pci_vid_1299[] */ -pci_id_t pci_vid_129A[] = { +static pci_id_t const pci_vid_129A[] = { {0x129A, 0xFFFF, 0xFFFF, 0xFFFF, "VMetro, inc.(0x129A)"}, {0x129A, 0x0615, 0xFFFF, 0xFFFF, "PBT-615 PCI-X Bus Analyzer(0x0615)"}, {0x129A, 0x0715, 0xFFFF, 0xFFFF, "cPCI Bus Analyzer(0x0715)"}, @@ -19105,72 +19187,72 @@ pci_id_t pci_vid_129A[] = { {0x129A, 0x1109, 0xFFFF, 0xFFFF, "XMC-FPGA05D, PCIe interface(0x1109)"}, }; /* pci_vid_129A[] */ -pci_id_t pci_vid_129B[] = { +static pci_id_t const pci_vid_129B[] = { {0x129B, 0xFFFF, 0xFFFF, 0xFFFF, "Image Access(0x129B)"}, }; /* pci_vid_129B[] */ -pci_id_t pci_vid_129C[] = { +static pci_id_t const pci_vid_129C[] = { {0x129C, 0xFFFF, 0xFFFF, 0xFFFF, "Jaycor(0x129C)"}, }; /* pci_vid_129C[] */ -pci_id_t pci_vid_129D[] = { +static pci_id_t const pci_vid_129D[] = { {0x129D, 0xFFFF, 0xFFFF, 0xFFFF, "Compcore Multimedia, Inc.(0x129D)"}, }; /* pci_vid_129D[] */ -pci_id_t pci_vid_129E[] = { +static pci_id_t const pci_vid_129E[] = { {0x129E, 0xFFFF, 0xFFFF, 0xFFFF, "Victor Company of Japan, Ltd.(0x129E)"}, }; /* pci_vid_129E[] */ -pci_id_t pci_vid_129F[] = { +static pci_id_t const pci_vid_129F[] = { {0x129F, 0xFFFF, 0xFFFF, 0xFFFF, "OEC Medical Systems, Inc.(0x129F)"}, }; /* pci_vid_129F[] */ -pci_id_t pci_vid_12A0[] = { +static pci_id_t const pci_vid_12A0[] = { {0x12A0, 0xFFFF, 0xFFFF, 0xFFFF, "Allen-Bradley Company(0x12A0)"}, }; /* pci_vid_12A0[] */ -pci_id_t pci_vid_12A1[] = { +static pci_id_t const pci_vid_12A1[] = { {0x12A1, 0xFFFF, 0xFFFF, 0xFFFF, "Simpact Associates, Inc.(0x12A1)"}, }; /* pci_vid_12A1[] */ -pci_id_t pci_vid_12A2[] = { +static pci_id_t const pci_vid_12A2[] = { {0x12A2, 0xFFFF, 0xFFFF, 0xFFFF, "Newgen Systems Corporation(0x12A2)"}, }; /* pci_vid_12A2[] */ -pci_id_t pci_vid_12A3[] = { +static pci_id_t const pci_vid_12A3[] = { {0x12A3, 0xFFFF, 0xFFFF, 0xFFFF, "Lucent Technologies(0x12A3)"}, {0x12A3, 0x8105, 0xFFFF, 0xFFFF, "T8105 H100 Digital Switch(0x8105)"}, }; /* pci_vid_12A3[] */ -pci_id_t pci_vid_12A4[] = { +static pci_id_t const pci_vid_12A4[] = { {0x12A4, 0xFFFF, 0xFFFF, 0xFFFF, "NTT Innovative Devices Corporation(0x12A4)"}, }; /* pci_vid_12A4[] */ -pci_id_t pci_vid_12A5[] = { +static pci_id_t const pci_vid_12A5[] = { {0x12A5, 0xFFFF, 0xFFFF, 0xFFFF, "Vision Dynamics Ltd.(0x12A5)"}, }; /* pci_vid_12A5[] */ -pci_id_t pci_vid_12A6[] = { +static pci_id_t const pci_vid_12A6[] = { {0x12A6, 0xFFFF, 0xFFFF, 0xFFFF, "Scalable Networks, Inc.(0x12A6)"}, }; /* pci_vid_12A6[] */ -pci_id_t pci_vid_12A7[] = { +static pci_id_t const pci_vid_12A7[] = { {0x12A7, 0xFFFF, 0xFFFF, 0xFFFF, "AMO GmbH(0x12A7)"}, }; /* pci_vid_12A7[] */ -pci_id_t pci_vid_12A8[] = { +static pci_id_t const pci_vid_12A8[] = { {0x12A8, 0xFFFF, 0xFFFF, 0xFFFF, "News Datacom(0x12A8)"}, }; /* pci_vid_12A8[] */ -pci_id_t pci_vid_12A9[] = { +static pci_id_t const pci_vid_12A9[] = { {0x12A9, 0xFFFF, 0xFFFF, 0xFFFF, "Xiotech Corporation(0x12A9)"}, }; /* pci_vid_12A9[] */ -pci_id_t pci_vid_12AA[] = { +static pci_id_t const pci_vid_12AA[] = { {0x12AA, 0xFFFF, 0xFFFF, 0xFFFF, "SDL Communications, Inc.(0x12AA)"}, }; /* pci_vid_12AA[] */ -pci_id_t pci_vid_12AB[] = { +static pci_id_t const pci_vid_12AB[] = { {0x12AB, 0xFFFF, 0xFFFF, 0xFFFF, "YUAN High-Tech Development Co., Ltd.(0x12AB)"}, {0x12AB, 0x0000, 0xFFFF, 0xFFFF, "MPG160/Kuroutoshikou ITVC15-STVLP(0x0000)"}, {0x12AB, 0x0002, 0xFFFF, 0xFFFF, "AU8830 [Vortex2] Based Sound Card With A3D Support(0x0002)"}, @@ -19182,15 +19264,15 @@ pci_id_t pci_vid_12AB[] = { {0x12AB, 0xFFFF, 0xFFFF, 0xFFFF, "MPG600/Kuroutoshikou ITVC16-STVLP(0xFFFF)"}, }; /* pci_vid_12AB[] */ -pci_id_t pci_vid_12AC[] = { +static pci_id_t const pci_vid_12AC[] = { {0x12AC, 0xFFFF, 0xFFFF, 0xFFFF, "Measurex Corporation(0x12AC)"}, }; /* pci_vid_12AC[] */ -pci_id_t pci_vid_12AD[] = { +static pci_id_t const pci_vid_12AD[] = { {0x12AD, 0xFFFF, 0xFFFF, 0xFFFF, "Multidata GmbH(0x12AD)"}, }; /* pci_vid_12AD[] */ -pci_id_t pci_vid_12AE[] = { +static pci_id_t const pci_vid_12AE[] = { {0x12AE, 0xFFFF, 0xFFFF, 0xFFFF, "Alteon Networks Inc.(0x12AE)"}, {0x12AE, 0x0001, 0xFFFF, 0xFFFF, "AceNIC Gigabit Ethernet(0x0001)"}, {0x12AE, 0x0001, 0x1014, 0x0104, "Gigabit Ethernet-SX PCI Adapter(0x1014-0x0104)"}, @@ -19201,47 +19283,47 @@ pci_id_t pci_vid_12AE[] = { {0x12AE, 0x00FA, 0xFFFF, 0xFFFF, "Farallon PN9100-T Gigabit Ethernet(0x00FA)"}, }; /* pci_vid_12AE[] */ -pci_id_t pci_vid_12AF[] = { +static pci_id_t const pci_vid_12AF[] = { {0x12AF, 0xFFFF, 0xFFFF, 0xFFFF, "TDK USA Corp(0x12AF)"}, }; /* pci_vid_12AF[] */ -pci_id_t pci_vid_12B0[] = { +static pci_id_t const pci_vid_12B0[] = { {0x12B0, 0xFFFF, 0xFFFF, 0xFFFF, "Jorge Scientific Corp(0x12B0)"}, }; /* pci_vid_12B0[] */ -pci_id_t pci_vid_12B1[] = { +static pci_id_t const pci_vid_12B1[] = { {0x12B1, 0xFFFF, 0xFFFF, 0xFFFF, "GammaLink(0x12B1)"}, }; /* pci_vid_12B1[] */ -pci_id_t pci_vid_12B2[] = { +static pci_id_t const pci_vid_12B2[] = { {0x12B2, 0xFFFF, 0xFFFF, 0xFFFF, "General Signal Networks(0x12B2)"}, }; /* pci_vid_12B2[] */ -pci_id_t pci_vid_12B3[] = { +static pci_id_t const pci_vid_12B3[] = { {0x12B3, 0xFFFF, 0xFFFF, 0xFFFF, "Inter-Face Co Ltd(0x12B3)"}, }; /* pci_vid_12B3[] */ -pci_id_t pci_vid_12B4[] = { +static pci_id_t const pci_vid_12B4[] = { {0x12B4, 0xFFFF, 0xFFFF, 0xFFFF, "FutureTel Inc(0x12B4)"}, }; /* pci_vid_12B4[] */ -pci_id_t pci_vid_12B5[] = { +static pci_id_t const pci_vid_12B5[] = { {0x12B5, 0xFFFF, 0xFFFF, 0xFFFF, "Granite Systems Inc.(0x12B5)"}, }; /* pci_vid_12B5[] */ -pci_id_t pci_vid_12B6[] = { +static pci_id_t const pci_vid_12B6[] = { {0x12B6, 0xFFFF, 0xFFFF, 0xFFFF, "Natural Microsystems(0x12B6)"}, }; /* pci_vid_12B6[] */ -pci_id_t pci_vid_12B7[] = { +static pci_id_t const pci_vid_12B7[] = { {0x12B7, 0xFFFF, 0xFFFF, 0xFFFF, "Cognex Corporation(0x12B7)"}, }; /* pci_vid_12B7[] */ -pci_id_t pci_vid_12B8[] = { +static pci_id_t const pci_vid_12B8[] = { {0x12B8, 0xFFFF, 0xFFFF, 0xFFFF, "Korg(0x12B8)"}, }; /* pci_vid_12B8[] */ -pci_id_t pci_vid_12B9[] = { +static pci_id_t const pci_vid_12B9[] = { {0x12B9, 0xFFFF, 0xFFFF, 0xFFFF, "3Com Corp, Modem Division(0x12B9)"}, {0x12B9, 0x1006, 0xFFFF, 0xFFFF, "WinModem(0x1006)"}, {0x12B9, 0x1006, 0x12B9, 0x005C, "USR 56k Internal Voice WinModem (Model 3472)(0x12B9-0x005C)"}, @@ -19266,52 +19348,52 @@ pci_id_t pci_vid_12B9[] = { {0x12B9, 0x1008, 0x12B9, 0xBABA, "USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk](0x12B9-0xBABA)"}, }; /* pci_vid_12B9[] */ -pci_id_t pci_vid_12BA[] = { +static pci_id_t const pci_vid_12BA[] = { {0x12BA, 0xFFFF, 0xFFFF, 0xFFFF, "BittWare, Inc.(0x12BA)"}, }; /* pci_vid_12BA[] */ -pci_id_t pci_vid_12BB[] = { +static pci_id_t const pci_vid_12BB[] = { {0x12BB, 0xFFFF, 0xFFFF, 0xFFFF, "Nippon Unisoft Corporation(0x12BB)"}, }; /* pci_vid_12BB[] */ -pci_id_t pci_vid_12BC[] = { +static pci_id_t const pci_vid_12BC[] = { {0x12BC, 0xFFFF, 0xFFFF, 0xFFFF, "Array Microsystems(0x12BC)"}, }; /* pci_vid_12BC[] */ -pci_id_t pci_vid_12BD[] = { +static pci_id_t const pci_vid_12BD[] = { {0x12BD, 0xFFFF, 0xFFFF, 0xFFFF, "Computerm Corp.(0x12BD)"}, }; /* pci_vid_12BD[] */ -pci_id_t pci_vid_12BE[] = { +static pci_id_t const pci_vid_12BE[] = { {0x12BE, 0xFFFF, 0xFFFF, 0xFFFF, "Anchor Chips Inc.(0x12BE)"}, {0x12BE, 0x3041, 0xFFFF, 0xFFFF, "AN3041Q CO-MEM(0x3041)"}, {0x12BE, 0x3042, 0xFFFF, 0xFFFF, "AN3042Q CO-MEM Lite(0x3042)"}, {0x12BE, 0x3042, 0x12BE, 0x3042, "Anchor Chips Lite Evaluation Board(0x12BE-0x3042)"}, }; /* pci_vid_12BE[] */ -pci_id_t pci_vid_12BF[] = { +static pci_id_t const pci_vid_12BF[] = { {0x12BF, 0xFFFF, 0xFFFF, 0xFFFF, "Fujifilm Microdevices(0x12BF)"}, }; /* pci_vid_12BF[] */ -pci_id_t pci_vid_12C0[] = { +static pci_id_t const pci_vid_12C0[] = { {0x12C0, 0xFFFF, 0xFFFF, 0xFFFF, "Infimed(0x12C0)"}, }; /* pci_vid_12C0[] */ -pci_id_t pci_vid_12C1[] = { +static pci_id_t const pci_vid_12C1[] = { {0x12C1, 0xFFFF, 0xFFFF, 0xFFFF, "GMM Research Corp(0x12C1)"}, }; /* pci_vid_12C1[] */ -pci_id_t pci_vid_12C2[] = { +static pci_id_t const pci_vid_12C2[] = { {0x12C2, 0xFFFF, 0xFFFF, 0xFFFF, "Mentec Limited(0x12C2)"}, }; /* pci_vid_12C2[] */ -pci_id_t pci_vid_12C3[] = { +static pci_id_t const pci_vid_12C3[] = { {0x12C3, 0xFFFF, 0xFFFF, 0xFFFF, "Holtek Microelectronics Inc(0x12C3)"}, {0x12C3, 0x0058, 0xFFFF, 0xFFFF, "PCI NE2K Ethernet(0x0058)"}, {0x12C3, 0x5598, 0xFFFF, 0xFFFF, "PCI NE2K Ethernet(0x5598)"}, }; /* pci_vid_12C3[] */ -pci_id_t pci_vid_12C4[] = { +static pci_id_t const pci_vid_12C4[] = { {0x12C4, 0xFFFF, 0xFFFF, 0xFFFF, "Connect Tech Inc(0x12C4)"}, {0x12C4, 0x0001, 0xFFFF, 0xFFFF, "Blue HEAT/PCI 8 (RS232/CL/RJ11)(0x0001)"}, {0x12C4, 0x0002, 0xFFFF, 0xFFFF, "Blue HEAT/PCI 4 (RS232)(0x0002)"}, @@ -19343,7 +19425,7 @@ pci_id_t pci_vid_12C4[] = { {0x12C4, 0x0332, 0xFFFF, 0xFFFF, "CTI PCI UART 8 (RS485)(0x0332)"}, }; /* pci_vid_12C4[] */ -pci_id_t pci_vid_12C5[] = { +static pci_id_t const pci_vid_12C5[] = { {0x12C5, 0xFFFF, 0xFFFF, 0xFFFF, "Picture Elements Incorporated(0x12C5)"}, {0x12C5, 0x007E, 0xFFFF, 0xFFFF, "Imaging/Scanning Subsystem Engine(0x007E)"}, {0x12C5, 0x007F, 0xFFFF, 0xFFFF, "Imaging/Scanning Subsystem Engine(0x007F)"}, @@ -19352,11 +19434,11 @@ pci_id_t pci_vid_12C5[] = { {0x12C5, 0x0086, 0xFFFF, 0xFFFF, "THR2 Multi-scale Thresholder(0x0086)"}, }; /* pci_vid_12C5[] */ -pci_id_t pci_vid_12C6[] = { +static pci_id_t const pci_vid_12C6[] = { {0x12C6, 0xFFFF, 0xFFFF, 0xFFFF, "Mitani Corporation(0x12C6)"}, }; /* pci_vid_12C6[] */ -pci_id_t pci_vid_12C7[] = { +static pci_id_t const pci_vid_12C7[] = { {0x12C7, 0xFFFF, 0xFFFF, 0xFFFF, "Dialogic Corp(0x12C7)"}, {0x12C7, 0x0546, 0xFFFF, 0xFFFF, "Springware D/120JCT-LS(0x0546)"}, {0x12C7, 0x0647, 0xFFFF, 0xFFFF, "Springware D/240JCT-T1(0x0647)"}, @@ -19364,54 +19446,55 @@ pci_id_t pci_vid_12C7[] = { {0x12C7, 0x0685, 0xFFFF, 0xFFFF, "Springware D/480JCT-2T1(0x0685)"}, }; /* pci_vid_12C7[] */ -pci_id_t pci_vid_12C8[] = { +static pci_id_t const pci_vid_12C8[] = { {0x12C8, 0xFFFF, 0xFFFF, 0xFFFF, "G Force Co, Ltd(0x12C8)"}, }; /* pci_vid_12C8[] */ -pci_id_t pci_vid_12C9[] = { +static pci_id_t const pci_vid_12C9[] = { {0x12C9, 0xFFFF, 0xFFFF, 0xFFFF, "Gigi Operations(0x12C9)"}, }; /* pci_vid_12C9[] */ -pci_id_t pci_vid_12CA[] = { +static pci_id_t const pci_vid_12CA[] = { {0x12CA, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Computing Engines(0x12CA)"}, }; /* pci_vid_12CA[] */ -pci_id_t pci_vid_12CB[] = { +static pci_id_t const pci_vid_12CB[] = { {0x12CB, 0xFFFF, 0xFFFF, 0xFFFF, "Antex Electronics Corporation(0x12CB)"}, {0x12CB, 0x0027, 0xFFFF, 0xFFFF, "SC4 (StudioCard)(0x0027)"}, {0x12CB, 0x002E, 0xFFFF, 0xFFFF, "StudioCard 2000(0x002E)"}, }; /* pci_vid_12CB[] */ -pci_id_t pci_vid_12CC[] = { +static pci_id_t const pci_vid_12CC[] = { {0x12CC, 0xFFFF, 0xFFFF, 0xFFFF, "Pluto Technologies International(0x12CC)"}, }; /* pci_vid_12CC[] */ -pci_id_t pci_vid_12CD[] = { +static pci_id_t const pci_vid_12CD[] = { {0x12CD, 0xFFFF, 0xFFFF, 0xFFFF, "Aims Lab(0x12CD)"}, }; /* pci_vid_12CD[] */ -pci_id_t pci_vid_12CE[] = { +static pci_id_t const pci_vid_12CE[] = { {0x12CE, 0xFFFF, 0xFFFF, 0xFFFF, "Netspeed Inc.(0x12CE)"}, }; /* pci_vid_12CE[] */ -pci_id_t pci_vid_12CF[] = { +static pci_id_t const pci_vid_12CF[] = { {0x12CF, 0xFFFF, 0xFFFF, 0xFFFF, "Prophet Systems, Inc.(0x12CF)"}, }; /* pci_vid_12CF[] */ -pci_id_t pci_vid_12D0[] = { +static pci_id_t const pci_vid_12D0[] = { {0x12D0, 0xFFFF, 0xFFFF, 0xFFFF, "GDE Systems, Inc.(0x12D0)"}, }; /* pci_vid_12D0[] */ -pci_id_t pci_vid_12D1[] = { +static pci_id_t const pci_vid_12D1[] = { {0x12D1, 0xFFFF, 0xFFFF, 0xFFFF, "PSITech(0x12D1)"}, }; /* pci_vid_12D1[] */ -pci_id_t pci_vid_12D2[] = { +static pci_id_t const pci_vid_12D2[] = { {0x12D2, 0xFFFF, 0xFFFF, 0xFFFF, "NVidia / SGS Thomson (Joint Venture)(0x12D2)"}, {0x12D2, 0x0008, 0xFFFF, 0xFFFF, "NV1(0x0008)"}, {0x12D2, 0x0009, 0xFFFF, 0xFFFF, "DAC64(0x0009)"}, {0x12D2, 0x0018, 0xFFFF, 0xFFFF, "Riva128(0x0018)"}, {0x12D2, 0x0018, 0x1048, 0x0C10, "VICTORY Erazor(0x1048-0x0C10)"}, +{0x12D2, 0x0018, 0x1048, 0x0C15, "VICTORY Erazor LT-8(0x1048-0x0C15)"}, {0x12D2, 0x0018, 0x107B, 0x8030, "STB Velocity 128(0x107B-0x8030)"}, {0x12D2, 0x0018, 0x1092, 0x0350, "Viper V330(0x1092-0x0350)"}, {0x12D2, 0x0018, 0x1092, 0x1092, "Viper V330(0x1092-0x1092)"}, @@ -19437,42 +19520,43 @@ pci_id_t pci_vid_12D2[] = { {0x12D2, 0x00A0, 0xFFFF, 0xFFFF, "ITNT2(0x00A0)"}, }; /* pci_vid_12D2[] */ -pci_id_t pci_vid_12D3[] = { +static pci_id_t const pci_vid_12D3[] = { {0x12D3, 0xFFFF, 0xFFFF, 0xFFFF, "Vingmed Sound A/S(0x12D3)"}, }; /* pci_vid_12D3[] */ -pci_id_t pci_vid_12D4[] = { +static pci_id_t const pci_vid_12D4[] = { {0x12D4, 0xFFFF, 0xFFFF, 0xFFFF, "Ulticom (Formerly DGM&S)(0x12D4)"}, {0x12D4, 0x0200, 0xFFFF, 0xFFFF, "T1 Card(0x0200)"}, }; /* pci_vid_12D4[] */ -pci_id_t pci_vid_12D5[] = { +static pci_id_t const pci_vid_12D5[] = { {0x12D5, 0xFFFF, 0xFFFF, 0xFFFF, "Equator Technologies Inc(0x12D5)"}, {0x12D5, 0x0003, 0xFFFF, 0xFFFF, "BSP16(0x0003)"}, {0x12D5, 0x1000, 0xFFFF, 0xFFFF, "BSP15(0x1000)"}, }; /* pci_vid_12D5[] */ -pci_id_t pci_vid_12D6[] = { +static pci_id_t const pci_vid_12D6[] = { {0x12D6, 0xFFFF, 0xFFFF, 0xFFFF, "Analogic Corp(0x12D6)"}, }; /* pci_vid_12D6[] */ -pci_id_t pci_vid_12D7[] = { +static pci_id_t const pci_vid_12D7[] = { {0x12D7, 0xFFFF, 0xFFFF, 0xFFFF, "Biotronic SRL(0x12D7)"}, }; /* pci_vid_12D7[] */ -pci_id_t pci_vid_12D8[] = { +static pci_id_t const pci_vid_12D8[] = { {0x12D8, 0xFFFF, 0xFFFF, 0xFFFF, "Pericom Semiconductor(0x12D8)"}, {0x12D8, 0x01A7, 0xFFFF, 0xFFFF, "7C21P100 2-port PCI-X to PCI-X Bridge(0x01A7)"}, {0x12D8, 0x0303, 0xFFFF, 0xFFFF, "PCI Express Switch 3-3(0x0303)"}, {0x12D8, 0x0508, 0xFFFF, 0xFFFF, "PI7C9X20508GP PCI Express Switch 5Port-8Lane(0x0508)"}, {0x12D8, 0x2304, 0xFFFF, 0xFFFF, "PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch(0x2304)"}, -{0x12D8, 0x2308, 0xFFFF, 0xFFFF, "PI7C9X2G308GP 8-lane PCI Express 2.0 Switch with 3 PCI Express ports(0x2308)"}, +{0x12D8, 0x2308, 0xFFFF, 0xFFFF, "PI7C9X2G308GP 3-Ports/8-lane PCIe 2.0 Switch(0x2308)"}, {0x12D8, 0x2404, 0xFFFF, 0xFFFF, "PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch(0x2404)"}, {0x12D8, 0x2608, 0xFFFF, 0xFFFF, "PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch(0x2608)"}, {0x12D8, 0x2608, 0xEA50, 0xCC10, "RXi2-BP(0xEA50-0xCC10)"}, -{0x12D8, 0x400A, 0xFFFF, 0xFFFF, "PI7C9X442SL PCI Express Bridge Port(0x400A)"}, -{0x12D8, 0x400E, 0xFFFF, 0xFFFF, "PI7C9X442SL USB OHCI Controller(0x400E)"}, -{0x12D8, 0x400F, 0xFFFF, 0xFFFF, "PI7C9X442SL USB EHCI Controller(0x400F)"}, +{0x12D8, 0x400A, 0xFFFF, 0xFFFF, "PI7C9X442SL PCIe Bridge Port(0x400A)"}, +{0x12D8, 0x400C, 0xFFFF, 0xFFFF, "PI7C9X440SL PCIe Bridge Port(0x400C)"}, +{0x12D8, 0x400E, 0xFFFF, 0xFFFF, "PI7C9X440SL/PI7C9X442SL USB OHCI Controller(0x400E)"}, +{0x12D8, 0x400F, 0xFFFF, 0xFFFF, "PI7C9X440SL/PI7C9X442SL USB EHCI Controller(0x400F)"}, {0x12D8, 0x71E2, 0xFFFF, 0xFFFF, "PI7C7300A/PI7C7300D PCI-to-PCI Bridge(0x71E2)"}, {0x12D8, 0x71E3, 0xFFFF, 0xFFFF, "PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2)(0x71E3)"}, {0x12D8, 0x8140, 0xFFFF, 0xFFFF, "PI7C8140A PCI-to-PCI Bridge(0x8140)"}, @@ -19481,13 +19565,15 @@ pci_id_t pci_vid_12D8[] = { {0x12D8, 0x8152, 0xFFFF, 0xFFFF, "PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge(0x8152)"}, {0x12D8, 0x8154, 0xFFFF, 0xFFFF, "PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge(0x8154)"}, {0x12D8, 0x8619, 0xFFFF, 0xFFFF, "PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch(0x8619)"}, -{0x12D8, 0xE110, 0xFFFF, 0xFFFF, "PI7C9X110 PCI Express to PCI bridge(0xE110)"}, +{0x12D8, 0xE110, 0xFFFF, 0xFFFF, "PI7C9X110 PCIe- to-PCI bridge(0xE110)"}, {0x12D8, 0xE110, 0x1775, 0x11CC, "CC11/CL11 CompactPCI Bridge(0x1775-0x11CC)"}, {0x12D8, 0xE111, 0xFFFF, 0xFFFF, "PI7C9X111SL PCIe-to-PCI Reversible Bridge(0xE111)"}, +{0x12D8, 0xE112, 0xFFFF, 0xFFFF, "PI7C9X112SL PCIe-to-PCI Bridge(0xE112)"}, +{0x12D8, 0xE113, 0xFFFF, 0xFFFF, "PI7C9X113SL/PI7C9X118SL PCIe-to-PCI Bridge(0xE113)"}, {0x12D8, 0xE130, 0xFFFF, 0xFFFF, "PCI Express to PCI-XPI7C9X130 PCI-X Bridge(0xE130)"}, }; /* pci_vid_12D8[] */ -pci_id_t pci_vid_12D9[] = { +static pci_id_t const pci_vid_12D9[] = { {0x12D9, 0xFFFF, 0xFFFF, 0xFFFF, "Aculab PLC(0x12D9)"}, {0x12D9, 0x0002, 0xFFFF, 0xFFFF, "PCI Prosody(0x0002)"}, {0x12D9, 0x0004, 0xFFFF, 0xFFFF, "cPCI Prosody(0x0004)"}, @@ -19497,79 +19583,79 @@ pci_id_t pci_vid_12D9[] = { {0x12D9, 0x1078, 0x12D9, 0x000E, "Prosody X cPCI(0x12D9-0x000E)"}, }; /* pci_vid_12D9[] */ -pci_id_t pci_vid_12DA[] = { +static pci_id_t const pci_vid_12DA[] = { {0x12DA, 0xFFFF, 0xFFFF, 0xFFFF, "True Time Inc.(0x12DA)"}, }; /* pci_vid_12DA[] */ -pci_id_t pci_vid_12DB[] = { +static pci_id_t const pci_vid_12DB[] = { {0x12DB, 0xFFFF, 0xFFFF, 0xFFFF, "Annapolis Micro Systems, Inc(0x12DB)"}, }; /* pci_vid_12DB[] */ -pci_id_t pci_vid_12DC[] = { +static pci_id_t const pci_vid_12DC[] = { {0x12DC, 0xFFFF, 0xFFFF, 0xFFFF, "Symicron Computer Communication Ltd.(0x12DC)"}, }; /* pci_vid_12DC[] */ -pci_id_t pci_vid_12DD[] = { +static pci_id_t const pci_vid_12DD[] = { {0x12DD, 0xFFFF, 0xFFFF, 0xFFFF, "Management Graphics(0x12DD)"}, }; /* pci_vid_12DD[] */ -pci_id_t pci_vid_12DE[] = { +static pci_id_t const pci_vid_12DE[] = { {0x12DE, 0xFFFF, 0xFFFF, 0xFFFF, "Rainbow Technologies(0x12DE)"}, {0x12DE, 0x0200, 0xFFFF, 0xFFFF, "CryptoSwift CS200(0x0200)"}, }; /* pci_vid_12DE[] */ -pci_id_t pci_vid_12DF[] = { +static pci_id_t const pci_vid_12DF[] = { {0x12DF, 0xFFFF, 0xFFFF, 0xFFFF, "SBS Technologies Inc(0x12DF)"}, }; /* pci_vid_12DF[] */ -pci_id_t pci_vid_12E0[] = { +static pci_id_t const pci_vid_12E0[] = { {0x12E0, 0xFFFF, 0xFFFF, 0xFFFF, "Chase Research(0x12E0)"}, {0x12E0, 0x0010, 0xFFFF, 0xFFFF, "ST16C654 Quad UART(0x0010)"}, {0x12E0, 0x0020, 0xFFFF, 0xFFFF, "ST16C654 Quad UART(0x0020)"}, {0x12E0, 0x0030, 0xFFFF, 0xFFFF, "ST16C654 Quad UART(0x0030)"}, }; /* pci_vid_12E0[] */ -pci_id_t pci_vid_12E1[] = { +static pci_id_t const pci_vid_12E1[] = { {0x12E1, 0xFFFF, 0xFFFF, 0xFFFF, "Nintendo Co, Ltd(0x12E1)"}, }; /* pci_vid_12E1[] */ -pci_id_t pci_vid_12E2[] = { +static pci_id_t const pci_vid_12E2[] = { {0x12E2, 0xFFFF, 0xFFFF, 0xFFFF, "Datum Inc. Bancomm-Timing Division(0x12E2)"}, }; /* pci_vid_12E2[] */ -pci_id_t pci_vid_12E3[] = { +static pci_id_t const pci_vid_12E3[] = { {0x12E3, 0xFFFF, 0xFFFF, 0xFFFF, "Imation Corp - Medical Imaging Systems(0x12E3)"}, }; /* pci_vid_12E3[] */ -pci_id_t pci_vid_12E4[] = { +static pci_id_t const pci_vid_12E4[] = { {0x12E4, 0xFFFF, 0xFFFF, 0xFFFF, "Brooktrout Technology Inc(0x12E4)"}, }; /* pci_vid_12E4[] */ -pci_id_t pci_vid_12E5[] = { +static pci_id_t const pci_vid_12E5[] = { {0x12E5, 0xFFFF, 0xFFFF, 0xFFFF, "Apex Semiconductor Inc(0x12E5)"}, }; /* pci_vid_12E5[] */ -pci_id_t pci_vid_12E6[] = { +static pci_id_t const pci_vid_12E6[] = { {0x12E6, 0xFFFF, 0xFFFF, 0xFFFF, "Cirel Systems(0x12E6)"}, }; /* pci_vid_12E6[] */ -pci_id_t pci_vid_12E7[] = { +static pci_id_t const pci_vid_12E7[] = { {0x12E7, 0xFFFF, 0xFFFF, 0xFFFF, "Sunsgroup Corporation(0x12E7)"}, }; /* pci_vid_12E7[] */ -pci_id_t pci_vid_12E8[] = { +static pci_id_t const pci_vid_12E8[] = { {0x12E8, 0xFFFF, 0xFFFF, 0xFFFF, "Crisc Corp(0x12E8)"}, }; /* pci_vid_12E8[] */ -pci_id_t pci_vid_12E9[] = { +static pci_id_t const pci_vid_12E9[] = { {0x12E9, 0xFFFF, 0xFFFF, 0xFFFF, "GE Spacenet(0x12E9)"}, }; /* pci_vid_12E9[] */ -pci_id_t pci_vid_12EA[] = { +static pci_id_t const pci_vid_12EA[] = { {0x12EA, 0xFFFF, 0xFFFF, 0xFFFF, "Zuken(0x12EA)"}, }; /* pci_vid_12EA[] */ -pci_id_t pci_vid_12EB[] = { +static pci_id_t const pci_vid_12EB[] = { {0x12EB, 0xFFFF, 0xFFFF, 0xFFFF, "Aureal Semiconductor(0x12EB)"}, {0x12EB, 0x0001, 0xFFFF, 0xFFFF, "Vortex 1(0x0001)"}, {0x12EB, 0x0001, 0x0000, 0x0300, "Terasound A3D PCI(0x0000-0x0300)"}, @@ -19608,64 +19694,64 @@ pci_id_t pci_vid_12EB[] = { {0x12EB, 0x8803, 0x12EB, 0x8803, "Vortex 56k Software Modem(0x12EB-0x8803)"}, }; /* pci_vid_12EB[] */ -pci_id_t pci_vid_12EC[] = { +static pci_id_t const pci_vid_12EC[] = { {0x12EC, 0xFFFF, 0xFFFF, 0xFFFF, "3A International, Inc.(0x12EC)"}, }; /* pci_vid_12EC[] */ -pci_id_t pci_vid_12ED[] = { +static pci_id_t const pci_vid_12ED[] = { {0x12ED, 0xFFFF, 0xFFFF, 0xFFFF, "Optivision Inc.(0x12ED)"}, }; /* pci_vid_12ED[] */ -pci_id_t pci_vid_12EE[] = { +static pci_id_t const pci_vid_12EE[] = { {0x12EE, 0xFFFF, 0xFFFF, 0xFFFF, "Orange Micro(0x12EE)"}, }; /* pci_vid_12EE[] */ -pci_id_t pci_vid_12EF[] = { +static pci_id_t const pci_vid_12EF[] = { {0x12EF, 0xFFFF, 0xFFFF, 0xFFFF, "Vienna Systems(0x12EF)"}, }; /* pci_vid_12EF[] */ -pci_id_t pci_vid_12F0[] = { +static pci_id_t const pci_vid_12F0[] = { {0x12F0, 0xFFFF, 0xFFFF, 0xFFFF, "Pentek(0x12F0)"}, }; /* pci_vid_12F0[] */ -pci_id_t pci_vid_12F1[] = { +static pci_id_t const pci_vid_12F1[] = { {0x12F1, 0xFFFF, 0xFFFF, 0xFFFF, "Sorenson Vision Inc(0x12F1)"}, }; /* pci_vid_12F1[] */ -pci_id_t pci_vid_12F2[] = { +static pci_id_t const pci_vid_12F2[] = { {0x12F2, 0xFFFF, 0xFFFF, 0xFFFF, "Gammagraphx, Inc.(0x12F2)"}, }; /* pci_vid_12F2[] */ -pci_id_t pci_vid_12F3[] = { +static pci_id_t const pci_vid_12F3[] = { {0x12F3, 0xFFFF, 0xFFFF, 0xFFFF, "Radstone Technology(0x12F3)"}, }; /* pci_vid_12F3[] */ -pci_id_t pci_vid_12F4[] = { +static pci_id_t const pci_vid_12F4[] = { {0x12F4, 0xFFFF, 0xFFFF, 0xFFFF, "Megatel(0x12F4)"}, }; /* pci_vid_12F4[] */ -pci_id_t pci_vid_12F5[] = { +static pci_id_t const pci_vid_12F5[] = { {0x12F5, 0xFFFF, 0xFFFF, 0xFFFF, "Forks(0x12F5)"}, }; /* pci_vid_12F5[] */ -pci_id_t pci_vid_12F6[] = { +static pci_id_t const pci_vid_12F6[] = { {0x12F6, 0xFFFF, 0xFFFF, 0xFFFF, "Dawson France(0x12F6)"}, }; /* pci_vid_12F6[] */ -pci_id_t pci_vid_12F7[] = { +static pci_id_t const pci_vid_12F7[] = { {0x12F7, 0xFFFF, 0xFFFF, 0xFFFF, "Cognex(0x12F7)"}, }; /* pci_vid_12F7[] */ -pci_id_t pci_vid_12F8[] = { +static pci_id_t const pci_vid_12F8[] = { {0x12F8, 0xFFFF, 0xFFFF, 0xFFFF, "Electronic Design GmbH(0x12F8)"}, {0x12F8, 0x0002, 0xFFFF, 0xFFFF, "VideoMaker(0x0002)"}, }; /* pci_vid_12F8[] */ -pci_id_t pci_vid_12F9[] = { +static pci_id_t const pci_vid_12F9[] = { {0x12F9, 0xFFFF, 0xFFFF, 0xFFFF, "Four Fold Ltd(0x12F9)"}, }; /* pci_vid_12F9[] */ -pci_id_t pci_vid_12FB[] = { +static pci_id_t const pci_vid_12FB[] = { {0x12FB, 0xFFFF, 0xFFFF, 0xFFFF, "Spectrum Signal Processing(0x12FB)"}, {0x12FB, 0x0001, 0xFFFF, 0xFFFF, "PMC-MAI(0x0001)"}, {0x12FB, 0x00F5, 0xFFFF, 0xFFFF, "F5 Dakar(0x00F5)"}, @@ -19683,48 +19769,48 @@ pci_id_t pci_vid_12FB[] = { {0x12FB, 0xFA01, 0xFFFF, 0xFFFF, "ePMC-FPGA(0xFA01)"}, }; /* pci_vid_12FB[] */ -pci_id_t pci_vid_12FC[] = { +static pci_id_t const pci_vid_12FC[] = { {0x12FC, 0xFFFF, 0xFFFF, 0xFFFF, "Capital Equipment Corp(0x12FC)"}, }; /* pci_vid_12FC[] */ -pci_id_t pci_vid_12FD[] = { +static pci_id_t const pci_vid_12FD[] = { {0x12FD, 0xFFFF, 0xFFFF, 0xFFFF, "I2S(0x12FD)"}, }; /* pci_vid_12FD[] */ -pci_id_t pci_vid_12FE[] = { +static pci_id_t const pci_vid_12FE[] = { {0x12FE, 0xFFFF, 0xFFFF, 0xFFFF, "ESD Electronic System Design GmbH(0x12FE)"}, }; /* pci_vid_12FE[] */ -pci_id_t pci_vid_12FF[] = { +static pci_id_t const pci_vid_12FF[] = { {0x12FF, 0xFFFF, 0xFFFF, 0xFFFF, "Lexicon(0x12FF)"}, }; /* pci_vid_12FF[] */ -pci_id_t pci_vid_1300[] = { +static pci_id_t const pci_vid_1300[] = { {0x1300, 0xFFFF, 0xFFFF, 0xFFFF, "Harman International Industries Inc(0x1300)"}, }; /* pci_vid_1300[] */ -pci_id_t pci_vid_1302[] = { +static pci_id_t const pci_vid_1302[] = { {0x1302, 0xFFFF, 0xFFFF, 0xFFFF, "Computer Sciences Corp(0x1302)"}, }; /* pci_vid_1302[] */ -pci_id_t pci_vid_1303[] = { +static pci_id_t const pci_vid_1303[] = { {0x1303, 0xFFFF, 0xFFFF, 0xFFFF, "Innovative Integration(0x1303)"}, {0x1303, 0x0030, 0xFFFF, 0xFFFF, "X3-SDF 4-channel XMC acquisition board(0x0030)"}, }; /* pci_vid_1303[] */ -pci_id_t pci_vid_1304[] = { +static pci_id_t const pci_vid_1304[] = { {0x1304, 0xFFFF, 0xFFFF, 0xFFFF, "Juniper Networks(0x1304)"}, }; /* pci_vid_1304[] */ -pci_id_t pci_vid_1305[] = { +static pci_id_t const pci_vid_1305[] = { {0x1305, 0xFFFF, 0xFFFF, 0xFFFF, "Netphone, Inc(0x1305)"}, }; /* pci_vid_1305[] */ -pci_id_t pci_vid_1306[] = { +static pci_id_t const pci_vid_1306[] = { {0x1306, 0xFFFF, 0xFFFF, 0xFFFF, "Duet Technologies(0x1306)"}, }; /* pci_vid_1306[] */ -pci_id_t pci_vid_1307[] = { +static pci_id_t const pci_vid_1307[] = { {0x1307, 0xFFFF, 0xFFFF, 0xFFFF, "Measurement Computing(0x1307)"}, {0x1307, 0x0001, 0xFFFF, 0xFFFF, "PCI-DAS1602/16(0x0001)"}, {0x1307, 0x000B, 0xFFFF, 0xFFFF, "PCI-DIO48H(0x000B)"}, @@ -19804,65 +19890,65 @@ pci_id_t pci_vid_1307[] = { {0x1307, 0x0115, 0xFFFF, 0xFFFF, "PCIe-DAS1602/16(0x0115)"}, }; /* pci_vid_1307[] */ -pci_id_t pci_vid_1308[] = { +static pci_id_t const pci_vid_1308[] = { {0x1308, 0xFFFF, 0xFFFF, 0xFFFF, "Jato Technologies Inc.(0x1308)"}, {0x1308, 0x0001, 0xFFFF, 0xFFFF, "NetCelerator Adapter(0x0001)"}, {0x1308, 0x0001, 0x1308, 0x0001, "NetCelerator Adapter(0x1308-0x0001)"}, }; /* pci_vid_1308[] */ -pci_id_t pci_vid_1309[] = { +static pci_id_t const pci_vid_1309[] = { {0x1309, 0xFFFF, 0xFFFF, 0xFFFF, "AB Semiconductor Ltd(0x1309)"}, }; /* pci_vid_1309[] */ -pci_id_t pci_vid_130A[] = { +static pci_id_t const pci_vid_130A[] = { {0x130A, 0xFFFF, 0xFFFF, 0xFFFF, "Mitsubishi Electric Microcomputer(0x130A)"}, }; /* pci_vid_130A[] */ -pci_id_t pci_vid_130B[] = { +static pci_id_t const pci_vid_130B[] = { {0x130B, 0xFFFF, 0xFFFF, 0xFFFF, "Colorgraphic Communications Corp(0x130B)"}, }; /* pci_vid_130B[] */ -pci_id_t pci_vid_130C[] = { +static pci_id_t const pci_vid_130C[] = { {0x130C, 0xFFFF, 0xFFFF, 0xFFFF, "Ambex Technologies, Inc(0x130C)"}, }; /* pci_vid_130C[] */ -pci_id_t pci_vid_130D[] = { +static pci_id_t const pci_vid_130D[] = { {0x130D, 0xFFFF, 0xFFFF, 0xFFFF, "Accelerix Inc(0x130D)"}, }; /* pci_vid_130D[] */ -pci_id_t pci_vid_130E[] = { +static pci_id_t const pci_vid_130E[] = { {0x130E, 0xFFFF, 0xFFFF, 0xFFFF, "Yamatake-Honeywell Co. Ltd(0x130E)"}, }; /* pci_vid_130E[] */ -pci_id_t pci_vid_130F[] = { +static pci_id_t const pci_vid_130F[] = { {0x130F, 0xFFFF, 0xFFFF, 0xFFFF, "Advanet Inc(0x130F)"}, }; /* pci_vid_130F[] */ -pci_id_t pci_vid_1310[] = { +static pci_id_t const pci_vid_1310[] = { {0x1310, 0xFFFF, 0xFFFF, 0xFFFF, "Gespac(0x1310)"}, }; /* pci_vid_1310[] */ -pci_id_t pci_vid_1311[] = { +static pci_id_t const pci_vid_1311[] = { {0x1311, 0xFFFF, 0xFFFF, 0xFFFF, "Videoserver, Inc(0x1311)"}, }; /* pci_vid_1311[] */ -pci_id_t pci_vid_1312[] = { +static pci_id_t const pci_vid_1312[] = { {0x1312, 0xFFFF, 0xFFFF, 0xFFFF, "Acuity Imaging, Inc(0x1312)"}, }; /* pci_vid_1312[] */ -pci_id_t pci_vid_1313[] = { +static pci_id_t const pci_vid_1313[] = { {0x1313, 0xFFFF, 0xFFFF, 0xFFFF, "Yaskawa Electric Co.(0x1313)"}, }; /* pci_vid_1313[] */ -pci_id_t pci_vid_1315[] = { +static pci_id_t const pci_vid_1315[] = { {0x1315, 0xFFFF, 0xFFFF, 0xFFFF, "Wavesat(0x1315)"}, }; /* pci_vid_1315[] */ -pci_id_t pci_vid_1316[] = { +static pci_id_t const pci_vid_1316[] = { {0x1316, 0xFFFF, 0xFFFF, 0xFFFF, "Teradyne Inc(0x1316)"}, }; /* pci_vid_1316[] */ -pci_id_t pci_vid_1317[] = { +static pci_id_t const pci_vid_1317[] = { {0x1317, 0xFFFF, 0xFFFF, 0xFFFF, "ADMtek(0x1317)"}, {0x1317, 0x0981, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0x0981)"}, {0x1317, 0x0985, 0xFFFF, 0xFFFF, "NC100 Network Everywhere Fast Ethernet 10/100(0x0985)"}, @@ -19879,12 +19965,12 @@ pci_id_t pci_vid_1317[] = { {0x1317, 0x9511, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0x9511)"}, }; /* pci_vid_1317[] */ -pci_id_t pci_vid_1318[] = { +static pci_id_t const pci_vid_1318[] = { {0x1318, 0xFFFF, 0xFFFF, 0xFFFF, "Packet Engines Inc.(0x1318)"}, {0x1318, 0x0911, 0xFFFF, 0xFFFF, "GNIC-II PCI Gigabit Ethernet [Hamachi](0x0911)"}, }; /* pci_vid_1318[] */ -pci_id_t pci_vid_1319[] = { +static pci_id_t const pci_vid_1319[] = { {0x1319, 0xFFFF, 0xFFFF, 0xFFFF, "Fortemedia, Inc(0x1319)"}, {0x1319, 0x0801, 0xFFFF, 0xFFFF, "Xwave QS3000A [FM801](0x0801)"}, {0x1319, 0x0801, 0x1319, 0x1319, "FM801 PCI Audio(0x1319-0x1319)"}, @@ -19894,23 +19980,23 @@ pci_id_t pci_vid_1319[] = { {0x1319, 0x1001, 0xFFFF, 0xFFFF, "FM801 PCI Joystick(0x1001)"}, }; /* pci_vid_1319[] */ -pci_id_t pci_vid_131A[] = { +static pci_id_t const pci_vid_131A[] = { {0x131A, 0xFFFF, 0xFFFF, 0xFFFF, "Finisar Corp.(0x131A)"}, }; /* pci_vid_131A[] */ -pci_id_t pci_vid_131C[] = { +static pci_id_t const pci_vid_131C[] = { {0x131C, 0xFFFF, 0xFFFF, 0xFFFF, "Nippon Electro-Sensory Devices Corp(0x131C)"}, }; /* pci_vid_131C[] */ -pci_id_t pci_vid_131D[] = { +static pci_id_t const pci_vid_131D[] = { {0x131D, 0xFFFF, 0xFFFF, 0xFFFF, "Sysmic, Inc.(0x131D)"}, }; /* pci_vid_131D[] */ -pci_id_t pci_vid_131E[] = { +static pci_id_t const pci_vid_131E[] = { {0x131E, 0xFFFF, 0xFFFF, 0xFFFF, "Xinex Networks Inc(0x131E)"}, }; /* pci_vid_131E[] */ -pci_id_t pci_vid_131F[] = { +static pci_id_t const pci_vid_131F[] = { {0x131F, 0xFFFF, 0xFFFF, 0xFFFF, "Siig Inc(0x131F)"}, {0x131F, 0x1000, 0xFFFF, 0xFFFF, "CyberSerial (1-port) 16550(0x1000)"}, {0x131F, 0x1001, 0xFFFF, 0xFFFF, "CyberSerial (1-port) 16650(0x1001)"}, @@ -19953,67 +20039,67 @@ pci_id_t pci_vid_131F[] = { {0x131F, 0x2081, 0xFFFF, 0xFFFF, "CyberSerial (8-port) ST16654(0x2081)"}, }; /* pci_vid_131F[] */ -pci_id_t pci_vid_1320[] = { +static pci_id_t const pci_vid_1320[] = { {0x1320, 0xFFFF, 0xFFFF, 0xFFFF, "Crypto AG(0x1320)"}, }; /* pci_vid_1320[] */ -pci_id_t pci_vid_1321[] = { +static pci_id_t const pci_vid_1321[] = { {0x1321, 0xFFFF, 0xFFFF, 0xFFFF, "Arcobel Graphics BV(0x1321)"}, }; /* pci_vid_1321[] */ -pci_id_t pci_vid_1322[] = { +static pci_id_t const pci_vid_1322[] = { {0x1322, 0xFFFF, 0xFFFF, 0xFFFF, "MTT Co., Ltd(0x1322)"}, }; /* pci_vid_1322[] */ -pci_id_t pci_vid_1323[] = { +static pci_id_t const pci_vid_1323[] = { {0x1323, 0xFFFF, 0xFFFF, 0xFFFF, "Dome Inc(0x1323)"}, }; /* pci_vid_1323[] */ -pci_id_t pci_vid_1324[] = { +static pci_id_t const pci_vid_1324[] = { {0x1324, 0xFFFF, 0xFFFF, 0xFFFF, "Sphere Communications(0x1324)"}, }; /* pci_vid_1324[] */ -pci_id_t pci_vid_1325[] = { +static pci_id_t const pci_vid_1325[] = { {0x1325, 0xFFFF, 0xFFFF, 0xFFFF, "Salix Technologies, Inc(0x1325)"}, }; /* pci_vid_1325[] */ -pci_id_t pci_vid_1326[] = { +static pci_id_t const pci_vid_1326[] = { {0x1326, 0xFFFF, 0xFFFF, 0xFFFF, "Seachange international(0x1326)"}, }; /* pci_vid_1326[] */ -pci_id_t pci_vid_1327[] = { +static pci_id_t const pci_vid_1327[] = { {0x1327, 0xFFFF, 0xFFFF, 0xFFFF, "Voss scientific(0x1327)"}, }; /* pci_vid_1327[] */ -pci_id_t pci_vid_1328[] = { +static pci_id_t const pci_vid_1328[] = { {0x1328, 0xFFFF, 0xFFFF, 0xFFFF, "quadrant international(0x1328)"}, }; /* pci_vid_1328[] */ -pci_id_t pci_vid_1329[] = { +static pci_id_t const pci_vid_1329[] = { {0x1329, 0xFFFF, 0xFFFF, 0xFFFF, "Productivity Enhancement(0x1329)"}, }; /* pci_vid_1329[] */ -pci_id_t pci_vid_132A[] = { +static pci_id_t const pci_vid_132A[] = { {0x132A, 0xFFFF, 0xFFFF, 0xFFFF, "Microcom Inc.(0x132A)"}, }; /* pci_vid_132A[] */ -pci_id_t pci_vid_132B[] = { +static pci_id_t const pci_vid_132B[] = { {0x132B, 0xFFFF, 0xFFFF, 0xFFFF, "Broadband Technologies(0x132B)"}, }; /* pci_vid_132B[] */ -pci_id_t pci_vid_132C[] = { +static pci_id_t const pci_vid_132C[] = { {0x132C, 0xFFFF, 0xFFFF, 0xFFFF, "Micrel Inc(0x132C)"}, }; /* pci_vid_132C[] */ -pci_id_t pci_vid_132D[] = { +static pci_id_t const pci_vid_132D[] = { {0x132D, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Silicon Solution, Inc.(0x132D)"}, }; /* pci_vid_132D[] */ -pci_id_t pci_vid_1330[] = { +static pci_id_t const pci_vid_1330[] = { {0x1330, 0xFFFF, 0xFFFF, 0xFFFF, "MMC Networks(0x1330)"}, }; /* pci_vid_1330[] */ -pci_id_t pci_vid_1331[] = { +static pci_id_t const pci_vid_1331[] = { {0x1331, 0xFFFF, 0xFFFF, 0xFFFF, "RadiSys Corporation(0x1331)"}, {0x1331, 0x0030, 0xFFFF, 0xFFFF, "ENP-2611(0x0030)"}, {0x1331, 0x8200, 0xFFFF, 0xFFFF, "82600 Host Bridge(0x8200)"}, @@ -20022,70 +20108,70 @@ pci_id_t pci_vid_1331[] = { {0x1331, 0x8210, 0xFFFF, 0xFFFF, "82600 PCI Bridge(0x8210)"}, }; /* pci_vid_1331[] */ -pci_id_t pci_vid_1332[] = { +static pci_id_t const pci_vid_1332[] = { {0x1332, 0xFFFF, 0xFFFF, 0xFFFF, "Micro Memory(0x1332)"}, {0x1332, 0x5415, 0xFFFF, 0xFFFF, "MM-5415CN PCI Memory Module with Battery Backup(0x5415)"}, {0x1332, 0x5425, 0xFFFF, 0xFFFF, "MM-5425CN PCI 64/66 Memory Module with Battery Backup(0x5425)"}, {0x1332, 0x6140, 0xFFFF, 0xFFFF, "MM-6140D(0x6140)"}, }; /* pci_vid_1332[] */ -pci_id_t pci_vid_1334[] = { +static pci_id_t const pci_vid_1334[] = { {0x1334, 0xFFFF, 0xFFFF, 0xFFFF, "Redcreek Communications, Inc(0x1334)"}, }; /* pci_vid_1334[] */ -pci_id_t pci_vid_1335[] = { +static pci_id_t const pci_vid_1335[] = { {0x1335, 0xFFFF, 0xFFFF, 0xFFFF, "Videomail, Inc(0x1335)"}, }; /* pci_vid_1335[] */ -pci_id_t pci_vid_1337[] = { +static pci_id_t const pci_vid_1337[] = { {0x1337, 0xFFFF, 0xFFFF, 0xFFFF, "Third Planet Publishing(0x1337)"}, }; /* pci_vid_1337[] */ -pci_id_t pci_vid_1338[] = { +static pci_id_t const pci_vid_1338[] = { {0x1338, 0xFFFF, 0xFFFF, 0xFFFF, "BT Electronics(0x1338)"}, }; /* pci_vid_1338[] */ -pci_id_t pci_vid_133A[] = { +static pci_id_t const pci_vid_133A[] = { {0x133A, 0xFFFF, 0xFFFF, 0xFFFF, "Vtel Corp(0x133A)"}, }; /* pci_vid_133A[] */ -pci_id_t pci_vid_133B[] = { +static pci_id_t const pci_vid_133B[] = { {0x133B, 0xFFFF, 0xFFFF, 0xFFFF, "Softcom Microsystems(0x133B)"}, }; /* pci_vid_133B[] */ -pci_id_t pci_vid_133C[] = { +static pci_id_t const pci_vid_133C[] = { {0x133C, 0xFFFF, 0xFFFF, 0xFFFF, "Holontech Corp(0x133C)"}, }; /* pci_vid_133C[] */ -pci_id_t pci_vid_133D[] = { +static pci_id_t const pci_vid_133D[] = { {0x133D, 0xFFFF, 0xFFFF, 0xFFFF, "SS Technologies(0x133D)"}, }; /* pci_vid_133D[] */ -pci_id_t pci_vid_133E[] = { +static pci_id_t const pci_vid_133E[] = { {0x133E, 0xFFFF, 0xFFFF, 0xFFFF, "Virtual Computer Corp(0x133E)"}, }; /* pci_vid_133E[] */ -pci_id_t pci_vid_133F[] = { +static pci_id_t const pci_vid_133F[] = { {0x133F, 0xFFFF, 0xFFFF, 0xFFFF, "SCM Microsystems(0x133F)"}, }; /* pci_vid_133F[] */ -pci_id_t pci_vid_1340[] = { +static pci_id_t const pci_vid_1340[] = { {0x1340, 0xFFFF, 0xFFFF, 0xFFFF, "Atalla Corp(0x1340)"}, }; /* pci_vid_1340[] */ -pci_id_t pci_vid_1341[] = { +static pci_id_t const pci_vid_1341[] = { {0x1341, 0xFFFF, 0xFFFF, 0xFFFF, "Kyoto Microcomputer Co(0x1341)"}, }; /* pci_vid_1341[] */ -pci_id_t pci_vid_1342[] = { +static pci_id_t const pci_vid_1342[] = { {0x1342, 0xFFFF, 0xFFFF, 0xFFFF, "Promax Systems Inc(0x1342)"}, }; /* pci_vid_1342[] */ -pci_id_t pci_vid_1343[] = { +static pci_id_t const pci_vid_1343[] = { {0x1343, 0xFFFF, 0xFFFF, 0xFFFF, "Phylon Communications Inc(0x1343)"}, }; /* pci_vid_1343[] */ -pci_id_t pci_vid_1344[] = { +static pci_id_t const pci_vid_1344[] = { {0x1344, 0xFFFF, 0xFFFF, 0xFFFF, "Micron Technology Inc(0x1344)"}, {0x1344, 0x5150, 0xFFFF, 0xFFFF, "RealSSD P320h(0x5150)"}, {0x1344, 0x5151, 0xFFFF, 0xFFFF, "RealSSD P320m(0x5151)"}, @@ -20172,37 +20258,38 @@ pci_id_t pci_vid_1344[] = { {0x1344, 0x5411, 0xFFFF, 0xFFFF, "2450 NVMe SSD [HendrixV] (DRAM-less)(0x5411)"}, {0x1344, 0x5413, 0xFFFF, 0xFFFF, "2400 NVMe SSD (DRAM-less)(0x5413)"}, {0x1344, 0x5414, 0xFFFF, 0xFFFF, "3460 NVMe SSD(0x5414)"}, +{0x1344, 0x5415, 0xFFFF, 0xFFFF, "3500 NVMe SSD(0x5415)"}, {0x1344, 0x5416, 0xFFFF, 0xFFFF, "2550 NVMe SSD (DRAM-less)(0x5416)"}, {0x1344, 0x6001, 0xFFFF, 0xFFFF, "2100AI NVMe SSD [Nitro](0x6001)"}, }; /* pci_vid_1344[] */ -pci_id_t pci_vid_1345[] = { +static pci_id_t const pci_vid_1345[] = { {0x1345, 0xFFFF, 0xFFFF, 0xFFFF, "Arescom Inc(0x1345)"}, }; /* pci_vid_1345[] */ -pci_id_t pci_vid_1347[] = { +static pci_id_t const pci_vid_1347[] = { {0x1347, 0xFFFF, 0xFFFF, 0xFFFF, "Odetics(0x1347)"}, }; /* pci_vid_1347[] */ -pci_id_t pci_vid_1349[] = { +static pci_id_t const pci_vid_1349[] = { {0x1349, 0xFFFF, 0xFFFF, 0xFFFF, "Sumitomo Electric Industries, Ltd.(0x1349)"}, }; /* pci_vid_1349[] */ -pci_id_t pci_vid_134A[] = { +static pci_id_t const pci_vid_134A[] = { {0x134A, 0xFFFF, 0xFFFF, 0xFFFF, "DTC Technology Corp.(0x134A)"}, {0x134A, 0x0001, 0xFFFF, 0xFFFF, "Domex 536(0x0001)"}, {0x134A, 0x0002, 0xFFFF, 0xFFFF, "Domex DMX3194UP SCSI Adapter(0x0002)"}, }; /* pci_vid_134A[] */ -pci_id_t pci_vid_134B[] = { +static pci_id_t const pci_vid_134B[] = { {0x134B, 0xFFFF, 0xFFFF, 0xFFFF, "ARK Research Corp.(0x134B)"}, }; /* pci_vid_134B[] */ -pci_id_t pci_vid_134C[] = { +static pci_id_t const pci_vid_134C[] = { {0x134C, 0xFFFF, 0xFFFF, 0xFFFF, "Chori Joho System Co. Ltd(0x134C)"}, }; /* pci_vid_134C[] */ -pci_id_t pci_vid_134D[] = { +static pci_id_t const pci_vid_134D[] = { {0x134D, 0xFFFF, 0xFFFF, 0xFFFF, "PCTel Inc(0x134D)"}, {0x134D, 0x2189, 0xFFFF, 0xFFFF, "HSP56 MicroModem(0x2189)"}, {0x134D, 0x2486, 0xFFFF, 0xFFFF, "2304WT V.92 MDC Modem(0x2486)"}, @@ -20218,23 +20305,23 @@ pci_id_t pci_vid_134D[] = { {0x134D, 0x7897, 0xFFFF, 0xFFFF, "HSP MicroModem 56(0x7897)"}, }; /* pci_vid_134D[] */ -pci_id_t pci_vid_134E[] = { +static pci_id_t const pci_vid_134E[] = { {0x134E, 0xFFFF, 0xFFFF, 0xFFFF, "CSTI(0x134E)"}, }; /* pci_vid_134E[] */ -pci_id_t pci_vid_134F[] = { +static pci_id_t const pci_vid_134F[] = { {0x134F, 0xFFFF, 0xFFFF, 0xFFFF, "Algo System Co Ltd(0x134F)"}, }; /* pci_vid_134F[] */ -pci_id_t pci_vid_1350[] = { +static pci_id_t const pci_vid_1350[] = { {0x1350, 0xFFFF, 0xFFFF, 0xFFFF, "Systec Co. Ltd(0x1350)"}, }; /* pci_vid_1350[] */ -pci_id_t pci_vid_1351[] = { +static pci_id_t const pci_vid_1351[] = { {0x1351, 0xFFFF, 0xFFFF, 0xFFFF, "Sonix Inc(0x1351)"}, }; /* pci_vid_1351[] */ -pci_id_t pci_vid_1353[] = { +static pci_id_t const pci_vid_1353[] = { {0x1353, 0xFFFF, 0xFFFF, 0xFFFF, "dbeeSet Technology(0x1353)"}, {0x1353, 0x0002, 0xFFFF, 0xFFFF, "Proserver(0x0002)"}, {0x1353, 0x0003, 0xFFFF, 0xFFFF, "PCI-FUT(0x0003)"}, @@ -20244,23 +20331,23 @@ pci_id_t pci_vid_1353[] = { {0x1353, 0x0007, 0xFFFF, 0xFFFF, "OTDU-EX(0x0007)"}, }; /* pci_vid_1353[] */ -pci_id_t pci_vid_1354[] = { +static pci_id_t const pci_vid_1354[] = { {0x1354, 0xFFFF, 0xFFFF, 0xFFFF, "Dwave System Inc(0x1354)"}, }; /* pci_vid_1354[] */ -pci_id_t pci_vid_1355[] = { +static pci_id_t const pci_vid_1355[] = { {0x1355, 0xFFFF, 0xFFFF, 0xFFFF, "Kratos Analytical Ltd(0x1355)"}, }; /* pci_vid_1355[] */ -pci_id_t pci_vid_1356[] = { +static pci_id_t const pci_vid_1356[] = { {0x1356, 0xFFFF, 0xFFFF, 0xFFFF, "The Logical Co(0x1356)"}, }; /* pci_vid_1356[] */ -pci_id_t pci_vid_1359[] = { +static pci_id_t const pci_vid_1359[] = { {0x1359, 0xFFFF, 0xFFFF, 0xFFFF, "Prisa Networks(0x1359)"}, }; /* pci_vid_1359[] */ -pci_id_t pci_vid_135A[] = { +static pci_id_t const pci_vid_135A[] = { {0x135A, 0xFFFF, 0xFFFF, 0xFFFF, "Brainboxes Ltd(0x135A)"}, {0x135A, 0x0841, 0xFFFF, 0xFFFF, "UC-268 4 port RS-232 card(0x0841)"}, {0x135A, 0x0861, 0xFFFF, 0xFFFF, "UC-257 2 port RS-232 + LPT card(0x0861)"}, @@ -20354,11 +20441,11 @@ pci_id_t pci_vid_135A[] = { {0x135A, 0x4100, 0xFFFF, 0xFFFF, "PX-272 4 + 1 port RS-232 + LPT card(0x4100)"}, }; /* pci_vid_135A[] */ -pci_id_t pci_vid_135B[] = { +static pci_id_t const pci_vid_135B[] = { {0x135B, 0xFFFF, 0xFFFF, 0xFFFF, "Giganet Inc(0x135B)"}, }; /* pci_vid_135B[] */ -pci_id_t pci_vid_135C[] = { +static pci_id_t const pci_vid_135C[] = { {0x135C, 0xFFFF, 0xFFFF, 0xFFFF, "Quatech Inc(0x135C)"}, {0x135C, 0x0010, 0xFFFF, 0xFFFF, "QSC-100(0x0010)"}, {0x135C, 0x0020, 0xFFFF, 0xFFFF, "DSC-100(0x0020)"}, @@ -20383,11 +20470,11 @@ pci_id_t pci_vid_135C[] = { {0x135C, 0x0258, 0xFFFF, 0xFFFF, "DSPSX-200/300(0x0258)"}, }; /* pci_vid_135C[] */ -pci_id_t pci_vid_135D[] = { +static pci_id_t const pci_vid_135D[] = { {0x135D, 0xFFFF, 0xFFFF, 0xFFFF, "ABB Network Partner AB(0x135D)"}, }; /* pci_vid_135D[] */ -pci_id_t pci_vid_135E[] = { +static pci_id_t const pci_vid_135E[] = { {0x135E, 0xFFFF, 0xFFFF, 0xFFFF, "Sealevel Systems Inc(0x135E)"}, {0x135E, 0x5101, 0xFFFF, 0xFFFF, "Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)(0x5101)"}, {0x135E, 0x7101, 0xFFFF, 0xFFFF, "Single Port RS-232/422/485/530(0x7101)"}, @@ -20400,11 +20487,11 @@ pci_id_t pci_vid_135E[] = { {0x135E, 0x8001, 0xFFFF, 0xFFFF, "8001 Digital I/O Adapter(0x8001)"}, }; /* pci_vid_135E[] */ -pci_id_t pci_vid_135F[] = { +static pci_id_t const pci_vid_135F[] = { {0x135F, 0xFFFF, 0xFFFF, 0xFFFF, "I-Data International A-S(0x135F)"}, }; /* pci_vid_135F[] */ -pci_id_t pci_vid_1360[] = { +static pci_id_t const pci_vid_1360[] = { {0x1360, 0xFFFF, 0xFFFF, 0xFFFF, "Meinberg Funkuhren(0x1360)"}, {0x1360, 0x0101, 0xFFFF, 0xFFFF, "PCI32 DCF77 Radio Clock(0x0101)"}, {0x1360, 0x0102, 0xFFFF, 0xFFFF, "PCI509 DCF77 Radio Clock(0x0102)"}, @@ -20431,43 +20518,43 @@ pci_id_t pci_vid_1360[] = { {0x1360, 0x0601, 0xFFFF, 0xFFFF, "FRC511PEX Free Running Clock (PCI Express)(0x0601)"}, }; /* pci_vid_1360[] */ -pci_id_t pci_vid_1361[] = { +static pci_id_t const pci_vid_1361[] = { {0x1361, 0xFFFF, 0xFFFF, 0xFFFF, "Soliton Systems K.K.(0x1361)"}, }; /* pci_vid_1361[] */ -pci_id_t pci_vid_1362[] = { +static pci_id_t const pci_vid_1362[] = { {0x1362, 0xFFFF, 0xFFFF, 0xFFFF, "Fujifacom Corporation(0x1362)"}, }; /* pci_vid_1362[] */ -pci_id_t pci_vid_1363[] = { +static pci_id_t const pci_vid_1363[] = { {0x1363, 0xFFFF, 0xFFFF, 0xFFFF, "Phoenix Technology Ltd(0x1363)"}, }; /* pci_vid_1363[] */ -pci_id_t pci_vid_1364[] = { +static pci_id_t const pci_vid_1364[] = { {0x1364, 0xFFFF, 0xFFFF, 0xFFFF, "ATM Communications Inc(0x1364)"}, }; /* pci_vid_1364[] */ -pci_id_t pci_vid_1365[] = { +static pci_id_t const pci_vid_1365[] = { {0x1365, 0xFFFF, 0xFFFF, 0xFFFF, "Hypercope GmbH(0x1365)"}, }; /* pci_vid_1365[] */ -pci_id_t pci_vid_1366[] = { +static pci_id_t const pci_vid_1366[] = { {0x1366, 0xFFFF, 0xFFFF, 0xFFFF, "Teijin Seiki Co. Ltd(0x1366)"}, }; /* pci_vid_1366[] */ -pci_id_t pci_vid_1367[] = { +static pci_id_t const pci_vid_1367[] = { {0x1367, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Zosen Corporation(0x1367)"}, }; /* pci_vid_1367[] */ -pci_id_t pci_vid_1368[] = { +static pci_id_t const pci_vid_1368[] = { {0x1368, 0xFFFF, 0xFFFF, 0xFFFF, "Skyware Corporation(0x1368)"}, }; /* pci_vid_1368[] */ -pci_id_t pci_vid_1369[] = { +static pci_id_t const pci_vid_1369[] = { {0x1369, 0xFFFF, 0xFFFF, 0xFFFF, "Digigram(0x1369)"}, }; /* pci_vid_1369[] */ -pci_id_t pci_vid_136A[] = { +static pci_id_t const pci_vid_136A[] = { {0x136A, 0xFFFF, 0xFFFF, 0xFFFF, "High Soft Tech(0x136A)"}, {0x136A, 0x0004, 0xFFFF, 0xFFFF, "HST Saphir VII mini PCI(0x0004)"}, {0x136A, 0x0007, 0xFFFF, 0xFFFF, "HST Saphir III E MultiLink 4(0x0007)"}, @@ -20475,38 +20562,38 @@ pci_id_t pci_vid_136A[] = { {0x136A, 0x000A, 0xFFFF, 0xFFFF, "HST Saphir III E MultiLink 2(0x000A)"}, }; /* pci_vid_136A[] */ -pci_id_t pci_vid_136B[] = { +static pci_id_t const pci_vid_136B[] = { {0x136B, 0xFFFF, 0xFFFF, 0xFFFF, "Kawasaki Steel Corporation(0x136B)"}, {0x136B, 0xFF01, 0xFFFF, 0xFFFF, "KL5A72002 Motion JPEG(0xFF01)"}, }; /* pci_vid_136B[] */ -pci_id_t pci_vid_136C[] = { +static pci_id_t const pci_vid_136C[] = { {0x136C, 0xFFFF, 0xFFFF, 0xFFFF, "Adtek System Science Co Ltd(0x136C)"}, }; /* pci_vid_136C[] */ -pci_id_t pci_vid_136D[] = { +static pci_id_t const pci_vid_136D[] = { {0x136D, 0xFFFF, 0xFFFF, 0xFFFF, "Gigalabs Inc(0x136D)"}, }; /* pci_vid_136D[] */ -pci_id_t pci_vid_136F[] = { +static pci_id_t const pci_vid_136F[] = { {0x136F, 0xFFFF, 0xFFFF, 0xFFFF, "Applied Magic Inc(0x136F)"}, }; /* pci_vid_136F[] */ -pci_id_t pci_vid_1370[] = { +static pci_id_t const pci_vid_1370[] = { {0x1370, 0xFFFF, 0xFFFF, 0xFFFF, "ATL Products(0x1370)"}, }; /* pci_vid_1370[] */ -pci_id_t pci_vid_1371[] = { +static pci_id_t const pci_vid_1371[] = { {0x1371, 0xFFFF, 0xFFFF, 0xFFFF, "CNet Technology Inc(0x1371)"}, {0x1371, 0x434E, 0xFFFF, 0xFFFF, "GigaCard Network Adapter(0x434E)"}, {0x1371, 0x434E, 0x1371, 0x434E, "N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)(0x1371-0x434E)"}, }; /* pci_vid_1371[] */ -pci_id_t pci_vid_1373[] = { +static pci_id_t const pci_vid_1373[] = { {0x1373, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Vision Inc(0x1373)"}, }; /* pci_vid_1373[] */ -pci_id_t pci_vid_1374[] = { +static pci_id_t const pci_vid_1374[] = { {0x1374, 0xFFFF, 0xFFFF, 0xFFFF, "Silicom Ltd.(0x1374)"}, {0x1374, 0x0024, 0xFFFF, 0xFFFF, "Silicom Dual port Giga Ethernet BGE Bypass Server Adapter(0x0024)"}, {0x1374, 0x0025, 0xFFFF, 0xFFFF, "Silicom Quad port Giga Ethernet BGE Bypass Server Adapter(0x0025)"}, @@ -20552,60 +20639,60 @@ pci_id_t pci_vid_1374[] = { {0x1374, 0x0483, 0xFFFF, 0xFFFF, "Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter(0x0483)"}, }; /* pci_vid_1374[] */ -pci_id_t pci_vid_1375[] = { +static pci_id_t const pci_vid_1375[] = { {0x1375, 0xFFFF, 0xFFFF, 0xFFFF, "Argosystems Inc(0x1375)"}, }; /* pci_vid_1375[] */ -pci_id_t pci_vid_1376[] = { +static pci_id_t const pci_vid_1376[] = { {0x1376, 0xFFFF, 0xFFFF, 0xFFFF, "LMC(0x1376)"}, }; /* pci_vid_1376[] */ -pci_id_t pci_vid_1377[] = { +static pci_id_t const pci_vid_1377[] = { {0x1377, 0xFFFF, 0xFFFF, 0xFFFF, "Electronic Equipment Production & Distribution GmbH(0x1377)"}, }; /* pci_vid_1377[] */ -pci_id_t pci_vid_1378[] = { +static pci_id_t const pci_vid_1378[] = { {0x1378, 0xFFFF, 0xFFFF, 0xFFFF, "Telemann Co. Ltd(0x1378)"}, }; /* pci_vid_1378[] */ -pci_id_t pci_vid_1379[] = { +static pci_id_t const pci_vid_1379[] = { {0x1379, 0xFFFF, 0xFFFF, 0xFFFF, "Asahi Kasei Microsystems Co Ltd(0x1379)"}, }; /* pci_vid_1379[] */ -pci_id_t pci_vid_137A[] = { +static pci_id_t const pci_vid_137A[] = { {0x137A, 0xFFFF, 0xFFFF, 0xFFFF, "Mark of the Unicorn Inc(0x137A)"}, {0x137A, 0x0001, 0xFFFF, 0xFFFF, "PCI-324 Audiowire Interface(0x0001)"}, }; /* pci_vid_137A[] */ -pci_id_t pci_vid_137B[] = { +static pci_id_t const pci_vid_137B[] = { {0x137B, 0xFFFF, 0xFFFF, 0xFFFF, "PPT Vision(0x137B)"}, }; /* pci_vid_137B[] */ -pci_id_t pci_vid_137C[] = { +static pci_id_t const pci_vid_137C[] = { {0x137C, 0xFFFF, 0xFFFF, 0xFFFF, "Iwatsu Electric Co Ltd(0x137C)"}, }; /* pci_vid_137C[] */ -pci_id_t pci_vid_137D[] = { +static pci_id_t const pci_vid_137D[] = { {0x137D, 0xFFFF, 0xFFFF, 0xFFFF, "Dynachip Corporation(0x137D)"}, }; /* pci_vid_137D[] */ -pci_id_t pci_vid_137E[] = { +static pci_id_t const pci_vid_137E[] = { {0x137E, 0xFFFF, 0xFFFF, 0xFFFF, "Patriot Scientific Corporation(0x137E)"}, }; /* pci_vid_137E[] */ -pci_id_t pci_vid_137F[] = { +static pci_id_t const pci_vid_137F[] = { {0x137F, 0xFFFF, 0xFFFF, 0xFFFF, "Japan Satellite Systems Inc(0x137F)"}, }; /* pci_vid_137F[] */ -pci_id_t pci_vid_1380[] = { +static pci_id_t const pci_vid_1380[] = { {0x1380, 0xFFFF, 0xFFFF, 0xFFFF, "Sanritz Automation Co Ltd(0x1380)"}, }; /* pci_vid_1380[] */ -pci_id_t pci_vid_1381[] = { +static pci_id_t const pci_vid_1381[] = { {0x1381, 0xFFFF, 0xFFFF, 0xFFFF, "Brains Co. Ltd(0x1381)"}, }; /* pci_vid_1381[] */ -pci_id_t pci_vid_1382[] = { +static pci_id_t const pci_vid_1382[] = { {0x1382, 0xFFFF, 0xFFFF, 0xFFFF, "Marian - Electronic & Software(0x1382)"}, {0x1382, 0x0001, 0xFFFF, 0xFFFF, "ARC88 audio recording card(0x0001)"}, {0x1382, 0x2008, 0xFFFF, 0xFFFF, "Prodif 96 Pro sound system(0x2008)"}, @@ -20620,15 +20707,15 @@ pci_id_t pci_vid_1382[] = { {0x1382, 0x4424, 0xFFFF, 0xFFFF, "TRACE D4 Sound System(0x4424)"}, }; /* pci_vid_1382[] */ -pci_id_t pci_vid_1383[] = { +static pci_id_t const pci_vid_1383[] = { {0x1383, 0xFFFF, 0xFFFF, 0xFFFF, "Controlnet Inc(0x1383)"}, }; /* pci_vid_1383[] */ -pci_id_t pci_vid_1384[] = { +static pci_id_t const pci_vid_1384[] = { {0x1384, 0xFFFF, 0xFFFF, 0xFFFF, "Reality Simulation Systems Inc(0x1384)"}, }; /* pci_vid_1384[] */ -pci_id_t pci_vid_1385[] = { +static pci_id_t const pci_vid_1385[] = { {0x1385, 0xFFFF, 0xFFFF, 0xFFFF, "Netgear(0x1385)"}, {0x1385, 0x006B, 0xFFFF, 0xFFFF, "WA301 802.11b Wireless PCI Adapter(0x006B)"}, {0x1385, 0x4100, 0xFFFF, 0xFFFF, "MA301 802.11b Wireless PCI Adapter(0x4100)"}, @@ -20637,61 +20724,61 @@ pci_id_t pci_vid_1385[] = { {0x1385, 0x630A, 0xFFFF, 0xFFFF, "GA630 Gigabit Ethernet(0x630A)"}, }; /* pci_vid_1385[] */ -pci_id_t pci_vid_1386[] = { +static pci_id_t const pci_vid_1386[] = { {0x1386, 0xFFFF, 0xFFFF, 0xFFFF, "Video Domain Technologies(0x1386)"}, }; /* pci_vid_1386[] */ -pci_id_t pci_vid_1387[] = { +static pci_id_t const pci_vid_1387[] = { {0x1387, 0xFFFF, 0xFFFF, 0xFFFF, "Systran Corp(0x1387)"}, }; /* pci_vid_1387[] */ -pci_id_t pci_vid_1388[] = { +static pci_id_t const pci_vid_1388[] = { {0x1388, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Information Technology Co Ltd(0x1388)"}, }; /* pci_vid_1388[] */ -pci_id_t pci_vid_1389[] = { +static pci_id_t const pci_vid_1389[] = { {0x1389, 0xFFFF, 0xFFFF, 0xFFFF, "Applicom International(0x1389)"}, {0x1389, 0x0001, 0xFFFF, 0xFFFF, "PCI1500PFB [Intelligent fieldbus adaptor](0x0001)"}, }; /* pci_vid_1389[] */ -pci_id_t pci_vid_138A[] = { +static pci_id_t const pci_vid_138A[] = { {0x138A, 0xFFFF, 0xFFFF, 0xFFFF, "Fusion Micromedia Corp(0x138A)"}, {0x138A, 0x003D, 0xFFFF, 0xFFFF, "VFS491 Validity Sensor(0x003D)"}, }; /* pci_vid_138A[] */ -pci_id_t pci_vid_138B[] = { +static pci_id_t const pci_vid_138B[] = { {0x138B, 0xFFFF, 0xFFFF, 0xFFFF, "Tokimec Inc(0x138B)"}, }; /* pci_vid_138B[] */ -pci_id_t pci_vid_138C[] = { +static pci_id_t const pci_vid_138C[] = { {0x138C, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Reality(0x138C)"}, }; /* pci_vid_138C[] */ -pci_id_t pci_vid_138D[] = { +static pci_id_t const pci_vid_138D[] = { {0x138D, 0xFFFF, 0xFFFF, 0xFFFF, "Future Techno Designs pte Ltd(0x138D)"}, }; /* pci_vid_138D[] */ -pci_id_t pci_vid_138E[] = { +static pci_id_t const pci_vid_138E[] = { {0x138E, 0xFFFF, 0xFFFF, 0xFFFF, "Basler GmbH(0x138E)"}, }; /* pci_vid_138E[] */ -pci_id_t pci_vid_138F[] = { +static pci_id_t const pci_vid_138F[] = { {0x138F, 0xFFFF, 0xFFFF, 0xFFFF, "Patapsco Designs Inc(0x138F)"}, }; /* pci_vid_138F[] */ -pci_id_t pci_vid_1390[] = { +static pci_id_t const pci_vid_1390[] = { {0x1390, 0xFFFF, 0xFFFF, 0xFFFF, "Concept Development Inc(0x1390)"}, }; /* pci_vid_1390[] */ -pci_id_t pci_vid_1391[] = { +static pci_id_t const pci_vid_1391[] = { {0x1391, 0xFFFF, 0xFFFF, 0xFFFF, "Development Concepts Inc(0x1391)"}, }; /* pci_vid_1391[] */ -pci_id_t pci_vid_1392[] = { +static pci_id_t const pci_vid_1392[] = { {0x1392, 0xFFFF, 0xFFFF, 0xFFFF, "Medialight Inc(0x1392)"}, }; /* pci_vid_1392[] */ -pci_id_t pci_vid_1393[] = { +static pci_id_t const pci_vid_1393[] = { {0x1393, 0xFFFF, 0xFFFF, 0xFFFF, "Moxa Technologies Co Ltd(0x1393)"}, {0x1393, 0x0001, 0xFFFF, 0xFFFF, "UC7000 Serial(0x0001)"}, {0x1393, 0x1020, 0xFFFF, 0xFFFF, "CP-102 (2-port RS-232 PCI)(0x1020)"}, @@ -20730,22 +20817,22 @@ pci_id_t pci_vid_1393[] = { {0x1393, 0x3200, 0xFFFF, 0xFFFF, "Intellio C320 Turbo PCI(0x3200)"}, }; /* pci_vid_1393[] */ -pci_id_t pci_vid_1394[] = { +static pci_id_t const pci_vid_1394[] = { {0x1394, 0xFFFF, 0xFFFF, 0xFFFF, "Level One Communications(0x1394)"}, {0x1394, 0x0001, 0xFFFF, 0xFFFF, "LXT1001 Gigabit Ethernet(0x0001)"}, {0x1394, 0x0001, 0x1186, 0x4800, "DGE-500SX(0x1186-0x4800)"}, {0x1394, 0x0001, 0x1394, 0x0001, "NetCelerator Adapter(0x1394-0x0001)"}, }; /* pci_vid_1394[] */ -pci_id_t pci_vid_1395[] = { +static pci_id_t const pci_vid_1395[] = { {0x1395, 0xFFFF, 0xFFFF, 0xFFFF, "Ambicom Inc(0x1395)"}, }; /* pci_vid_1395[] */ -pci_id_t pci_vid_1396[] = { +static pci_id_t const pci_vid_1396[] = { {0x1396, 0xFFFF, 0xFFFF, 0xFFFF, "Cipher Systems Inc(0x1396)"}, }; /* pci_vid_1396[] */ -pci_id_t pci_vid_1397[] = { +static pci_id_t const pci_vid_1397[] = { {0x1397, 0xFFFF, 0xFFFF, 0xFFFF, "Cologne Chip Designs GmbH(0x1397)"}, {0x1397, 0x08B4, 0xFFFF, 0xFFFF, "ISDN network Controller [HFC-4S](0x08B4)"}, {0x1397, 0x08B4, 0x1397, 0x08B4, "HFC-4S [Cologne Chip HFC-4S Eval. Board](0x1397-0x08B4)"}, @@ -20798,54 +20885,54 @@ pci_id_t pci_vid_1397[] = { {0x1397, 0xF001, 0xFFFF, 0xFFFF, "GSM Network Controller [HFC-4GSM](0xF001)"}, }; /* pci_vid_1397[] */ -pci_id_t pci_vid_1398[] = { +static pci_id_t const pci_vid_1398[] = { {0x1398, 0xFFFF, 0xFFFF, 0xFFFF, "Clarion co. Ltd(0x1398)"}, }; /* pci_vid_1398[] */ -pci_id_t pci_vid_1399[] = { +static pci_id_t const pci_vid_1399[] = { {0x1399, 0xFFFF, 0xFFFF, 0xFFFF, "Rios systems Co Ltd(0x1399)"}, }; /* pci_vid_1399[] */ -pci_id_t pci_vid_139A[] = { +static pci_id_t const pci_vid_139A[] = { {0x139A, 0xFFFF, 0xFFFF, 0xFFFF, "Alacritech Inc(0x139A)"}, {0x139A, 0x0001, 0xFFFF, 0xFFFF, "Quad Port 10/100 Server Accelerator(0x0001)"}, {0x139A, 0x0003, 0xFFFF, 0xFFFF, "Single Port 10/100 Server Accelerator(0x0003)"}, {0x139A, 0x0005, 0xFFFF, 0xFFFF, "Single Port Gigabit Server Accelerator(0x0005)"}, }; /* pci_vid_139A[] */ -pci_id_t pci_vid_139B[] = { +static pci_id_t const pci_vid_139B[] = { {0x139B, 0xFFFF, 0xFFFF, 0xFFFF, "Mediasonic Multimedia Systems Ltd(0x139B)"}, }; /* pci_vid_139B[] */ -pci_id_t pci_vid_139C[] = { +static pci_id_t const pci_vid_139C[] = { {0x139C, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum 3d Inc(0x139C)"}, }; /* pci_vid_139C[] */ -pci_id_t pci_vid_139D[] = { +static pci_id_t const pci_vid_139D[] = { {0x139D, 0xFFFF, 0xFFFF, 0xFFFF, "EPL limited(0x139D)"}, }; /* pci_vid_139D[] */ -pci_id_t pci_vid_139E[] = { +static pci_id_t const pci_vid_139E[] = { {0x139E, 0xFFFF, 0xFFFF, 0xFFFF, "Media4(0x139E)"}, }; /* pci_vid_139E[] */ -pci_id_t pci_vid_139F[] = { +static pci_id_t const pci_vid_139F[] = { {0x139F, 0xFFFF, 0xFFFF, 0xFFFF, "Aethra s.r.l.(0x139F)"}, }; /* pci_vid_139F[] */ -pci_id_t pci_vid_13A0[] = { +static pci_id_t const pci_vid_13A0[] = { {0x13A0, 0xFFFF, 0xFFFF, 0xFFFF, "Crystal Group Inc(0x13A0)"}, }; /* pci_vid_13A0[] */ -pci_id_t pci_vid_13A1[] = { +static pci_id_t const pci_vid_13A1[] = { {0x13A1, 0xFFFF, 0xFFFF, 0xFFFF, "Kawasaki Heavy Industries Ltd(0x13A1)"}, }; /* pci_vid_13A1[] */ -pci_id_t pci_vid_13A2[] = { +static pci_id_t const pci_vid_13A2[] = { {0x13A2, 0xFFFF, 0xFFFF, 0xFFFF, "Ositech Communications Inc(0x13A2)"}, }; /* pci_vid_13A2[] */ -pci_id_t pci_vid_13A3[] = { +static pci_id_t const pci_vid_13A3[] = { {0x13A3, 0xFFFF, 0xFFFF, 0xFFFF, "Hifn Inc.(0x13A3)"}, {0x13A3, 0x0005, 0xFFFF, 0xFFFF, "7751 Security Processor(0x0005)"}, {0x13A3, 0x0006, 0xFFFF, 0xFFFF, "6500 Public Key Processor(0x0006)"}, @@ -20879,23 +20966,23 @@ pci_id_t pci_vid_13A3[] = { {0x13A3, 0x9240, 0x13A3, 0x9200, "DX2040 Compression and Security Acceleration Card [Panther II](0x13A3-0x9200)"}, }; /* pci_vid_13A3[] */ -pci_id_t pci_vid_13A4[] = { +static pci_id_t const pci_vid_13A4[] = { {0x13A4, 0xFFFF, 0xFFFF, 0xFFFF, "Rascom Inc(0x13A4)"}, }; /* pci_vid_13A4[] */ -pci_id_t pci_vid_13A5[] = { +static pci_id_t const pci_vid_13A5[] = { {0x13A5, 0xFFFF, 0xFFFF, 0xFFFF, "Audio Digital Imaging Inc(0x13A5)"}, }; /* pci_vid_13A5[] */ -pci_id_t pci_vid_13A6[] = { +static pci_id_t const pci_vid_13A6[] = { {0x13A6, 0xFFFF, 0xFFFF, 0xFFFF, "Videonics Inc(0x13A6)"}, }; /* pci_vid_13A6[] */ -pci_id_t pci_vid_13A7[] = { +static pci_id_t const pci_vid_13A7[] = { {0x13A7, 0xFFFF, 0xFFFF, 0xFFFF, "Teles AG(0x13A7)"}, }; /* pci_vid_13A7[] */ -pci_id_t pci_vid_13A8[] = { +static pci_id_t const pci_vid_13A8[] = { {0x13A8, 0xFFFF, 0xFFFF, 0xFFFF, "Exar Corp.(0x13A8)"}, {0x13A8, 0x0152, 0xFFFF, 0xFFFF, "XR17C/D152 Dual PCI UART(0x0152)"}, {0x13A8, 0x0154, 0xFFFF, 0xFFFF, "XR17C154 Quad UART(0x0154)"}, @@ -20906,99 +20993,99 @@ pci_id_t pci_vid_13A8[] = { {0x13A8, 0x0352, 0xFFFF, 0xFFFF, "XR17V3521 Dual PCIe UART(0x0352)"}, }; /* pci_vid_13A8[] */ -pci_id_t pci_vid_13A9[] = { +static pci_id_t const pci_vid_13A9[] = { {0x13A9, 0xFFFF, 0xFFFF, 0xFFFF, "Siemens Medical Systems, Ultrasound Group(0x13A9)"}, }; /* pci_vid_13A9[] */ -pci_id_t pci_vid_13AA[] = { +static pci_id_t const pci_vid_13AA[] = { {0x13AA, 0xFFFF, 0xFFFF, 0xFFFF, "Broadband Networks Inc(0x13AA)"}, }; /* pci_vid_13AA[] */ -pci_id_t pci_vid_13AB[] = { +static pci_id_t const pci_vid_13AB[] = { {0x13AB, 0xFFFF, 0xFFFF, 0xFFFF, "Arcom Control Systems Ltd(0x13AB)"}, }; /* pci_vid_13AB[] */ -pci_id_t pci_vid_13AC[] = { +static pci_id_t const pci_vid_13AC[] = { {0x13AC, 0xFFFF, 0xFFFF, 0xFFFF, "Motion Media Technology Ltd(0x13AC)"}, }; /* pci_vid_13AC[] */ -pci_id_t pci_vid_13AD[] = { +static pci_id_t const pci_vid_13AD[] = { {0x13AD, 0xFFFF, 0xFFFF, 0xFFFF, "Nexus Inc(0x13AD)"}, }; /* pci_vid_13AD[] */ -pci_id_t pci_vid_13AE[] = { +static pci_id_t const pci_vid_13AE[] = { {0x13AE, 0xFFFF, 0xFFFF, 0xFFFF, "ALD Technology Ltd(0x13AE)"}, }; /* pci_vid_13AE[] */ -pci_id_t pci_vid_13AF[] = { +static pci_id_t const pci_vid_13AF[] = { {0x13AF, 0xFFFF, 0xFFFF, 0xFFFF, "T.Sqware(0x13AF)"}, }; /* pci_vid_13AF[] */ -pci_id_t pci_vid_13B0[] = { +static pci_id_t const pci_vid_13B0[] = { {0x13B0, 0xFFFF, 0xFFFF, 0xFFFF, "Maxspeed Corp(0x13B0)"}, }; /* pci_vid_13B0[] */ -pci_id_t pci_vid_13B1[] = { +static pci_id_t const pci_vid_13B1[] = { {0x13B1, 0xFFFF, 0xFFFF, 0xFFFF, "Tamura corporation(0x13B1)"}, }; /* pci_vid_13B1[] */ -pci_id_t pci_vid_13B2[] = { +static pci_id_t const pci_vid_13B2[] = { {0x13B2, 0xFFFF, 0xFFFF, 0xFFFF, "Techno Chips Co. Ltd(0x13B2)"}, }; /* pci_vid_13B2[] */ -pci_id_t pci_vid_13B3[] = { +static pci_id_t const pci_vid_13B3[] = { {0x13B3, 0xFFFF, 0xFFFF, 0xFFFF, "Lanart Corporation(0x13B3)"}, }; /* pci_vid_13B3[] */ -pci_id_t pci_vid_13B4[] = { +static pci_id_t const pci_vid_13B4[] = { {0x13B4, 0xFFFF, 0xFFFF, 0xFFFF, "Wellbean Co Inc(0x13B4)"}, }; /* pci_vid_13B4[] */ -pci_id_t pci_vid_13B5[] = { +static pci_id_t const pci_vid_13B5[] = { {0x13B5, 0xFFFF, 0xFFFF, 0xFFFF, "ARM(0x13B5)"}, }; /* pci_vid_13B5[] */ -pci_id_t pci_vid_13B6[] = { +static pci_id_t const pci_vid_13B6[] = { {0x13B6, 0xFFFF, 0xFFFF, 0xFFFF, "Dlog GmbH(0x13B6)"}, }; /* pci_vid_13B6[] */ -pci_id_t pci_vid_13B7[] = { +static pci_id_t const pci_vid_13B7[] = { {0x13B7, 0xFFFF, 0xFFFF, 0xFFFF, "Logic Devices Inc(0x13B7)"}, }; /* pci_vid_13B7[] */ -pci_id_t pci_vid_13B8[] = { +static pci_id_t const pci_vid_13B8[] = { {0x13B8, 0xFFFF, 0xFFFF, 0xFFFF, "Nokia Telecommunications oy(0x13B8)"}, }; /* pci_vid_13B8[] */ -pci_id_t pci_vid_13B9[] = { +static pci_id_t const pci_vid_13B9[] = { {0x13B9, 0xFFFF, 0xFFFF, 0xFFFF, "Elecom Co Ltd(0x13B9)"}, }; /* pci_vid_13B9[] */ -pci_id_t pci_vid_13BA[] = { +static pci_id_t const pci_vid_13BA[] = { {0x13BA, 0xFFFF, 0xFFFF, 0xFFFF, "Oxford Instruments(0x13BA)"}, }; /* pci_vid_13BA[] */ -pci_id_t pci_vid_13BB[] = { +static pci_id_t const pci_vid_13BB[] = { {0x13BB, 0xFFFF, 0xFFFF, 0xFFFF, "Sanyo Technosound Co Ltd(0x13BB)"}, }; /* pci_vid_13BB[] */ -pci_id_t pci_vid_13BC[] = { +static pci_id_t const pci_vid_13BC[] = { {0x13BC, 0xFFFF, 0xFFFF, 0xFFFF, "Bitran Corporation(0x13BC)"}, }; /* pci_vid_13BC[] */ -pci_id_t pci_vid_13BD[] = { +static pci_id_t const pci_vid_13BD[] = { {0x13BD, 0xFFFF, 0xFFFF, 0xFFFF, "Sharp corporation(0x13BD)"}, }; /* pci_vid_13BD[] */ -pci_id_t pci_vid_13BE[] = { +static pci_id_t const pci_vid_13BE[] = { {0x13BE, 0xFFFF, 0xFFFF, 0xFFFF, "Miroku Jyoho Service Co. Ltd(0x13BE)"}, }; /* pci_vid_13BE[] */ -pci_id_t pci_vid_13BF[] = { +static pci_id_t const pci_vid_13BF[] = { {0x13BF, 0xFFFF, 0xFFFF, 0xFFFF, "Sharewave Inc(0x13BF)"}, }; /* pci_vid_13BF[] */ -pci_id_t pci_vid_13C0[] = { +static pci_id_t const pci_vid_13C0[] = { {0x13C0, 0xFFFF, 0xFFFF, 0xFFFF, "Microgate Corporation(0x13C0)"}, {0x13C0, 0x0010, 0xFFFF, 0xFFFF, "SyncLink Adapter v1(0x0010)"}, {0x13C0, 0x0020, 0xFFFF, 0xFFFF, "SyncLink SCC Adapter(0x0020)"}, @@ -21009,7 +21096,7 @@ pci_id_t pci_vid_13C0[] = { {0x13C0, 0x0210, 0xFFFF, 0xFFFF, "SyncLink Adapter v2(0x0210)"}, }; /* pci_vid_13C0[] */ -pci_id_t pci_vid_13C1[] = { +static pci_id_t const pci_vid_13C1[] = { {0x13C1, 0xFFFF, 0xFFFF, 0xFFFF, "3ware Inc(0x13C1)"}, {0x13C1, 0x1000, 0xFFFF, 0xFFFF, "5xxx/6xxx-series PATA-RAID(0x1000)"}, {0x13C1, 0x1001, 0xFFFF, 0xFFFF, "7xxx/8xxx-series PATA/SATA-RAID(0x1001)"}, @@ -21021,25 +21108,25 @@ pci_id_t pci_vid_13C1[] = { {0x13C1, 0x1010, 0xFFFF, 0xFFFF, "9750 SAS2/SATA-II RAID PCIe(0x1010)"}, }; /* pci_vid_13C1[] */ -pci_id_t pci_vid_13C2[] = { +static pci_id_t const pci_vid_13C2[] = { {0x13C2, 0xFFFF, 0xFFFF, 0xFFFF, "Technotrend Systemtechnik GmbH(0x13C2)"}, {0x13C2, 0x000E, 0xFFFF, 0xFFFF, "Technotrend/Hauppauge DVB card rev2.3(0x000E)"}, {0x13C2, 0x1019, 0xFFFF, 0xFFFF, "TTechnoTrend-budget DVB S2-3200(0x1019)"}, }; /* pci_vid_13C2[] */ -pci_id_t pci_vid_13C3[] = { +static pci_id_t const pci_vid_13C3[] = { {0x13C3, 0xFFFF, 0xFFFF, 0xFFFF, "Janz Computer AG(0x13C3)"}, }; /* pci_vid_13C3[] */ -pci_id_t pci_vid_13C4[] = { +static pci_id_t const pci_vid_13C4[] = { {0x13C4, 0xFFFF, 0xFFFF, 0xFFFF, "Phase Metrics(0x13C4)"}, }; /* pci_vid_13C4[] */ -pci_id_t pci_vid_13C5[] = { +static pci_id_t const pci_vid_13C5[] = { {0x13C5, 0xFFFF, 0xFFFF, 0xFFFF, "Alphi Technology Corp(0x13C5)"}, }; /* pci_vid_13C5[] */ -pci_id_t pci_vid_13C6[] = { +static pci_id_t const pci_vid_13C6[] = { {0x13C6, 0xFFFF, 0xFFFF, 0xFFFF, "Condor Engineering Inc(0x13C6)"}, {0x13C6, 0x0520, 0xFFFF, 0xFFFF, "CEI-520 A429 Card(0x0520)"}, {0x13C6, 0x0620, 0xFFFF, 0xFFFF, "CEI-620 A429 Card(0x0620)"}, @@ -21048,7 +21135,7 @@ pci_id_t pci_vid_13C6[] = { {0x13C6, 0x1004, 0xFFFF, 0xFFFF, "P-SER Multi-channel PMC to RS-485/422/232 adapter(0x1004)"}, }; /* pci_vid_13C6[] */ -pci_id_t pci_vid_13C7[] = { +static pci_id_t const pci_vid_13C7[] = { {0x13C7, 0xFFFF, 0xFFFF, 0xFFFF, "Blue Chip Technology Ltd(0x13C7)"}, {0x13C7, 0x0ADC, 0xFFFF, 0xFFFF, "PCI-ADC(0x0ADC)"}, {0x13C7, 0x0B10, 0xFFFF, 0xFFFF, "PCI-PIO(0x0B10)"}, @@ -21057,46 +21144,46 @@ pci_id_t pci_vid_13C7[] = { {0x13C7, 0x5744, 0xFFFF, 0xFFFF, "PCI-WDT(0x5744)"}, }; /* pci_vid_13C7[] */ -pci_id_t pci_vid_13C8[] = { +static pci_id_t const pci_vid_13C8[] = { {0x13C8, 0xFFFF, 0xFFFF, 0xFFFF, "Apptech Inc(0x13C8)"}, }; /* pci_vid_13C8[] */ -pci_id_t pci_vid_13C9[] = { +static pci_id_t const pci_vid_13C9[] = { {0x13C9, 0xFFFF, 0xFFFF, 0xFFFF, "Eaton Corporation(0x13C9)"}, }; /* pci_vid_13C9[] */ -pci_id_t pci_vid_13CA[] = { +static pci_id_t const pci_vid_13CA[] = { {0x13CA, 0xFFFF, 0xFFFF, 0xFFFF, "Iomega Corporation(0x13CA)"}, }; /* pci_vid_13CA[] */ -pci_id_t pci_vid_13CB[] = { +static pci_id_t const pci_vid_13CB[] = { {0x13CB, 0xFFFF, 0xFFFF, 0xFFFF, "Yano Electric Co Ltd(0x13CB)"}, }; /* pci_vid_13CB[] */ -pci_id_t pci_vid_13CC[] = { +static pci_id_t const pci_vid_13CC[] = { {0x13CC, 0xFFFF, 0xFFFF, 0xFFFF, "BARCO(0x13CC)"}, }; /* pci_vid_13CC[] */ -pci_id_t pci_vid_13CD[] = { +static pci_id_t const pci_vid_13CD[] = { {0x13CD, 0xFFFF, 0xFFFF, 0xFFFF, "Compatible Systems Corporation(0x13CD)"}, }; /* pci_vid_13CD[] */ -pci_id_t pci_vid_13CE[] = { +static pci_id_t const pci_vid_13CE[] = { {0x13CE, 0xFFFF, 0xFFFF, 0xFFFF, "Cocom A/S(0x13CE)"}, }; /* pci_vid_13CE[] */ -pci_id_t pci_vid_13CF[] = { +static pci_id_t const pci_vid_13CF[] = { {0x13CF, 0xFFFF, 0xFFFF, 0xFFFF, "Studio Audio & Video Ltd(0x13CF)"}, }; /* pci_vid_13CF[] */ -pci_id_t pci_vid_13D0[] = { +static pci_id_t const pci_vid_13D0[] = { {0x13D0, 0xFFFF, 0xFFFF, 0xFFFF, "Techsan Electronics Co Ltd(0x13D0)"}, {0x13D0, 0x2103, 0xFFFF, 0xFFFF, "B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card(0x2103)"}, {0x13D0, 0x2104, 0xFFFF, 0xFFFF, "B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01)(0x2104)"}, {0x13D0, 0x2200, 0xFFFF, 0xFFFF, "B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card(0x2200)"}, }; /* pci_vid_13D0[] */ -pci_id_t pci_vid_13D1[] = { +static pci_id_t const pci_vid_13D1[] = { {0x13D1, 0xFFFF, 0xFFFF, 0xFFFF, "Abocom Systems Inc(0x13D1)"}, {0x13D1, 0xAB02, 0xFFFF, 0xFFFF, "ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter(0xAB02)"}, {0x13D1, 0xAB03, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0xAB03)"}, @@ -21104,126 +21191,126 @@ pci_id_t pci_vid_13D1[] = { {0x13D1, 0xAB08, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0xAB08)"}, }; /* pci_vid_13D1[] */ -pci_id_t pci_vid_13D2[] = { +static pci_id_t const pci_vid_13D2[] = { {0x13D2, 0xFFFF, 0xFFFF, 0xFFFF, "Shark Multimedia Inc(0x13D2)"}, }; /* pci_vid_13D2[] */ -pci_id_t pci_vid_13D4[] = { +static pci_id_t const pci_vid_13D4[] = { {0x13D4, 0xFFFF, 0xFFFF, 0xFFFF, "Graphics Microsystems Inc(0x13D4)"}, }; /* pci_vid_13D4[] */ -pci_id_t pci_vid_13D5[] = { +static pci_id_t const pci_vid_13D5[] = { {0x13D5, 0xFFFF, 0xFFFF, 0xFFFF, "Media 100 Inc(0x13D5)"}, }; /* pci_vid_13D5[] */ -pci_id_t pci_vid_13D6[] = { +static pci_id_t const pci_vid_13D6[] = { {0x13D6, 0xFFFF, 0xFFFF, 0xFFFF, "K.I. Technology Co Ltd(0x13D6)"}, }; /* pci_vid_13D6[] */ -pci_id_t pci_vid_13D7[] = { +static pci_id_t const pci_vid_13D7[] = { {0x13D7, 0xFFFF, 0xFFFF, 0xFFFF, "Toshiba Engineering Corporation(0x13D7)"}, }; /* pci_vid_13D7[] */ -pci_id_t pci_vid_13D8[] = { +static pci_id_t const pci_vid_13D8[] = { {0x13D8, 0xFFFF, 0xFFFF, 0xFFFF, "Phobos corporation(0x13D8)"}, }; /* pci_vid_13D8[] */ -pci_id_t pci_vid_13D9[] = { +static pci_id_t const pci_vid_13D9[] = { {0x13D9, 0xFFFF, 0xFFFF, 0xFFFF, "Apex PC Solutions Inc(0x13D9)"}, }; /* pci_vid_13D9[] */ -pci_id_t pci_vid_13DA[] = { +static pci_id_t const pci_vid_13DA[] = { {0x13DA, 0xFFFF, 0xFFFF, 0xFFFF, "Intresource Systems pte Ltd(0x13DA)"}, }; /* pci_vid_13DA[] */ -pci_id_t pci_vid_13DB[] = { +static pci_id_t const pci_vid_13DB[] = { {0x13DB, 0xFFFF, 0xFFFF, 0xFFFF, "Janich & Klass Computertechnik GmbH(0x13DB)"}, }; /* pci_vid_13DB[] */ -pci_id_t pci_vid_13DC[] = { +static pci_id_t const pci_vid_13DC[] = { {0x13DC, 0xFFFF, 0xFFFF, 0xFFFF, "Netboost Corporation(0x13DC)"}, }; /* pci_vid_13DC[] */ -pci_id_t pci_vid_13DD[] = { +static pci_id_t const pci_vid_13DD[] = { {0x13DD, 0xFFFF, 0xFFFF, 0xFFFF, "Multimedia Bundle Inc(0x13DD)"}, }; /* pci_vid_13DD[] */ -pci_id_t pci_vid_13DE[] = { +static pci_id_t const pci_vid_13DE[] = { {0x13DE, 0xFFFF, 0xFFFF, 0xFFFF, "ABB Robotics Products AB(0x13DE)"}, }; /* pci_vid_13DE[] */ -pci_id_t pci_vid_13DF[] = { +static pci_id_t const pci_vid_13DF[] = { {0x13DF, 0xFFFF, 0xFFFF, 0xFFFF, "E-Tech Inc(0x13DF)"}, {0x13DF, 0x0001, 0xFFFF, 0xFFFF, "PCI56RVP Modem(0x0001)"}, {0x13DF, 0x0001, 0x13DF, 0x0001, "PCI56RVP Modem(0x13DF-0x0001)"}, }; /* pci_vid_13DF[] */ -pci_id_t pci_vid_13E0[] = { +static pci_id_t const pci_vid_13E0[] = { {0x13E0, 0xFFFF, 0xFFFF, 0xFFFF, "GVC Corporation(0x13E0)"}, }; /* pci_vid_13E0[] */ -pci_id_t pci_vid_13E1[] = { +static pci_id_t const pci_vid_13E1[] = { {0x13E1, 0xFFFF, 0xFFFF, 0xFFFF, "Silicom Multimedia Systems Inc(0x13E1)"}, }; /* pci_vid_13E1[] */ -pci_id_t pci_vid_13E2[] = { +static pci_id_t const pci_vid_13E2[] = { {0x13E2, 0xFFFF, 0xFFFF, 0xFFFF, "Dynamics Research Corporation(0x13E2)"}, }; /* pci_vid_13E2[] */ -pci_id_t pci_vid_13E3[] = { +static pci_id_t const pci_vid_13E3[] = { {0x13E3, 0xFFFF, 0xFFFF, 0xFFFF, "Nest Inc(0x13E3)"}, }; /* pci_vid_13E3[] */ -pci_id_t pci_vid_13E4[] = { +static pci_id_t const pci_vid_13E4[] = { {0x13E4, 0xFFFF, 0xFFFF, 0xFFFF, "Calculex Inc(0x13E4)"}, }; /* pci_vid_13E4[] */ -pci_id_t pci_vid_13E5[] = { +static pci_id_t const pci_vid_13E5[] = { {0x13E5, 0xFFFF, 0xFFFF, 0xFFFF, "Telesoft Design Ltd(0x13E5)"}, }; /* pci_vid_13E5[] */ -pci_id_t pci_vid_13E6[] = { +static pci_id_t const pci_vid_13E6[] = { {0x13E6, 0xFFFF, 0xFFFF, 0xFFFF, "Argosy research Inc(0x13E6)"}, }; /* pci_vid_13E6[] */ -pci_id_t pci_vid_13E7[] = { +static pci_id_t const pci_vid_13E7[] = { {0x13E7, 0xFFFF, 0xFFFF, 0xFFFF, "NAC Incorporated(0x13E7)"}, }; /* pci_vid_13E7[] */ -pci_id_t pci_vid_13E8[] = { +static pci_id_t const pci_vid_13E8[] = { {0x13E8, 0xFFFF, 0xFFFF, 0xFFFF, "Chip Express Corporation(0x13E8)"}, }; /* pci_vid_13E8[] */ -pci_id_t pci_vid_13E9[] = { +static pci_id_t const pci_vid_13E9[] = { {0x13E9, 0xFFFF, 0xFFFF, 0xFFFF, "Intraserver Technology Inc(0x13E9)"}, }; /* pci_vid_13E9[] */ -pci_id_t pci_vid_13EA[] = { +static pci_id_t const pci_vid_13EA[] = { {0x13EA, 0xFFFF, 0xFFFF, 0xFFFF, "Dallas Semiconductor(0x13EA)"}, }; /* pci_vid_13EA[] */ -pci_id_t pci_vid_13EB[] = { +static pci_id_t const pci_vid_13EB[] = { {0x13EB, 0xFFFF, 0xFFFF, 0xFFFF, "Hauppauge Computer Works Inc(0x13EB)"}, }; /* pci_vid_13EB[] */ -pci_id_t pci_vid_13EC[] = { +static pci_id_t const pci_vid_13EC[] = { {0x13EC, 0xFFFF, 0xFFFF, 0xFFFF, "Zydacron Inc(0x13EC)"}, {0x13EC, 0x000A, 0xFFFF, 0xFFFF, "NPC-RC01 Remote control receiver(0x000A)"}, }; /* pci_vid_13EC[] */ -pci_id_t pci_vid_13ED[] = { +static pci_id_t const pci_vid_13ED[] = { {0x13ED, 0xFFFF, 0xFFFF, 0xFFFF, "Raytheion E-Systems(0x13ED)"}, }; /* pci_vid_13ED[] */ -pci_id_t pci_vid_13EE[] = { +static pci_id_t const pci_vid_13EE[] = { {0x13EE, 0xFFFF, 0xFFFF, 0xFFFF, "Hayes Microcomputer Products Inc(0x13EE)"}, }; /* pci_vid_13EE[] */ -pci_id_t pci_vid_13EF[] = { +static pci_id_t const pci_vid_13EF[] = { {0x13EF, 0xFFFF, 0xFFFF, 0xFFFF, "Coppercom Inc(0x13EF)"}, }; /* pci_vid_13EF[] */ -pci_id_t pci_vid_13F0[] = { +static pci_id_t const pci_vid_13F0[] = { {0x13F0, 0xFFFF, 0xFFFF, 0xFFFF, "Sundance Technology Inc / IC Plus Corp(0x13F0)"}, {0x13F0, 0x0200, 0xFFFF, 0xFFFF, "IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY(0x0200)"}, {0x13F0, 0x0200, 0x1043, 0x8213, "NX1001(0x1043-0x8213)"}, @@ -21233,28 +21320,28 @@ pci_id_t pci_vid_13F0[] = { {0x13F0, 0x1023, 0x1043, 0x8180, "NX1101(0x1043-0x8180)"}, }; /* pci_vid_13F0[] */ -pci_id_t pci_vid_13F1[] = { +static pci_id_t const pci_vid_13F1[] = { {0x13F1, 0xFFFF, 0xFFFF, 0xFFFF, "Oce' - Technologies B.V.(0x13F1)"}, }; /* pci_vid_13F1[] */ -pci_id_t pci_vid_13F2[] = { +static pci_id_t const pci_vid_13F2[] = { {0x13F2, 0xFFFF, 0xFFFF, 0xFFFF, "Ford Microelectronics Inc(0x13F2)"}, }; /* pci_vid_13F2[] */ -pci_id_t pci_vid_13F3[] = { +static pci_id_t const pci_vid_13F3[] = { {0x13F3, 0xFFFF, 0xFFFF, 0xFFFF, "Brocade Communications Systems, Inc.(0x13F3)"}, }; /* pci_vid_13F3[] */ -pci_id_t pci_vid_13F4[] = { +static pci_id_t const pci_vid_13F4[] = { {0x13F4, 0xFFFF, 0xFFFF, 0xFFFF, "Troika Networks, Inc.(0x13F4)"}, {0x13F4, 0x1401, 0xFFFF, 0xFFFF, "Zentai Fibre Channel Adapter(0x1401)"}, }; /* pci_vid_13F4[] */ -pci_id_t pci_vid_13F5[] = { +static pci_id_t const pci_vid_13F5[] = { {0x13F5, 0xFFFF, 0xFFFF, 0xFFFF, "Kansai Electric Co. Ltd(0x13F5)"}, }; /* pci_vid_13F5[] */ -pci_id_t pci_vid_13F6[] = { +static pci_id_t const pci_vid_13F6[] = { {0x13F6, 0xFFFF, 0xFFFF, 0xFFFF, "C-Media Electronics Inc(0x13F6)"}, {0x13F6, 0x0011, 0xFFFF, 0xFFFF, "CMI8738(0x0011)"}, {0x13F6, 0x0100, 0xFFFF, 0xFFFF, "CM8338A(0x0100)"}, @@ -21316,35 +21403,35 @@ pci_id_t pci_vid_13F6[] = { {0x13F6, 0x8788, 0x7284, 0x9787, "CLARO II(0x7284-0x9787)"}, }; /* pci_vid_13F6[] */ -pci_id_t pci_vid_13F7[] = { +static pci_id_t const pci_vid_13F7[] = { {0x13F7, 0xFFFF, 0xFFFF, 0xFFFF, "Wildfire Communications(0x13F7)"}, }; /* pci_vid_13F7[] */ -pci_id_t pci_vid_13F8[] = { +static pci_id_t const pci_vid_13F8[] = { {0x13F8, 0xFFFF, 0xFFFF, 0xFFFF, "Ad Lib Multimedia Inc(0x13F8)"}, }; /* pci_vid_13F8[] */ -pci_id_t pci_vid_13F9[] = { +static pci_id_t const pci_vid_13F9[] = { {0x13F9, 0xFFFF, 0xFFFF, 0xFFFF, "NTT Advanced Technology Corp.(0x13F9)"}, }; /* pci_vid_13F9[] */ -pci_id_t pci_vid_13FA[] = { +static pci_id_t const pci_vid_13FA[] = { {0x13FA, 0xFFFF, 0xFFFF, 0xFFFF, "Pentland Systems Ltd(0x13FA)"}, }; /* pci_vid_13FA[] */ -pci_id_t pci_vid_13FB[] = { +static pci_id_t const pci_vid_13FB[] = { {0x13FB, 0xFFFF, 0xFFFF, 0xFFFF, "Aydin Corp(0x13FB)"}, }; /* pci_vid_13FB[] */ -pci_id_t pci_vid_13FC[] = { +static pci_id_t const pci_vid_13FC[] = { {0x13FC, 0xFFFF, 0xFFFF, 0xFFFF, "Computer Peripherals International(0x13FC)"}, }; /* pci_vid_13FC[] */ -pci_id_t pci_vid_13FD[] = { +static pci_id_t const pci_vid_13FD[] = { {0x13FD, 0xFFFF, 0xFFFF, 0xFFFF, "Micro Science Inc(0x13FD)"}, }; /* pci_vid_13FD[] */ -pci_id_t pci_vid_13FE[] = { +static pci_id_t const pci_vid_13FE[] = { {0x13FE, 0xFFFF, 0xFFFF, 0xFFFF, "Advantech Co. Ltd(0x13FE)"}, {0x13FE, 0x0071, 0xFFFF, 0xFFFF, "PCIE-1761H, 8-ch Relay and 8-ch Isolated Digital Input Card(0x0071)"}, {0x13FE, 0x1240, 0xFFFF, 0xFFFF, "PCI-1240 4-channel stepper motor controller card(0x1240)"}, @@ -21370,20 +21457,20 @@ pci_id_t pci_vid_13FE[] = { {0x13FE, 0xC302, 0xFFFF, 0xFFFF, "MIOe-3680 2-Port CAN-Bus MIOe Module with Isolation Protection(0xC302)"}, }; /* pci_vid_13FE[] */ -pci_id_t pci_vid_13FF[] = { +static pci_id_t const pci_vid_13FF[] = { {0x13FF, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Spice Inc(0x13FF)"}, }; /* pci_vid_13FF[] */ -pci_id_t pci_vid_1400[] = { +static pci_id_t const pci_vid_1400[] = { {0x1400, 0xFFFF, 0xFFFF, 0xFFFF, "Artx Inc(0x1400)"}, {0x1400, 0x1401, 0xFFFF, 0xFFFF, "9432 TX(0x1401)"}, }; /* pci_vid_1400[] */ -pci_id_t pci_vid_1401[] = { +static pci_id_t const pci_vid_1401[] = { {0x1401, 0xFFFF, 0xFFFF, 0xFFFF, "CR-Systems A/S(0x1401)"}, }; /* pci_vid_1401[] */ -pci_id_t pci_vid_1402[] = { +static pci_id_t const pci_vid_1402[] = { {0x1402, 0xFFFF, 0xFFFF, 0xFFFF, "Meilhaus Electronic GmbH(0x1402)"}, {0x1402, 0x0630, 0xFFFF, 0xFFFF, "ME-630(0x0630)"}, {0x1402, 0x0940, 0xFFFF, 0xFFFF, "ME-94(0x0940)"}, @@ -21463,23 +21550,23 @@ pci_id_t pci_vid_1402[] = { {0x1402, 0x820B, 0xFFFF, 0xFFFF, "ME-8200B(0x820B)"}, }; /* pci_vid_1402[] */ -pci_id_t pci_vid_1403[] = { +static pci_id_t const pci_vid_1403[] = { {0x1403, 0xFFFF, 0xFFFF, 0xFFFF, "Ascor Inc(0x1403)"}, }; /* pci_vid_1403[] */ -pci_id_t pci_vid_1404[] = { +static pci_id_t const pci_vid_1404[] = { {0x1404, 0xFFFF, 0xFFFF, 0xFFFF, "Fundamental Software Inc(0x1404)"}, }; /* pci_vid_1404[] */ -pci_id_t pci_vid_1405[] = { +static pci_id_t const pci_vid_1405[] = { {0x1405, 0xFFFF, 0xFFFF, 0xFFFF, "Excalibur Systems Inc(0x1405)"}, }; /* pci_vid_1405[] */ -pci_id_t pci_vid_1406[] = { +static pci_id_t const pci_vid_1406[] = { {0x1406, 0xFFFF, 0xFFFF, 0xFFFF, "Oce' Printing Systems GmbH(0x1406)"}, }; /* pci_vid_1406[] */ -pci_id_t pci_vid_1407[] = { +static pci_id_t const pci_vid_1407[] = { {0x1407, 0xFFFF, 0xFFFF, 0xFFFF, "Lava Computer mfg Inc(0x1407)"}, {0x1407, 0x0100, 0xFFFF, 0xFFFF, "Lava Dual Serial(0x0100)"}, {0x1407, 0x0101, 0xFFFF, 0xFFFF, "Lava Quatro A(0x0101)"}, @@ -21506,11 +21593,11 @@ pci_id_t pci_vid_1407[] = { {0x1407, 0x8800, 0xFFFF, 0xFFFF, "BOCA Research IOPPAR(0x8800)"}, }; /* pci_vid_1407[] */ -pci_id_t pci_vid_1408[] = { +static pci_id_t const pci_vid_1408[] = { {0x1408, 0xFFFF, 0xFFFF, 0xFFFF, "Aloka Co. Ltd(0x1408)"}, }; /* pci_vid_1408[] */ -pci_id_t pci_vid_1409[] = { +static pci_id_t const pci_vid_1409[] = { {0x1409, 0xFFFF, 0xFFFF, 0xFFFF, "Timedia Technology Co Ltd(0x1409)"}, {0x1409, 0x7168, 0xFFFF, 0xFFFF, "PCI2S550 (Dual 16550 UART)(0x7168)"}, {0x1409, 0x7168, 0x1409, 0x0002, "SER4036A3V (2x RS232 port)(0x1409-0x0002)"}, @@ -21526,39 +21613,39 @@ pci_id_t pci_vid_1409[] = { {0x1409, 0x7268, 0x1409, 0x0104, "PAR4018A(0x1409-0x0104)"}, }; /* pci_vid_1409[] */ -pci_id_t pci_vid_140A[] = { +static pci_id_t const pci_vid_140A[] = { {0x140A, 0xFFFF, 0xFFFF, 0xFFFF, "DSP Research Inc(0x140A)"}, }; /* pci_vid_140A[] */ -pci_id_t pci_vid_140B[] = { +static pci_id_t const pci_vid_140B[] = { {0x140B, 0xFFFF, 0xFFFF, 0xFFFF, "Abaco Systems, Inc.(0x140B)"}, }; /* pci_vid_140B[] */ -pci_id_t pci_vid_140C[] = { +static pci_id_t const pci_vid_140C[] = { {0x140C, 0xFFFF, 0xFFFF, 0xFFFF, "Elmic Systems Inc(0x140C)"}, }; /* pci_vid_140C[] */ -pci_id_t pci_vid_140D[] = { +static pci_id_t const pci_vid_140D[] = { {0x140D, 0xFFFF, 0xFFFF, 0xFFFF, "Matsushita Electric Works Ltd(0x140D)"}, }; /* pci_vid_140D[] */ -pci_id_t pci_vid_140E[] = { +static pci_id_t const pci_vid_140E[] = { {0x140E, 0xFFFF, 0xFFFF, 0xFFFF, "Goepel Electronic GmbH(0x140E)"}, }; /* pci_vid_140E[] */ -pci_id_t pci_vid_140F[] = { +static pci_id_t const pci_vid_140F[] = { {0x140F, 0xFFFF, 0xFFFF, 0xFFFF, "Salient Systems Corp(0x140F)"}, }; /* pci_vid_140F[] */ -pci_id_t pci_vid_1410[] = { +static pci_id_t const pci_vid_1410[] = { {0x1410, 0xFFFF, 0xFFFF, 0xFFFF, "Midas lab Inc(0x1410)"}, }; /* pci_vid_1410[] */ -pci_id_t pci_vid_1411[] = { +static pci_id_t const pci_vid_1411[] = { {0x1411, 0xFFFF, 0xFFFF, 0xFFFF, "Ikos Systems Inc(0x1411)"}, }; /* pci_vid_1411[] */ -pci_id_t pci_vid_1412[] = { +static pci_id_t const pci_vid_1412[] = { {0x1412, 0xFFFF, 0xFFFF, 0xFFFF, "VIA Technologies Inc.(0x1412)"}, {0x1412, 0x1712, 0xFFFF, 0xFFFF, "ICE1712 [Envy24] PCI Multi-Channel I/O Controller(0x1712)"}, {0x1412, 0x1712, 0x1412, 0x1712, "Hoontech ST Audio DSP 24(0x1412-0x1712)"}, @@ -21597,11 +21684,11 @@ pci_id_t pci_vid_1412[] = { {0x1412, 0x1724, 0x3130, 0x4154, "MAYA 44 MKII(0x3130-0x4154)"}, }; /* pci_vid_1412[] */ -pci_id_t pci_vid_1413[] = { +static pci_id_t const pci_vid_1413[] = { {0x1413, 0xFFFF, 0xFFFF, 0xFFFF, "Addonics(0x1413)"}, }; /* pci_vid_1413[] */ -pci_id_t pci_vid_1414[] = { +static pci_id_t const pci_vid_1414[] = { {0x1414, 0xFFFF, 0xFFFF, 0xFFFF, "Microsoft Corporation(0x1414)"}, {0x1414, 0x0001, 0xFFFF, 0xFFFF, "MN-120 (ADMtek Centaur-C based)(0x0001)"}, {0x1414, 0x0002, 0xFFFF, 0xFFFF, "MN-130 (ADMtek Centaur-P based)(0x0002)"}, @@ -21621,7 +21708,7 @@ pci_id_t pci_vid_1414[] = { {0x1414, 0x5811, 0xFFFF, 0xFFFF, "Xenos GPU (Xenon)(0x5811)"}, }; /* pci_vid_1414[] */ -pci_id_t pci_vid_1415[] = { +static pci_id_t const pci_vid_1415[] = { {0x1415, 0xFFFF, 0xFFFF, 0xFFFF, "Oxford Semiconductor Ltd(0x1415)"}, {0x1415, 0x8401, 0xFFFF, 0xFFFF, "OX9162 Mode 1 (8-bit bus)(0x8401)"}, {0x1415, 0x8403, 0xFFFF, 0xFFFF, "OX9162 Mode 0 (parallel port)(0x8403)"}, @@ -21790,65 +21877,65 @@ pci_id_t pci_vid_1415[] = { {0x1415, 0xC5CF, 0xFFFF, 0xFFFF, "OXPCIe200 Native 950 UART(0xC5CF)"}, }; /* pci_vid_1415[] */ -pci_id_t pci_vid_1416[] = { +static pci_id_t const pci_vid_1416[] = { {0x1416, 0xFFFF, 0xFFFF, 0xFFFF, "Multiwave Innovation pte Ltd(0x1416)"}, }; /* pci_vid_1416[] */ -pci_id_t pci_vid_1417[] = { +static pci_id_t const pci_vid_1417[] = { {0x1417, 0xFFFF, 0xFFFF, 0xFFFF, "Convergenet Technologies Inc(0x1417)"}, }; /* pci_vid_1417[] */ -pci_id_t pci_vid_1418[] = { +static pci_id_t const pci_vid_1418[] = { {0x1418, 0xFFFF, 0xFFFF, 0xFFFF, "Kyushu electronics systems Inc(0x1418)"}, }; /* pci_vid_1418[] */ -pci_id_t pci_vid_1419[] = { +static pci_id_t const pci_vid_1419[] = { {0x1419, 0xFFFF, 0xFFFF, 0xFFFF, "Excel Switching Corp(0x1419)"}, }; /* pci_vid_1419[] */ -pci_id_t pci_vid_141A[] = { +static pci_id_t const pci_vid_141A[] = { {0x141A, 0xFFFF, 0xFFFF, 0xFFFF, "Apache Micro Peripherals Inc(0x141A)"}, }; /* pci_vid_141A[] */ -pci_id_t pci_vid_141B[] = { +static pci_id_t const pci_vid_141B[] = { {0x141B, 0xFFFF, 0xFFFF, 0xFFFF, "Zoom Telephonics Inc(0x141B)"}, }; /* pci_vid_141B[] */ -pci_id_t pci_vid_141D[] = { +static pci_id_t const pci_vid_141D[] = { {0x141D, 0xFFFF, 0xFFFF, 0xFFFF, "Digitan Systems Inc(0x141D)"}, }; /* pci_vid_141D[] */ -pci_id_t pci_vid_141E[] = { +static pci_id_t const pci_vid_141E[] = { {0x141E, 0xFFFF, 0xFFFF, 0xFFFF, "Fanuc Ltd(0x141E)"}, }; /* pci_vid_141E[] */ -pci_id_t pci_vid_141F[] = { +static pci_id_t const pci_vid_141F[] = { {0x141F, 0xFFFF, 0xFFFF, 0xFFFF, "Visiontech Ltd(0x141F)"}, }; /* pci_vid_141F[] */ -pci_id_t pci_vid_1420[] = { +static pci_id_t const pci_vid_1420[] = { {0x1420, 0xFFFF, 0xFFFF, 0xFFFF, "Psion Dacom plc(0x1420)"}, {0x1420, 0x8002, 0xFFFF, 0xFFFF, "Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)(0x8002)"}, {0x1420, 0x8003, 0xFFFF, 0xFFFF, "Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)(0x8003)"}, }; /* pci_vid_1420[] */ -pci_id_t pci_vid_1421[] = { +static pci_id_t const pci_vid_1421[] = { {0x1421, 0xFFFF, 0xFFFF, 0xFFFF, "Ads Technologies Inc(0x1421)"}, }; /* pci_vid_1421[] */ -pci_id_t pci_vid_1422[] = { +static pci_id_t const pci_vid_1422[] = { {0x1422, 0xFFFF, 0xFFFF, 0xFFFF, "Ygrec Systems Co Ltd(0x1422)"}, }; /* pci_vid_1422[] */ -pci_id_t pci_vid_1423[] = { +static pci_id_t const pci_vid_1423[] = { {0x1423, 0xFFFF, 0xFFFF, 0xFFFF, "Custom Technology Corp.(0x1423)"}, }; /* pci_vid_1423[] */ -pci_id_t pci_vid_1424[] = { +static pci_id_t const pci_vid_1424[] = { {0x1424, 0xFFFF, 0xFFFF, 0xFFFF, "Videoserver Connections(0x1424)"}, }; /* pci_vid_1424[] */ -pci_id_t pci_vid_1425[] = { +static pci_id_t const pci_vid_1425[] = { {0x1425, 0xFFFF, 0xFFFF, 0xFFFF, "Chelsio Communications Inc(0x1425)"}, {0x1425, 0x000B, 0xFFFF, 0xFFFF, "T210 Protocol Engine(0x000B)"}, {0x1425, 0x000C, 0xFFFF, 0xFFFF, "T204 Protocol Engine(0x000C)"}, @@ -22525,66 +22612,66 @@ pci_id_t pci_vid_1425[] = { {0x1425, 0xA000, 0xFFFF, 0xFFFF, "PE10K Unified Wire Ethernet Controller(0xA000)"}, }; /* pci_vid_1425[] */ -pci_id_t pci_vid_1426[] = { +static pci_id_t const pci_vid_1426[] = { {0x1426, 0xFFFF, 0xFFFF, 0xFFFF, "Storage Technology Corp.(0x1426)"}, }; /* pci_vid_1426[] */ -pci_id_t pci_vid_1427[] = { +static pci_id_t const pci_vid_1427[] = { {0x1427, 0xFFFF, 0xFFFF, 0xFFFF, "Better On-Line Solutions(0x1427)"}, }; /* pci_vid_1427[] */ -pci_id_t pci_vid_1428[] = { +static pci_id_t const pci_vid_1428[] = { {0x1428, 0xFFFF, 0xFFFF, 0xFFFF, "Edec Co Ltd(0x1428)"}, }; /* pci_vid_1428[] */ -pci_id_t pci_vid_1429[] = { +static pci_id_t const pci_vid_1429[] = { {0x1429, 0xFFFF, 0xFFFF, 0xFFFF, "Unex Technology Corp.(0x1429)"}, }; /* pci_vid_1429[] */ -pci_id_t pci_vid_142A[] = { +static pci_id_t const pci_vid_142A[] = { {0x142A, 0xFFFF, 0xFFFF, 0xFFFF, "Kingmax Technology Inc(0x142A)"}, }; /* pci_vid_142A[] */ -pci_id_t pci_vid_142B[] = { +static pci_id_t const pci_vid_142B[] = { {0x142B, 0xFFFF, 0xFFFF, 0xFFFF, "Radiolan(0x142B)"}, }; /* pci_vid_142B[] */ -pci_id_t pci_vid_142C[] = { +static pci_id_t const pci_vid_142C[] = { {0x142C, 0xFFFF, 0xFFFF, 0xFFFF, "Minton Optic Industry Co Ltd(0x142C)"}, }; /* pci_vid_142C[] */ -pci_id_t pci_vid_142D[] = { +static pci_id_t const pci_vid_142D[] = { {0x142D, 0xFFFF, 0xFFFF, 0xFFFF, "Pix stream Inc(0x142D)"}, }; /* pci_vid_142D[] */ -pci_id_t pci_vid_142E[] = { +static pci_id_t const pci_vid_142E[] = { {0x142E, 0xFFFF, 0xFFFF, 0xFFFF, "Vitec Multimedia(0x142E)"}, {0x142E, 0x4020, 0xFFFF, 0xFFFF, "VM2-2 [Video Maker 2] MPEG1/2 Encoder(0x4020)"}, {0x142E, 0x4337, 0xFFFF, 0xFFFF, "VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder(0x4337)"}, }; /* pci_vid_142E[] */ -pci_id_t pci_vid_142F[] = { +static pci_id_t const pci_vid_142F[] = { {0x142F, 0xFFFF, 0xFFFF, 0xFFFF, "Radicom Research Inc(0x142F)"}, }; /* pci_vid_142F[] */ -pci_id_t pci_vid_1430[] = { +static pci_id_t const pci_vid_1430[] = { {0x1430, 0xFFFF, 0xFFFF, 0xFFFF, "ITT Aerospace/Communications Division(0x1430)"}, }; /* pci_vid_1430[] */ -pci_id_t pci_vid_1431[] = { +static pci_id_t const pci_vid_1431[] = { {0x1431, 0xFFFF, 0xFFFF, 0xFFFF, "Gilat Satellite Networks(0x1431)"}, }; /* pci_vid_1431[] */ -pci_id_t pci_vid_1432[] = { +static pci_id_t const pci_vid_1432[] = { {0x1432, 0xFFFF, 0xFFFF, 0xFFFF, "Edimax Computer Co.(0x1432)"}, {0x1432, 0x9130, 0xFFFF, 0xFFFF, "RTL81xx Fast Ethernet(0x9130)"}, }; /* pci_vid_1432[] */ -pci_id_t pci_vid_1433[] = { +static pci_id_t const pci_vid_1433[] = { {0x1433, 0xFFFF, 0xFFFF, 0xFFFF, "Eltec Elektronik GmbH(0x1433)"}, }; /* pci_vid_1433[] */ -pci_id_t pci_vid_1435[] = { +static pci_id_t const pci_vid_1435[] = { {0x1435, 0xFFFF, 0xFFFF, 0xFFFF, "RTD Embedded Technologies, Inc.(0x1435)"}, {0x1435, 0x4520, 0xFFFF, 0xFFFF, "PCI4520(0x4520)"}, {0x1435, 0x6020, 0xFFFF, 0xFFFF, "SPM6020(0x6020)"}, @@ -22597,87 +22684,87 @@ pci_id_t pci_vid_1435[] = { {0x1435, 0x7820, 0xFFFF, 0xFFFF, "DM7820(0x7820)"}, }; /* pci_vid_1435[] */ -pci_id_t pci_vid_1436[] = { +static pci_id_t const pci_vid_1436[] = { {0x1436, 0xFFFF, 0xFFFF, 0xFFFF, "CIS Technology Inc(0x1436)"}, }; /* pci_vid_1436[] */ -pci_id_t pci_vid_1437[] = { +static pci_id_t const pci_vid_1437[] = { {0x1437, 0xFFFF, 0xFFFF, 0xFFFF, "Nissin Inc Co(0x1437)"}, }; /* pci_vid_1437[] */ -pci_id_t pci_vid_1438[] = { +static pci_id_t const pci_vid_1438[] = { {0x1438, 0xFFFF, 0xFFFF, 0xFFFF, "Atmel-dream(0x1438)"}, }; /* pci_vid_1438[] */ -pci_id_t pci_vid_1439[] = { +static pci_id_t const pci_vid_1439[] = { {0x1439, 0xFFFF, 0xFFFF, 0xFFFF, "Outsource Engineering & Mfg. Inc(0x1439)"}, }; /* pci_vid_1439[] */ -pci_id_t pci_vid_143A[] = { +static pci_id_t const pci_vid_143A[] = { {0x143A, 0xFFFF, 0xFFFF, 0xFFFF, "Stargate Solutions Inc(0x143A)"}, }; /* pci_vid_143A[] */ -pci_id_t pci_vid_143B[] = { +static pci_id_t const pci_vid_143B[] = { {0x143B, 0xFFFF, 0xFFFF, 0xFFFF, "Canon Research Center, America(0x143B)"}, }; /* pci_vid_143B[] */ -pci_id_t pci_vid_143C[] = { +static pci_id_t const pci_vid_143C[] = { {0x143C, 0xFFFF, 0xFFFF, 0xFFFF, "Amlogic Inc(0x143C)"}, }; /* pci_vid_143C[] */ -pci_id_t pci_vid_143D[] = { +static pci_id_t const pci_vid_143D[] = { {0x143D, 0xFFFF, 0xFFFF, 0xFFFF, "Tamarack Microelectronics Inc(0x143D)"}, }; /* pci_vid_143D[] */ -pci_id_t pci_vid_143E[] = { +static pci_id_t const pci_vid_143E[] = { {0x143E, 0xFFFF, 0xFFFF, 0xFFFF, "Jones Futurex Inc(0x143E)"}, }; /* pci_vid_143E[] */ -pci_id_t pci_vid_143F[] = { +static pci_id_t const pci_vid_143F[] = { {0x143F, 0xFFFF, 0xFFFF, 0xFFFF, "Lightwell Co Ltd - Zax Division(0x143F)"}, }; /* pci_vid_143F[] */ -pci_id_t pci_vid_1440[] = { +static pci_id_t const pci_vid_1440[] = { {0x1440, 0xFFFF, 0xFFFF, 0xFFFF, "ALGOL Corp.(0x1440)"}, }; /* pci_vid_1440[] */ -pci_id_t pci_vid_1441[] = { +static pci_id_t const pci_vid_1441[] = { {0x1441, 0xFFFF, 0xFFFF, 0xFFFF, "AGIE Ltd(0x1441)"}, }; /* pci_vid_1441[] */ -pci_id_t pci_vid_1442[] = { +static pci_id_t const pci_vid_1442[] = { {0x1442, 0xFFFF, 0xFFFF, 0xFFFF, "Phoenix Contact GmbH & Co.(0x1442)"}, }; /* pci_vid_1442[] */ -pci_id_t pci_vid_1443[] = { +static pci_id_t const pci_vid_1443[] = { {0x1443, 0xFFFF, 0xFFFF, 0xFFFF, "Unibrain S.A.(0x1443)"}, }; /* pci_vid_1443[] */ -pci_id_t pci_vid_1444[] = { +static pci_id_t const pci_vid_1444[] = { {0x1444, 0xFFFF, 0xFFFF, 0xFFFF, "TRW(0x1444)"}, }; /* pci_vid_1444[] */ -pci_id_t pci_vid_1445[] = { +static pci_id_t const pci_vid_1445[] = { {0x1445, 0xFFFF, 0xFFFF, 0xFFFF, "Logical DO Ltd(0x1445)"}, }; /* pci_vid_1445[] */ -pci_id_t pci_vid_1446[] = { +static pci_id_t const pci_vid_1446[] = { {0x1446, 0xFFFF, 0xFFFF, 0xFFFF, "Graphin Co Ltd(0x1446)"}, }; /* pci_vid_1446[] */ -pci_id_t pci_vid_1447[] = { +static pci_id_t const pci_vid_1447[] = { {0x1447, 0xFFFF, 0xFFFF, 0xFFFF, "AIM GmBH(0x1447)"}, }; /* pci_vid_1447[] */ -pci_id_t pci_vid_1448[] = { +static pci_id_t const pci_vid_1448[] = { {0x1448, 0xFFFF, 0xFFFF, 0xFFFF, "Alesis Studio Electronics(0x1448)"}, }; /* pci_vid_1448[] */ -pci_id_t pci_vid_1449[] = { +static pci_id_t const pci_vid_1449[] = { {0x1449, 0xFFFF, 0xFFFF, 0xFFFF, "TUT Systems Inc(0x1449)"}, }; /* pci_vid_1449[] */ -pci_id_t pci_vid_144A[] = { +static pci_id_t const pci_vid_144A[] = { {0x144A, 0xFFFF, 0xFFFF, 0xFFFF, "Adlink Technology(0x144A)"}, {0x144A, 0x6208, 0xFFFF, 0xFFFF, "PCI-6208V(0x6208)"}, {0x144A, 0x7250, 0xFFFF, 0xFFFF, "PCI-7250(0x7250)"}, @@ -22695,15 +22782,15 @@ pci_id_t pci_vid_144A[] = { {0x144A, 0xA001, 0xFFFF, 0xFFFF, "ADi-BSEC(0xA001)"}, }; /* pci_vid_144A[] */ -pci_id_t pci_vid_144B[] = { +static pci_id_t const pci_vid_144B[] = { {0x144B, 0xFFFF, 0xFFFF, 0xFFFF, "Verint Systems Inc.(0x144B)"}, }; /* pci_vid_144B[] */ -pci_id_t pci_vid_144C[] = { +static pci_id_t const pci_vid_144C[] = { {0x144C, 0xFFFF, 0xFFFF, 0xFFFF, "Catalina Research Inc(0x144C)"}, }; /* pci_vid_144C[] */ -pci_id_t pci_vid_144D[] = { +static pci_id_t const pci_vid_144D[] = { {0x144D, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Electronics Co Ltd(0x144D)"}, {0x144D, 0x1600, 0xFFFF, 0xFFFF, "S4LN053X01 AHCI SSD Controller(Apple slot)(0x1600)"}, {0x144D, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, @@ -22870,83 +22957,83 @@ pci_id_t pci_vid_144D[] = { {0x144D, 0xECEC, 0xFFFF, 0xFFFF, "Exynos 8895 PCIe Root Complex(0xECEC)"}, }; /* pci_vid_144D[] */ -pci_id_t pci_vid_144E[] = { +static pci_id_t const pci_vid_144E[] = { {0x144E, 0xFFFF, 0xFFFF, 0xFFFF, "OLITEC(0x144E)"}, }; /* pci_vid_144E[] */ -pci_id_t pci_vid_144F[] = { +static pci_id_t const pci_vid_144F[] = { {0x144F, 0xFFFF, 0xFFFF, 0xFFFF, "Askey Computer Corp.(0x144F)"}, }; /* pci_vid_144F[] */ -pci_id_t pci_vid_1450[] = { +static pci_id_t const pci_vid_1450[] = { {0x1450, 0xFFFF, 0xFFFF, 0xFFFF, "Octave Communications Ind.(0x1450)"}, }; /* pci_vid_1450[] */ -pci_id_t pci_vid_1451[] = { +static pci_id_t const pci_vid_1451[] = { {0x1451, 0xFFFF, 0xFFFF, 0xFFFF, "SP3D Chip Design GmBH(0x1451)"}, }; /* pci_vid_1451[] */ -pci_id_t pci_vid_1453[] = { +static pci_id_t const pci_vid_1453[] = { {0x1453, 0xFFFF, 0xFFFF, 0xFFFF, "MYCOM Inc(0x1453)"}, }; /* pci_vid_1453[] */ -pci_id_t pci_vid_1454[] = { +static pci_id_t const pci_vid_1454[] = { {0x1454, 0xFFFF, 0xFFFF, 0xFFFF, "Altiga Networks(0x1454)"}, }; /* pci_vid_1454[] */ -pci_id_t pci_vid_1455[] = { +static pci_id_t const pci_vid_1455[] = { {0x1455, 0xFFFF, 0xFFFF, 0xFFFF, "Logic Plus Plus Inc(0x1455)"}, }; /* pci_vid_1455[] */ -pci_id_t pci_vid_1456[] = { +static pci_id_t const pci_vid_1456[] = { {0x1456, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced Hardware Architectures(0x1456)"}, }; /* pci_vid_1456[] */ -pci_id_t pci_vid_1457[] = { +static pci_id_t const pci_vid_1457[] = { {0x1457, 0xFFFF, 0xFFFF, 0xFFFF, "Nuera Communications Inc(0x1457)"}, }; /* pci_vid_1457[] */ -pci_id_t pci_vid_1458[] = { +static pci_id_t const pci_vid_1458[] = { {0x1458, 0xFFFF, 0xFFFF, 0xFFFF, "Gigabyte Technology Co., Ltd(0x1458)"}, {0x1458, 0x1002, 0xFFFF, 0xFFFF, "Aourus Radeon RX6900XT Xtreme Waterforce WB 16G(0x1002)"}, {0x1458, 0x22E8, 0xFFFF, 0xFFFF, "Ellesmere [Radeon RX 480](0x22E8)"}, {0x1458, 0x3483, 0xFFFF, 0xFFFF, "USB 3.0 Controller (VIA VL80x-based xHCI Controller)(0x3483)"}, }; /* pci_vid_1458[] */ -pci_id_t pci_vid_1459[] = { +static pci_id_t const pci_vid_1459[] = { {0x1459, 0xFFFF, 0xFFFF, 0xFFFF, "DOOIN Electronics(0x1459)"}, }; /* pci_vid_1459[] */ -pci_id_t pci_vid_145A[] = { +static pci_id_t const pci_vid_145A[] = { {0x145A, 0xFFFF, 0xFFFF, 0xFFFF, "Escalate Networks Inc(0x145A)"}, }; /* pci_vid_145A[] */ -pci_id_t pci_vid_145B[] = { +static pci_id_t const pci_vid_145B[] = { {0x145B, 0xFFFF, 0xFFFF, 0xFFFF, "PRAIM SRL(0x145B)"}, }; /* pci_vid_145B[] */ -pci_id_t pci_vid_145C[] = { +static pci_id_t const pci_vid_145C[] = { {0x145C, 0xFFFF, 0xFFFF, 0xFFFF, "Cryptek(0x145C)"}, }; /* pci_vid_145C[] */ -pci_id_t pci_vid_145D[] = { +static pci_id_t const pci_vid_145D[] = { {0x145D, 0xFFFF, 0xFFFF, 0xFFFF, "Gallant Computer Inc(0x145D)"}, }; /* pci_vid_145D[] */ -pci_id_t pci_vid_145E[] = { +static pci_id_t const pci_vid_145E[] = { {0x145E, 0xFFFF, 0xFFFF, 0xFFFF, "Aashima Technology B.V.(0x145E)"}, }; /* pci_vid_145E[] */ -pci_id_t pci_vid_145F[] = { +static pci_id_t const pci_vid_145F[] = { {0x145F, 0xFFFF, 0xFFFF, 0xFFFF, "Baldor Electric Company(0x145F)"}, {0x145F, 0x0001, 0xFFFF, 0xFFFF, "NextMove PCI(0x0001)"}, }; /* pci_vid_145F[] */ -pci_id_t pci_vid_1460[] = { +static pci_id_t const pci_vid_1460[] = { {0x1460, 0xFFFF, 0xFFFF, 0xFFFF, "DYNARC INC(0x1460)"}, }; /* pci_vid_1460[] */ -pci_id_t pci_vid_1461[] = { +static pci_id_t const pci_vid_1461[] = { {0x1461, 0xFFFF, 0xFFFF, 0xFFFF, "Avermedia Technologies Inc(0x1461)"}, {0x1461, 0xA3CE, 0xFFFF, 0xFFFF, "M179(0xA3CE)"}, {0x1461, 0xA3CF, 0xFFFF, 0xFFFF, "M179(0xA3CF)"}, @@ -22955,231 +23042,231 @@ pci_id_t pci_vid_1461[] = { {0x1461, 0xF436, 0xFFFF, 0xFFFF, "AVerTV Hybrid+FM(0xF436)"}, }; /* pci_vid_1461[] */ -pci_id_t pci_vid_1462[] = { +static pci_id_t const pci_vid_1462[] = { {0x1462, 0xFFFF, 0xFFFF, 0xFFFF, "Micro-Star International Co., Ltd. [MSI](0x1462)"}, {0x1462, 0x3483, 0xFFFF, 0xFFFF, "MSI USB 3.0 (VIA VL80x-based xHCI USB Controller)(0x3483)"}, {0x1462, 0x7C56, 0xFFFF, 0xFFFF, "Realtek Ethernet controller RTL8111H(0x7C56)"}, {0x1462, 0xAAF0, 0xFFFF, 0xFFFF, "Radeon RX 580 Gaming X 8G(0xAAF0)"}, }; /* pci_vid_1462[] */ -pci_id_t pci_vid_1463[] = { +static pci_id_t const pci_vid_1463[] = { {0x1463, 0xFFFF, 0xFFFF, 0xFFFF, "Fast Corporation(0x1463)"}, }; /* pci_vid_1463[] */ -pci_id_t pci_vid_1464[] = { +static pci_id_t const pci_vid_1464[] = { {0x1464, 0xFFFF, 0xFFFF, 0xFFFF, "Interactive Circuits & Systems Ltd(0x1464)"}, }; /* pci_vid_1464[] */ -pci_id_t pci_vid_1465[] = { +static pci_id_t const pci_vid_1465[] = { {0x1465, 0xFFFF, 0xFFFF, 0xFFFF, "GN NETTEST Telecom DIV.(0x1465)"}, }; /* pci_vid_1465[] */ -pci_id_t pci_vid_1466[] = { +static pci_id_t const pci_vid_1466[] = { {0x1466, 0xFFFF, 0xFFFF, 0xFFFF, "Designpro Inc.(0x1466)"}, }; /* pci_vid_1466[] */ -pci_id_t pci_vid_1467[] = { +static pci_id_t const pci_vid_1467[] = { {0x1467, 0xFFFF, 0xFFFF, 0xFFFF, "DIGICOM SPA(0x1467)"}, }; /* pci_vid_1467[] */ -pci_id_t pci_vid_1468[] = { +static pci_id_t const pci_vid_1468[] = { {0x1468, 0xFFFF, 0xFFFF, 0xFFFF, "AMBIT Microsystem Corp.(0x1468)"}, }; /* pci_vid_1468[] */ -pci_id_t pci_vid_1469[] = { +static pci_id_t const pci_vid_1469[] = { {0x1469, 0xFFFF, 0xFFFF, 0xFFFF, "Cleveland Motion Controls(0x1469)"}, }; /* pci_vid_1469[] */ -pci_id_t pci_vid_146A[] = { +static pci_id_t const pci_vid_146A[] = { {0x146A, 0xFFFF, 0xFFFF, 0xFFFF, "Aeroflex(0x146A)"}, {0x146A, 0x3010, 0xFFFF, 0xFFFF, "3010 RF Synthesizer(0x3010)"}, {0x146A, 0x3A11, 0xFFFF, 0xFFFF, "3011A PXI RF Synthesizer(0x3A11)"}, }; /* pci_vid_146A[] */ -pci_id_t pci_vid_146B[] = { +static pci_id_t const pci_vid_146B[] = { {0x146B, 0xFFFF, 0xFFFF, 0xFFFF, "Parascan Technologies Ltd(0x146B)"}, }; /* pci_vid_146B[] */ -pci_id_t pci_vid_146C[] = { +static pci_id_t const pci_vid_146C[] = { {0x146C, 0xFFFF, 0xFFFF, 0xFFFF, "Ruby Tech Corp.(0x146C)"}, {0x146C, 0x1430, 0xFFFF, 0xFFFF, "FE-1430TX Fast Ethernet PCI Adapter(0x1430)"}, }; /* pci_vid_146C[] */ -pci_id_t pci_vid_146D[] = { +static pci_id_t const pci_vid_146D[] = { {0x146D, 0xFFFF, 0xFFFF, 0xFFFF, "Tachyon, INC.(0x146D)"}, }; /* pci_vid_146D[] */ -pci_id_t pci_vid_146E[] = { +static pci_id_t const pci_vid_146E[] = { {0x146E, 0xFFFF, 0xFFFF, 0xFFFF, "Williams Electronics Games, Inc.(0x146E)"}, }; /* pci_vid_146E[] */ -pci_id_t pci_vid_146F[] = { +static pci_id_t const pci_vid_146F[] = { {0x146F, 0xFFFF, 0xFFFF, 0xFFFF, "Multi Dimensional Consulting Inc(0x146F)"}, }; /* pci_vid_146F[] */ -pci_id_t pci_vid_1470[] = { +static pci_id_t const pci_vid_1470[] = { {0x1470, 0xFFFF, 0xFFFF, 0xFFFF, "Bay Networks(0x1470)"}, }; /* pci_vid_1470[] */ -pci_id_t pci_vid_1471[] = { +static pci_id_t const pci_vid_1471[] = { {0x1471, 0xFFFF, 0xFFFF, 0xFFFF, "Integrated Telecom Express Inc(0x1471)"}, }; /* pci_vid_1471[] */ -pci_id_t pci_vid_1472[] = { +static pci_id_t const pci_vid_1472[] = { {0x1472, 0xFFFF, 0xFFFF, 0xFFFF, "DAIKIN Industries, Ltd(0x1472)"}, }; /* pci_vid_1472[] */ -pci_id_t pci_vid_1473[] = { +static pci_id_t const pci_vid_1473[] = { {0x1473, 0xFFFF, 0xFFFF, 0xFFFF, "ZAPEX Technologies Inc(0x1473)"}, }; /* pci_vid_1473[] */ -pci_id_t pci_vid_1474[] = { +static pci_id_t const pci_vid_1474[] = { {0x1474, 0xFFFF, 0xFFFF, 0xFFFF, "Doug Carson & Associates(0x1474)"}, }; /* pci_vid_1474[] */ -pci_id_t pci_vid_1475[] = { +static pci_id_t const pci_vid_1475[] = { {0x1475, 0xFFFF, 0xFFFF, 0xFFFF, "PICAZO Communications(0x1475)"}, }; /* pci_vid_1475[] */ -pci_id_t pci_vid_1476[] = { +static pci_id_t const pci_vid_1476[] = { {0x1476, 0xFFFF, 0xFFFF, 0xFFFF, "MORTARA Instrument Inc(0x1476)"}, }; /* pci_vid_1476[] */ -pci_id_t pci_vid_1477[] = { +static pci_id_t const pci_vid_1477[] = { {0x1477, 0xFFFF, 0xFFFF, 0xFFFF, "Net Insight(0x1477)"}, }; /* pci_vid_1477[] */ -pci_id_t pci_vid_1478[] = { +static pci_id_t const pci_vid_1478[] = { {0x1478, 0xFFFF, 0xFFFF, 0xFFFF, "DIATREND Corporation(0x1478)"}, }; /* pci_vid_1478[] */ -pci_id_t pci_vid_1479[] = { +static pci_id_t const pci_vid_1479[] = { {0x1479, 0xFFFF, 0xFFFF, 0xFFFF, "TORAY Industries Inc(0x1479)"}, }; /* pci_vid_1479[] */ -pci_id_t pci_vid_147A[] = { +static pci_id_t const pci_vid_147A[] = { {0x147A, 0xFFFF, 0xFFFF, 0xFFFF, "FORMOSA Industrial Computing(0x147A)"}, }; /* pci_vid_147A[] */ -pci_id_t pci_vid_147B[] = { +static pci_id_t const pci_vid_147B[] = { {0x147B, 0xFFFF, 0xFFFF, 0xFFFF, "ABIT Computer Corp.(0x147B)"}, {0x147B, 0x1084, 0xFFFF, 0xFFFF, "IP35 [Dark Raider](0x1084)"}, }; /* pci_vid_147B[] */ -pci_id_t pci_vid_147C[] = { +static pci_id_t const pci_vid_147C[] = { {0x147C, 0xFFFF, 0xFFFF, 0xFFFF, "AWARE, Inc.(0x147C)"}, }; /* pci_vid_147C[] */ -pci_id_t pci_vid_147D[] = { +static pci_id_t const pci_vid_147D[] = { {0x147D, 0xFFFF, 0xFFFF, 0xFFFF, "Interworks Computer Products(0x147D)"}, }; /* pci_vid_147D[] */ -pci_id_t pci_vid_147E[] = { +static pci_id_t const pci_vid_147E[] = { {0x147E, 0xFFFF, 0xFFFF, 0xFFFF, "Matsushita Graphic Communication Systems, Inc.(0x147E)"}, }; /* pci_vid_147E[] */ -pci_id_t pci_vid_147F[] = { +static pci_id_t const pci_vid_147F[] = { {0x147F, 0xFFFF, 0xFFFF, 0xFFFF, "NIHON UNISYS, Ltd.(0x147F)"}, }; /* pci_vid_147F[] */ -pci_id_t pci_vid_1480[] = { +static pci_id_t const pci_vid_1480[] = { {0x1480, 0xFFFF, 0xFFFF, 0xFFFF, "SCII Telecom(0x1480)"}, }; /* pci_vid_1480[] */ -pci_id_t pci_vid_1481[] = { +static pci_id_t const pci_vid_1481[] = { {0x1481, 0xFFFF, 0xFFFF, 0xFFFF, "BIOPAC Systems Inc(0x1481)"}, }; /* pci_vid_1481[] */ -pci_id_t pci_vid_1482[] = { +static pci_id_t const pci_vid_1482[] = { {0x1482, 0xFFFF, 0xFFFF, 0xFFFF, "ISYTEC - Integrierte Systemtechnik GmBH(0x1482)"}, {0x1482, 0x0001, 0xFFFF, 0xFFFF, "PCI-16 Host Interface for ITC-16(0x0001)"}, }; /* pci_vid_1482[] */ -pci_id_t pci_vid_1483[] = { +static pci_id_t const pci_vid_1483[] = { {0x1483, 0xFFFF, 0xFFFF, 0xFFFF, "LABWAY Corporation(0x1483)"}, }; /* pci_vid_1483[] */ -pci_id_t pci_vid_1484[] = { +static pci_id_t const pci_vid_1484[] = { {0x1484, 0xFFFF, 0xFFFF, 0xFFFF, "Logic Corporation(0x1484)"}, }; /* pci_vid_1484[] */ -pci_id_t pci_vid_1485[] = { +static pci_id_t const pci_vid_1485[] = { {0x1485, 0xFFFF, 0xFFFF, 0xFFFF, "ERMA - Electronic GmBH(0x1485)"}, }; /* pci_vid_1485[] */ -pci_id_t pci_vid_1486[] = { +static pci_id_t const pci_vid_1486[] = { {0x1486, 0xFFFF, 0xFFFF, 0xFFFF, "L3 Communications Telemetry & Instrumentation(0x1486)"}, }; /* pci_vid_1486[] */ -pci_id_t pci_vid_1487[] = { +static pci_id_t const pci_vid_1487[] = { {0x1487, 0xFFFF, 0xFFFF, 0xFFFF, "MARQUETTE Medical Systems(0x1487)"}, }; /* pci_vid_1487[] */ -pci_id_t pci_vid_1489[] = { +static pci_id_t const pci_vid_1489[] = { {0x1489, 0xFFFF, 0xFFFF, 0xFFFF, "KYE Systems Corporation(0x1489)"}, }; /* pci_vid_1489[] */ -pci_id_t pci_vid_148A[] = { +static pci_id_t const pci_vid_148A[] = { {0x148A, 0xFFFF, 0xFFFF, 0xFFFF, "OPTO(0x148A)"}, }; /* pci_vid_148A[] */ -pci_id_t pci_vid_148B[] = { +static pci_id_t const pci_vid_148B[] = { {0x148B, 0xFFFF, 0xFFFF, 0xFFFF, "INNOMEDIALOGIC Inc.(0x148B)"}, }; /* pci_vid_148B[] */ -pci_id_t pci_vid_148C[] = { +static pci_id_t const pci_vid_148C[] = { {0x148C, 0xFFFF, 0xFFFF, 0xFFFF, "Tul Corporation / PowerColor(0x148C)"}, {0x148C, 0x2391, 0xFFFF, 0xFFFF, "Radeon RX 590 [Red Devil](0x2391)"}, {0x148C, 0x2398, 0xFFFF, 0xFFFF, "AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT](0x2398)"}, }; /* pci_vid_148C[] */ -pci_id_t pci_vid_148D[] = { +static pci_id_t const pci_vid_148D[] = { {0x148D, 0xFFFF, 0xFFFF, 0xFFFF, "DIGICOM Systems, Inc.(0x148D)"}, {0x148D, 0x1003, 0xFFFF, 0xFFFF, "HCF 56k Data/Fax Modem(0x1003)"}, }; /* pci_vid_148D[] */ -pci_id_t pci_vid_148E[] = { +static pci_id_t const pci_vid_148E[] = { {0x148E, 0xFFFF, 0xFFFF, 0xFFFF, "OSI Plus Corporation(0x148E)"}, }; /* pci_vid_148E[] */ -pci_id_t pci_vid_148F[] = { +static pci_id_t const pci_vid_148F[] = { {0x148F, 0xFFFF, 0xFFFF, 0xFFFF, "Plant Equipment, Inc.(0x148F)"}, }; /* pci_vid_148F[] */ -pci_id_t pci_vid_1490[] = { +static pci_id_t const pci_vid_1490[] = { {0x1490, 0xFFFF, 0xFFFF, 0xFFFF, "Stone Microsystems PTY Ltd.(0x1490)"}, }; /* pci_vid_1490[] */ -pci_id_t pci_vid_1491[] = { +static pci_id_t const pci_vid_1491[] = { {0x1491, 0xFFFF, 0xFFFF, 0xFFFF, "ZEAL Corporation(0x1491)"}, }; /* pci_vid_1491[] */ -pci_id_t pci_vid_1492[] = { +static pci_id_t const pci_vid_1492[] = { {0x1492, 0xFFFF, 0xFFFF, 0xFFFF, "Time Logic Corporation(0x1492)"}, }; /* pci_vid_1492[] */ -pci_id_t pci_vid_1493[] = { +static pci_id_t const pci_vid_1493[] = { {0x1493, 0xFFFF, 0xFFFF, 0xFFFF, "MAKER Communications(0x1493)"}, }; /* pci_vid_1493[] */ -pci_id_t pci_vid_1494[] = { +static pci_id_t const pci_vid_1494[] = { {0x1494, 0xFFFF, 0xFFFF, 0xFFFF, "WINTOP Technology, Inc.(0x1494)"}, }; /* pci_vid_1494[] */ -pci_id_t pci_vid_1495[] = { +static pci_id_t const pci_vid_1495[] = { {0x1495, 0xFFFF, 0xFFFF, 0xFFFF, "TOKAI Communications Industry Co. Ltd(0x1495)"}, }; /* pci_vid_1495[] */ -pci_id_t pci_vid_1496[] = { +static pci_id_t const pci_vid_1496[] = { {0x1496, 0xFFFF, 0xFFFF, 0xFFFF, "JOYTECH Computer Co., Ltd.(0x1496)"}, }; /* pci_vid_1496[] */ -pci_id_t pci_vid_1497[] = { +static pci_id_t const pci_vid_1497[] = { {0x1497, 0xFFFF, 0xFFFF, 0xFFFF, "SMA Regelsysteme GmBH(0x1497)"}, {0x1497, 0x1497, 0xFFFF, 0xFFFF, "SMA Technologie AG(0x1497)"}, }; /* pci_vid_1497[] */ -pci_id_t pci_vid_1498[] = { +static pci_id_t const pci_vid_1498[] = { {0x1498, 0xFFFF, 0xFFFF, 0xFFFF, "TEWS Technologies GmbH(0x1498)"}, {0x1498, 0x0330, 0xFFFF, 0xFFFF, "TPMC816 2 Channel CAN bus controller.(0x0330)"}, {0x1498, 0x035D, 0xFFFF, 0xFFFF, "TPMC861 4-Channel Isolated Serial Interface RS422/RS485(0x035D)"}, @@ -23192,53 +23279,53 @@ pci_id_t pci_vid_1498[] = { {0x1498, 0x9177, 0xFFFF, 0xFFFF, "TXMC375 8 channel RS232/RS422/RS485 programmable serial interface(0x9177)"}, }; /* pci_vid_1498[] */ -pci_id_t pci_vid_1499[] = { +static pci_id_t const pci_vid_1499[] = { {0x1499, 0xFFFF, 0xFFFF, 0xFFFF, "EMTEC CO., Ltd(0x1499)"}, }; /* pci_vid_1499[] */ -pci_id_t pci_vid_149A[] = { +static pci_id_t const pci_vid_149A[] = { {0x149A, 0xFFFF, 0xFFFF, 0xFFFF, "ANDOR Technology Ltd(0x149A)"}, }; /* pci_vid_149A[] */ -pci_id_t pci_vid_149B[] = { +static pci_id_t const pci_vid_149B[] = { {0x149B, 0xFFFF, 0xFFFF, 0xFFFF, "SEIKO Instruments Inc(0x149B)"}, }; /* pci_vid_149B[] */ -pci_id_t pci_vid_149C[] = { +static pci_id_t const pci_vid_149C[] = { {0x149C, 0xFFFF, 0xFFFF, 0xFFFF, "OVISLINK Corp.(0x149C)"}, }; /* pci_vid_149C[] */ -pci_id_t pci_vid_149D[] = { +static pci_id_t const pci_vid_149D[] = { {0x149D, 0xFFFF, 0xFFFF, 0xFFFF, "NEWTEK Inc(0x149D)"}, {0x149D, 0x0001, 0xFFFF, 0xFFFF, "Video Toaster for PC(0x0001)"}, }; /* pci_vid_149D[] */ -pci_id_t pci_vid_149E[] = { +static pci_id_t const pci_vid_149E[] = { {0x149E, 0xFFFF, 0xFFFF, 0xFFFF, "Mapletree Networks Inc.(0x149E)"}, }; /* pci_vid_149E[] */ -pci_id_t pci_vid_149F[] = { +static pci_id_t const pci_vid_149F[] = { {0x149F, 0xFFFF, 0xFFFF, 0xFFFF, "LECTRON Co Ltd(0x149F)"}, }; /* pci_vid_149F[] */ -pci_id_t pci_vid_14A0[] = { +static pci_id_t const pci_vid_14A0[] = { {0x14A0, 0xFFFF, 0xFFFF, 0xFFFF, "SOFTING GmBH(0x14A0)"}, }; /* pci_vid_14A0[] */ -pci_id_t pci_vid_14A1[] = { +static pci_id_t const pci_vid_14A1[] = { {0x14A1, 0xFFFF, 0xFFFF, 0xFFFF, "Systembase Co Ltd(0x14A1)"}, {0x14A1, 0x4D02, 0xFFFF, 0xFFFF, "SB16C1052PCI [Multi-2/PCIe RS232](0x4D02)"}, }; /* pci_vid_14A1[] */ -pci_id_t pci_vid_14A2[] = { +static pci_id_t const pci_vid_14A2[] = { {0x14A2, 0xFFFF, 0xFFFF, 0xFFFF, "Millennium Engineering Inc(0x14A2)"}, }; /* pci_vid_14A2[] */ -pci_id_t pci_vid_14A3[] = { +static pci_id_t const pci_vid_14A3[] = { {0x14A3, 0xFFFF, 0xFFFF, 0xFFFF, "Maverick Networks(0x14A3)"}, }; /* pci_vid_14A3[] */ -pci_id_t pci_vid_14A4[] = { +static pci_id_t const pci_vid_14A4[] = { {0x14A4, 0xFFFF, 0xFFFF, 0xFFFF, "Lite-On Technology Corporation(0x14A4)"}, {0x14A4, 0x2100, 0xFFFF, 0xFFFF, "CA1-8D128 NVMe SSD(0x2100)"}, {0x14A4, 0x2200, 0xFFFF, 0xFFFF, "CX2-8B256, CX2-8B512 NVMe SSD(0x2200)"}, @@ -23253,73 +23340,73 @@ pci_id_t pci_vid_14A4[] = { {0x14A4, 0x9100, 0xFFFF, 0xFFFF, "CL1-3D256, CL1-8D512 NVMe SSD (DRAM-less)(0x9100)"}, }; /* pci_vid_14A4[] */ -pci_id_t pci_vid_14A5[] = { +static pci_id_t const pci_vid_14A5[] = { {0x14A5, 0xFFFF, 0xFFFF, 0xFFFF, "XIONICS Document Technologies Inc(0x14A5)"}, }; /* pci_vid_14A5[] */ -pci_id_t pci_vid_14A6[] = { +static pci_id_t const pci_vid_14A6[] = { {0x14A6, 0xFFFF, 0xFFFF, 0xFFFF, "INOVA Computers GmBH & Co KG(0x14A6)"}, }; /* pci_vid_14A6[] */ -pci_id_t pci_vid_14A7[] = { +static pci_id_t const pci_vid_14A7[] = { {0x14A7, 0xFFFF, 0xFFFF, 0xFFFF, "MYTHOS Systems Inc(0x14A7)"}, }; /* pci_vid_14A7[] */ -pci_id_t pci_vid_14A8[] = { +static pci_id_t const pci_vid_14A8[] = { {0x14A8, 0xFFFF, 0xFFFF, 0xFFFF, "FEATRON Technologies Corporation(0x14A8)"}, }; /* pci_vid_14A8[] */ -pci_id_t pci_vid_14A9[] = { +static pci_id_t const pci_vid_14A9[] = { {0x14A9, 0xFFFF, 0xFFFF, 0xFFFF, "HIVERTEC Inc(0x14A9)"}, }; /* pci_vid_14A9[] */ -pci_id_t pci_vid_14AA[] = { +static pci_id_t const pci_vid_14AA[] = { {0x14AA, 0xFFFF, 0xFFFF, 0xFFFF, "Advanced MOS Technology Inc(0x14AA)"}, }; /* pci_vid_14AA[] */ -pci_id_t pci_vid_14AB[] = { +static pci_id_t const pci_vid_14AB[] = { {0x14AB, 0xFFFF, 0xFFFF, 0xFFFF, "Siemens Industry Software Inc.(0x14AB)"}, }; /* pci_vid_14AB[] */ -pci_id_t pci_vid_14AC[] = { +static pci_id_t const pci_vid_14AC[] = { {0x14AC, 0xFFFF, 0xFFFF, 0xFFFF, "Novaweb Technologies Inc(0x14AC)"}, }; /* pci_vid_14AC[] */ -pci_id_t pci_vid_14AD[] = { +static pci_id_t const pci_vid_14AD[] = { {0x14AD, 0xFFFF, 0xFFFF, 0xFFFF, "Time Space Radio AB(0x14AD)"}, }; /* pci_vid_14AD[] */ -pci_id_t pci_vid_14AE[] = { +static pci_id_t const pci_vid_14AE[] = { {0x14AE, 0xFFFF, 0xFFFF, 0xFFFF, "CTI, Inc(0x14AE)"}, }; /* pci_vid_14AE[] */ -pci_id_t pci_vid_14AF[] = { +static pci_id_t const pci_vid_14AF[] = { {0x14AF, 0xFFFF, 0xFFFF, 0xFFFF, "Guillemot Corporation(0x14AF)"}, {0x14AF, 0x7102, 0xFFFF, 0xFFFF, "3D Prophet II MX(0x7102)"}, }; /* pci_vid_14AF[] */ -pci_id_t pci_vid_14B0[] = { +static pci_id_t const pci_vid_14B0[] = { {0x14B0, 0xFFFF, 0xFFFF, 0xFFFF, "BST Communication Technology Ltd(0x14B0)"}, }; /* pci_vid_14B0[] */ -pci_id_t pci_vid_14B1[] = { +static pci_id_t const pci_vid_14B1[] = { {0x14B1, 0xFFFF, 0xFFFF, 0xFFFF, "Nextcom K.K.(0x14B1)"}, }; /* pci_vid_14B1[] */ -pci_id_t pci_vid_14B2[] = { +static pci_id_t const pci_vid_14B2[] = { {0x14B2, 0xFFFF, 0xFFFF, 0xFFFF, "ENNOVATE Networks Inc(0x14B2)"}, }; /* pci_vid_14B2[] */ -pci_id_t pci_vid_14B3[] = { +static pci_id_t const pci_vid_14B3[] = { {0x14B3, 0xFFFF, 0xFFFF, 0xFFFF, "XPEED Inc(0x14B3)"}, {0x14B3, 0x0000, 0xFFFF, 0xFFFF, "DSL NIC(0x0000)"}, }; /* pci_vid_14B3[] */ -pci_id_t pci_vid_14B4[] = { +static pci_id_t const pci_vid_14B4[] = { {0x14B4, 0xFFFF, 0xFFFF, 0xFFFF, "PHILIPS Business Electronics B.V.(0x14B4)"}, }; /* pci_vid_14B4[] */ -pci_id_t pci_vid_14B5[] = { +static pci_id_t const pci_vid_14B5[] = { {0x14B5, 0xFFFF, 0xFFFF, 0xFFFF, "Creamware GmBH(0x14B5)"}, {0x14B5, 0x0200, 0xFFFF, 0xFFFF, "Scope(0x0200)"}, {0x14B5, 0x0300, 0xFFFF, 0xFFFF, "Pulsar(0x0300)"}, @@ -23331,20 +23418,20 @@ pci_id_t pci_vid_14B5[] = { {0x14B5, 0x0B00, 0xFFFF, 0xFFFF, "DSP-Board(0x0B00)"}, }; /* pci_vid_14B5[] */ -pci_id_t pci_vid_14B6[] = { +static pci_id_t const pci_vid_14B6[] = { {0x14B6, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum Data Corp.(0x14B6)"}, }; /* pci_vid_14B6[] */ -pci_id_t pci_vid_14B7[] = { +static pci_id_t const pci_vid_14B7[] = { {0x14B7, 0xFFFF, 0xFFFF, 0xFFFF, "PROXIM Inc(0x14B7)"}, {0x14B7, 0x0001, 0xFFFF, 0xFFFF, "Symphony 4110(0x0001)"}, }; /* pci_vid_14B7[] */ -pci_id_t pci_vid_14B8[] = { +static pci_id_t const pci_vid_14B8[] = { {0x14B8, 0xFFFF, 0xFFFF, 0xFFFF, "Techsoft Technology Co Ltd(0x14B8)"}, }; /* pci_vid_14B8[] */ -pci_id_t pci_vid_14B9[] = { +static pci_id_t const pci_vid_14B9[] = { {0x14B9, 0xFFFF, 0xFFFF, 0xFFFF, "Cisco Aironet Wireless Communications(0x14B9)"}, {0x14B9, 0x0001, 0xFFFF, 0xFFFF, "PC4800(0x0001)"}, {0x14B9, 0x0340, 0xFFFF, 0xFFFF, "PC4800(0x0340)"}, @@ -23356,39 +23443,39 @@ pci_id_t pci_vid_14B9[] = { {0x14B9, 0xA506, 0xFFFF, 0xFFFF, "Cisco Aironet Mini PCI b/g(0xA506)"}, }; /* pci_vid_14B9[] */ -pci_id_t pci_vid_14BA[] = { +static pci_id_t const pci_vid_14BA[] = { {0x14BA, 0xFFFF, 0xFFFF, 0xFFFF, "INTERNIX Inc.(0x14BA)"}, {0x14BA, 0x0600, 0xFFFF, 0xFFFF, "ARC-PCI/22(0x0600)"}, }; /* pci_vid_14BA[] */ -pci_id_t pci_vid_14BB[] = { +static pci_id_t const pci_vid_14BB[] = { {0x14BB, 0xFFFF, 0xFFFF, 0xFFFF, "SEMTECH Corporation(0x14BB)"}, }; /* pci_vid_14BB[] */ -pci_id_t pci_vid_14BC[] = { +static pci_id_t const pci_vid_14BC[] = { {0x14BC, 0xFFFF, 0xFFFF, 0xFFFF, "Globespan Semiconductor Inc.(0x14BC)"}, {0x14BC, 0xD002, 0xFFFF, 0xFFFF, "Pulsar [PCI ADSL Card](0xD002)"}, {0x14BC, 0xD00F, 0xFFFF, 0xFFFF, "Pulsar [PCI ADSL Card](0xD00F)"}, }; /* pci_vid_14BC[] */ -pci_id_t pci_vid_14BD[] = { +static pci_id_t const pci_vid_14BD[] = { {0x14BD, 0xFFFF, 0xFFFF, 0xFFFF, "CARDIO Control N.V.(0x14BD)"}, }; /* pci_vid_14BD[] */ -pci_id_t pci_vid_14BE[] = { +static pci_id_t const pci_vid_14BE[] = { {0x14BE, 0xFFFF, 0xFFFF, 0xFFFF, "L3 Communications(0x14BE)"}, }; /* pci_vid_14BE[] */ -pci_id_t pci_vid_14BF[] = { +static pci_id_t const pci_vid_14BF[] = { {0x14BF, 0xFFFF, 0xFFFF, 0xFFFF, "SPIDER Communications Inc.(0x14BF)"}, }; /* pci_vid_14BF[] */ -pci_id_t pci_vid_14C0[] = { +static pci_id_t const pci_vid_14C0[] = { {0x14C0, 0xFFFF, 0xFFFF, 0xFFFF, "COMPAL Electronics Inc(0x14C0)"}, {0x14C0, 0x1201, 0xFFFF, 0xFFFF, "X550 10Gb 2P RJ45 OCP Mezz(0x1201)"}, }; /* pci_vid_14C0[] */ -pci_id_t pci_vid_14C1[] = { +static pci_id_t const pci_vid_14C1[] = { {0x14C1, 0xFFFF, 0xFFFF, 0xFFFF, "MYRICOM Inc.(0x14C1)"}, {0x14C1, 0x0008, 0xFFFF, 0xFFFF, "Myri-10G Dual-Protocol NIC(0x0008)"}, {0x14C1, 0x0008, 0x14C1, 0x0008, "10G-PCIE-8A(0x14C1-0x0008)"}, @@ -23398,14 +23485,15 @@ pci_id_t pci_vid_14C1[] = { {0x14C1, 0x8043, 0x103C, 0x1240, "Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)(0x103C-0x1240)"}, }; /* pci_vid_14C1[] */ -pci_id_t pci_vid_14C2[] = { +static pci_id_t const pci_vid_14C2[] = { {0x14C2, 0xFFFF, 0xFFFF, 0xFFFF, "DTK Computer(0x14C2)"}, }; /* pci_vid_14C2[] */ -pci_id_t pci_vid_14C3[] = { +static pci_id_t const pci_vid_14C3[] = { {0x14C3, 0xFFFF, 0xFFFF, 0xFFFF, "MEDIATEK Corp.(0x14C3)"}, {0x14C3, 0x0608, 0xFFFF, 0xFFFF, "MT7921K (RZ608) Wi-Fi 6E 80MHz(0x0608)"}, {0x14C3, 0x0616, 0xFFFF, 0xFFFF, "MT7922 802.11ax PCI Express Wireless Network Adapter(0x0616)"}, +{0x14C3, 0x7603, 0xFFFF, 0xFFFF, "MT7603E 802.11bgn PCI Express Wireless Network Adapter(0x7603)"}, {0x14C3, 0x7612, 0xFFFF, 0xFFFF, "MT7612E 802.11acbgn PCI Express Wireless Network Adapter(0x7612)"}, {0x14C3, 0x7615, 0xFFFF, 0xFFFF, "MT7615E 802.11ac PCI Express Wireless Network Adapter(0x7615)"}, {0x14C3, 0x7630, 0xFFFF, 0xFFFF, "MT7630e 802.11bgn Wireless Network Adapter(0x7630)"}, @@ -23416,68 +23504,69 @@ pci_id_t pci_vid_14C3[] = { {0x14C3, 0x7922, 0xFFFF, 0xFFFF, "MT7922 802.11ax PCI Express Wireless Network Adapter(0x7922)"}, {0x14C3, 0x7922, 0x1A3B, 0x5300, "ASUS PCE-AXE59BT(0x1A3B-0x5300)"}, {0x14C3, 0x7961, 0xFFFF, 0xFFFF, "MT7921 802.11ax PCI Express Wireless Network Adapter(0x7961)"}, +{0x14C3, 0x8650, 0xFFFF, 0xFFFF, "MT7650 Bluetooth(0x8650)"}, }; /* pci_vid_14C3[] */ -pci_id_t pci_vid_14C4[] = { +static pci_id_t const pci_vid_14C4[] = { {0x14C4, 0xFFFF, 0xFFFF, 0xFFFF, "IWASAKI Information Systems Co Ltd(0x14C4)"}, }; /* pci_vid_14C4[] */ -pci_id_t pci_vid_14C5[] = { +static pci_id_t const pci_vid_14C5[] = { {0x14C5, 0xFFFF, 0xFFFF, 0xFFFF, "Automation Products AB(0x14C5)"}, }; /* pci_vid_14C5[] */ -pci_id_t pci_vid_14C6[] = { +static pci_id_t const pci_vid_14C6[] = { {0x14C6, 0xFFFF, 0xFFFF, 0xFFFF, "Data Race Inc(0x14C6)"}, }; /* pci_vid_14C6[] */ -pci_id_t pci_vid_14C7[] = { +static pci_id_t const pci_vid_14C7[] = { {0x14C7, 0xFFFF, 0xFFFF, 0xFFFF, "Modular Technology Holdings Ltd(0x14C7)"}, }; /* pci_vid_14C7[] */ -pci_id_t pci_vid_14C8[] = { +static pci_id_t const pci_vid_14C8[] = { {0x14C8, 0xFFFF, 0xFFFF, 0xFFFF, "Turbocomm Tech. Inc.(0x14C8)"}, }; /* pci_vid_14C8[] */ -pci_id_t pci_vid_14C9[] = { +static pci_id_t const pci_vid_14C9[] = { {0x14C9, 0xFFFF, 0xFFFF, 0xFFFF, "ODIN Telesystems Inc(0x14C9)"}, }; /* pci_vid_14C9[] */ -pci_id_t pci_vid_14CA[] = { +static pci_id_t const pci_vid_14CA[] = { {0x14CA, 0xFFFF, 0xFFFF, 0xFFFF, "PE Logic Corp.(0x14CA)"}, }; /* pci_vid_14CA[] */ -pci_id_t pci_vid_14CB[] = { +static pci_id_t const pci_vid_14CB[] = { {0x14CB, 0xFFFF, 0xFFFF, 0xFFFF, "Billionton Systems Inc(0x14CB)"}, }; /* pci_vid_14CB[] */ -pci_id_t pci_vid_14CC[] = { +static pci_id_t const pci_vid_14CC[] = { {0x14CC, 0xFFFF, 0xFFFF, 0xFFFF, "NAKAYO Telecommunications Inc(0x14CC)"}, }; /* pci_vid_14CC[] */ -pci_id_t pci_vid_14CD[] = { +static pci_id_t const pci_vid_14CD[] = { {0x14CD, 0xFFFF, 0xFFFF, 0xFFFF, "Universal Global Scientific Industrial Co.,Ltd(0x14CD)"}, {0x14CD, 0x0001, 0xFFFF, 0xFFFF, "USI-1514-1GbaseT [OCP1](0x0001)"}, {0x14CD, 0x0002, 0xFFFF, 0xFFFF, "USI-4227-SFP [OCP2](0x0002)"}, {0x14CD, 0x0003, 0xFFFF, 0xFFFF, "USI-X557-10GbaseT [OCP3](0x0003)"}, }; /* pci_vid_14CD[] */ -pci_id_t pci_vid_14CE[] = { +static pci_id_t const pci_vid_14CE[] = { {0x14CE, 0xFFFF, 0xFFFF, 0xFFFF, "Whistle Communications(0x14CE)"}, }; /* pci_vid_14CE[] */ -pci_id_t pci_vid_14CF[] = { +static pci_id_t const pci_vid_14CF[] = { {0x14CF, 0xFFFF, 0xFFFF, 0xFFFF, "TEK Microsystems Inc.(0x14CF)"}, }; /* pci_vid_14CF[] */ -pci_id_t pci_vid_14D0[] = { +static pci_id_t const pci_vid_14D0[] = { {0x14D0, 0xFFFF, 0xFFFF, 0xFFFF, "Ericsson Axe R & D(0x14D0)"}, }; /* pci_vid_14D0[] */ -pci_id_t pci_vid_14D1[] = { +static pci_id_t const pci_vid_14D1[] = { {0x14D1, 0xFFFF, 0xFFFF, 0xFFFF, "Computer Hi-Tech Co Ltd(0x14D1)"}, }; /* pci_vid_14D1[] */ -pci_id_t pci_vid_14D2[] = { +static pci_id_t const pci_vid_14D2[] = { {0x14D2, 0xFFFF, 0xFFFF, 0xFFFF, "Titan Electronics Inc(0x14D2)"}, {0x14D2, 0x8001, 0xFFFF, 0xFFFF, "VScom 010L 1 port parallel adaptor(0x8001)"}, {0x14D2, 0x8002, 0xFFFF, 0xFFFF, "VScom 020L 2 port parallel adaptor(0x8002)"}, @@ -23504,52 +23593,52 @@ pci_id_t pci_vid_14D2[] = { {0x14D2, 0xE020, 0xFFFF, 0xFFFF, "VScom 200HV2 2 port serial adaptor(0xE020)"}, }; /* pci_vid_14D2[] */ -pci_id_t pci_vid_14D3[] = { +static pci_id_t const pci_vid_14D3[] = { {0x14D3, 0xFFFF, 0xFFFF, 0xFFFF, "CIRTECH (UK) Ltd(0x14D3)"}, {0x14D3, 0x0002, 0xFFFF, 0xFFFF, "DTL-T14000 Rev. 1 [PS2 TOOL CD/DVD Emulator](0x0002)"}, {0x14D3, 0x0003, 0xFFFF, 0xFFFF, "DTL-T14000 Rev. 2 [PS2 TOOL CD/DVD Emulator](0x0003)"}, {0x14D3, 0x0004, 0xFFFF, 0xFFFF, "DTL-T14000 Rev. 3 [PS2 TOOL CD/DVD Emulator](0x0004)"}, }; /* pci_vid_14D3[] */ -pci_id_t pci_vid_14D4[] = { +static pci_id_t const pci_vid_14D4[] = { {0x14D4, 0xFFFF, 0xFFFF, 0xFFFF, "Panacom Technology Corp(0x14D4)"}, }; /* pci_vid_14D4[] */ -pci_id_t pci_vid_14D5[] = { +static pci_id_t const pci_vid_14D5[] = { {0x14D5, 0xFFFF, 0xFFFF, 0xFFFF, "Nitsuko Corporation(0x14D5)"}, }; /* pci_vid_14D5[] */ -pci_id_t pci_vid_14D6[] = { +static pci_id_t const pci_vid_14D6[] = { {0x14D6, 0xFFFF, 0xFFFF, 0xFFFF, "Accusys Inc(0x14D6)"}, {0x14D6, 0x6101, 0xFFFF, 0xFFFF, "ACS-61xxx, PCIe to SAS/SATA RAID HBA(0x6101)"}, {0x14D6, 0x6201, 0xFFFF, 0xFFFF, "ACS-62xxx, External PCIe to SAS/SATA RAID controller(0x6201)"}, }; /* pci_vid_14D6[] */ -pci_id_t pci_vid_14D7[] = { +static pci_id_t const pci_vid_14D7[] = { {0x14D7, 0xFFFF, 0xFFFF, 0xFFFF, "Hirakawa Hewtech Corp(0x14D7)"}, }; /* pci_vid_14D7[] */ -pci_id_t pci_vid_14D8[] = { +static pci_id_t const pci_vid_14D8[] = { {0x14D8, 0xFFFF, 0xFFFF, 0xFFFF, "HOPF Elektronik GmBH(0x14D8)"}, }; /* pci_vid_14D8[] */ -pci_id_t pci_vid_14D9[] = { +static pci_id_t const pci_vid_14D9[] = { {0x14D9, 0xFFFF, 0xFFFF, 0xFFFF, "Alliance Semiconductor Corporation(0x14D9)"}, {0x14D9, 0x0010, 0xFFFF, 0xFFFF, "AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon](0x0010)"}, {0x14D9, 0x9000, 0xFFFF, 0xFFFF, "AS90L10204/10208 HyperTransport to PCI-X Bridge(0x9000)"}, }; /* pci_vid_14D9[] */ -pci_id_t pci_vid_14DA[] = { +static pci_id_t const pci_vid_14DA[] = { {0x14DA, 0xFFFF, 0xFFFF, 0xFFFF, "National Aerospace Laboratories(0x14DA)"}, }; /* pci_vid_14DA[] */ -pci_id_t pci_vid_14DB[] = { +static pci_id_t const pci_vid_14DB[] = { {0x14DB, 0xFFFF, 0xFFFF, 0xFFFF, "AFAVLAB Technology Inc(0x14DB)"}, {0x14DB, 0x2120, 0xFFFF, 0xFFFF, "TK9902(0x2120)"}, {0x14DB, 0x2182, 0xFFFF, 0xFFFF, "AFAVLAB Technology Inc. 8-port serial card(0x2182)"}, }; /* pci_vid_14DB[] */ -pci_id_t pci_vid_14DC[] = { +static pci_id_t const pci_vid_14DC[] = { {0x14DC, 0xFFFF, 0xFFFF, 0xFFFF, "Amplicon Liveline Ltd(0x14DC)"}, {0x14DC, 0x0000, 0xFFFF, 0xFFFF, "PCI230(0x0000)"}, {0x14DC, 0x0001, 0xFFFF, 0xFFFF, "PCI242(0x0001)"}, @@ -23565,31 +23654,31 @@ pci_id_t pci_vid_14DC[] = { {0x14DC, 0x000B, 0xFFFF, 0xFFFF, "PCI215(0x000B)"}, }; /* pci_vid_14DC[] */ -pci_id_t pci_vid_14DD[] = { +static pci_id_t const pci_vid_14DD[] = { {0x14DD, 0xFFFF, 0xFFFF, 0xFFFF, "Boulder Design Labs Inc(0x14DD)"}, }; /* pci_vid_14DD[] */ -pci_id_t pci_vid_14DE[] = { +static pci_id_t const pci_vid_14DE[] = { {0x14DE, 0xFFFF, 0xFFFF, 0xFFFF, "Applied Integration Corporation(0x14DE)"}, }; /* pci_vid_14DE[] */ -pci_id_t pci_vid_14DF[] = { +static pci_id_t const pci_vid_14DF[] = { {0x14DF, 0xFFFF, 0xFFFF, 0xFFFF, "ASIC Communications Corp(0x14DF)"}, }; /* pci_vid_14DF[] */ -pci_id_t pci_vid_14E1[] = { +static pci_id_t const pci_vid_14E1[] = { {0x14E1, 0xFFFF, 0xFFFF, 0xFFFF, "INVERTEX(0x14E1)"}, }; /* pci_vid_14E1[] */ -pci_id_t pci_vid_14E2[] = { +static pci_id_t const pci_vid_14E2[] = { {0x14E2, 0xFFFF, 0xFFFF, 0xFFFF, "INFOLIBRIA(0x14E2)"}, }; /* pci_vid_14E2[] */ -pci_id_t pci_vid_14E3[] = { +static pci_id_t const pci_vid_14E3[] = { {0x14E3, 0xFFFF, 0xFFFF, 0xFFFF, "AMTELCO(0x14E3)"}, }; /* pci_vid_14E3[] */ -pci_id_t pci_vid_14E4[] = { +static pci_id_t const pci_vid_14E4[] = { {0x14E4, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom Inc. and subsidiaries(0x14E4)"}, {0x14E4, 0x0576, 0xFFFF, 0xFFFF, "BCM43224 802.11a/b/g/n(0x0576)"}, {0x14E4, 0x0800, 0xFFFF, 0xFFFF, "Sentry5 Chipcommon I/O Controller(0x0800)"}, @@ -23758,6 +23847,7 @@ pci_id_t pci_vid_14E4[] = { {0x14E4, 0x1657, 0x14E4, 0xD166, "BCM95719-P41 4x1GBT Ethernet NIC(0x14E4-0xD166)"}, {0x14E4, 0x1657, 0x14E4, 0xD366, "BCM95719-N41 4x1GBT Ethernet NIC(0x14E4-0xD366)"}, {0x14E4, 0x1657, 0x193D, 0x1025, "NIC-ETH330T-LP-4P(0x193D-0x1025)"}, +{0x14E4, 0x1657, 0x193D, 0x1086, "NIC-ETH330T-3S-4P(0x193D-0x1086)"}, {0x14E4, 0x1659, 0xFFFF, 0xFFFF, "NetXtreme BCM5721 Gigabit Ethernet PCI Express(0x1659)"}, {0x14E4, 0x1659, 0x1014, 0x02C6, "eServer xSeries server mainboard(0x1014-0x02C6)"}, {0x14E4, 0x1659, 0x1028, 0x01E6, "PowerEdge 860(0x1028-0x01E6)"}, @@ -24030,6 +24120,7 @@ pci_id_t pci_vid_14E4[] = { {0x14E4, 0x16D6, 0x152D, 0x8B20, "BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller(0x152D-0x8B20)"}, {0x14E4, 0x16D6, 0x152D, 0x8B22, "BCM57412 NetXtreme-E 25Gb RDMA Ethernet Controller(0x152D-0x8B22)"}, {0x14E4, 0x16D6, 0x193D, 0x1024, "NIC-ETH531F-LP-2P(0x193D-0x1024)"}, +{0x14E4, 0x16D6, 0x193D, 0x1087, "NIC-ETH531F-3S-2P(0x193D-0x1087)"}, {0x14E4, 0x16D7, 0xFFFF, 0xFFFF, "BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller(0x16D7)"}, {0x14E4, 0x16D7, 0x117C, 0x00CC, "FastFrame N422 Dual-port 25Gb Ethernet Adapter(0x117C-0x00CC)"}, {0x14E4, 0x16D7, 0x14E4, 0x1402, "BCM957414A4142CC 10Gb/25Gb Ethernet PCIe(0x14E4-0x1402)"}, @@ -24117,6 +24208,8 @@ pci_id_t pci_vid_14E4[] = { {0x14E4, 0x1751, 0x14E4, 0x5425, "NetXtreme-E Quad-port 25G SFP28 Ethernet OCP 3.0 Adapter (BCM957504-N425G)(0x14E4-0x5425)"}, {0x14E4, 0x1751, 0x14E4, 0xD142, "NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE(0x14E4-0xD142)"}, {0x14E4, 0x1752, 0xFFFF, 0xFFFF, "BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet(0x1752)"}, +{0x14E4, 0x1760, 0xFFFF, 0xFFFF, "BCM57608 NetXtreme-E 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet(0x1760)"}, +{0x14E4, 0x1760, 0x14E4, 0xD125, "BCM57608 2x200G PCIe Ethernet NIC(0x14E4-0xD125)"}, {0x14E4, 0x1800, 0xFFFF, 0xFFFF, "BCM57502 NetXtreme-E Ethernet Partition(0x1800)"}, {0x14E4, 0x1801, 0xFFFF, 0xFFFF, "BCM57504 NetXtreme-E Ethernet Partition(0x1801)"}, {0x14E4, 0x1802, 0xFFFF, 0xFFFF, "BCM57508 NetXtreme-E Ethernet Partition(0x1802)"}, @@ -24134,6 +24227,7 @@ pci_id_t pci_vid_14E4[] = { {0x14E4, 0x1809, 0xFFFF, 0xFFFF, "BCM5750X NetXtreme-E RDMA Virtual Function(0x1809)"}, {0x14E4, 0x1809, 0x14E4, 0xDF24, "BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function(0x14E4-0xDF24)"}, {0x14E4, 0x2711, 0xFFFF, 0xFFFF, "BCM2711 PCIe Bridge(0x2711)"}, +{0x14E4, 0x2712, 0xFFFF, 0xFFFF, "BCM2712 PCIe Bridge(0x2712)"}, {0x14E4, 0x3352, 0xFFFF, 0xFFFF, "BCM3352(0x3352)"}, {0x14E4, 0x3360, 0xFFFF, 0xFFFF, "BCM3360(0x3360)"}, {0x14E4, 0x4210, 0xFFFF, 0xFFFF, "BCM4210 iLine10 HomePNA 2.0(0x4210)"}, @@ -24445,59 +24539,59 @@ pci_id_t pci_vid_14E4[] = { {0x14E4, 0xF917, 0xFFFF, 0xFFFF, "BCM78917 Switch ASIC [Tomahawk6](0xF917)"}, }; /* pci_vid_14E4[] */ -pci_id_t pci_vid_14E5[] = { +static pci_id_t const pci_vid_14E5[] = { {0x14E5, 0xFFFF, 0xFFFF, 0xFFFF, "Pixelfusion Ltd(0x14E5)"}, }; /* pci_vid_14E5[] */ -pci_id_t pci_vid_14E6[] = { +static pci_id_t const pci_vid_14E6[] = { {0x14E6, 0xFFFF, 0xFFFF, 0xFFFF, "SHINING Technology Inc(0x14E6)"}, }; /* pci_vid_14E6[] */ -pci_id_t pci_vid_14E7[] = { +static pci_id_t const pci_vid_14E7[] = { {0x14E7, 0xFFFF, 0xFFFF, 0xFFFF, "3CX(0x14E7)"}, }; /* pci_vid_14E7[] */ -pci_id_t pci_vid_14E8[] = { +static pci_id_t const pci_vid_14E8[] = { {0x14E8, 0xFFFF, 0xFFFF, 0xFFFF, "RAYCER Inc(0x14E8)"}, }; /* pci_vid_14E8[] */ -pci_id_t pci_vid_14E9[] = { +static pci_id_t const pci_vid_14E9[] = { {0x14E9, 0xFFFF, 0xFFFF, 0xFFFF, "GARNETS System CO Ltd(0x14E9)"}, }; /* pci_vid_14E9[] */ -pci_id_t pci_vid_14EA[] = { +static pci_id_t const pci_vid_14EA[] = { {0x14EA, 0xFFFF, 0xFFFF, 0xFFFF, "Planex Communications, Inc(0x14EA)"}, {0x14EA, 0xAB06, 0xFFFF, 0xFFFF, "FNW-3603-TX CardBus Fast Ethernet(0xAB06)"}, {0x14EA, 0xAB07, 0xFFFF, 0xFFFF, "RTL81xx RealTek Ethernet(0xAB07)"}, {0x14EA, 0xAB08, 0xFFFF, 0xFFFF, "FNW-3602-TX CardBus Fast Ethernet(0xAB08)"}, }; /* pci_vid_14EA[] */ -pci_id_t pci_vid_14EB[] = { +static pci_id_t const pci_vid_14EB[] = { {0x14EB, 0xFFFF, 0xFFFF, 0xFFFF, "SEIKO EPSON Corp(0x14EB)"}, }; /* pci_vid_14EB[] */ -pci_id_t pci_vid_14EC[] = { +static pci_id_t const pci_vid_14EC[] = { {0x14EC, 0xFFFF, 0xFFFF, 0xFFFF, "Agilent Technologies(0x14EC)"}, {0x14EC, 0x0000, 0xFFFF, 0xFFFF, "Aciris Digitizer (malformed ID)(0x0000)"}, }; /* pci_vid_14EC[] */ -pci_id_t pci_vid_14ED[] = { +static pci_id_t const pci_vid_14ED[] = { {0x14ED, 0xFFFF, 0xFFFF, 0xFFFF, "DATAKINETICS Ltd(0x14ED)"}, }; /* pci_vid_14ED[] */ -pci_id_t pci_vid_14EE[] = { +static pci_id_t const pci_vid_14EE[] = { {0x14EE, 0xFFFF, 0xFFFF, 0xFFFF, "MASPRO KENKOH Corp(0x14EE)"}, }; /* pci_vid_14EE[] */ -pci_id_t pci_vid_14EF[] = { +static pci_id_t const pci_vid_14EF[] = { {0x14EF, 0xFFFF, 0xFFFF, 0xFFFF, "CARRY Computer ENG. CO Ltd(0x14EF)"}, }; /* pci_vid_14EF[] */ -pci_id_t pci_vid_14F0[] = { +static pci_id_t const pci_vid_14F0[] = { {0x14F0, 0xFFFF, 0xFFFF, 0xFFFF, "CANON RESEACH CENTRE FRANCE(0x14F0)"}, }; /* pci_vid_14F0[] */ -pci_id_t pci_vid_14F1[] = { +static pci_id_t const pci_vid_14F1[] = { {0x14F1, 0xFFFF, 0xFFFF, 0xFFFF, "Conexant Systems, Inc.(0x14F1)"}, {0x14F1, 0x1002, 0xFFFF, 0xFFFF, "HCF 56k Modem(0x1002)"}, {0x14F1, 0x1003, 0xFFFF, 0xFFFF, "HCF 56k Modem(0x1003)"}, @@ -24784,7 +24878,7 @@ pci_id_t pci_vid_14F1[] = { {0x14F1, 0x8880, 0x5654, 0x2390, "GoTView X5 3D HYBRID PCI-E(0x5654-0x2390)"}, }; /* pci_vid_14F1[] */ -pci_id_t pci_vid_14F2[] = { +static pci_id_t const pci_vid_14F2[] = { {0x14F2, 0xFFFF, 0xFFFF, 0xFFFF, "MOBILITY Electronics(0x14F2)"}, {0x14F2, 0x0120, 0xFFFF, 0xFFFF, "EV1000 bridge(0x0120)"}, {0x14F2, 0x0121, 0xFFFF, 0xFFFF, "EV1000 Parallel port(0x0121)"}, @@ -24793,7 +24887,7 @@ pci_id_t pci_vid_14F2[] = { {0x14F2, 0x0124, 0xFFFF, 0xFFFF, "EV1000 Mouse controller(0x0124)"}, }; /* pci_vid_14F2[] */ -pci_id_t pci_vid_14F3[] = { +static pci_id_t const pci_vid_14F3[] = { {0x14F3, 0xFFFF, 0xFFFF, 0xFFFF, "BroadLogic(0x14F3)"}, {0x14F3, 0x2030, 0xFFFF, 0xFFFF, "2030 DVB-S Satellite Receiver(0x2030)"}, {0x14F3, 0x2035, 0xFFFF, 0xFFFF, "2035 DVB-S Satellite Receiver(0x2035)"}, @@ -24801,88 +24895,88 @@ pci_id_t pci_vid_14F3[] = { {0x14F3, 0x2060, 0xFFFF, 0xFFFF, "2060 ATSC Terrestrial (Cable) Receiver(0x2060)"}, }; /* pci_vid_14F3[] */ -pci_id_t pci_vid_14F4[] = { +static pci_id_t const pci_vid_14F4[] = { {0x14F4, 0xFFFF, 0xFFFF, 0xFFFF, "TOKYO Electronic Industry CO Ltd(0x14F4)"}, }; /* pci_vid_14F4[] */ -pci_id_t pci_vid_14F5[] = { +static pci_id_t const pci_vid_14F5[] = { {0x14F5, 0xFFFF, 0xFFFF, 0xFFFF, "SOPAC Ltd(0x14F5)"}, }; /* pci_vid_14F5[] */ -pci_id_t pci_vid_14F6[] = { +static pci_id_t const pci_vid_14F6[] = { {0x14F6, 0xFFFF, 0xFFFF, 0xFFFF, "COYOTE Technologies LLC(0x14F6)"}, }; /* pci_vid_14F6[] */ -pci_id_t pci_vid_14F7[] = { +static pci_id_t const pci_vid_14F7[] = { {0x14F7, 0xFFFF, 0xFFFF, 0xFFFF, "WOLF Technology Inc(0x14F7)"}, }; /* pci_vid_14F7[] */ -pci_id_t pci_vid_14F8[] = { +static pci_id_t const pci_vid_14F8[] = { {0x14F8, 0xFFFF, 0xFFFF, 0xFFFF, "AUDIOCODES Inc(0x14F8)"}, {0x14F8, 0x2077, 0xFFFF, 0xFFFF, "TP-240 dual span E1 VoIP PCI card(0x2077)"}, }; /* pci_vid_14F8[] */ -pci_id_t pci_vid_14F9[] = { +static pci_id_t const pci_vid_14F9[] = { {0x14F9, 0xFFFF, 0xFFFF, 0xFFFF, "AG COMMUNICATIONS(0x14F9)"}, }; /* pci_vid_14F9[] */ -pci_id_t pci_vid_14FA[] = { +static pci_id_t const pci_vid_14FA[] = { {0x14FA, 0xFFFF, 0xFFFF, 0xFFFF, "WANDEL & GOLTERMANN(0x14FA)"}, }; /* pci_vid_14FA[] */ -pci_id_t pci_vid_14FB[] = { +static pci_id_t const pci_vid_14FB[] = { {0x14FB, 0xFFFF, 0xFFFF, 0xFFFF, "TRANSAS MARINE (UK) Ltd(0x14FB)"}, }; /* pci_vid_14FB[] */ -pci_id_t pci_vid_14FC[] = { +static pci_id_t const pci_vid_14FC[] = { {0x14FC, 0xFFFF, 0xFFFF, 0xFFFF, "Quadrics Ltd(0x14FC)"}, {0x14FC, 0x0000, 0xFFFF, 0xFFFF, "QsNet Elan3 Network Adapter(0x0000)"}, {0x14FC, 0x0001, 0xFFFF, 0xFFFF, "QsNetII Elan4 Network Adapter(0x0001)"}, {0x14FC, 0x0002, 0xFFFF, 0xFFFF, "QsNetIII Elan5 Network Adapter(0x0002)"}, }; /* pci_vid_14FC[] */ -pci_id_t pci_vid_14FD[] = { +static pci_id_t const pci_vid_14FD[] = { {0x14FD, 0xFFFF, 0xFFFF, 0xFFFF, "JAPAN Computer Industry Inc(0x14FD)"}, }; /* pci_vid_14FD[] */ -pci_id_t pci_vid_14FE[] = { +static pci_id_t const pci_vid_14FE[] = { {0x14FE, 0xFFFF, 0xFFFF, 0xFFFF, "ARCHTEK TELECOM Corp(0x14FE)"}, }; /* pci_vid_14FE[] */ -pci_id_t pci_vid_14FF[] = { +static pci_id_t const pci_vid_14FF[] = { {0x14FF, 0xFFFF, 0xFFFF, 0xFFFF, "TWINHEAD INTERNATIONAL Corp(0x14FF)"}, }; /* pci_vid_14FF[] */ -pci_id_t pci_vid_1500[] = { +static pci_id_t const pci_vid_1500[] = { {0x1500, 0xFFFF, 0xFFFF, 0xFFFF, "DELTA Electronics, Inc(0x1500)"}, {0x1500, 0x1360, 0xFFFF, 0xFFFF, "RTL81xx RealTek Ethernet(0x1360)"}, }; /* pci_vid_1500[] */ -pci_id_t pci_vid_1501[] = { +static pci_id_t const pci_vid_1501[] = { {0x1501, 0xFFFF, 0xFFFF, 0xFFFF, "BANKSOFT CANADA Ltd(0x1501)"}, }; /* pci_vid_1501[] */ -pci_id_t pci_vid_1502[] = { +static pci_id_t const pci_vid_1502[] = { {0x1502, 0xFFFF, 0xFFFF, 0xFFFF, "MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd(0x1502)"}, }; /* pci_vid_1502[] */ -pci_id_t pci_vid_1503[] = { +static pci_id_t const pci_vid_1503[] = { {0x1503, 0xFFFF, 0xFFFF, 0xFFFF, "KAWASAKI LSI USA Inc(0x1503)"}, }; /* pci_vid_1503[] */ -pci_id_t pci_vid_1504[] = { +static pci_id_t const pci_vid_1504[] = { {0x1504, 0xFFFF, 0xFFFF, 0xFFFF, "KAISER Electronics(0x1504)"}, }; /* pci_vid_1504[] */ -pci_id_t pci_vid_1505[] = { +static pci_id_t const pci_vid_1505[] = { {0x1505, 0xFFFF, 0xFFFF, 0xFFFF, "ITA INGENIEURBURO FUR TESTAUFGABEN GmbH(0x1505)"}, }; /* pci_vid_1505[] */ -pci_id_t pci_vid_1506[] = { +static pci_id_t const pci_vid_1506[] = { {0x1506, 0xFFFF, 0xFFFF, 0xFFFF, "CHAMELEON Systems Inc(0x1506)"}, }; /* pci_vid_1506[] */ -pci_id_t pci_vid_1507[] = { +static pci_id_t const pci_vid_1507[] = { {0x1507, 0xFFFF, 0xFFFF, 0xFFFF, "Motorola ?-?- / HTEC(0x1507)"}, {0x1507, 0x0001, 0xFFFF, 0xFFFF, "MPC105 [Eagle](0x0001)"}, {0x1507, 0x0002, 0xFFFF, 0xFFFF, "MPC106 [Grackle](0x0002)"}, @@ -24895,63 +24989,63 @@ pci_id_t pci_vid_1507[] = { {0x1507, 0x4806, 0xFFFF, 0xFFFF, "CPX8216(0x4806)"}, }; /* pci_vid_1507[] */ -pci_id_t pci_vid_1508[] = { +static pci_id_t const pci_vid_1508[] = { {0x1508, 0xFFFF, 0xFFFF, 0xFFFF, "HONDA CONNECTORS/MHOTRONICS Inc(0x1508)"}, }; /* pci_vid_1508[] */ -pci_id_t pci_vid_1509[] = { +static pci_id_t const pci_vid_1509[] = { {0x1509, 0xFFFF, 0xFFFF, 0xFFFF, "FIRST INTERNATIONAL Computer Inc(0x1509)"}, }; /* pci_vid_1509[] */ -pci_id_t pci_vid_150A[] = { +static pci_id_t const pci_vid_150A[] = { {0x150A, 0xFFFF, 0xFFFF, 0xFFFF, "FORVUS RESEARCH Inc(0x150A)"}, }; /* pci_vid_150A[] */ -pci_id_t pci_vid_150B[] = { +static pci_id_t const pci_vid_150B[] = { {0x150B, 0xFFFF, 0xFFFF, 0xFFFF, "YAMASHITA Systems Corp(0x150B)"}, }; /* pci_vid_150B[] */ -pci_id_t pci_vid_150C[] = { +static pci_id_t const pci_vid_150C[] = { {0x150C, 0xFFFF, 0xFFFF, 0xFFFF, "KYOPAL CO Ltd(0x150C)"}, }; /* pci_vid_150C[] */ -pci_id_t pci_vid_150D[] = { +static pci_id_t const pci_vid_150D[] = { {0x150D, 0xFFFF, 0xFFFF, 0xFFFF, "WARPSPPED Inc(0x150D)"}, }; /* pci_vid_150D[] */ -pci_id_t pci_vid_150E[] = { +static pci_id_t const pci_vid_150E[] = { {0x150E, 0xFFFF, 0xFFFF, 0xFFFF, "C-PORT Corp(0x150E)"}, }; /* pci_vid_150E[] */ -pci_id_t pci_vid_150F[] = { +static pci_id_t const pci_vid_150F[] = { {0x150F, 0xFFFF, 0xFFFF, 0xFFFF, "INTEC GmbH(0x150F)"}, }; /* pci_vid_150F[] */ -pci_id_t pci_vid_1510[] = { +static pci_id_t const pci_vid_1510[] = { {0x1510, 0xFFFF, 0xFFFF, 0xFFFF, "BEHAVIOR TECH Computer Corp(0x1510)"}, }; /* pci_vid_1510[] */ -pci_id_t pci_vid_1511[] = { +static pci_id_t const pci_vid_1511[] = { {0x1511, 0xFFFF, 0xFFFF, 0xFFFF, "CENTILLIUM Technology Corp(0x1511)"}, }; /* pci_vid_1511[] */ -pci_id_t pci_vid_1512[] = { +static pci_id_t const pci_vid_1512[] = { {0x1512, 0xFFFF, 0xFFFF, 0xFFFF, "ROSUN Technologies Inc(0x1512)"}, }; /* pci_vid_1512[] */ -pci_id_t pci_vid_1513[] = { +static pci_id_t const pci_vid_1513[] = { {0x1513, 0xFFFF, 0xFFFF, 0xFFFF, "Raychem(0x1513)"}, }; /* pci_vid_1513[] */ -pci_id_t pci_vid_1514[] = { +static pci_id_t const pci_vid_1514[] = { {0x1514, 0xFFFF, 0xFFFF, 0xFFFF, "TFL LAN Inc(0x1514)"}, }; /* pci_vid_1514[] */ -pci_id_t pci_vid_1515[] = { +static pci_id_t const pci_vid_1515[] = { {0x1515, 0xFFFF, 0xFFFF, 0xFFFF, "Advent design(0x1515)"}, }; /* pci_vid_1515[] */ -pci_id_t pci_vid_1516[] = { +static pci_id_t const pci_vid_1516[] = { {0x1516, 0xFFFF, 0xFFFF, 0xFFFF, "MYSON Technology Inc(0x1516)"}, {0x1516, 0x0800, 0xFFFF, 0xFFFF, "MTD-8xx 100/10M Ethernet PCI Adapter(0x0800)"}, {0x1516, 0x0803, 0xFFFF, 0xFFFF, "SURECOM EP-320X-S 100/10M Ethernet PCI Adapter(0x0803)"}, @@ -24959,57 +25053,57 @@ pci_id_t pci_vid_1516[] = { {0x1516, 0x0891, 0xFFFF, 0xFFFF, "MTD-8xx 100/10M Ethernet PCI Adapter(0x0891)"}, }; /* pci_vid_1516[] */ -pci_id_t pci_vid_1517[] = { +static pci_id_t const pci_vid_1517[] = { {0x1517, 0xFFFF, 0xFFFF, 0xFFFF, "ECHOTEK Corp(0x1517)"}, }; /* pci_vid_1517[] */ -pci_id_t pci_vid_1518[] = { +static pci_id_t const pci_vid_1518[] = { {0x1518, 0xFFFF, 0xFFFF, 0xFFFF, "Kontron(0x1518)"}, }; /* pci_vid_1518[] */ -pci_id_t pci_vid_1519[] = { +static pci_id_t const pci_vid_1519[] = { {0x1519, 0xFFFF, 0xFFFF, 0xFFFF, "TELEFON AKTIEBOLAGET LM Ericsson(0x1519)"}, }; /* pci_vid_1519[] */ -pci_id_t pci_vid_151A[] = { +static pci_id_t const pci_vid_151A[] = { {0x151A, 0xFFFF, 0xFFFF, 0xFFFF, "Globetek(0x151A)"}, {0x151A, 0x1002, 0xFFFF, 0xFFFF, "PCI-1002(0x1002)"}, {0x151A, 0x1004, 0xFFFF, 0xFFFF, "PCI-1004(0x1004)"}, {0x151A, 0x1008, 0xFFFF, 0xFFFF, "PCI-1008(0x1008)"}, }; /* pci_vid_151A[] */ -pci_id_t pci_vid_151B[] = { +static pci_id_t const pci_vid_151B[] = { {0x151B, 0xFFFF, 0xFFFF, 0xFFFF, "COMBOX Ltd(0x151B)"}, }; /* pci_vid_151B[] */ -pci_id_t pci_vid_151C[] = { +static pci_id_t const pci_vid_151C[] = { {0x151C, 0xFFFF, 0xFFFF, 0xFFFF, "DIGITAL AUDIO LABS Inc(0x151C)"}, {0x151C, 0x0003, 0xFFFF, 0xFFFF, "Prodif T 2496(0x0003)"}, {0x151C, 0x4000, 0xFFFF, 0xFFFF, "Prodif 88(0x4000)"}, }; /* pci_vid_151C[] */ -pci_id_t pci_vid_151D[] = { +static pci_id_t const pci_vid_151D[] = { {0x151D, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Computer Products Of America(0x151D)"}, }; /* pci_vid_151D[] */ -pci_id_t pci_vid_151E[] = { +static pci_id_t const pci_vid_151E[] = { {0x151E, 0xFFFF, 0xFFFF, 0xFFFF, "MATRIX Corp(0x151E)"}, }; /* pci_vid_151E[] */ -pci_id_t pci_vid_151F[] = { +static pci_id_t const pci_vid_151F[] = { {0x151F, 0xFFFF, 0xFFFF, 0xFFFF, "TOPIC SEMICONDUCTOR Corp(0x151F)"}, {0x151F, 0x0000, 0xFFFF, 0xFFFF, "TP560 Data/Fax/Voice 56k modem(0x0000)"}, }; /* pci_vid_151F[] */ -pci_id_t pci_vid_1520[] = { +static pci_id_t const pci_vid_1520[] = { {0x1520, 0xFFFF, 0xFFFF, 0xFFFF, "CHAPLET System Inc(0x1520)"}, }; /* pci_vid_1520[] */ -pci_id_t pci_vid_1521[] = { +static pci_id_t const pci_vid_1521[] = { {0x1521, 0xFFFF, 0xFFFF, 0xFFFF, "BELL Corp(0x1521)"}, }; /* pci_vid_1521[] */ -pci_id_t pci_vid_1522[] = { +static pci_id_t const pci_vid_1522[] = { {0x1522, 0xFFFF, 0xFFFF, 0xFFFF, "MainPine Ltd(0x1522)"}, {0x1522, 0x0100, 0xFFFF, 0xFFFF, "PCI <-> IOBus Bridge(0x0100)"}, {0x1522, 0x0100, 0x1522, 0x0200, "RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem(0x1522-0x0200)"}, @@ -25046,11 +25140,11 @@ pci_id_t pci_vid_1522[] = { {0x1522, 0x4000, 0x1522, 0x4100, "IQ Express SideBand(0x1522-0x4100)"}, }; /* pci_vid_1522[] */ -pci_id_t pci_vid_1523[] = { +static pci_id_t const pci_vid_1523[] = { {0x1523, 0xFFFF, 0xFFFF, 0xFFFF, "MUSIC Semiconductors(0x1523)"}, }; /* pci_vid_1523[] */ -pci_id_t pci_vid_1524[] = { +static pci_id_t const pci_vid_1524[] = { {0x1524, 0xFFFF, 0xFFFF, 0xFFFF, "ENE Technology Inc(0x1524)"}, {0x1524, 0x0510, 0xFFFF, 0xFFFF, "CB710 Memory Card Reader Controller(0x0510)"}, {0x1524, 0x0510, 0x103C, 0x006A, "NX9500(0x103C-0x006A)"}, @@ -25077,129 +25171,129 @@ pci_id_t pci_vid_1524[] = { {0x1524, 0x1422, 0xFFFF, 0xFFFF, "CB-722/4 Cardbus Controller(0x1422)"}, }; /* pci_vid_1524[] */ -pci_id_t pci_vid_1525[] = { +static pci_id_t const pci_vid_1525[] = { {0x1525, 0xFFFF, 0xFFFF, 0xFFFF, "IMPACT Technologies(0x1525)"}, }; /* pci_vid_1525[] */ -pci_id_t pci_vid_1526[] = { +static pci_id_t const pci_vid_1526[] = { {0x1526, 0xFFFF, 0xFFFF, 0xFFFF, "ISS, Inc(0x1526)"}, }; /* pci_vid_1526[] */ -pci_id_t pci_vid_1527[] = { +static pci_id_t const pci_vid_1527[] = { {0x1527, 0xFFFF, 0xFFFF, 0xFFFF, "SOLECTRON(0x1527)"}, }; /* pci_vid_1527[] */ -pci_id_t pci_vid_1528[] = { +static pci_id_t const pci_vid_1528[] = { {0x1528, 0xFFFF, 0xFFFF, 0xFFFF, "ACKSYS(0x1528)"}, }; /* pci_vid_1528[] */ -pci_id_t pci_vid_1529[] = { +static pci_id_t const pci_vid_1529[] = { {0x1529, 0xFFFF, 0xFFFF, 0xFFFF, "ON Semiconductor(0x1529)"}, }; /* pci_vid_1529[] */ -pci_id_t pci_vid_152A[] = { +static pci_id_t const pci_vid_152A[] = { {0x152A, 0xFFFF, 0xFFFF, 0xFFFF, "QUICKTURN DESIGN Systems(0x152A)"}, }; /* pci_vid_152A[] */ -pci_id_t pci_vid_152B[] = { +static pci_id_t const pci_vid_152B[] = { {0x152B, 0xFFFF, 0xFFFF, 0xFFFF, "FLYTECH Technology CO Ltd(0x152B)"}, }; /* pci_vid_152B[] */ -pci_id_t pci_vid_152C[] = { +static pci_id_t const pci_vid_152C[] = { {0x152C, 0xFFFF, 0xFFFF, 0xFFFF, "MACRAIGOR Systems LLC(0x152C)"}, }; /* pci_vid_152C[] */ -pci_id_t pci_vid_152D[] = { +static pci_id_t const pci_vid_152D[] = { {0x152D, 0xFFFF, 0xFFFF, 0xFFFF, "QUANTA Computer Inc(0x152D)"}, }; /* pci_vid_152D[] */ -pci_id_t pci_vid_152E[] = { +static pci_id_t const pci_vid_152E[] = { {0x152E, 0xFFFF, 0xFFFF, 0xFFFF, "MELEC Inc(0x152E)"}, }; /* pci_vid_152E[] */ -pci_id_t pci_vid_152F[] = { +static pci_id_t const pci_vid_152F[] = { {0x152F, 0xFFFF, 0xFFFF, 0xFFFF, "PHILIPS - CRYPTO(0x152F)"}, }; /* pci_vid_152F[] */ -pci_id_t pci_vid_1530[] = { +static pci_id_t const pci_vid_1530[] = { {0x1530, 0xFFFF, 0xFFFF, 0xFFFF, "ACQIS Technology Inc(0x1530)"}, }; /* pci_vid_1530[] */ -pci_id_t pci_vid_1531[] = { +static pci_id_t const pci_vid_1531[] = { {0x1531, 0xFFFF, 0xFFFF, 0xFFFF, "CHRYON Corp(0x1531)"}, }; /* pci_vid_1531[] */ -pci_id_t pci_vid_1532[] = { +static pci_id_t const pci_vid_1532[] = { {0x1532, 0xFFFF, 0xFFFF, 0xFFFF, "ECHELON Corp(0x1532)"}, {0x1532, 0x0020, 0xFFFF, 0xFFFF, "LonWorks PCLTA-20 PCI LonTalk Adapter(0x0020)"}, }; /* pci_vid_1532[] */ -pci_id_t pci_vid_1533[] = { +static pci_id_t const pci_vid_1533[] = { {0x1533, 0xFFFF, 0xFFFF, 0xFFFF, "BALTIMORE(0x1533)"}, }; /* pci_vid_1533[] */ -pci_id_t pci_vid_1534[] = { +static pci_id_t const pci_vid_1534[] = { {0x1534, 0xFFFF, 0xFFFF, 0xFFFF, "ROAD Corp(0x1534)"}, }; /* pci_vid_1534[] */ -pci_id_t pci_vid_1535[] = { +static pci_id_t const pci_vid_1535[] = { {0x1535, 0xFFFF, 0xFFFF, 0xFFFF, "EVERGREEN Technologies Inc(0x1535)"}, }; /* pci_vid_1535[] */ -pci_id_t pci_vid_1536[] = { +static pci_id_t const pci_vid_1536[] = { {0x1536, 0xFFFF, 0xFFFF, 0xFFFF, "ACTIS Computer(0x1536)"}, }; /* pci_vid_1536[] */ -pci_id_t pci_vid_1537[] = { +static pci_id_t const pci_vid_1537[] = { {0x1537, 0xFFFF, 0xFFFF, 0xFFFF, "DATALEX COMMUNCATIONS(0x1537)"}, }; /* pci_vid_1537[] */ -pci_id_t pci_vid_1538[] = { +static pci_id_t const pci_vid_1538[] = { {0x1538, 0xFFFF, 0xFFFF, 0xFFFF, "ARALION Inc(0x1538)"}, {0x1538, 0x0303, 0xFFFF, 0xFFFF, "ARS106S Ultra ATA 133/100/66 Host Controller(0x0303)"}, }; /* pci_vid_1538[] */ -pci_id_t pci_vid_1539[] = { +static pci_id_t const pci_vid_1539[] = { {0x1539, 0xFFFF, 0xFFFF, 0xFFFF, "ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.(0x1539)"}, }; /* pci_vid_1539[] */ -pci_id_t pci_vid_153A[] = { +static pci_id_t const pci_vid_153A[] = { {0x153A, 0xFFFF, 0xFFFF, 0xFFFF, "ONO SOKKI(0x153A)"}, }; /* pci_vid_153A[] */ -pci_id_t pci_vid_153B[] = { +static pci_id_t const pci_vid_153B[] = { {0x153B, 0xFFFF, 0xFFFF, 0xFFFF, "TERRATEC Electronic GmbH(0x153B)"}, {0x153B, 0x1144, 0xFFFF, 0xFFFF, "Aureon 5.1(0x1144)"}, {0x153B, 0x1147, 0xFFFF, 0xFFFF, "Aureon 5.1 Sky(0x1147)"}, {0x153B, 0x1158, 0xFFFF, 0xFFFF, "Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV](0x1158)"}, }; /* pci_vid_153B[] */ -pci_id_t pci_vid_153C[] = { +static pci_id_t const pci_vid_153C[] = { {0x153C, 0xFFFF, 0xFFFF, 0xFFFF, "ANTAL Electronic(0x153C)"}, }; /* pci_vid_153C[] */ -pci_id_t pci_vid_153D[] = { +static pci_id_t const pci_vid_153D[] = { {0x153D, 0xFFFF, 0xFFFF, 0xFFFF, "FILANET Corp(0x153D)"}, }; /* pci_vid_153D[] */ -pci_id_t pci_vid_153E[] = { +static pci_id_t const pci_vid_153E[] = { {0x153E, 0xFFFF, 0xFFFF, 0xFFFF, "TECHWELL Inc(0x153E)"}, }; /* pci_vid_153E[] */ -pci_id_t pci_vid_153F[] = { +static pci_id_t const pci_vid_153F[] = { {0x153F, 0xFFFF, 0xFFFF, 0xFFFF, "MIPS Technologies, Inc.(0x153F)"}, {0x153F, 0x0001, 0xFFFF, 0xFFFF, "SOC-it 101 System Controller(0x0001)"}, }; /* pci_vid_153F[] */ -pci_id_t pci_vid_1540[] = { +static pci_id_t const pci_vid_1540[] = { {0x1540, 0xFFFF, 0xFFFF, 0xFFFF, "PROVIDEO MULTIMEDIA Co Ltd(0x1540)"}, }; /* pci_vid_1540[] */ -pci_id_t pci_vid_1541[] = { +static pci_id_t const pci_vid_1541[] = { {0x1541, 0xFFFF, 0xFFFF, 0xFFFF, "MACHONE Communications(0x1541)"}, }; /* pci_vid_1541[] */ -pci_id_t pci_vid_1542[] = { +static pci_id_t const pci_vid_1542[] = { {0x1542, 0xFFFF, 0xFFFF, 0xFFFF, "Concurrent Real-Time(0x1542)"}, {0x1542, 0x9260, 0xFFFF, 0xFFFF, "RCIM-II Real-Time Clock & Interrupt Module(0x9260)"}, {0x1542, 0x9271, 0xFFFF, 0xFFFF, "RCIM-III Real-Time Clock & Interrupt Module (PCIe)(0x9271)"}, @@ -25214,85 +25308,85 @@ pci_id_t pci_vid_1542[] = { {0x1542, 0x9350, 0xFFFF, 0xFFFF, "Analog Input Card(0x9350)"}, }; /* pci_vid_1542[] */ -pci_id_t pci_vid_1543[] = { +static pci_id_t const pci_vid_1543[] = { {0x1543, 0xFFFF, 0xFFFF, 0xFFFF, "SILICON Laboratories(0x1543)"}, {0x1543, 0x3052, 0xFFFF, 0xFFFF, "Intel 537 [Winmodem](0x3052)"}, {0x1543, 0x4C22, 0xFFFF, 0xFFFF, "Si3036 MC'97 DAA(0x4C22)"}, }; /* pci_vid_1543[] */ -pci_id_t pci_vid_1544[] = { +static pci_id_t const pci_vid_1544[] = { {0x1544, 0xFFFF, 0xFFFF, 0xFFFF, "DCM DATA Systems(0x1544)"}, }; /* pci_vid_1544[] */ -pci_id_t pci_vid_1545[] = { +static pci_id_t const pci_vid_1545[] = { {0x1545, 0xFFFF, 0xFFFF, 0xFFFF, "VISIONTEK(0x1545)"}, }; /* pci_vid_1545[] */ -pci_id_t pci_vid_1546[] = { +static pci_id_t const pci_vid_1546[] = { {0x1546, 0xFFFF, 0xFFFF, 0xFFFF, "IOI Technology Corp(0x1546)"}, }; /* pci_vid_1546[] */ -pci_id_t pci_vid_1547[] = { +static pci_id_t const pci_vid_1547[] = { {0x1547, 0xFFFF, 0xFFFF, 0xFFFF, "MITUTOYO Corp(0x1547)"}, }; /* pci_vid_1547[] */ -pci_id_t pci_vid_1548[] = { +static pci_id_t const pci_vid_1548[] = { {0x1548, 0xFFFF, 0xFFFF, 0xFFFF, "JET PROPULSION Laboratory(0x1548)"}, }; /* pci_vid_1548[] */ -pci_id_t pci_vid_1549[] = { +static pci_id_t const pci_vid_1549[] = { {0x1549, 0xFFFF, 0xFFFF, 0xFFFF, "INTERCONNECT Systems Solutions(0x1549)"}, }; /* pci_vid_1549[] */ -pci_id_t pci_vid_154A[] = { +static pci_id_t const pci_vid_154A[] = { {0x154A, 0xFFFF, 0xFFFF, 0xFFFF, "MAX Technologies Inc(0x154A)"}, }; /* pci_vid_154A[] */ -pci_id_t pci_vid_154B[] = { +static pci_id_t const pci_vid_154B[] = { {0x154B, 0xFFFF, 0xFFFF, 0xFFFF, "COMPUTEX Co Ltd(0x154B)"}, }; /* pci_vid_154B[] */ -pci_id_t pci_vid_154C[] = { +static pci_id_t const pci_vid_154C[] = { {0x154C, 0xFFFF, 0xFFFF, 0xFFFF, "VISUAL Technology Inc(0x154C)"}, }; /* pci_vid_154C[] */ -pci_id_t pci_vid_154D[] = { +static pci_id_t const pci_vid_154D[] = { {0x154D, 0xFFFF, 0xFFFF, 0xFFFF, "PAN INTERNATIONAL Industrial Corp(0x154D)"}, }; /* pci_vid_154D[] */ -pci_id_t pci_vid_154E[] = { +static pci_id_t const pci_vid_154E[] = { {0x154E, 0xFFFF, 0xFFFF, 0xFFFF, "SERVOTEST Ltd(0x154E)"}, }; /* pci_vid_154E[] */ -pci_id_t pci_vid_154F[] = { +static pci_id_t const pci_vid_154F[] = { {0x154F, 0xFFFF, 0xFFFF, 0xFFFF, "STRATABEAM Technology(0x154F)"}, }; /* pci_vid_154F[] */ -pci_id_t pci_vid_1550[] = { +static pci_id_t const pci_vid_1550[] = { {0x1550, 0xFFFF, 0xFFFF, 0xFFFF, "OPEN NETWORK Co Ltd(0x1550)"}, }; /* pci_vid_1550[] */ -pci_id_t pci_vid_1551[] = { +static pci_id_t const pci_vid_1551[] = { {0x1551, 0xFFFF, 0xFFFF, 0xFFFF, "SMART Electronic DEVELOPMENT GmBH(0x1551)"}, }; /* pci_vid_1551[] */ -pci_id_t pci_vid_1552[] = { +static pci_id_t const pci_vid_1552[] = { {0x1552, 0xFFFF, 0xFFFF, 0xFFFF, "RACAL AIRTECH Ltd(0x1552)"}, }; /* pci_vid_1552[] */ -pci_id_t pci_vid_1553[] = { +static pci_id_t const pci_vid_1553[] = { {0x1553, 0xFFFF, 0xFFFF, 0xFFFF, "CHICONY Electronics Co Ltd(0x1553)"}, }; /* pci_vid_1553[] */ -pci_id_t pci_vid_1554[] = { +static pci_id_t const pci_vid_1554[] = { {0x1554, 0xFFFF, 0xFFFF, 0xFFFF, "PROLINK Microsystems Corp(0x1554)"}, }; /* pci_vid_1554[] */ -pci_id_t pci_vid_1555[] = { +static pci_id_t const pci_vid_1555[] = { {0x1555, 0xFFFF, 0xFFFF, 0xFFFF, "GESYTEC GmBH(0x1555)"}, }; /* pci_vid_1555[] */ -pci_id_t pci_vid_1556[] = { +static pci_id_t const pci_vid_1556[] = { {0x1556, 0xFFFF, 0xFFFF, 0xFFFF, "PLDA(0x1556)"}, {0x1556, 0x1100, 0xFFFF, 0xFFFF, "PCI Express Core Reference Design(0x1100)"}, {0x1556, 0x110F, 0xFFFF, 0xFFFF, "PCI Express Core Reference Design Virtual Function(0x110F)"}, @@ -25306,111 +25400,112 @@ pci_id_t pci_vid_1556[] = { {0x1556, 0xBE00, 0xFFFF, 0xFFFF, "PCI Express Bridge(0xBE00)"}, }; /* pci_vid_1556[] */ -pci_id_t pci_vid_1557[] = { +static pci_id_t const pci_vid_1557[] = { {0x1557, 0xFFFF, 0xFFFF, 0xFFFF, "MEDIASTAR Co Ltd(0x1557)"}, }; /* pci_vid_1557[] */ -pci_id_t pci_vid_1558[] = { +static pci_id_t const pci_vid_1558[] = { {0x1558, 0xFFFF, 0xFFFF, 0xFFFF, "CLEVO/KAPOK Computer(0x1558)"}, +{0x1558, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1558[] */ -pci_id_t pci_vid_1559[] = { +static pci_id_t const pci_vid_1559[] = { {0x1559, 0xFFFF, 0xFFFF, 0xFFFF, "SI LOGIC Ltd(0x1559)"}, }; /* pci_vid_1559[] */ -pci_id_t pci_vid_155A[] = { +static pci_id_t const pci_vid_155A[] = { {0x155A, 0xFFFF, 0xFFFF, 0xFFFF, "INNOMEDIA Inc(0x155A)"}, }; /* pci_vid_155A[] */ -pci_id_t pci_vid_155B[] = { +static pci_id_t const pci_vid_155B[] = { {0x155B, 0xFFFF, 0xFFFF, 0xFFFF, "PROTAC INTERNATIONAL Corp(0x155B)"}, }; /* pci_vid_155B[] */ -pci_id_t pci_vid_155C[] = { +static pci_id_t const pci_vid_155C[] = { {0x155C, 0xFFFF, 0xFFFF, 0xFFFF, "Cemax-Icon Inc(0x155C)"}, }; /* pci_vid_155C[] */ -pci_id_t pci_vid_155D[] = { +static pci_id_t const pci_vid_155D[] = { {0x155D, 0xFFFF, 0xFFFF, 0xFFFF, "Mac System Co Ltd(0x155D)"}, }; /* pci_vid_155D[] */ -pci_id_t pci_vid_155E[] = { +static pci_id_t const pci_vid_155E[] = { {0x155E, 0xFFFF, 0xFFFF, 0xFFFF, "LP Elektronik GmbH(0x155E)"}, }; /* pci_vid_155E[] */ -pci_id_t pci_vid_155F[] = { +static pci_id_t const pci_vid_155F[] = { {0x155F, 0xFFFF, 0xFFFF, 0xFFFF, "Perle Systems Ltd(0x155F)"}, }; /* pci_vid_155F[] */ -pci_id_t pci_vid_1560[] = { +static pci_id_t const pci_vid_1560[] = { {0x1560, 0xFFFF, 0xFFFF, 0xFFFF, "Terayon Communications Systems(0x1560)"}, }; /* pci_vid_1560[] */ -pci_id_t pci_vid_1561[] = { +static pci_id_t const pci_vid_1561[] = { {0x1561, 0xFFFF, 0xFFFF, 0xFFFF, "Viewgraphics Inc(0x1561)"}, }; /* pci_vid_1561[] */ -pci_id_t pci_vid_1562[] = { +static pci_id_t const pci_vid_1562[] = { {0x1562, 0xFFFF, 0xFFFF, 0xFFFF, "Symbol Technologies(0x1562)"}, }; /* pci_vid_1562[] */ -pci_id_t pci_vid_1563[] = { +static pci_id_t const pci_vid_1563[] = { {0x1563, 0xFFFF, 0xFFFF, 0xFFFF, "A-Trend Technology Co Ltd(0x1563)"}, }; /* pci_vid_1563[] */ -pci_id_t pci_vid_1564[] = { +static pci_id_t const pci_vid_1564[] = { {0x1564, 0xFFFF, 0xFFFF, 0xFFFF, "Yamakatsu Electronics Industry Co Ltd(0x1564)"}, }; /* pci_vid_1564[] */ -pci_id_t pci_vid_1565[] = { +static pci_id_t const pci_vid_1565[] = { {0x1565, 0xFFFF, 0xFFFF, 0xFFFF, "Biostar Microtech Int'l Corp(0x1565)"}, }; /* pci_vid_1565[] */ -pci_id_t pci_vid_1566[] = { +static pci_id_t const pci_vid_1566[] = { {0x1566, 0xFFFF, 0xFFFF, 0xFFFF, "Ardent Technologies Inc(0x1566)"}, }; /* pci_vid_1566[] */ -pci_id_t pci_vid_1567[] = { +static pci_id_t const pci_vid_1567[] = { {0x1567, 0xFFFF, 0xFFFF, 0xFFFF, "Jungsoft(0x1567)"}, }; /* pci_vid_1567[] */ -pci_id_t pci_vid_1568[] = { +static pci_id_t const pci_vid_1568[] = { {0x1568, 0xFFFF, 0xFFFF, 0xFFFF, "DDK Electronics Inc(0x1568)"}, }; /* pci_vid_1568[] */ -pci_id_t pci_vid_1569[] = { +static pci_id_t const pci_vid_1569[] = { {0x1569, 0xFFFF, 0xFFFF, 0xFFFF, "Palit Microsystems Inc.(0x1569)"}, }; /* pci_vid_1569[] */ -pci_id_t pci_vid_156A[] = { +static pci_id_t const pci_vid_156A[] = { {0x156A, 0xFFFF, 0xFFFF, 0xFFFF, "Avtec Systems(0x156A)"}, }; /* pci_vid_156A[] */ -pci_id_t pci_vid_156B[] = { +static pci_id_t const pci_vid_156B[] = { {0x156B, 0xFFFF, 0xFFFF, 0xFFFF, "2wire Inc(0x156B)"}, }; /* pci_vid_156B[] */ -pci_id_t pci_vid_156C[] = { +static pci_id_t const pci_vid_156C[] = { {0x156C, 0xFFFF, 0xFFFF, 0xFFFF, "Vidac Electronics GmbH(0x156C)"}, }; /* pci_vid_156C[] */ -pci_id_t pci_vid_156D[] = { +static pci_id_t const pci_vid_156D[] = { {0x156D, 0xFFFF, 0xFFFF, 0xFFFF, "Alpha-Top Corp(0x156D)"}, }; /* pci_vid_156D[] */ -pci_id_t pci_vid_156E[] = { +static pci_id_t const pci_vid_156E[] = { {0x156E, 0xFFFF, 0xFFFF, 0xFFFF, "Alfa Inc(0x156E)"}, }; /* pci_vid_156E[] */ -pci_id_t pci_vid_156F[] = { +static pci_id_t const pci_vid_156F[] = { {0x156F, 0xFFFF, 0xFFFF, 0xFFFF, "M-Systems Flash Disk Pioneers Ltd(0x156F)"}, }; /* pci_vid_156F[] */ -pci_id_t pci_vid_1570[] = { +static pci_id_t const pci_vid_1570[] = { {0x1570, 0xFFFF, 0xFFFF, 0xFFFF, "Teledyne Lecroy(0x1570)"}, }; /* pci_vid_1570[] */ -pci_id_t pci_vid_1571[] = { +static pci_id_t const pci_vid_1571[] = { {0x1571, 0xFFFF, 0xFFFF, 0xFFFF, "Contemporary Controls(0x1571)"}, {0x1571, 0xA001, 0xFFFF, 0xFFFF, "CCSI PCI20-485 ARCnet(0xA001)"}, {0x1571, 0xA002, 0xFFFF, 0xFFFF, "CCSI PCI20-485D ARCnet(0xA002)"}, @@ -25433,128 +25528,128 @@ pci_id_t pci_vid_1571[] = { {0x1571, 0xA206, 0xFFFF, 0xFFFF, "CCSI PCI22-THB 10Mbit ARCnet(0xA206)"}, }; /* pci_vid_1571[] */ -pci_id_t pci_vid_1572[] = { +static pci_id_t const pci_vid_1572[] = { {0x1572, 0xFFFF, 0xFFFF, 0xFFFF, "Otis Elevator Company(0x1572)"}, }; /* pci_vid_1572[] */ -pci_id_t pci_vid_1573[] = { +static pci_id_t const pci_vid_1573[] = { {0x1573, 0xFFFF, 0xFFFF, 0xFFFF, "Lattice - Vantis(0x1573)"}, }; /* pci_vid_1573[] */ -pci_id_t pci_vid_1574[] = { +static pci_id_t const pci_vid_1574[] = { {0x1574, 0xFFFF, 0xFFFF, 0xFFFF, "Fairchild Semiconductor(0x1574)"}, }; /* pci_vid_1574[] */ -pci_id_t pci_vid_1575[] = { +static pci_id_t const pci_vid_1575[] = { {0x1575, 0xFFFF, 0xFFFF, 0xFFFF, "Voltaire Advanced Data Security Ltd(0x1575)"}, }; /* pci_vid_1575[] */ -pci_id_t pci_vid_1576[] = { +static pci_id_t const pci_vid_1576[] = { {0x1576, 0xFFFF, 0xFFFF, 0xFFFF, "Viewcast COM(0x1576)"}, }; /* pci_vid_1576[] */ -pci_id_t pci_vid_1578[] = { +static pci_id_t const pci_vid_1578[] = { {0x1578, 0xFFFF, 0xFFFF, 0xFFFF, "HITT(0x1578)"}, {0x1578, 0x4D34, 0xFFFF, 0xFFFF, "VPMK4 [Video Processor Mk IV](0x4D34)"}, {0x1578, 0x5615, 0xFFFF, 0xFFFF, "VPMK3 [Video Processor Mk III](0x5615)"}, }; /* pci_vid_1578[] */ -pci_id_t pci_vid_1579[] = { +static pci_id_t const pci_vid_1579[] = { {0x1579, 0xFFFF, 0xFFFF, 0xFFFF, "Dual Technology Corp(0x1579)"}, }; /* pci_vid_1579[] */ -pci_id_t pci_vid_157A[] = { +static pci_id_t const pci_vid_157A[] = { {0x157A, 0xFFFF, 0xFFFF, 0xFFFF, "Japan Elecronics Ind Inc(0x157A)"}, }; /* pci_vid_157A[] */ -pci_id_t pci_vid_157B[] = { +static pci_id_t const pci_vid_157B[] = { {0x157B, 0xFFFF, 0xFFFF, 0xFFFF, "Star Multimedia Corp(0x157B)"}, }; /* pci_vid_157B[] */ -pci_id_t pci_vid_157C[] = { +static pci_id_t const pci_vid_157C[] = { {0x157C, 0xFFFF, 0xFFFF, 0xFFFF, "Eurosoft (UK)(0x157C)"}, {0x157C, 0x8001, 0xFFFF, 0xFFFF, "Fix2000 PCI Y2K Compliance Card(0x8001)"}, }; /* pci_vid_157C[] */ -pci_id_t pci_vid_157D[] = { +static pci_id_t const pci_vid_157D[] = { {0x157D, 0xFFFF, 0xFFFF, 0xFFFF, "Gemflex Networks(0x157D)"}, }; /* pci_vid_157D[] */ -pci_id_t pci_vid_157E[] = { +static pci_id_t const pci_vid_157E[] = { {0x157E, 0xFFFF, 0xFFFF, 0xFFFF, "Transition Networks(0x157E)"}, }; /* pci_vid_157E[] */ -pci_id_t pci_vid_157F[] = { +static pci_id_t const pci_vid_157F[] = { {0x157F, 0xFFFF, 0xFFFF, 0xFFFF, "PX Instruments Technology Ltd(0x157F)"}, }; /* pci_vid_157F[] */ -pci_id_t pci_vid_1580[] = { +static pci_id_t const pci_vid_1580[] = { {0x1580, 0xFFFF, 0xFFFF, 0xFFFF, "Primex Aerospace Co(0x1580)"}, }; /* pci_vid_1580[] */ -pci_id_t pci_vid_1581[] = { +static pci_id_t const pci_vid_1581[] = { {0x1581, 0xFFFF, 0xFFFF, 0xFFFF, "SEH Computertechnik GmbH(0x1581)"}, }; /* pci_vid_1581[] */ -pci_id_t pci_vid_1582[] = { +static pci_id_t const pci_vid_1582[] = { {0x1582, 0xFFFF, 0xFFFF, 0xFFFF, "Cytec Corp(0x1582)"}, }; /* pci_vid_1582[] */ -pci_id_t pci_vid_1583[] = { +static pci_id_t const pci_vid_1583[] = { {0x1583, 0xFFFF, 0xFFFF, 0xFFFF, "Inet Technologies Inc(0x1583)"}, }; /* pci_vid_1583[] */ -pci_id_t pci_vid_1584[] = { +static pci_id_t const pci_vid_1584[] = { {0x1584, 0xFFFF, 0xFFFF, 0xFFFF, "Uniwill Computer Corp(0x1584)"}, }; /* pci_vid_1584[] */ -pci_id_t pci_vid_1585[] = { +static pci_id_t const pci_vid_1585[] = { {0x1585, 0xFFFF, 0xFFFF, 0xFFFF, "Logitron(0x1585)"}, }; /* pci_vid_1585[] */ -pci_id_t pci_vid_1586[] = { +static pci_id_t const pci_vid_1586[] = { {0x1586, 0xFFFF, 0xFFFF, 0xFFFF, "Lancast Inc(0x1586)"}, }; /* pci_vid_1586[] */ -pci_id_t pci_vid_1587[] = { +static pci_id_t const pci_vid_1587[] = { {0x1587, 0xFFFF, 0xFFFF, 0xFFFF, "Konica Corp(0x1587)"}, }; /* pci_vid_1587[] */ -pci_id_t pci_vid_1588[] = { +static pci_id_t const pci_vid_1588[] = { {0x1588, 0xFFFF, 0xFFFF, 0xFFFF, "Solidum Systems Corp(0x1588)"}, }; /* pci_vid_1588[] */ -pci_id_t pci_vid_1589[] = { +static pci_id_t const pci_vid_1589[] = { {0x1589, 0xFFFF, 0xFFFF, 0xFFFF, "Atlantek Microsystems Pty Ltd(0x1589)"}, {0x1589, 0x0008, 0xFFFF, 0xFFFF, "Leutron Vision PicPortExpress CL(0x0008)"}, {0x1589, 0x0009, 0xFFFF, 0xFFFF, "Leutron Vision PicPortExpress CL Stereo(0x0009)"}, }; /* pci_vid_1589[] */ -pci_id_t pci_vid_158A[] = { +static pci_id_t const pci_vid_158A[] = { {0x158A, 0xFFFF, 0xFFFF, 0xFFFF, "Digalog Systems Inc(0x158A)"}, }; /* pci_vid_158A[] */ -pci_id_t pci_vid_158B[] = { +static pci_id_t const pci_vid_158B[] = { {0x158B, 0xFFFF, 0xFFFF, 0xFFFF, "Allied Data Technologies(0x158B)"}, }; /* pci_vid_158B[] */ -pci_id_t pci_vid_158C[] = { +static pci_id_t const pci_vid_158C[] = { {0x158C, 0xFFFF, 0xFFFF, 0xFFFF, "Hitachi Semiconductor & Devices Sales Co Ltd(0x158C)"}, }; /* pci_vid_158C[] */ -pci_id_t pci_vid_158D[] = { +static pci_id_t const pci_vid_158D[] = { {0x158D, 0xFFFF, 0xFFFF, 0xFFFF, "Point Multimedia Systems(0x158D)"}, }; /* pci_vid_158D[] */ -pci_id_t pci_vid_158E[] = { +static pci_id_t const pci_vid_158E[] = { {0x158E, 0xFFFF, 0xFFFF, 0xFFFF, "Lara Technology Inc(0x158E)"}, }; /* pci_vid_158E[] */ -pci_id_t pci_vid_158F[] = { +static pci_id_t const pci_vid_158F[] = { {0x158F, 0xFFFF, 0xFFFF, 0xFFFF, "Ditect Coop(0x158F)"}, }; /* pci_vid_158F[] */ -pci_id_t pci_vid_1590[] = { +static pci_id_t const pci_vid_1590[] = { {0x1590, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett Packard Enterprise(0x1590)"}, {0x1590, 0x0001, 0xFFFF, 0xFFFF, "Eagle Cluster Manager(0x0001)"}, {0x1590, 0x0002, 0xFFFF, 0xFFFF, "Osprey Cluster Manager(0x0002)"}, @@ -25564,11 +25659,11 @@ pci_id_t pci_vid_1590[] = { {0x1590, 0xA01D, 0xFFFF, 0xFFFF, "FC044X Fibre Channel HBA(0xA01D)"}, }; /* pci_vid_1590[] */ -pci_id_t pci_vid_1591[] = { +static pci_id_t const pci_vid_1591[] = { {0x1591, 0xFFFF, 0xFFFF, 0xFFFF, "ARN(0x1591)"}, }; /* pci_vid_1591[] */ -pci_id_t pci_vid_1592[] = { +static pci_id_t const pci_vid_1592[] = { {0x1592, 0xFFFF, 0xFFFF, 0xFFFF, "Syba Tech Ltd(0x1592)"}, {0x1592, 0x0781, 0xFFFF, 0xFFFF, "Multi-IO Card(0x0781)"}, {0x1592, 0x0782, 0xFFFF, 0xFFFF, "Parallel Port Card 2xEPP(0x0782)"}, @@ -25580,110 +25675,110 @@ pci_id_t pci_vid_1592[] = { {0x1592, 0x078A, 0xFFFF, 0xFFFF, "Multi-IO Card(0x078A)"}, }; /* pci_vid_1592[] */ -pci_id_t pci_vid_1593[] = { +static pci_id_t const pci_vid_1593[] = { {0x1593, 0xFFFF, 0xFFFF, 0xFFFF, "Bops Inc(0x1593)"}, }; /* pci_vid_1593[] */ -pci_id_t pci_vid_1594[] = { +static pci_id_t const pci_vid_1594[] = { {0x1594, 0xFFFF, 0xFFFF, 0xFFFF, "Netgame Ltd(0x1594)"}, }; /* pci_vid_1594[] */ -pci_id_t pci_vid_1595[] = { +static pci_id_t const pci_vid_1595[] = { {0x1595, 0xFFFF, 0xFFFF, 0xFFFF, "Diva Systems Corp(0x1595)"}, }; /* pci_vid_1595[] */ -pci_id_t pci_vid_1596[] = { +static pci_id_t const pci_vid_1596[] = { {0x1596, 0xFFFF, 0xFFFF, 0xFFFF, "Folsom Research Inc(0x1596)"}, }; /* pci_vid_1596[] */ -pci_id_t pci_vid_1597[] = { +static pci_id_t const pci_vid_1597[] = { {0x1597, 0xFFFF, 0xFFFF, 0xFFFF, "Memec Design Services(0x1597)"}, }; /* pci_vid_1597[] */ -pci_id_t pci_vid_1598[] = { +static pci_id_t const pci_vid_1598[] = { {0x1598, 0xFFFF, 0xFFFF, 0xFFFF, "Granite Microsystems(0x1598)"}, }; /* pci_vid_1598[] */ -pci_id_t pci_vid_1599[] = { +static pci_id_t const pci_vid_1599[] = { {0x1599, 0xFFFF, 0xFFFF, 0xFFFF, "Delta Electronics Inc(0x1599)"}, }; /* pci_vid_1599[] */ -pci_id_t pci_vid_159A[] = { +static pci_id_t const pci_vid_159A[] = { {0x159A, 0xFFFF, 0xFFFF, 0xFFFF, "General Instrument(0x159A)"}, }; /* pci_vid_159A[] */ -pci_id_t pci_vid_159B[] = { +static pci_id_t const pci_vid_159B[] = { {0x159B, 0xFFFF, 0xFFFF, 0xFFFF, "Faraday Technology Corp(0x159B)"}, {0x159B, 0x4321, 0xFFFF, 0xFFFF, "StorLink SL3516 (Gemini) Host Bridge(0x4321)"}, }; /* pci_vid_159B[] */ -pci_id_t pci_vid_159C[] = { +static pci_id_t const pci_vid_159C[] = { {0x159C, 0xFFFF, 0xFFFF, 0xFFFF, "Stratus Computer Systems(0x159C)"}, }; /* pci_vid_159C[] */ -pci_id_t pci_vid_159D[] = { +static pci_id_t const pci_vid_159D[] = { {0x159D, 0xFFFF, 0xFFFF, 0xFFFF, "Ningbo Harrison Electronics Co Ltd(0x159D)"}, }; /* pci_vid_159D[] */ -pci_id_t pci_vid_159E[] = { +static pci_id_t const pci_vid_159E[] = { {0x159E, 0xFFFF, 0xFFFF, 0xFFFF, "A-Max Technology Co Ltd(0x159E)"}, }; /* pci_vid_159E[] */ -pci_id_t pci_vid_159F[] = { +static pci_id_t const pci_vid_159F[] = { {0x159F, 0xFFFF, 0xFFFF, 0xFFFF, "Galea Network Security(0x159F)"}, }; /* pci_vid_159F[] */ -pci_id_t pci_vid_15A0[] = { +static pci_id_t const pci_vid_15A0[] = { {0x15A0, 0xFFFF, 0xFFFF, 0xFFFF, "Compumaster SRL(0x15A0)"}, }; /* pci_vid_15A0[] */ -pci_id_t pci_vid_15A1[] = { +static pci_id_t const pci_vid_15A1[] = { {0x15A1, 0xFFFF, 0xFFFF, 0xFFFF, "Geocast Network Systems(0x15A1)"}, }; /* pci_vid_15A1[] */ -pci_id_t pci_vid_15A2[] = { +static pci_id_t const pci_vid_15A2[] = { {0x15A2, 0xFFFF, 0xFFFF, 0xFFFF, "Catalyst Enterprises Inc(0x15A2)"}, {0x15A2, 0x0001, 0xFFFF, 0xFFFF, "TA700 PCI Bus Analyzer/Exerciser(0x0001)"}, }; /* pci_vid_15A2[] */ -pci_id_t pci_vid_15A3[] = { +static pci_id_t const pci_vid_15A3[] = { {0x15A3, 0xFFFF, 0xFFFF, 0xFFFF, "Italtel(0x15A3)"}, }; /* pci_vid_15A3[] */ -pci_id_t pci_vid_15A4[] = { +static pci_id_t const pci_vid_15A4[] = { {0x15A4, 0xFFFF, 0xFFFF, 0xFFFF, "X-Net OY(0x15A4)"}, }; /* pci_vid_15A4[] */ -pci_id_t pci_vid_15A5[] = { +static pci_id_t const pci_vid_15A5[] = { {0x15A5, 0xFFFF, 0xFFFF, 0xFFFF, "Toyota Macs Inc(0x15A5)"}, }; /* pci_vid_15A5[] */ -pci_id_t pci_vid_15A6[] = { +static pci_id_t const pci_vid_15A6[] = { {0x15A6, 0xFFFF, 0xFFFF, 0xFFFF, "Sunlight Ultrasound Technologies Ltd(0x15A6)"}, }; /* pci_vid_15A6[] */ -pci_id_t pci_vid_15A7[] = { +static pci_id_t const pci_vid_15A7[] = { {0x15A7, 0xFFFF, 0xFFFF, 0xFFFF, "SSE Telecom Inc(0x15A7)"}, }; /* pci_vid_15A7[] */ -pci_id_t pci_vid_15A8[] = { +static pci_id_t const pci_vid_15A8[] = { {0x15A8, 0xFFFF, 0xFFFF, 0xFFFF, "Shanghai Communications Technologies Center(0x15A8)"}, }; /* pci_vid_15A8[] */ -pci_id_t pci_vid_15AA[] = { +static pci_id_t const pci_vid_15AA[] = { {0x15AA, 0xFFFF, 0xFFFF, 0xFFFF, "Moreton Bay(0x15AA)"}, }; /* pci_vid_15AA[] */ -pci_id_t pci_vid_15AB[] = { +static pci_id_t const pci_vid_15AB[] = { {0x15AB, 0xFFFF, 0xFFFF, 0xFFFF, "Bluesteel Networks Inc(0x15AB)"}, }; /* pci_vid_15AB[] */ -pci_id_t pci_vid_15AC[] = { +static pci_id_t const pci_vid_15AC[] = { {0x15AC, 0xFFFF, 0xFFFF, 0xFFFF, "North Atlantic Instruments(0x15AC)"}, {0x15AC, 0x6893, 0xFFFF, 0xFFFF, "3U OpenVPX Multi-function I/O Board [Model 68C3](0x6893)"}, }; /* pci_vid_15AC[] */ -pci_id_t pci_vid_15AD[] = { +static pci_id_t const pci_vid_15AD[] = { {0x15AD, 0xFFFF, 0xFFFF, 0xFFFF, "VMware(0x15AD)"}, {0x15AD, 0x0405, 0xFFFF, 0xFFFF, "SVGA II Adapter(0x0405)"}, {0x15AD, 0x0710, 0xFFFF, 0xFFFF, "SVGA Adapter(0x0710)"}, @@ -25705,23 +25800,23 @@ pci_id_t pci_vid_15AD[] = { {0x15AD, 0x1977, 0xFFFF, 0xFFFF, "HD Audio Controller(0x1977)"}, }; /* pci_vid_15AD[] */ -pci_id_t pci_vid_15AE[] = { +static pci_id_t const pci_vid_15AE[] = { {0x15AE, 0xFFFF, 0xFFFF, 0xFFFF, "Amersham Pharmacia Biotech(0x15AE)"}, }; /* pci_vid_15AE[] */ -pci_id_t pci_vid_15B0[] = { +static pci_id_t const pci_vid_15B0[] = { {0x15B0, 0xFFFF, 0xFFFF, 0xFFFF, "Zoltrix International Ltd(0x15B0)"}, }; /* pci_vid_15B0[] */ -pci_id_t pci_vid_15B1[] = { +static pci_id_t const pci_vid_15B1[] = { {0x15B1, 0xFFFF, 0xFFFF, 0xFFFF, "Source Technology Inc(0x15B1)"}, }; /* pci_vid_15B1[] */ -pci_id_t pci_vid_15B2[] = { +static pci_id_t const pci_vid_15B2[] = { {0x15B2, 0xFFFF, 0xFFFF, 0xFFFF, "Mosaid Technologies Inc(0x15B2)"}, }; /* pci_vid_15B2[] */ -pci_id_t pci_vid_15B3[] = { +static pci_id_t const pci_vid_15B3[] = { {0x15B3, 0xFFFF, 0xFFFF, 0xFFFF, "Mellanox Technologies(0x15B3)"}, {0x15B3, 0x0191, 0xFFFF, 0xFFFF, "MT25408 [ConnectX IB Flash Recovery](0x0191)"}, {0x15B3, 0x01F6, 0xFFFF, 0xFFFF, "MT27500 Family [ConnectX-3 Flash Recovery](0x01F6)"}, @@ -25778,6 +25873,8 @@ pci_id_t pci_vid_15B3[] = { {0x15B3, 0x0283, 0xFFFF, 0xFFFF, "ArcusE RMA(0x0283)"}, {0x15B3, 0x0284, 0xFFFF, 0xFFFF, "Sagitta(0x0284)"}, {0x15B3, 0x0285, 0xFFFF, 0xFFFF, "Sagitta RMA(0x0285)"}, +{0x15B3, 0x0286, 0xFFFF, 0xFFFF, "LibraE Flash Recovery(0x0286)"}, +{0x15B3, 0x0287, 0xFFFF, 0xFFFF, "LibraE RMA(0x0287)"}, {0x15B3, 0x1002, 0xFFFF, 0xFFFF, "MT25400 Family [ConnectX-2 Virtual Function](0x1002)"}, {0x15B3, 0x1003, 0xFFFF, 0xFFFF, "MT27500 Family [ConnectX-3](0x1003)"}, {0x15B3, 0x1003, 0x1014, 0x04B5, "PCIe3 40GbE RoCE Converged Host Bus Adapter for Power(0x1014-0x04B5)"}, @@ -25952,6 +26049,7 @@ pci_id_t pci_vid_15B3[] = { {0x15B3, 0xA2DE, 0xFFFF, 0xFFFF, "BF4 Family Crypto disabled [BlueField-4 SoC Crypto disabled](0xA2DE)"}, {0x15B3, 0xA2DF, 0xFFFF, 0xFFFF, "BF4 Family integrated network controller [BlueField-4 integrated network controller](0xA2DF)"}, {0x15B3, 0xB200, 0xFFFF, 0xFFFF, "ArcusE(0xB200)"}, +{0x15B3, 0xB201, 0xFFFF, 0xFFFF, "LibraE(0xB201)"}, {0x15B3, 0xC2D1, 0xFFFF, 0xFFFF, "BlueField DPU Family Auxiliary Communication Channel [BlueField Family](0xC2D1)"}, {0x15B3, 0xC2D2, 0xFFFF, 0xFFFF, "MT416842 BlueField SoC management interfac(0xC2D2)"}, {0x15B3, 0xC2D3, 0xFFFF, 0xFFFF, "MT42822 BlueField-2 SoC Management Interface(0xC2D3)"}, @@ -25976,15 +26074,15 @@ pci_id_t pci_vid_15B3[] = { {0x15B3, 0xD2F6, 0xFFFF, 0xFFFF, "Quantum-3CPO(0xD2F6)"}, }; /* pci_vid_15B3[] */ -pci_id_t pci_vid_15B4[] = { +static pci_id_t const pci_vid_15B4[] = { {0x15B4, 0xFFFF, 0xFFFF, 0xFFFF, "CCI/TRIAD(0x15B4)"}, }; /* pci_vid_15B4[] */ -pci_id_t pci_vid_15B5[] = { +static pci_id_t const pci_vid_15B5[] = { {0x15B5, 0xFFFF, 0xFFFF, 0xFFFF, "Cimetrics Inc(0x15B5)"}, }; /* pci_vid_15B5[] */ -pci_id_t pci_vid_15B6[] = { +static pci_id_t const pci_vid_15B6[] = { {0x15B6, 0xFFFF, 0xFFFF, 0xFFFF, "Texas Memory Systems Inc(0x15B6)"}, {0x15B6, 0x0001, 0xFFFF, 0xFFFF, "XP15 DSP Accelerator(0x0001)"}, {0x15B6, 0x0002, 0xFFFF, 0xFFFF, "XP30 DSP Accelerator(0x0002)"}, @@ -26004,7 +26102,7 @@ pci_id_t pci_vid_15B6[] = { {0x15B6, 0x0015, 0xFFFF, 0xFFFF, "ZBox(0x0015)"}, }; /* pci_vid_15B6[] */ -pci_id_t pci_vid_15B7[] = { +static pci_id_t const pci_vid_15B7[] = { {0x15B7, 0xFFFF, 0xFFFF, 0xFFFF, "Sandisk Corp(0x15B7)"}, {0x15B7, 0x2001, 0xFFFF, 0xFFFF, "Skyhawk Series NVME SSD(0x2001)"}, {0x15B7, 0x5001, 0xFFFF, 0xFFFF, "WD Black NVMe SSD(0x5001)"}, @@ -26035,9 +26133,10 @@ pci_id_t pci_vid_15B7[] = { {0x15B7, 0x5028, 0xFFFF, 0xFFFF, "WD CH SN560 NVMe SSD(0x5028)"}, {0x15B7, 0x5030, 0xFFFF, 0xFFFF, "WD Black SN850X NVMe SSD(0x5030)"}, {0x15B7, 0x5041, 0xFFFF, 0xFFFF, "WD Blue SN580 NVMe SSD (DRAM-less)(0x5041)"}, +{0x15B7, 0x5042, 0xFFFF, 0xFFFF, "WD Black SN770M NVMe SSD (DRAM-less)(0x5042)"}, }; /* pci_vid_15B7[] */ -pci_id_t pci_vid_15B8[] = { +static pci_id_t const pci_vid_15B8[] = { {0x15B8, 0xFFFF, 0xFFFF, 0xFFFF, "ADDI-DATA GmbH(0x15B8)"}, {0x15B8, 0x1001, 0xFFFF, 0xFFFF, "APCI1516 SP controller (16 digi outputs)(0x1001)"}, {0x15B8, 0x1003, 0xFFFF, 0xFFFF, "APCI1032 SP controller (32 digi inputs w/ opto coupler)(0x1003)"}, @@ -26051,19 +26150,19 @@ pci_id_t pci_vid_15B8[] = { {0x15B8, 0x7002, 0xFFFF, 0xFFFF, "APCI7300 Serial Controller(0x7002)"}, }; /* pci_vid_15B8[] */ -pci_id_t pci_vid_15B9[] = { +static pci_id_t const pci_vid_15B9[] = { {0x15B9, 0xFFFF, 0xFFFF, 0xFFFF, "Maestro Digital Communications(0x15B9)"}, }; /* pci_vid_15B9[] */ -pci_id_t pci_vid_15BA[] = { +static pci_id_t const pci_vid_15BA[] = { {0x15BA, 0xFFFF, 0xFFFF, 0xFFFF, "Impacct Technology Corp(0x15BA)"}, }; /* pci_vid_15BA[] */ -pci_id_t pci_vid_15BB[] = { +static pci_id_t const pci_vid_15BB[] = { {0x15BB, 0xFFFF, 0xFFFF, 0xFFFF, "Portwell Inc(0x15BB)"}, }; /* pci_vid_15BB[] */ -pci_id_t pci_vid_15BC[] = { +static pci_id_t const pci_vid_15BC[] = { {0x15BC, 0xFFFF, 0xFFFF, 0xFFFF, "Agilent Technologies(0x15BC)"}, {0x15BC, 0x0100, 0xFFFF, 0xFFFF, "HPFC-5600 Tachyon DX2+ FC(0x0100)"}, {0x15BC, 0x0103, 0xFFFF, 0xFFFF, "QX4 PCI Express quad 4-gigabit Fibre Channel controller(0x0103)"}, @@ -26071,6 +26170,10 @@ pci_id_t pci_vid_15BC[] = { {0x15BC, 0x0105, 0x117C, 0x0022, "Celerity FC-42XS Fibre Channel Adapter(0x117C-0x0022)"}, {0x15BC, 0x0105, 0x117C, 0x0025, "Celerity FC-44ES Fibre Channel Adapter(0x117C-0x0025)"}, {0x15BC, 0x0105, 0x117C, 0x0026, "Celerity FC-42ES Fibre Channel Adapter(0x117C-0x0026)"}, +{0x15BC, 0x0500, 0xFFFF, 0xFFFF, "Infiniium Memory Controller Interface(0x0500)"}, +{0x15BC, 0x0501, 0xFFFF, 0xFFFF, "Infiniium Acquisition System Interface(0x0501)"}, +{0x15BC, 0x0507, 0xFFFF, 0xFFFF, "Infiniium Acquisition System (80000 series)(0x0507)"}, +{0x15BC, 0x0508, 0xFFFF, 0xFFFF, "Infiniium Acquisition Support(0x0508)"}, {0x15BC, 0x0B01, 0xFFFF, 0xFFFF, "82350B PCI GPIB(0x0B01)"}, {0x15BC, 0x1100, 0xFFFF, 0xFFFF, "E8001-66442 PCI Express CIC(0x1100)"}, {0x15BC, 0x1218, 0xFFFF, 0xFFFF, "82351A PCI Express GPIB(0x1218)"}, @@ -26081,329 +26184,328 @@ pci_id_t pci_vid_15BC[] = { {0x15BC, 0x2929, 0xFFFF, 0xFFFF, "64 Bit, 133MHz PCI-X Analyzer & Exerciser(0x2929)"}, }; /* pci_vid_15BC[] */ -pci_id_t pci_vid_15BD[] = { +static pci_id_t const pci_vid_15BD[] = { {0x15BD, 0xFFFF, 0xFFFF, 0xFFFF, "DFI Inc(0x15BD)"}, }; /* pci_vid_15BD[] */ -pci_id_t pci_vid_15BE[] = { +static pci_id_t const pci_vid_15BE[] = { {0x15BE, 0xFFFF, 0xFFFF, 0xFFFF, "Sola Electronics(0x15BE)"}, }; /* pci_vid_15BE[] */ -pci_id_t pci_vid_15BF[] = { +static pci_id_t const pci_vid_15BF[] = { {0x15BF, 0xFFFF, 0xFFFF, 0xFFFF, "High Tech Computer Corp (HTC)(0x15BF)"}, }; /* pci_vid_15BF[] */ -pci_id_t pci_vid_15C0[] = { +static pci_id_t const pci_vid_15C0[] = { {0x15C0, 0xFFFF, 0xFFFF, 0xFFFF, "BVM Ltd(0x15C0)"}, }; /* pci_vid_15C0[] */ -pci_id_t pci_vid_15C1[] = { +static pci_id_t const pci_vid_15C1[] = { {0x15C1, 0xFFFF, 0xFFFF, 0xFFFF, "Quantel(0x15C1)"}, }; /* pci_vid_15C1[] */ -pci_id_t pci_vid_15C2[] = { +static pci_id_t const pci_vid_15C2[] = { {0x15C2, 0xFFFF, 0xFFFF, 0xFFFF, "Newer Technology Inc(0x15C2)"}, }; /* pci_vid_15C2[] */ -pci_id_t pci_vid_15C3[] = { +static pci_id_t const pci_vid_15C3[] = { {0x15C3, 0xFFFF, 0xFFFF, 0xFFFF, "Taiwan Mycomp Co Ltd(0x15C3)"}, }; /* pci_vid_15C3[] */ -pci_id_t pci_vid_15C4[] = { +static pci_id_t const pci_vid_15C4[] = { {0x15C4, 0xFFFF, 0xFFFF, 0xFFFF, "EVSX Inc(0x15C4)"}, }; /* pci_vid_15C4[] */ -pci_id_t pci_vid_15C5[] = { +static pci_id_t const pci_vid_15C5[] = { {0x15C5, 0xFFFF, 0xFFFF, 0xFFFF, "Procomp Informatics Ltd(0x15C5)"}, {0x15C5, 0x8010, 0xFFFF, 0xFFFF, "1394b - 1394 Firewire 3-Port Host Adapter Card(0x8010)"}, }; /* pci_vid_15C5[] */ -pci_id_t pci_vid_15C6[] = { +static pci_id_t const pci_vid_15C6[] = { {0x15C6, 0xFFFF, 0xFFFF, 0xFFFF, "Technical University of Budapest(0x15C6)"}, }; /* pci_vid_15C6[] */ -pci_id_t pci_vid_15C7[] = { +static pci_id_t const pci_vid_15C7[] = { {0x15C7, 0xFFFF, 0xFFFF, 0xFFFF, "Tateyama System Laboratory Co Ltd(0x15C7)"}, {0x15C7, 0x0349, 0xFFFF, 0xFFFF, "Tateyama C-PCI PLC/NC card Rev.01A(0x0349)"}, }; /* pci_vid_15C7[] */ -pci_id_t pci_vid_15C8[] = { +static pci_id_t const pci_vid_15C8[] = { {0x15C8, 0xFFFF, 0xFFFF, 0xFFFF, "Penta Media Co Ltd(0x15C8)"}, }; /* pci_vid_15C8[] */ -pci_id_t pci_vid_15C9[] = { +static pci_id_t const pci_vid_15C9[] = { {0x15C9, 0xFFFF, 0xFFFF, 0xFFFF, "Serome Technology Inc(0x15C9)"}, }; /* pci_vid_15C9[] */ -pci_id_t pci_vid_15CA[] = { +static pci_id_t const pci_vid_15CA[] = { {0x15CA, 0xFFFF, 0xFFFF, 0xFFFF, "Bitboys OY(0x15CA)"}, }; /* pci_vid_15CA[] */ -pci_id_t pci_vid_15CB[] = { +static pci_id_t const pci_vid_15CB[] = { {0x15CB, 0xFFFF, 0xFFFF, 0xFFFF, "AG Electronics Ltd(0x15CB)"}, }; /* pci_vid_15CB[] */ -pci_id_t pci_vid_15CC[] = { +static pci_id_t const pci_vid_15CC[] = { {0x15CC, 0xFFFF, 0xFFFF, 0xFFFF, "Hotrail Inc(0x15CC)"}, }; /* pci_vid_15CC[] */ -pci_id_t pci_vid_15CD[] = { +static pci_id_t const pci_vid_15CD[] = { {0x15CD, 0xFFFF, 0xFFFF, 0xFFFF, "Dreamtech Co Ltd(0x15CD)"}, }; /* pci_vid_15CD[] */ -pci_id_t pci_vid_15CE[] = { +static pci_id_t const pci_vid_15CE[] = { {0x15CE, 0xFFFF, 0xFFFF, 0xFFFF, "Genrad Inc(0x15CE)"}, }; /* pci_vid_15CE[] */ -pci_id_t pci_vid_15CF[] = { +static pci_id_t const pci_vid_15CF[] = { {0x15CF, 0xFFFF, 0xFFFF, 0xFFFF, "Hilscher Gesellschaft für Systemautomation mbH(0x15CF)"}, {0x15CF, 0x0000, 0xFFFF, 0xFFFF, "CIFX PCI/PCIe(0x0000)"}, }; /* pci_vid_15CF[] */ -pci_id_t pci_vid_15D1[] = { +static pci_id_t const pci_vid_15D1[] = { {0x15D1, 0xFFFF, 0xFFFF, 0xFFFF, "Infineon Technologies AG(0x15D1)"}, }; /* pci_vid_15D1[] */ -pci_id_t pci_vid_15D2[] = { +static pci_id_t const pci_vid_15D2[] = { {0x15D2, 0xFFFF, 0xFFFF, 0xFFFF, "FIC (First International Computer Inc)(0x15D2)"}, }; /* pci_vid_15D2[] */ -pci_id_t pci_vid_15D3[] = { +static pci_id_t const pci_vid_15D3[] = { {0x15D3, 0xFFFF, 0xFFFF, 0xFFFF, "NDS Technologies Israel Ltd(0x15D3)"}, }; /* pci_vid_15D3[] */ -pci_id_t pci_vid_15D4[] = { +static pci_id_t const pci_vid_15D4[] = { {0x15D4, 0xFFFF, 0xFFFF, 0xFFFF, "Iwill Corp(0x15D4)"}, }; /* pci_vid_15D4[] */ -pci_id_t pci_vid_15D5[] = { +static pci_id_t const pci_vid_15D5[] = { {0x15D5, 0xFFFF, 0xFFFF, 0xFFFF, "Tatung Co(0x15D5)"}, }; /* pci_vid_15D5[] */ -pci_id_t pci_vid_15D6[] = { +static pci_id_t const pci_vid_15D6[] = { {0x15D6, 0xFFFF, 0xFFFF, 0xFFFF, "Entridia Corp(0x15D6)"}, }; /* pci_vid_15D6[] */ -pci_id_t pci_vid_15D7[] = { +static pci_id_t const pci_vid_15D7[] = { {0x15D7, 0xFFFF, 0xFFFF, 0xFFFF, "Rockwell-Collins Inc(0x15D7)"}, }; /* pci_vid_15D7[] */ -pci_id_t pci_vid_15D8[] = { +static pci_id_t const pci_vid_15D8[] = { {0x15D8, 0xFFFF, 0xFFFF, 0xFFFF, "Cybernetics Technology Co Ltd(0x15D8)"}, }; /* pci_vid_15D8[] */ -pci_id_t pci_vid_15D9[] = { +static pci_id_t const pci_vid_15D9[] = { {0x15D9, 0xFFFF, 0xFFFF, 0xFFFF, "Super Micro Computer Inc(0x15D9)"}, {0x15D9, 0x1B64, 0xFFFF, 0xFFFF, "SCC-B8SB80-B1(0x1B64)"}, -{0x15D9, 0x1B67, 0xFFFF, 0xFFFF, "AOC-S3916L-H16iR-32DD(0x1B67)"}, {0x15D9, 0x1B9D, 0xFFFF, 0xFFFF, "Supermicro AOC-S3816L-L16IR(0x1B9D)"}, {0x15D9, 0x1C6E, 0xFFFF, 0xFFFF, "Supermicro AOC-SLG4-2H8M2(0x1C6E)"}, }; /* pci_vid_15D9[] */ -pci_id_t pci_vid_15DA[] = { +static pci_id_t const pci_vid_15DA[] = { {0x15DA, 0xFFFF, 0xFFFF, 0xFFFF, "Cyberfirm Inc(0x15DA)"}, }; /* pci_vid_15DA[] */ -pci_id_t pci_vid_15DB[] = { +static pci_id_t const pci_vid_15DB[] = { {0x15DB, 0xFFFF, 0xFFFF, 0xFFFF, "Applied Computing Systems Inc(0x15DB)"}, }; /* pci_vid_15DB[] */ -pci_id_t pci_vid_15DC[] = { +static pci_id_t const pci_vid_15DC[] = { {0x15DC, 0xFFFF, 0xFFFF, 0xFFFF, "Litronic Inc(0x15DC)"}, {0x15DC, 0x0001, 0xFFFF, 0xFFFF, "Argus 300 PCI Cryptography Module(0x0001)"}, }; /* pci_vid_15DC[] */ -pci_id_t pci_vid_15DD[] = { +static pci_id_t const pci_vid_15DD[] = { {0x15DD, 0xFFFF, 0xFFFF, 0xFFFF, "Sigmatel Inc(0x15DD)"}, }; /* pci_vid_15DD[] */ -pci_id_t pci_vid_15DE[] = { +static pci_id_t const pci_vid_15DE[] = { {0x15DE, 0xFFFF, 0xFFFF, 0xFFFF, "Malleable Technologies Inc(0x15DE)"}, }; /* pci_vid_15DE[] */ -pci_id_t pci_vid_15DF[] = { +static pci_id_t const pci_vid_15DF[] = { {0x15DF, 0xFFFF, 0xFFFF, 0xFFFF, "Infinilink Corp(0x15DF)"}, }; /* pci_vid_15DF[] */ -pci_id_t pci_vid_15E0[] = { +static pci_id_t const pci_vid_15E0[] = { {0x15E0, 0xFFFF, 0xFFFF, 0xFFFF, "Cacheflow Inc(0x15E0)"}, }; /* pci_vid_15E0[] */ -pci_id_t pci_vid_15E1[] = { +static pci_id_t const pci_vid_15E1[] = { {0x15E1, 0xFFFF, 0xFFFF, 0xFFFF, "Voice Technologies Group Inc(0x15E1)"}, }; /* pci_vid_15E1[] */ -pci_id_t pci_vid_15E2[] = { +static pci_id_t const pci_vid_15E2[] = { {0x15E2, 0xFFFF, 0xFFFF, 0xFFFF, "Quicknet Technologies Inc(0x15E2)"}, {0x15E2, 0x0500, 0xFFFF, 0xFFFF, "PhoneJack-PCI(0x0500)"}, }; /* pci_vid_15E2[] */ -pci_id_t pci_vid_15E3[] = { +static pci_id_t const pci_vid_15E3[] = { {0x15E3, 0xFFFF, 0xFFFF, 0xFFFF, "Networth Technologies Inc(0x15E3)"}, }; /* pci_vid_15E3[] */ -pci_id_t pci_vid_15E4[] = { +static pci_id_t const pci_vid_15E4[] = { {0x15E4, 0xFFFF, 0xFFFF, 0xFFFF, "VSN Systemen BV(0x15E4)"}, }; /* pci_vid_15E4[] */ -pci_id_t pci_vid_15E5[] = { +static pci_id_t const pci_vid_15E5[] = { {0x15E5, 0xFFFF, 0xFFFF, 0xFFFF, "Valley technologies Inc(0x15E5)"}, }; /* pci_vid_15E5[] */ -pci_id_t pci_vid_15E6[] = { +static pci_id_t const pci_vid_15E6[] = { {0x15E6, 0xFFFF, 0xFFFF, 0xFFFF, "Agere Inc(0x15E6)"}, }; /* pci_vid_15E6[] */ -pci_id_t pci_vid_15E7[] = { +static pci_id_t const pci_vid_15E7[] = { {0x15E7, 0xFFFF, 0xFFFF, 0xFFFF, "Get Engineering Corp(0x15E7)"}, }; /* pci_vid_15E7[] */ -pci_id_t pci_vid_15E8[] = { +static pci_id_t const pci_vid_15E8[] = { {0x15E8, 0xFFFF, 0xFFFF, 0xFFFF, "National Datacomm Corp(0x15E8)"}, {0x15E8, 0x0130, 0xFFFF, 0xFFFF, "Wireless PCI Card(0x0130)"}, {0x15E8, 0x0131, 0xFFFF, 0xFFFF, "NCP130A2 Wireless NIC(0x0131)"}, }; /* pci_vid_15E8[] */ -pci_id_t pci_vid_15E9[] = { +static pci_id_t const pci_vid_15E9[] = { {0x15E9, 0xFFFF, 0xFFFF, 0xFFFF, "Pacific Digital Corp(0x15E9)"}, {0x15E9, 0x1841, 0xFFFF, 0xFFFF, "ADMA-100 DiscStaQ ATA Controller(0x1841)"}, }; /* pci_vid_15E9[] */ -pci_id_t pci_vid_15EA[] = { +static pci_id_t const pci_vid_15EA[] = { {0x15EA, 0xFFFF, 0xFFFF, 0xFFFF, "Tokyo Denshi Sekei K.K.(0x15EA)"}, }; /* pci_vid_15EA[] */ -pci_id_t pci_vid_15EB[] = { +static pci_id_t const pci_vid_15EB[] = { {0x15EB, 0xFFFF, 0xFFFF, 0xFFFF, "DResearch Digital Media Systems GmbH(0x15EB)"}, }; /* pci_vid_15EB[] */ -pci_id_t pci_vid_15EC[] = { +static pci_id_t const pci_vid_15EC[] = { {0x15EC, 0xFFFF, 0xFFFF, 0xFFFF, "Beckhoff GmbH(0x15EC)"}, {0x15EC, 0x3101, 0xFFFF, 0xFFFF, "FC3101 Profibus DP 1 Channel PCI(0x3101)"}, {0x15EC, 0x5102, 0xFFFF, 0xFFFF, "FC5102(0x5102)"}, }; /* pci_vid_15EC[] */ -pci_id_t pci_vid_15ED[] = { +static pci_id_t const pci_vid_15ED[] = { {0x15ED, 0xFFFF, 0xFFFF, 0xFFFF, "Macrolink Inc(0x15ED)"}, }; /* pci_vid_15ED[] */ -pci_id_t pci_vid_15EE[] = { +static pci_id_t const pci_vid_15EE[] = { {0x15EE, 0xFFFF, 0xFFFF, 0xFFFF, "In Win Development Inc(0x15EE)"}, }; /* pci_vid_15EE[] */ -pci_id_t pci_vid_15EF[] = { +static pci_id_t const pci_vid_15EF[] = { {0x15EF, 0xFFFF, 0xFFFF, 0xFFFF, "Intelligent Paradigm Inc(0x15EF)"}, }; /* pci_vid_15EF[] */ -pci_id_t pci_vid_15F0[] = { +static pci_id_t const pci_vid_15F0[] = { {0x15F0, 0xFFFF, 0xFFFF, 0xFFFF, "B-Tree Systems Inc(0x15F0)"}, }; /* pci_vid_15F0[] */ -pci_id_t pci_vid_15F1[] = { +static pci_id_t const pci_vid_15F1[] = { {0x15F1, 0xFFFF, 0xFFFF, 0xFFFF, "Times N Systems Inc(0x15F1)"}, }; /* pci_vid_15F1[] */ -pci_id_t pci_vid_15F2[] = { +static pci_id_t const pci_vid_15F2[] = { {0x15F2, 0xFFFF, 0xFFFF, 0xFFFF, "Diagnostic Instruments Inc(0x15F2)"}, }; /* pci_vid_15F2[] */ -pci_id_t pci_vid_15F3[] = { +static pci_id_t const pci_vid_15F3[] = { {0x15F3, 0xFFFF, 0xFFFF, 0xFFFF, "Digitmedia Corp(0x15F3)"}, }; /* pci_vid_15F3[] */ -pci_id_t pci_vid_15F4[] = { +static pci_id_t const pci_vid_15F4[] = { {0x15F4, 0xFFFF, 0xFFFF, 0xFFFF, "Valuesoft(0x15F4)"}, }; /* pci_vid_15F4[] */ -pci_id_t pci_vid_15F5[] = { +static pci_id_t const pci_vid_15F5[] = { {0x15F5, 0xFFFF, 0xFFFF, 0xFFFF, "Power Micro Research(0x15F5)"}, }; /* pci_vid_15F5[] */ -pci_id_t pci_vid_15F6[] = { +static pci_id_t const pci_vid_15F6[] = { {0x15F6, 0xFFFF, 0xFFFF, 0xFFFF, "Extreme Packet Device Inc(0x15F6)"}, }; /* pci_vid_15F6[] */ -pci_id_t pci_vid_15F7[] = { +static pci_id_t const pci_vid_15F7[] = { {0x15F7, 0xFFFF, 0xFFFF, 0xFFFF, "Banctec(0x15F7)"}, }; /* pci_vid_15F7[] */ -pci_id_t pci_vid_15F8[] = { +static pci_id_t const pci_vid_15F8[] = { {0x15F8, 0xFFFF, 0xFFFF, 0xFFFF, "Koga Electronics Co(0x15F8)"}, }; /* pci_vid_15F8[] */ -pci_id_t pci_vid_15F9[] = { +static pci_id_t const pci_vid_15F9[] = { {0x15F9, 0xFFFF, 0xFFFF, 0xFFFF, "Zenith Electronics Corp(0x15F9)"}, }; /* pci_vid_15F9[] */ -pci_id_t pci_vid_15FA[] = { +static pci_id_t const pci_vid_15FA[] = { {0x15FA, 0xFFFF, 0xFFFF, 0xFFFF, "J.P. Axzam Corp(0x15FA)"}, }; /* pci_vid_15FA[] */ -pci_id_t pci_vid_15FB[] = { +static pci_id_t const pci_vid_15FB[] = { {0x15FB, 0xFFFF, 0xFFFF, 0xFFFF, "Zilog Inc(0x15FB)"}, }; /* pci_vid_15FB[] */ -pci_id_t pci_vid_15FC[] = { +static pci_id_t const pci_vid_15FC[] = { {0x15FC, 0xFFFF, 0xFFFF, 0xFFFF, "Techsan Electronics Co Ltd(0x15FC)"}, }; /* pci_vid_15FC[] */ -pci_id_t pci_vid_15FD[] = { +static pci_id_t const pci_vid_15FD[] = { {0x15FD, 0xFFFF, 0xFFFF, 0xFFFF, "N-CUBED.NET(0x15FD)"}, }; /* pci_vid_15FD[] */ -pci_id_t pci_vid_15FE[] = { +static pci_id_t const pci_vid_15FE[] = { {0x15FE, 0xFFFF, 0xFFFF, 0xFFFF, "Kinpo Electronics Inc(0x15FE)"}, }; /* pci_vid_15FE[] */ -pci_id_t pci_vid_15FF[] = { +static pci_id_t const pci_vid_15FF[] = { {0x15FF, 0xFFFF, 0xFFFF, 0xFFFF, "Fastpoint Technologies Inc(0x15FF)"}, }; /* pci_vid_15FF[] */ -pci_id_t pci_vid_1600[] = { +static pci_id_t const pci_vid_1600[] = { {0x1600, 0xFFFF, 0xFFFF, 0xFFFF, "Northrop Grumman - Canada Ltd(0x1600)"}, }; /* pci_vid_1600[] */ -pci_id_t pci_vid_1601[] = { +static pci_id_t const pci_vid_1601[] = { {0x1601, 0xFFFF, 0xFFFF, 0xFFFF, "Tenta Technology(0x1601)"}, }; /* pci_vid_1601[] */ -pci_id_t pci_vid_1602[] = { +static pci_id_t const pci_vid_1602[] = { {0x1602, 0xFFFF, 0xFFFF, 0xFFFF, "Prosys-tec Inc(0x1602)"}, }; /* pci_vid_1602[] */ -pci_id_t pci_vid_1603[] = { +static pci_id_t const pci_vid_1603[] = { {0x1603, 0xFFFF, 0xFFFF, 0xFFFF, "Nokia Wireless Communications(0x1603)"}, }; /* pci_vid_1603[] */ -pci_id_t pci_vid_1604[] = { +static pci_id_t const pci_vid_1604[] = { {0x1604, 0xFFFF, 0xFFFF, 0xFFFF, "Central System Research Co Ltd(0x1604)"}, }; /* pci_vid_1604[] */ -pci_id_t pci_vid_1605[] = { +static pci_id_t const pci_vid_1605[] = { {0x1605, 0xFFFF, 0xFFFF, 0xFFFF, "Pairgain Technologies(0x1605)"}, }; /* pci_vid_1605[] */ -pci_id_t pci_vid_1606[] = { +static pci_id_t const pci_vid_1606[] = { {0x1606, 0xFFFF, 0xFFFF, 0xFFFF, "Europop AG(0x1606)"}, }; /* pci_vid_1606[] */ -pci_id_t pci_vid_1607[] = { +static pci_id_t const pci_vid_1607[] = { {0x1607, 0xFFFF, 0xFFFF, 0xFFFF, "Lava Semiconductor Manufacturing Inc(0x1607)"}, }; /* pci_vid_1607[] */ -pci_id_t pci_vid_1608[] = { +static pci_id_t const pci_vid_1608[] = { {0x1608, 0xFFFF, 0xFFFF, 0xFFFF, "Automated Wagering International(0x1608)"}, }; /* pci_vid_1608[] */ -pci_id_t pci_vid_1609[] = { +static pci_id_t const pci_vid_1609[] = { {0x1609, 0xFFFF, 0xFFFF, 0xFFFF, "Scimetric Instruments Inc(0x1609)"}, }; /* pci_vid_1609[] */ -pci_id_t pci_vid_1612[] = { +static pci_id_t const pci_vid_1612[] = { {0x1612, 0xFFFF, 0xFFFF, 0xFFFF, "Telesynergy Research Inc.(0x1612)"}, }; /* pci_vid_1612[] */ -pci_id_t pci_vid_1618[] = { +static pci_id_t const pci_vid_1618[] = { {0x1618, 0xFFFF, 0xFFFF, 0xFFFF, "Stone Ridge Technology(0x1618)"}, {0x1618, 0x0001, 0xFFFF, 0xFFFF, "RDX 11(0x0001)"}, {0x1618, 0x0002, 0xFFFF, 0xFFFF, "HFT-01(0x0002)"}, @@ -26419,7 +26521,7 @@ pci_id_t pci_vid_1618[] = { {0x1618, 0x4640, 0xFFFF, 0xFFFF, "FarSync T4Ue PCI Express (4-port X.21/V.35/V.24)(0x4640)"}, }; /* pci_vid_1618[] */ -pci_id_t pci_vid_1619[] = { +static pci_id_t const pci_vid_1619[] = { {0x1619, 0xFFFF, 0xFFFF, 0xFFFF, "FarSite Communications Ltd(0x1619)"}, {0x1619, 0x0400, 0xFFFF, 0xFFFF, "FarSync T2P (2 port X.21/V.35/V.24)(0x0400)"}, {0x1619, 0x0440, 0xFFFF, 0xFFFF, "FarSync T4P (4 port X.21/V.35/V.24)(0x0440)"}, @@ -26437,11 +26539,11 @@ pci_id_t pci_vid_1619[] = { {0x1619, 0x6620, 0xFFFF, 0xFFFF, "FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24)(0x6620)"}, }; /* pci_vid_1619[] */ -pci_id_t pci_vid_161F[] = { +static pci_id_t const pci_vid_161F[] = { {0x161F, 0xFFFF, 0xFFFF, 0xFFFF, "Rioworks(0x161F)"}, }; /* pci_vid_161F[] */ -pci_id_t pci_vid_1621[] = { +static pci_id_t const pci_vid_1621[] = { {0x1621, 0xFFFF, 0xFFFF, 0xFFFF, "Lynx Studio Technology, Inc.(0x1621)"}, {0x1621, 0x0020, 0xFFFF, 0xFFFF, "LynxTWO-A(0x0020)"}, {0x1621, 0x0021, 0xFFFF, 0xFFFF, "LynxTWO-B(0x0021)"}, @@ -26452,12 +26554,12 @@ pci_id_t pci_vid_1621[] = { {0x1621, 0x0028, 0xFFFF, 0xFFFF, "Lynx AES16e(0x0028)"}, }; /* pci_vid_1621[] */ -pci_id_t pci_vid_1626[] = { +static pci_id_t const pci_vid_1626[] = { {0x1626, 0xFFFF, 0xFFFF, 0xFFFF, "TDK Semiconductor Corp.(0x1626)"}, {0x1626, 0x8410, 0xFFFF, 0xFFFF, "RTL81xx Fast Ethernet(0x8410)"}, }; /* pci_vid_1626[] */ -pci_id_t pci_vid_1629[] = { +static pci_id_t const pci_vid_1629[] = { {0x1629, 0xFFFF, 0xFFFF, 0xFFFF, "Kongsberg Spacetec AS(0x1629)"}, {0x1629, 0x1003, 0xFFFF, 0xFFFF, "Format synchronizer v3.0(0x1003)"}, {0x1629, 0x1006, 0xFFFF, 0xFFFF, "Format synchronizer, model 10500(0x1006)"}, @@ -26470,30 +26572,30 @@ pci_id_t pci_vid_1629[] = { {0x1629, 0x6001, 0xFFFF, 0xFFFF, "High Rate Demodulator and FEC(0x6001)"}, }; /* pci_vid_1629[] */ -pci_id_t pci_vid_1631[] = { +static pci_id_t const pci_vid_1631[] = { {0x1631, 0xFFFF, 0xFFFF, 0xFFFF, "Packard Bell B.V.(0x1631)"}, }; /* pci_vid_1631[] */ -pci_id_t pci_vid_1638[] = { +static pci_id_t const pci_vid_1638[] = { {0x1638, 0xFFFF, 0xFFFF, 0xFFFF, "Standard Microsystems Corp [SMC](0x1638)"}, {0x1638, 0x1100, 0xFFFF, 0xFFFF, "SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000(0x1100)"}, }; /* pci_vid_1638[] */ -pci_id_t pci_vid_163C[] = { +static pci_id_t const pci_vid_163C[] = { {0x163C, 0xFFFF, 0xFFFF, 0xFFFF, "Smart Link Ltd.(0x163C)"}, {0x163C, 0x3052, 0xFFFF, 0xFFFF, "SmartLink SmartPCI562 56K Modem(0x3052)"}, {0x163C, 0x5449, 0xFFFF, 0xFFFF, "SmartPCI561 Modem(0x5449)"}, }; /* pci_vid_163C[] */ -pci_id_t pci_vid_1641[] = { +static pci_id_t const pci_vid_1641[] = { {0x1641, 0xFFFF, 0xFFFF, 0xFFFF, "MKNet Corp.(0x1641)"}, }; /* pci_vid_1641[] */ -pci_id_t pci_vid_1642[] = { +static pci_id_t const pci_vid_1642[] = { {0x1642, 0xFFFF, 0xFFFF, 0xFFFF, "Bitland(ShenZhen) Information Technology Co., Ltd.(0x1642)"}, }; /* pci_vid_1642[] */ -pci_id_t pci_vid_1657[] = { +static pci_id_t const pci_vid_1657[] = { {0x1657, 0xFFFF, 0xFFFF, 0xFFFF, "Cavium QLogic(0x1657)"}, {0x1657, 0x0013, 0xFFFF, 0xFFFF, "425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA(0x0013)"}, {0x1657, 0x0013, 0x103C, 0x1742, "82B 8Gbps dual port FC HBA(0x103C-0x1742)"}, @@ -26515,7 +26617,7 @@ pci_id_t pci_vid_1657[] = { {0x1657, 0x0646, 0xFFFF, 0xFFFF, "400 4Gbps PCIe FC HBA(0x0646)"}, }; /* pci_vid_1657[] */ -pci_id_t pci_vid_165A[] = { +static pci_id_t const pci_vid_165A[] = { {0x165A, 0xFFFF, 0xFFFF, 0xFFFF, "Epix Inc(0x165A)"}, {0x165A, 0xC100, 0xFFFF, 0xFFFF, "PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232](0xC100)"}, {0x165A, 0xD200, 0xFFFF, 0xFFFF, "PIXCI(R) D2X Digital Video Capture Board [custom QL5232](0xD200)"}, @@ -26523,7 +26625,7 @@ pci_id_t pci_vid_165A[] = { {0x165A, 0xEB01, 0xFFFF, 0xFFFF, "PIXCI(R) EB1 PCI Camera Link Video Capture Board(0xEB01)"}, }; /* pci_vid_165A[] */ -pci_id_t pci_vid_165C[] = { +static pci_id_t const pci_vid_165C[] = { {0x165C, 0xFFFF, 0xFFFF, 0xFFFF, "Gidel Ltd.(0x165C)"}, {0x165C, 0x5361, 0xFFFF, 0xFFFF, "PROCStarII60-1(0x5361)"}, {0x165C, 0x5362, 0xFFFF, 0xFFFF, "PROCStarII60-2(0x5362)"}, @@ -26596,31 +26698,31 @@ pci_id_t pci_vid_165C[] = { {0x165C, 0x73B1, 0xFFFF, 0xFFFF, "Proc10s(0x73B1)"}, }; /* pci_vid_165C[] */ -pci_id_t pci_vid_165D[] = { +static pci_id_t const pci_vid_165D[] = { {0x165D, 0xFFFF, 0xFFFF, 0xFFFF, "Hsing Tech. Enterprise Co., Ltd.(0x165D)"}, }; /* pci_vid_165D[] */ -pci_id_t pci_vid_165F[] = { +static pci_id_t const pci_vid_165F[] = { {0x165F, 0xFFFF, 0xFFFF, 0xFFFF, "Linux Media Labs, LLC(0x165F)"}, {0x165F, 0x1020, 0xFFFF, 0xFFFF, "LMLM4 MPEG-4 encoder(0x1020)"}, }; /* pci_vid_165F[] */ -pci_id_t pci_vid_1661[] = { +static pci_id_t const pci_vid_1661[] = { {0x1661, 0xFFFF, 0xFFFF, 0xFFFF, "Worldspace Corp.(0x1661)"}, }; /* pci_vid_1661[] */ -pci_id_t pci_vid_1665[] = { +static pci_id_t const pci_vid_1665[] = { {0x1665, 0xFFFF, 0xFFFF, 0xFFFF, "EDAX Inc(0x1665)"}, {0x1665, 0x1973, 0xFFFF, 0xFFFF, "DPP-II FR2 Board(0x1973)"}, {0x1665, 0x2000, 0xFFFF, 0xFFFF, "SG-IIP Board(0x2000)"}, }; /* pci_vid_1665[] */ -pci_id_t pci_vid_1668[] = { +static pci_id_t const pci_vid_1668[] = { {0x1668, 0xFFFF, 0xFFFF, 0xFFFF, "Actiontec Electronics Inc(0x1668)"}, {0x1668, 0x0100, 0xFFFF, 0xFFFF, "Mini-PCI bridge(0x0100)"}, }; /* pci_vid_1668[] */ -pci_id_t pci_vid_166D[] = { +static pci_id_t const pci_vid_166D[] = { {0x166D, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom Corporation(0x166D)"}, {0x166D, 0x0001, 0xFFFF, 0xFFFF, "SiByte BCM1125/1125H/1250 System-on-a-Chip PCI(0x0001)"}, {0x166D, 0x0002, 0xFFFF, 0xFFFF, "SiByte BCM1125H/1250 System-on-a-Chip HyperTransport(0x0002)"}, @@ -26628,24 +26730,24 @@ pci_id_t pci_vid_166D[] = { {0x166D, 0x0014, 0xFFFF, 0xFFFF, "Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport(0x0014)"}, }; /* pci_vid_166D[] */ -pci_id_t pci_vid_1677[] = { +static pci_id_t const pci_vid_1677[] = { {0x1677, 0xFFFF, 0xFFFF, 0xFFFF, "B&R Industrial Automation GmbH(0x1677)"}, {0x1677, 0x104E, 0xFFFF, 0xFFFF, "5LS172.6 B&R Dual CAN Interface Card(0x104E)"}, {0x1677, 0x12D7, 0xFFFF, 0xFFFF, "5LS172.61 B&R Dual CAN Interface Card(0x12D7)"}, {0x1677, 0x20AD, 0xFFFF, 0xFFFF, "5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM(0x20AD)"}, }; /* pci_vid_1677[] */ -pci_id_t pci_vid_1678[] = { +static pci_id_t const pci_vid_1678[] = { {0x1678, 0xFFFF, 0xFFFF, 0xFFFF, "NetEffect(0x1678)"}, {0x1678, 0x0100, 0xFFFF, 0xFFFF, "NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC)(0x0100)"}, }; /* pci_vid_1678[] */ -pci_id_t pci_vid_1679[] = { +static pci_id_t const pci_vid_1679[] = { {0x1679, 0xFFFF, 0xFFFF, 0xFFFF, "Tokyo Electron Device Ltd.(0x1679)"}, {0x1679, 0x3000, 0xFFFF, 0xFFFF, "SD Standard host controller [Ellen](0x3000)"}, }; /* pci_vid_1679[] */ -pci_id_t pci_vid_167B[] = { +static pci_id_t const pci_vid_167B[] = { {0x167B, 0xFFFF, 0xFFFF, 0xFFFF, "ZyDAS Technology Corp.(0x167B)"}, {0x167B, 0x2102, 0xFFFF, 0xFFFF, "ZyDAS ZD1202(0x2102)"}, {0x167B, 0x2102, 0x187E, 0x3406, "ZyAIR B-122 CardBus 11Mbs Wireless LAN Card(0x187E-0x3406)"}, @@ -26653,31 +26755,31 @@ pci_id_t pci_vid_167B[] = { {0x167B, 0x2116, 0xFFFF, 0xFFFF, "ZD1212B Wireless Adapter(0x2116)"}, }; /* pci_vid_167B[] */ -pci_id_t pci_vid_167D[] = { +static pci_id_t const pci_vid_167D[] = { {0x167D, 0xFFFF, 0xFFFF, 0xFFFF, "Samsung Electro-Mechanics Co., Ltd.(0x167D)"}, {0x167D, 0xA000, 0xFFFF, 0xFFFF, "MagicLAN SWL-2210P 802.11b [Intersil ISL3874](0xA000)"}, }; /* pci_vid_167D[] */ -pci_id_t pci_vid_167E[] = { +static pci_id_t const pci_vid_167E[] = { {0x167E, 0xFFFF, 0xFFFF, 0xFFFF, "ONNTO Corp.(0x167E)"}, }; /* pci_vid_167E[] */ -pci_id_t pci_vid_1681[] = { +static pci_id_t const pci_vid_1681[] = { {0x1681, 0xFFFF, 0xFFFF, 0xFFFF, "Hercules(0x1681)"}, }; /* pci_vid_1681[] */ -pci_id_t pci_vid_1682[] = { +static pci_id_t const pci_vid_1682[] = { {0x1682, 0xFFFF, 0xFFFF, 0xFFFF, "XFX Pine Group Inc.(0x1682)"}, {0x1682, 0x5701, 0xFFFF, 0xFFFF, "Radeon 5700 XT Thicc III Ultra(0x5701)"}, {0x1682, 0xC580, 0xFFFF, 0xFFFF, "Radeon RX 580(0xC580)"}, }; /* pci_vid_1682[] */ -pci_id_t pci_vid_1688[] = { +static pci_id_t const pci_vid_1688[] = { {0x1688, 0xFFFF, 0xFFFF, 0xFFFF, "CastleNet Technology Inc.(0x1688)"}, {0x1688, 0x1170, 0xFFFF, 0xFFFF, "WLAN 802.11b card(0x1170)"}, }; /* pci_vid_1688[] */ -pci_id_t pci_vid_168A[] = { +static pci_id_t const pci_vid_168A[] = { {0x168A, 0xFFFF, 0xFFFF, 0xFFFF, "Utimaco IS GmbH(0x168A)"}, {0x168A, 0x2086, 0xFFFF, 0xFFFF, "CryptoServer Se-Series Hardware Security Module(0x2086)"}, {0x168A, 0xC040, 0xFFFF, 0xFFFF, "CryptoServer CSe-Series Hardware Security Module(0xC040)"}, @@ -26687,7 +26789,7 @@ pci_id_t pci_vid_168A[] = { {0x168A, 0xC072, 0xFFFF, 0xFFFF, "u.trust Anchor Hardware Security Module cs7.3 Series Virtual Function(0xC072)"}, }; /* pci_vid_168A[] */ -pci_id_t pci_vid_168C[] = { +static pci_id_t const pci_vid_168C[] = { {0x168C, 0xFFFF, 0xFFFF, 0xFFFF, "Qualcomm Atheros(0x168C)"}, {0x168C, 0x0007, 0xFFFF, 0xFFFF, "AR5210 Wireless Network Adapter [AR5000 802.11a](0x0007)"}, {0x168C, 0x0007, 0x1737, 0x0007, "WPC54A Wireless PC Card(0x1737-0x0007)"}, @@ -26936,24 +27038,24 @@ pci_id_t pci_vid_168C[] = { {0x168C, 0xFF1D, 0x168C, 0xEE1C, "AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3](0x168C-0xEE1C)"}, }; /* pci_vid_168C[] */ -pci_id_t pci_vid_1695[] = { +static pci_id_t const pci_vid_1695[] = { {0x1695, 0xFFFF, 0xFFFF, 0xFFFF, "EPoX Computer Co., Ltd.(0x1695)"}, }; /* pci_vid_1695[] */ -pci_id_t pci_vid_169C[] = { +static pci_id_t const pci_vid_169C[] = { {0x169C, 0xFFFF, 0xFFFF, 0xFFFF, "Netcell Corporation(0x169C)"}, {0x169C, 0x0044, 0xFFFF, 0xFFFF, "Revolution Storage Processing Card(0x0044)"}, }; /* pci_vid_169C[] */ -pci_id_t pci_vid_169D[] = { +static pci_id_t const pci_vid_169D[] = { {0x169D, 0xFFFF, 0xFFFF, 0xFFFF, "Club-3D VB (Wrong ID)(0x169D)"}, }; /* pci_vid_169D[] */ -pci_id_t pci_vid_16A5[] = { +static pci_id_t const pci_vid_16A5[] = { {0x16A5, 0xFFFF, 0xFFFF, 0xFFFF, "Tekram Technology Co.,Ltd.(0x16A5)"}, }; /* pci_vid_16A5[] */ -pci_id_t pci_vid_16AB[] = { +static pci_id_t const pci_vid_16AB[] = { {0x16AB, 0xFFFF, 0xFFFF, 0xFFFF, "Global Sun Technology Inc(0x16AB)"}, {0x16AB, 0x1100, 0xFFFF, 0xFFFF, "GL24110P(0x1100)"}, {0x16AB, 0x1101, 0xFFFF, 0xFFFF, "PLX9052 PCMCIA-to-PCI Wireless LAN(0x1101)"}, @@ -26961,7 +27063,7 @@ pci_id_t pci_vid_16AB[] = { {0x16AB, 0x8501, 0xFFFF, 0xFFFF, "WL-8305 Wireless LAN PCI Adapter(0x8501)"}, }; /* pci_vid_16AB[] */ -pci_id_t pci_vid_16AE[] = { +static pci_id_t const pci_vid_16AE[] = { {0x16AE, 0xFFFF, 0xFFFF, 0xFFFF, "SafeNet Inc(0x16AE)"}, {0x16AE, 0x0001, 0xFFFF, 0xFFFF, "SafeXcel 1140(0x0001)"}, {0x16AE, 0x000A, 0xFFFF, 0xFFFF, "SafeXcel 1841(0x000A)"}, @@ -26970,23 +27072,23 @@ pci_id_t pci_vid_16AE[] = { {0x16AE, 0x1841, 0xFFFF, 0xFFFF, "SafeXcel 1842(0x1841)"}, }; /* pci_vid_16AE[] */ -pci_id_t pci_vid_16AF[] = { +static pci_id_t const pci_vid_16AF[] = { {0x16AF, 0xFFFF, 0xFFFF, 0xFFFF, "SparkLAN Communications, Inc.(0x16AF)"}, }; /* pci_vid_16AF[] */ -pci_id_t pci_vid_16B4[] = { +static pci_id_t const pci_vid_16B4[] = { {0x16B4, 0xFFFF, 0xFFFF, 0xFFFF, "Aspex Semiconductor Ltd(0x16B4)"}, }; /* pci_vid_16B4[] */ -pci_id_t pci_vid_16B8[] = { +static pci_id_t const pci_vid_16B8[] = { {0x16B8, 0xFFFF, 0xFFFF, 0xFFFF, "Sonnet Technologies, Inc.(0x16B8)"}, }; /* pci_vid_16B8[] */ -pci_id_t pci_vid_16BE[] = { +static pci_id_t const pci_vid_16BE[] = { {0x16BE, 0xFFFF, 0xFFFF, 0xFFFF, "Creatix Polymedia GmbH(0x16BE)"}, }; /* pci_vid_16BE[] */ -pci_id_t pci_vid_16C3[] = { +static pci_id_t const pci_vid_16C3[] = { {0x16C3, 0xFFFF, 0xFFFF, 0xFFFF, "Synopsys, Inc.(0x16C3)"}, {0x16C3, 0xABCD, 0xFFFF, 0xFFFF, "DWC_usb3 / PCIe bridge(0xABCD)"}, {0x16C3, 0xABCE, 0xFFFF, 0xFFFF, "DWC_usb3(0xABCE)"}, @@ -26994,26 +27096,26 @@ pci_id_t pci_vid_16C3[] = { {0x16C3, 0xEDDA, 0xFFFF, 0xFFFF, "EPMockUp(0xEDDA)"}, }; /* pci_vid_16C3[] */ -pci_id_t pci_vid_16C6[] = { +static pci_id_t const pci_vid_16C6[] = { {0x16C6, 0xFFFF, 0xFFFF, 0xFFFF, "Micrel-Kendin(0x16C6)"}, {0x16C6, 0x8695, 0xFFFF, 0xFFFF, "Centaur KS8695 ARM processor(0x8695)"}, {0x16C6, 0x8842, 0xFFFF, 0xFFFF, "KSZ8842-PMQL 2-Port Ethernet Switch(0x8842)"}, }; /* pci_vid_16C6[] */ -pci_id_t pci_vid_16C8[] = { +static pci_id_t const pci_vid_16C8[] = { {0x16C8, 0xFFFF, 0xFFFF, 0xFFFF, "Octasic Inc.(0x16C8)"}, }; /* pci_vid_16C8[] */ -pci_id_t pci_vid_16C9[] = { +static pci_id_t const pci_vid_16C9[] = { {0x16C9, 0xFFFF, 0xFFFF, 0xFFFF, "EONIC B.V. The Netherlands(0x16C9)"}, }; /* pci_vid_16C9[] */ -pci_id_t pci_vid_16CA[] = { +static pci_id_t const pci_vid_16CA[] = { {0x16CA, 0xFFFF, 0xFFFF, 0xFFFF, "CENATEK Inc(0x16CA)"}, {0x16CA, 0x0001, 0xFFFF, 0xFFFF, "Rocket Drive DL(0x0001)"}, }; /* pci_vid_16CA[] */ -pci_id_t pci_vid_16CD[] = { +static pci_id_t const pci_vid_16CD[] = { {0x16CD, 0xFFFF, 0xFFFF, 0xFFFF, "Advantech Co. Ltd(0x16CD)"}, {0x16CD, 0x0101, 0xFFFF, 0xFFFF, "DirectPCI SRAM for DPX-11x series(0x0101)"}, {0x16CD, 0x0102, 0xFFFF, 0xFFFF, "DirectPCI SRAM for DPX-S/C/E-series(0x0102)"}, @@ -27028,11 +27130,11 @@ pci_id_t pci_vid_16CD[] = { {0x16CD, 0x010B, 0xFFFF, 0xFFFF, "DirectPCI I/O for DPX-S series(0x010B)"}, }; /* pci_vid_16CD[] */ -pci_id_t pci_vid_16CE[] = { +static pci_id_t const pci_vid_16CE[] = { {0x16CE, 0xFFFF, 0xFFFF, 0xFFFF, "Roland Corp.(0x16CE)"}, }; /* pci_vid_16CE[] */ -pci_id_t pci_vid_16D5[] = { +static pci_id_t const pci_vid_16D5[] = { {0x16D5, 0xFFFF, 0xFFFF, 0xFFFF, "Acromag, Inc.(0x16D5)"}, {0x16D5, 0x0504, 0xFFFF, 0xFFFF, "PMC-DX504 Reconfigurable FPGA with LVDS I/O(0x0504)"}, {0x16D5, 0x0520, 0xFFFF, 0xFFFF, "PMC520 Serial Communication, 232 Octal(0x0520)"}, @@ -27132,18 +27234,21 @@ pci_id_t pci_vid_16D5[] = { {0x16D5, 0x7054, 0xFFFF, 0xFFFF, "APA7-504 Reconfigurable Artix-7 52,160 Cell FPGA module 24 LVDS channels(0x7054)"}, {0x16D5, 0x7072, 0xFFFF, 0xFFFF, "AP731 Multi-function I/O Module with 12-bit DAC(0x7072)"}, {0x16D5, 0x7073, 0xFFFF, 0xFFFF, "AP730 Multi-function I/O Module 16 Digital I/O 8 Differential Analog In 4 Analog Out(0x7073)"}, +{0x16D5, 0x7731, 0xFFFF, 0xFFFF, "APZU-301 Zynq Ultrascale+ Module 28 TTL channels(0x7731)"}, +{0x16D5, 0x7733, 0xFFFF, 0xFFFF, "APZU-303 Zynq Ultrascale+ Module 20 TTL & 3 RS485/422 channels(0x7733)"}, +{0x16D5, 0x7734, 0xFFFF, 0xFFFF, "APZU-304 Zynq Ultrascale+ Module 14 LVDS channels(0x7734)"}, }; /* pci_vid_16D5[] */ -pci_id_t pci_vid_16DA[] = { +static pci_id_t const pci_vid_16DA[] = { {0x16DA, 0xFFFF, 0xFFFF, 0xFFFF, "Advantech Co., Ltd.(0x16DA)"}, {0x16DA, 0x0011, 0xFFFF, 0xFFFF, "INES GPIB-PCI(0x0011)"}, }; /* pci_vid_16DA[] */ -pci_id_t pci_vid_16DF[] = { +static pci_id_t const pci_vid_16DF[] = { {0x16DF, 0xFFFF, 0xFFFF, 0xFFFF, "PIKA Technologies Inc.(0x16DF)"}, }; /* pci_vid_16DF[] */ -pci_id_t pci_vid_16E2[] = { +static pci_id_t const pci_vid_16E2[] = { {0x16E2, 0xFFFF, 0xFFFF, 0xFFFF, "Marvin Test Solutions(0x16E2)"}, {0x16E2, 0x1034, 0xFFFF, 0xFFFF, "GX1034 Certification and Verification Module PXI Board(0x1034)"}, {0x16E2, 0x1100, 0xFFFF, 0xFFFF, "GX1100 Arbitrary Waveform and Function Generator PXI Board(0x1100)"}, @@ -27207,18 +27312,18 @@ pci_id_t pci_vid_16E2[] = { {0x16E2, 0x7779, 0xFFFF, 0xFFFF, "GX7779 Backplane Tester PXI Board(0x7779)"}, }; /* pci_vid_16E2[] */ -pci_id_t pci_vid_16E3[] = { +static pci_id_t const pci_vid_16E3[] = { {0x16E3, 0xFFFF, 0xFFFF, 0xFFFF, "European Space Agency(0x16E3)"}, {0x16E3, 0x1E0F, 0xFFFF, 0xFFFF, "LEON2FT Processor(0x1E0F)"}, }; /* pci_vid_16E3[] */ -pci_id_t pci_vid_16E5[] = { +static pci_id_t const pci_vid_16E5[] = { {0x16E5, 0xFFFF, 0xFFFF, 0xFFFF, "Intellon Corp.(0x16E5)"}, {0x16E5, 0x6000, 0xFFFF, 0xFFFF, "INT6000 Ethernet-to-Powerline Bridge [HomePlug AV](0x6000)"}, {0x16E5, 0x6300, 0xFFFF, 0xFFFF, "INT6300 Ethernet-to-Powerline Bridge [HomePlug AV](0x6300)"}, }; /* pci_vid_16E5[] */ -pci_id_t pci_vid_16EC[] = { +static pci_id_t const pci_vid_16EC[] = { {0x16EC, 0xFFFF, 0xFFFF, 0xFFFF, "U.S. Robotics(0x16EC)"}, {0x16EC, 0x00ED, 0xFFFF, 0xFFFF, "USR997900(0x00ED)"}, {0x16EC, 0x0116, 0xFFFF, 0xFFFF, "USR997902 10/100/1000 Mbps PCI Network Card(0x0116)"}, @@ -27228,71 +27333,72 @@ pci_id_t pci_vid_16EC[] = { {0x16EC, 0xAB06, 0xFFFF, 0xFFFF, "USR997901A 10/100 Cardbus NIC(0xAB06)"}, }; /* pci_vid_16EC[] */ -pci_id_t pci_vid_16ED[] = { +static pci_id_t const pci_vid_16ED[] = { {0x16ED, 0xFFFF, 0xFFFF, 0xFFFF, "Sycron N. V.(0x16ED)"}, {0x16ED, 0x1001, 0xFFFF, 0xFFFF, "UMIO communication card(0x1001)"}, }; /* pci_vid_16ED[] */ -pci_id_t pci_vid_16F2[] = { +static pci_id_t const pci_vid_16F2[] = { {0x16F2, 0xFFFF, 0xFFFF, 0xFFFF, "ETAS GmbH(0x16F2)"}, {0x16F2, 0x0200, 0xFFFF, 0xFFFF, "I/O board(0x0200)"}, {0x16F2, 0x0200, 0x16F2, 0x0010, "ES53xx I/O board(0x16F2-0x0010)"}, }; /* pci_vid_16F2[] */ -pci_id_t pci_vid_16F3[] = { +static pci_id_t const pci_vid_16F3[] = { {0x16F3, 0xFFFF, 0xFFFF, 0xFFFF, "Jetway Information Co., Ltd.(0x16F3)"}, }; /* pci_vid_16F3[] */ -pci_id_t pci_vid_16F4[] = { +static pci_id_t const pci_vid_16F4[] = { {0x16F4, 0xFFFF, 0xFFFF, 0xFFFF, "Vweb Corp(0x16F4)"}, {0x16F4, 0x8000, 0xFFFF, 0xFFFF, "VW2010(0x8000)"}, }; /* pci_vid_16F4[] */ -pci_id_t pci_vid_16F6[] = { +static pci_id_t const pci_vid_16F6[] = { {0x16F6, 0xFFFF, 0xFFFF, 0xFFFF, "VideoTele.com, Inc.(0x16F6)"}, }; /* pci_vid_16F6[] */ -pci_id_t pci_vid_1702[] = { +static pci_id_t const pci_vid_1702[] = { {0x1702, 0xFFFF, 0xFFFF, 0xFFFF, "Internet Machines Corporation (IMC)(0x1702)"}, }; /* pci_vid_1702[] */ -pci_id_t pci_vid_1705[] = { +static pci_id_t const pci_vid_1705[] = { {0x1705, 0xFFFF, 0xFFFF, 0xFFFF, "Digital First, Inc.(0x1705)"}, }; /* pci_vid_1705[] */ -pci_id_t pci_vid_170B[] = { +static pci_id_t const pci_vid_170B[] = { {0x170B, 0xFFFF, 0xFFFF, 0xFFFF, "NetOctave(0x170B)"}, {0x170B, 0x0100, 0xFFFF, 0xFFFF, "NSP2000-SSL crypto accelerator(0x0100)"}, }; /* pci_vid_170B[] */ -pci_id_t pci_vid_170C[] = { +static pci_id_t const pci_vid_170C[] = { {0x170C, 0xFFFF, 0xFFFF, 0xFFFF, "YottaYotta Inc.(0x170C)"}, }; /* pci_vid_170C[] */ -pci_id_t pci_vid_1719[] = { +static pci_id_t const pci_vid_1719[] = { {0x1719, 0xFFFF, 0xFFFF, 0xFFFF, "EZChip Technologies(0x1719)"}, {0x1719, 0x1000, 0xFFFF, 0xFFFF, "NPA Access Network Processor Family(0x1000)"}, }; /* pci_vid_1719[] */ -pci_id_t pci_vid_1725[] = { +static pci_id_t const pci_vid_1725[] = { {0x1725, 0xFFFF, 0xFFFF, 0xFFFF, "Vitesse Semiconductor(0x1725)"}, {0x1725, 0x7174, 0xFFFF, 0xFFFF, "VSC7174 PCI/PCI-X Serial ATA Host Bus Controller(0x7174)"}, }; /* pci_vid_1725[] */ -pci_id_t pci_vid_172A[] = { +static pci_id_t const pci_vid_172A[] = { {0x172A, 0xFFFF, 0xFFFF, 0xFFFF, "Accelerated Encryption(0x172A)"}, {0x172A, 0x13C8, 0xFFFF, 0xFFFF, "AEP SureWare Runner 1000V3(0x13C8)"}, }; /* pci_vid_172A[] */ -pci_id_t pci_vid_1734[] = { +static pci_id_t const pci_vid_1734[] = { {0x1734, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Technology Solutions(0x1734)"}, +{0x1734, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1734[] */ -pci_id_t pci_vid_1735[] = { +static pci_id_t const pci_vid_1735[] = { {0x1735, 0xFFFF, 0xFFFF, 0xFFFF, "Aten International Co. Ltd.(0x1735)"}, }; /* pci_vid_1735[] */ -pci_id_t pci_vid_1737[] = { +static pci_id_t const pci_vid_1737[] = { {0x1737, 0xFFFF, 0xFFFF, 0xFFFF, "Linksys(0x1737)"}, {0x1737, 0x0029, 0xFFFF, 0xFFFF, "WPG54G ver. 4 PCI Card(0x0029)"}, {0x1737, 0x1032, 0xFFFF, 0xFFFF, "Gigabit Network Adapter(0x1032)"}, @@ -27304,7 +27410,7 @@ pci_id_t pci_vid_1737[] = { {0x1737, 0xAB09, 0xFFFF, 0xFFFF, "21x4x DEC-Tulip compatible 10/100 Ethernet(0xAB09)"}, }; /* pci_vid_1737[] */ -pci_id_t pci_vid_173B[] = { +static pci_id_t const pci_vid_173B[] = { {0x173B, 0xFFFF, 0xFFFF, 0xFFFF, "Altima (nee Broadcom)(0x173B)"}, {0x173B, 0x0001, 0xFFFF, 0xFFFF, "AC1002 PCI Gigabit Ethernet controller(0x0001)"}, {0x173B, 0x03E8, 0xFFFF, 0xFFFF, "AC1000 Gigabit Ethernet(0x03E8)"}, @@ -27314,38 +27420,39 @@ pci_id_t pci_vid_173B[] = { {0x173B, 0x03EB, 0xFFFF, 0xFFFF, "AC1003 Gigabit Ethernet(0x03EB)"}, }; /* pci_vid_173B[] */ -pci_id_t pci_vid_1743[] = { +static pci_id_t const pci_vid_1743[] = { {0x1743, 0xFFFF, 0xFFFF, 0xFFFF, "Peppercon AG(0x1743)"}, {0x1743, 0x8139, 0xFFFF, 0xFFFF, "ROL/F-100 Fast Ethernet Adapter with ROL(0x8139)"}, }; /* pci_vid_1743[] */ -pci_id_t pci_vid_1745[] = { +static pci_id_t const pci_vid_1745[] = { {0x1745, 0xFFFF, 0xFFFF, 0xFFFF, "ViXS Systems, Inc.(0x1745)"}, {0x1745, 0x2020, 0xFFFF, 0xFFFF, "XCode II Series(0x2020)"}, {0x1745, 0x2100, 0xFFFF, 0xFFFF, "XCode 2100 Series(0x2100)"}, +{0x1745, 0x2100, 0x1043, 0x48C9, "My Cinema PE6200 Analoog(0x1043-0x48C9)"}, }; /* pci_vid_1745[] */ -pci_id_t pci_vid_1749[] = { +static pci_id_t const pci_vid_1749[] = { {0x1749, 0xFFFF, 0xFFFF, 0xFFFF, "RLX Technologies(0x1749)"}, }; /* pci_vid_1749[] */ -pci_id_t pci_vid_174B[] = { +static pci_id_t const pci_vid_174B[] = { {0x174B, 0xFFFF, 0xFFFF, 0xFFFF, "PC Partner Limited / Sapphire Technology(0x174B)"}, }; /* pci_vid_174B[] */ -pci_id_t pci_vid_174D[] = { +static pci_id_t const pci_vid_174D[] = { {0x174D, 0xFFFF, 0xFFFF, 0xFFFF, "WellX Telecom SA(0x174D)"}, }; /* pci_vid_174D[] */ -pci_id_t pci_vid_175C[] = { +static pci_id_t const pci_vid_175C[] = { {0x175C, 0xFFFF, 0xFFFF, 0xFFFF, "AudioScience Inc(0x175C)"}, }; /* pci_vid_175C[] */ -pci_id_t pci_vid_175E[] = { +static pci_id_t const pci_vid_175E[] = { {0x175E, 0xFFFF, 0xFFFF, 0xFFFF, "Sanera Systems, Inc.(0x175E)"}, }; /* pci_vid_175E[] */ -pci_id_t pci_vid_1760[] = { +static pci_id_t const pci_vid_1760[] = { {0x1760, 0xFFFF, 0xFFFF, 0xFFFF, "TEDIA spol. s r. o.(0x1760)"}, {0x1760, 0x0101, 0xFFFF, 0xFFFF, "PCD-7004 Digital Bi-Directional Ports PCI Card(0x0101)"}, {0x1760, 0x0102, 0xFFFF, 0xFFFF, "PCD-7104 Digital Input & Output PCI Card(0x0102)"}, @@ -27385,19 +27492,19 @@ pci_id_t pci_vid_1760[] = { {0x1760, 0xFF00, 0xFFFF, 0xFFFF, "CTU CAN FD PCIe Card(0xFF00)"}, }; /* pci_vid_1760[] */ -pci_id_t pci_vid_1761[] = { +static pci_id_t const pci_vid_1761[] = { {0x1761, 0xFFFF, 0xFFFF, 0xFFFF, "Pickering Interfaces Ltd(0x1761)"}, }; /* pci_vid_1761[] */ -pci_id_t pci_vid_1771[] = { +static pci_id_t const pci_vid_1771[] = { {0x1771, 0xFFFF, 0xFFFF, 0xFFFF, "InnoVISION Multimedia Ltd.(0x1771)"}, }; /* pci_vid_1771[] */ -pci_id_t pci_vid_1775[] = { +static pci_id_t const pci_vid_1775[] = { {0x1775, 0xFFFF, 0xFFFF, 0xFFFF, "General Electric(0x1775)"}, }; /* pci_vid_1775[] */ -pci_id_t pci_vid_177D[] = { +static pci_id_t const pci_vid_177D[] = { {0x177D, 0xFFFF, 0xFFFF, 0xFFFF, "Cavium, Inc.(0x177D)"}, {0x177D, 0x0001, 0xFFFF, 0xFFFF, "Nitrox XL N1(0x0001)"}, {0x177D, 0x0003, 0xFFFF, 0xFFFF, "Nitrox XL N1 Lite(0x0003)"}, @@ -27514,15 +27621,15 @@ pci_id_t pci_vid_177D[] = { {0x177D, 0xAF84, 0xFFFF, 0xFFFF, "CN99xx [ThunderX2] Integrated PCI Express RP Bridge(0xAF84)"}, }; /* pci_vid_177D[] */ -pci_id_t pci_vid_1787[] = { +static pci_id_t const pci_vid_1787[] = { {0x1787, 0xFFFF, 0xFFFF, 0xFFFF, "Hightech Information System Ltd.(0x1787)"}, }; /* pci_vid_1787[] */ -pci_id_t pci_vid_1789[] = { +static pci_id_t const pci_vid_1789[] = { {0x1789, 0xFFFF, 0xFFFF, 0xFFFF, "Ennyah Technologies Corp.(0x1789)"}, }; /* pci_vid_1789[] */ -pci_id_t pci_vid_1796[] = { +static pci_id_t const pci_vid_1796[] = { {0x1796, 0xFFFF, 0xFFFF, 0xFFFF, "Research Centre Juelich(0x1796)"}, {0x1796, 0x0001, 0xFFFF, 0xFFFF, "SIS1100 [Gigabit link](0x0001)"}, {0x1796, 0x0002, 0xFFFF, 0xFFFF, "HOTlink(0x0002)"}, @@ -27554,7 +27661,7 @@ pci_id_t pci_vid_1796[] = { {0x1796, 0x0031, 0xFFFF, 0xFFFF, "200MHz 64bit Sequence Generator based on Spartan7(0x0031)"}, }; /* pci_vid_1796[] */ -pci_id_t pci_vid_1797[] = { +static pci_id_t const pci_vid_1797[] = { {0x1797, 0xFFFF, 0xFFFF, 0xFFFF, "Intersil Techwell(0x1797)"}, {0x1797, 0x5864, 0xFFFF, 0xFFFF, "TW5864 multimedia video controller(0x5864)"}, {0x1797, 0x6801, 0xFFFF, 0xFFFF, "TW6802 multimedia video card(0x6801)"}, @@ -27570,7 +27677,7 @@ pci_id_t pci_vid_1797[] = { {0x1797, 0x6864, 0xFFFF, 0xFFFF, "TW6864 multimedia video controller(0x6864)"}, }; /* pci_vid_1797[] */ -pci_id_t pci_vid_1799[] = { +static pci_id_t const pci_vid_1799[] = { {0x1799, 0xFFFF, 0xFFFF, 0xFFFF, "Belkin(0x1799)"}, {0x1799, 0x6001, 0xFFFF, 0xFFFF, "F5D6001 Wireless PCI Card [Realtek RTL8180](0x6001)"}, {0x1799, 0x6020, 0xFFFF, 0xFFFF, "F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180](0x6020)"}, @@ -27579,12 +27686,12 @@ pci_id_t pci_vid_1799[] = { {0x1799, 0x701F, 0xFFFF, 0xFFFF, "F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185](0x701F)"}, }; /* pci_vid_1799[] */ -pci_id_t pci_vid_179A[] = { +static pci_id_t const pci_vid_179A[] = { {0x179A, 0xFFFF, 0xFFFF, 0xFFFF, "id Quantique(0x179A)"}, {0x179A, 0x0001, 0xFFFF, 0xFFFF, "Quantis PCI 16Mbps(0x0001)"}, }; /* pci_vid_179A[] */ -pci_id_t pci_vid_179C[] = { +static pci_id_t const pci_vid_179C[] = { {0x179C, 0xFFFF, 0xFFFF, 0xFFFF, "Data Patterns(0x179C)"}, {0x179C, 0x0557, 0xFFFF, 0xFFFF, "DP-PCI-557 [PCI 1553B](0x0557)"}, {0x179C, 0x0566, 0xFFFF, 0xFFFF, "DP-PCI-566 [Intelligent PCI 1553B](0x0566)"}, @@ -27596,7 +27703,7 @@ pci_id_t pci_vid_179C[] = { {0x179C, 0x5679, 0xFFFF, 0xFFFF, "AGE Display Module(0x5679)"}, }; /* pci_vid_179C[] */ -pci_id_t pci_vid_17A0[] = { +static pci_id_t const pci_vid_17A0[] = { {0x17A0, 0xFFFF, 0xFFFF, 0xFFFF, "Genesys Logic, Inc(0x17A0)"}, {0x17A0, 0x7163, 0xFFFF, 0xFFFF, "GL9701 PCIe to PCI Bridge(0x7163)"}, {0x17A0, 0x8083, 0xFFFF, 0xFFFF, "GL880 USB 1.1 UHCI controller(0x8083)"}, @@ -27606,7 +27713,7 @@ pci_id_t pci_vid_17A0[] = { {0x17A0, 0xE763, 0xFFFF, 0xFFFF, "GL9763E eMMC Controller(0xE763)"}, }; /* pci_vid_17A0[] */ -pci_id_t pci_vid_17AA[] = { +static pci_id_t const pci_vid_17AA[] = { {0x17AA, 0xFFFF, 0xFFFF, 0xFFFF, "Lenovo(0x17AA)"}, {0x17AA, 0x0003, 0xFFFF, 0xFFFF, "LENSE20256GMSP34MEAT2TA(0x0003)"}, {0x17AA, 0x0004, 0xFFFF, 0xFFFF, "LENSE20512GMSP34MEAT2TA(0x0004)"}, @@ -27614,22 +27721,23 @@ pci_id_t pci_vid_17AA[] = { {0x17AA, 0x0006, 0xFFFF, 0xFFFF, "LENSE30512GMSP34MEAT3TA(0x0006)"}, {0x17AA, 0x3181, 0xFFFF, 0xFFFF, "ThinkCentre M75n IoT(0x3181)"}, {0x17AA, 0x402B, 0xFFFF, 0xFFFF, "Intel 82599ES 10Gb 2-port Server Adapter X520-2(0x402B)"}, +{0x17AA, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_17AA[] */ -pci_id_t pci_vid_17AB[] = { +static pci_id_t const pci_vid_17AB[] = { {0x17AB, 0xFFFF, 0xFFFF, 0xFFFF, "Phillips Components(0x17AB)"}, }; /* pci_vid_17AB[] */ -pci_id_t pci_vid_17AF[] = { +static pci_id_t const pci_vid_17AF[] = { {0x17AF, 0xFFFF, 0xFFFF, 0xFFFF, "Hightech Information System Ltd.(0x17AF)"}, }; /* pci_vid_17AF[] */ -pci_id_t pci_vid_17B3[] = { +static pci_id_t const pci_vid_17B3[] = { {0x17B3, 0xFFFF, 0xFFFF, 0xFFFF, "Hawking Technologies(0x17B3)"}, {0x17B3, 0xAB08, 0xFFFF, 0xFFFF, "PN672TX 10/100 Ethernet(0xAB08)"}, }; /* pci_vid_17B3[] */ -pci_id_t pci_vid_17B4[] = { +static pci_id_t const pci_vid_17B4[] = { {0x17B4, 0xFFFF, 0xFFFF, 0xFFFF, "Indra Networks, Inc.(0x17B4)"}, {0x17B4, 0x0011, 0xFFFF, 0xFFFF, "WebEnhance 100 GZIP Compression Card(0x0011)"}, {0x17B4, 0x0012, 0xFFFF, 0xFFFF, "WebEnhance 200 GZIP Compression Card(0x0012)"}, @@ -27638,19 +27746,19 @@ pci_id_t pci_vid_17B4[] = { {0x17B4, 0x0017, 0xFFFF, 0xFFFF, "StorSecure 300 GZIP Compression and AES Encryption Card(0x0017)"}, }; /* pci_vid_17B4[] */ -pci_id_t pci_vid_17C0[] = { +static pci_id_t const pci_vid_17C0[] = { {0x17C0, 0xFFFF, 0xFFFF, 0xFFFF, "Wistron Corp.(0x17C0)"}, }; /* pci_vid_17C0[] */ -pci_id_t pci_vid_17C2[] = { +static pci_id_t const pci_vid_17C2[] = { {0x17C2, 0xFFFF, 0xFFFF, 0xFFFF, "Newisys, Inc.(0x17C2)"}, }; /* pci_vid_17C2[] */ -pci_id_t pci_vid_17C3[] = { +static pci_id_t const pci_vid_17C3[] = { {0x17C3, 0xFFFF, 0xFFFF, 0xFFFF, "Protogate, Inc.(0x17C3)"}, }; /* pci_vid_17C3[] */ -pci_id_t pci_vid_17CB[] = { +static pci_id_t const pci_vid_17CB[] = { {0x17CB, 0xFFFF, 0xFFFF, 0xFFFF, "Qualcomm Technologies, Inc(0x17CB)"}, {0x17CB, 0x0001, 0xFFFF, 0xFFFF, "AGN100 802.11 a/b/g True MIMO Wireless Card(0x0001)"}, {0x17CB, 0x0001, 0x1385, 0x5C00, "WGM511 Pre-N 802.11g Wireless CardBus Adapter(0x1385-0x5C00)"}, @@ -27658,37 +27766,47 @@ pci_id_t pci_vid_17CB[] = { {0x17CB, 0x0002, 0xFFFF, 0xFFFF, "AGN300 802.11 a/b/g True MIMO Wireless Card(0x0002)"}, {0x17CB, 0x0002, 0x1385, 0x6D00, "WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter(0x1385-0x6D00)"}, {0x17CB, 0x0002, 0x1737, 0x0054, "WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400(0x1737-0x0054)"}, +{0x17CB, 0x0104, 0xFFFF, 0xFFFF, "APQ8096 PCIe Root Complex [Snapdragon 820](0x0104)"}, {0x17CB, 0x0105, 0xFFFF, 0xFFFF, "MSM8998 PCIe Root Complex(0x0105)"}, +{0x17CB, 0x0106, 0xFFFF, 0xFFFF, "SDM850 PCIe Root Complex [Snapdragon 850](0x0106)"}, +{0x17CB, 0x0107, 0xFFFF, 0xFFFF, "SDM850 PCIe Root Port [Snapdragon 850](0x0107)"}, {0x17CB, 0x0108, 0xFFFF, 0xFFFF, "SM8150 PCIe Root Complex(0x0108)"}, {0x17CB, 0x0109, 0xFFFF, 0xFFFF, "SA8195P PCIe Root Complex(0x0109)"}, +{0x17CB, 0x010B, 0xFFFF, 0xFFFF, "SM8250 PCIe Root Complex [Snapdragon 865/870 5G](0x010B)"}, +{0x17CB, 0x010C, 0xFFFF, 0xFFFF, "SM8350 PCIe Root Complex [Snapdragon 888](0x010C)"}, {0x17CB, 0x010E, 0xFFFF, 0xFFFF, "SC8280XP PCI Express Root Port(0x010E)"}, +{0x17CB, 0x0110, 0xFFFF, 0xFFFF, "SM8475 PCIe Root Complex [Snapdragon 8+ Gen 1](0x0110)"}, {0x17CB, 0x0300, 0xFFFF, 0xFFFF, "MDM9x35 LTE Modem [Snapdragon X7](0x0300)"}, {0x17CB, 0x0301, 0xFFFF, 0xFFFF, "MDM9x45 LTE Modem [Snapdragon X12](0x0301)"}, {0x17CB, 0x0302, 0xFFFF, 0xFFFF, "MDM9x55 LTE Modem [Snapdragon X16](0x0302)"}, +{0x17CB, 0x0304, 0xFFFF, 0xFFFF, "SDX24 [Snapdragon X24 4G](0x0304)"}, +{0x17CB, 0x0306, 0xFFFF, 0xFFFF, "SDX55 [Snapdragon X55 5G](0x0306)"}, {0x17CB, 0x0400, 0xFFFF, 0xFFFF, "Datacenter Technologies QDF2432 PCI Express Root Port(0x0400)"}, {0x17CB, 0x0401, 0xFFFF, 0xFFFF, "Datacenter Technologies QDF2400 PCI Express Root Port(0x0401)"}, {0x17CB, 0x1000, 0xFFFF, 0xFFFF, "QCS405 PCIe Root Complex(0x1000)"}, {0x17CB, 0x1101, 0xFFFF, 0xFFFF, "QCA6390 Wireless Network Adapter(0x1101)"}, {0x17CB, 0x1103, 0xFFFF, 0xFFFF, "QCNFA765 Wireless Network Adapter(0x1103)"}, {0x17CB, 0x1104, 0xFFFF, 0xFFFF, "QCN6024/9024/9074 Wireless Network Adapter(0x1104)"}, -{0x17CB, 0x1108, 0xFFFF, 0xFFFF, "IPQ95xx/97xx PCI Express Root Port(0x1108)"}, +{0x17CB, 0x1107, 0xFFFF, 0xFFFF, "WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800](0x1107)"}, +{0x17CB, 0x1107, 0x105B, 0xE0F7, "High Band Simultaneous Wireless Network Adapter(0x105B-0xE0F7)"}, +{0x17CB, 0x1108, 0xFFFF, 0xFFFF, "IPQ95xx/97xx PCIe Root Port(0x1108)"}, {0x17CB, 0x1109, 0xFFFF, 0xFFFF, "QCN62xx/92xx Wireless Network Adapter(0x1109)"}, }; /* pci_vid_17CB[] */ -pci_id_t pci_vid_17CC[] = { +static pci_id_t const pci_vid_17CC[] = { {0x17CC, 0xFFFF, 0xFFFF, 0xFFFF, "NetChip Technology, Inc(0x17CC)"}, {0x17CC, 0x2280, 0xFFFF, 0xFFFF, "USB 2.0(0x2280)"}, }; /* pci_vid_17CC[] */ -pci_id_t pci_vid_17CD[] = { +static pci_id_t const pci_vid_17CD[] = { {0x17CD, 0xFFFF, 0xFFFF, 0xFFFF, "Cadence Design Systems, Inc.(0x17CD)"}, }; /* pci_vid_17CD[] */ -pci_id_t pci_vid_17CF[] = { +static pci_id_t const pci_vid_17CF[] = { {0x17CF, 0xFFFF, 0xFFFF, 0xFFFF, "Z-Com, Inc.(0x17CF)"}, }; /* pci_vid_17CF[] */ -pci_id_t pci_vid_17D3[] = { +static pci_id_t const pci_vid_17D3[] = { {0x17D3, 0xFFFF, 0xFFFF, 0xFFFF, "Areca Technology Corp.(0x17D3)"}, {0x17D3, 0x1110, 0xFFFF, 0xFFFF, "ARC-1110 4-Port PCI-X to SATA RAID Controller(0x1110)"}, {0x17D3, 0x1120, 0xFFFF, 0xFFFF, "ARC-1120 8-Port PCI-X to SATA RAID Controller(0x1120)"}, @@ -27738,7 +27856,7 @@ pci_id_t pci_vid_17D3[] = { {0x17D3, 0x188A, 0x17D3, 0x1886, "ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller(0x17D3-0x1886)"}, }; /* pci_vid_17D3[] */ -pci_id_t pci_vid_17D5[] = { +static pci_id_t const pci_vid_17D5[] = { {0x17D5, 0xFFFF, 0xFFFF, 0xFFFF, "Exar Corp.(0x17D5)"}, {0x17D5, 0x5731, 0xFFFF, 0xFFFF, "Xframe 10-Gigabit Ethernet PCI-X(0x5731)"}, {0x17D5, 0x5732, 0xFFFF, 0xFFFF, "Xframe II 10-Gigabit Ethernet PCI-X 2.0(0x5732)"}, @@ -27771,17 +27889,17 @@ pci_id_t pci_vid_17D5[] = { {0x17D5, 0x5833, 0x17D5, 0x7831, "X3120 Dual Port 10GBase-CR(0x17D5-0x7831)"}, }; /* pci_vid_17D5[] */ -pci_id_t pci_vid_17DB[] = { +static pci_id_t const pci_vid_17DB[] = { {0x17DB, 0xFFFF, 0xFFFF, 0xFFFF, "Cray Inc(0x17DB)"}, {0x17DB, 0x0101, 0xFFFF, 0xFFFF, "XT Series [Seastar] 3D Toroidal Router(0x0101)"}, {0x17DB, 0x0501, 0xFFFF, 0xFFFF, "Cassini 1 [Slingshot 200Gb](0x0501)"}, }; /* pci_vid_17DB[] */ -pci_id_t pci_vid_17DE[] = { +static pci_id_t const pci_vid_17DE[] = { {0x17DE, 0xFFFF, 0xFFFF, 0xFFFF, "KWorld Computer Co. Ltd.(0x17DE)"}, }; /* pci_vid_17DE[] */ -pci_id_t pci_vid_17DF[] = { +static pci_id_t const pci_vid_17DF[] = { {0x17DF, 0xFFFF, 0xFFFF, 0xFFFF, "Dini Group(0x17DF)"}, {0x17DF, 0x1864, 0xFFFF, 0xFFFF, "Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS](0x1864)"}, {0x17DF, 0x1865, 0xFFFF, 0xFFFF, "Virtex4 ASIC Emulator [DN8000K10PCIe](0x1865)"}, @@ -27830,13 +27948,13 @@ pci_id_t pci_vid_17DF[] = { {0x17DF, 0x1A0E, 0xFFFF, 0xFFFF, "UltrascalePlus PCIe Darklite Design [DNPCIe_400G_VUP_HBM_LL](0x1A0E)"}, }; /* pci_vid_17DF[] */ -pci_id_t pci_vid_17E4[] = { +static pci_id_t const pci_vid_17E4[] = { {0x17E4, 0xFFFF, 0xFFFF, 0xFFFF, "Sectra AB(0x17E4)"}, {0x17E4, 0x0001, 0xFFFF, 0xFFFF, "KK671 Cardbus encryption board(0x0001)"}, {0x17E4, 0x0002, 0xFFFF, 0xFFFF, "KK672 Cardbus encryption board(0x0002)"}, }; /* pci_vid_17E4[] */ -pci_id_t pci_vid_17E6[] = { +static pci_id_t const pci_vid_17E6[] = { {0x17E6, 0xFFFF, 0xFFFF, 0xFFFF, "MaxLinear(0x17E6)"}, {0x17E6, 0x0010, 0xFFFF, 0xFFFF, "EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)(0x0010)"}, {0x17E6, 0x0011, 0xFFFF, 0xFFFF, "EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)(0x0011)"}, @@ -27847,15 +27965,15 @@ pci_id_t pci_vid_17E6[] = { {0x17E6, 0x3710, 0xFFFF, 0xFFFF, "MoCA 2.5 Network Controller (Coax, PCIe interface)(0x3710)"}, }; /* pci_vid_17E6[] */ -pci_id_t pci_vid_17EE[] = { +static pci_id_t const pci_vid_17EE[] = { {0x17EE, 0xFFFF, 0xFFFF, 0xFFFF, "Connect Components Ltd(0x17EE)"}, }; /* pci_vid_17EE[] */ -pci_id_t pci_vid_17F2[] = { +static pci_id_t const pci_vid_17F2[] = { {0x17F2, 0xFFFF, 0xFFFF, 0xFFFF, "Albatron Corp.(0x17F2)"}, }; /* pci_vid_17F2[] */ -pci_id_t pci_vid_17F3[] = { +static pci_id_t const pci_vid_17F3[] = { {0x17F3, 0xFFFF, 0xFFFF, 0xFFFF, "RDC Semiconductor, Inc.(0x17F3)"}, {0x17F3, 0x1010, 0xFFFF, 0xFFFF, "R1010 IDE Controller(0x1010)"}, {0x17F3, 0x1011, 0xFFFF, 0xFFFF, "R1011 IDE Controller(0x1011)"}, @@ -27885,19 +28003,19 @@ pci_id_t pci_vid_17F3[] = { {0x17F3, 0x6061, 0xFFFF, 0xFFFF, "R6061 USB 2.0 Controller(0x6061)"}, }; /* pci_vid_17F3[] */ -pci_id_t pci_vid_17F7[] = { +static pci_id_t const pci_vid_17F7[] = { {0x17F7, 0xFFFF, 0xFFFF, 0xFFFF, "Topdek Semiconductor Inc.(0x17F7)"}, }; /* pci_vid_17F7[] */ -pci_id_t pci_vid_17F9[] = { +static pci_id_t const pci_vid_17F9[] = { {0x17F9, 0xFFFF, 0xFFFF, 0xFFFF, "Gemtek Technology Co., Ltd(0x17F9)"}, }; /* pci_vid_17F9[] */ -pci_id_t pci_vid_17FC[] = { +static pci_id_t const pci_vid_17FC[] = { {0x17FC, 0xFFFF, 0xFFFF, 0xFFFF, "IOGEAR, Inc.(0x17FC)"}, }; /* pci_vid_17FC[] */ -pci_id_t pci_vid_17FE[] = { +static pci_id_t const pci_vid_17FE[] = { {0x17FE, 0xFFFF, 0xFFFF, 0xFFFF, "InProComm Inc.(0x17FE)"}, {0x17FE, 0x2120, 0xFFFF, 0xFFFF, "IPN 2120 802.11b(0x2120)"}, {0x17FE, 0x2120, 0x1737, 0x0020, "WMP11 v4 802.11b Wireless-B PCI Adapter(0x1737-0x0020)"}, @@ -27906,25 +28024,25 @@ pci_id_t pci_vid_17FE[] = { {0x17FE, 0x2220, 0x1737, 0x0029, "WPC54G v4 802.11g Wireless-G Notebook Adapter(0x1737-0x0029)"}, }; /* pci_vid_17FE[] */ -pci_id_t pci_vid_17FF[] = { +static pci_id_t const pci_vid_17FF[] = { {0x17FF, 0xFFFF, 0xFFFF, 0xFFFF, "Benq Corporation(0x17FF)"}, }; /* pci_vid_17FF[] */ -pci_id_t pci_vid_1800[] = { +static pci_id_t const pci_vid_1800[] = { {0x1800, 0xFFFF, 0xFFFF, 0xFFFF, "Qualcore Logic Inc.(0x1800)"}, {0x1800, 0x1100, 0xFFFF, 0xFFFF, "Nanospeed Trading Gateway(0x1100)"}, }; /* pci_vid_1800[] */ -pci_id_t pci_vid_1803[] = { +static pci_id_t const pci_vid_1803[] = { {0x1803, 0xFFFF, 0xFFFF, 0xFFFF, "ProdaSafe GmbH(0x1803)"}, }; /* pci_vid_1803[] */ -pci_id_t pci_vid_1804[] = { +static pci_id_t const pci_vid_1804[] = { {0x1804, 0xFFFF, 0xFFFF, 0xFFFF, "Ralink corp. (wrong ID)(0x1804)"}, {0x1804, 0x3060, 0xFFFF, 0xFFFF, "RT3060 Wireless 802.11n 1T/1R(0x3060)"}, }; /* pci_vid_1804[] */ -pci_id_t pci_vid_1805[] = { +static pci_id_t const pci_vid_1805[] = { {0x1805, 0xFFFF, 0xFFFF, 0xFFFF, "Euresys S.A.(0x1805)"}, {0x1805, 0x0201, 0xFFFF, 0xFFFF, "PICOLO Alert PCI(0x0201)"}, {0x1805, 0x0202, 0xFFFF, 0xFFFF, "PICOLO Diligent(0x0202)"}, @@ -27957,15 +28075,15 @@ pci_id_t pci_vid_1805[] = { {0x1805, 0x0408, 0xFFFF, 0xFFFF, "DOMINO Symphony PCIe(0x0408)"}, }; /* pci_vid_1805[] */ -pci_id_t pci_vid_1809[] = { +static pci_id_t const pci_vid_1809[] = { {0x1809, 0xFFFF, 0xFFFF, 0xFFFF, "Lumanate, Inc.(0x1809)"}, }; /* pci_vid_1809[] */ -pci_id_t pci_vid_180C[] = { +static pci_id_t const pci_vid_180C[] = { {0x180C, 0xFFFF, 0xFFFF, 0xFFFF, "IEI Integration Corp(0x180C)"}, }; /* pci_vid_180C[] */ -pci_id_t pci_vid_1813[] = { +static pci_id_t const pci_vid_1813[] = { {0x1813, 0xFFFF, 0xFFFF, 0xFFFF, "Ambient Technologies Inc(0x1813)"}, {0x1813, 0x4000, 0xFFFF, 0xFFFF, "HaM controllerless modem(0x4000)"}, {0x1813, 0x4000, 0x16BE, 0x0001, "V9x HAM Data Fax Modem(0x16BE-0x0001)"}, @@ -27973,7 +28091,7 @@ pci_id_t pci_vid_1813[] = { {0x1813, 0x4100, 0x16BE, 0x0002, "V9x HAM 1394(0x16BE-0x0002)"}, }; /* pci_vid_1813[] */ -pci_id_t pci_vid_1814[] = { +static pci_id_t const pci_vid_1814[] = { {0x1814, 0xFFFF, 0xFFFF, 0xFFFF, "Ralink corp.(0x1814)"}, {0x1814, 0x0101, 0xFFFF, 0xFFFF, "Wireless PCI Adapter RT2400 / RT2460(0x0101)"}, {0x1814, 0x0101, 0x1043, 0x0127, "WiFi-b add-on Card(0x1043-0x0127)"}, @@ -28031,6 +28149,7 @@ pci_id_t pci_vid_1814[] = { {0x1814, 0x0701, 0xFFFF, 0xFFFF, "RT2760 Wireless 802.11n 1T/2R(0x0701)"}, {0x1814, 0x0701, 0x1737, 0x0074, "WMP110 v2 802.11n RangePlus Wireless PCI Adapter(0x1737-0x0074)"}, {0x1814, 0x0781, 0xFFFF, 0xFFFF, "RT2790 Wireless 802.11n 1T/2R PCIe(0x0781)"}, +{0x1814, 0x0781, 0x11AD, 0x7600, "HP WN7600R(0x11AD-0x7600)"}, {0x1814, 0x0781, 0x1814, 0x2790, "RT2790 Wireless 802.11n 1T/2R PCIe(0x1814-0x2790)"}, {0x1814, 0x3060, 0xFFFF, 0xFFFF, "RT3060 Wireless 802.11n 1T/1R(0x3060)"}, {0x1814, 0x3060, 0x1186, 0x3C04, "DWA-525 Wireless N 150 Desktop Adapter (rev.A1)(0x1186-0x3C04)"}, @@ -28059,36 +28178,36 @@ pci_id_t pci_vid_1814[] = { {0x1814, 0xE932, 0xFFFF, 0xFFFF, "RT2560F 802.11 b/g PCI(0xE932)"}, }; /* pci_vid_1814[] */ -pci_id_t pci_vid_1815[] = { +static pci_id_t const pci_vid_1815[] = { {0x1815, 0xFFFF, 0xFFFF, 0xFFFF, "Devolo AG(0x1815)"}, }; /* pci_vid_1815[] */ -pci_id_t pci_vid_1820[] = { +static pci_id_t const pci_vid_1820[] = { {0x1820, 0xFFFF, 0xFFFF, 0xFFFF, "InfiniCon Systems Inc.(0x1820)"}, }; /* pci_vid_1820[] */ -pci_id_t pci_vid_1822[] = { +static pci_id_t const pci_vid_1822[] = { {0x1822, 0xFFFF, 0xFFFF, 0xFFFF, "Twinhan Technology Co. Ltd(0x1822)"}, {0x1822, 0x4E35, 0xFFFF, 0xFFFF, "Mantis DTV PCI Bridge Controller [Ver 1.0](0x4E35)"}, }; /* pci_vid_1822[] */ -pci_id_t pci_vid_182D[] = { +static pci_id_t const pci_vid_182D[] = { {0x182D, 0xFFFF, 0xFFFF, 0xFFFF, "SiteCom Europe BV(0x182D)"}, {0x182D, 0x3069, 0xFFFF, 0xFFFF, "ISDN PCI DC-105V2(0x3069)"}, {0x182D, 0x9790, 0xFFFF, 0xFFFF, "WL-121 Wireless Network Adapter 100g+ [Ver.3](0x9790)"}, }; /* pci_vid_182D[] */ -pci_id_t pci_vid_182E[] = { +static pci_id_t const pci_vid_182E[] = { {0x182E, 0xFFFF, 0xFFFF, 0xFFFF, "Raza Microelectronics, Inc.(0x182E)"}, {0x182E, 0x0008, 0xFFFF, 0xFFFF, "XLR516 Processor(0x0008)"}, }; /* pci_vid_182E[] */ -pci_id_t pci_vid_182F[] = { +static pci_id_t const pci_vid_182F[] = { {0x182F, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom(0x182F)"}, {0x182F, 0x000B, 0xFFFF, 0xFFFF, "BCM5785 [HT1000] SATA (RAID Mode)(0x000B)"}, }; /* pci_vid_182F[] */ -pci_id_t pci_vid_1830[] = { +static pci_id_t const pci_vid_1830[] = { {0x1830, 0xFFFF, 0xFFFF, 0xFFFF, "Credence Systems Corporation(0x1830)"}, {0x1830, 0x8000, 0xFFFF, 0xFFFF, "CPIn(0x8000)"}, {0x1830, 0x8001, 0xFFFF, 0xFFFF, "CPId(0x8001)"}, @@ -28096,7 +28215,7 @@ pci_id_t pci_vid_1830[] = { {0x1830, 0x8003, 0xFFFF, 0xFFFF, "CPIq(0x8003)"}, }; /* pci_vid_1830[] */ -pci_id_t pci_vid_183B[] = { +static pci_id_t const pci_vid_183B[] = { {0x183B, 0xFFFF, 0xFFFF, 0xFFFF, "MikroM GmbH(0x183B)"}, {0x183B, 0x08A7, 0xFFFF, 0xFFFF, "MVC100 DVI(0x08A7)"}, {0x183B, 0x08A8, 0xFFFF, 0xFFFF, "MVC101 SDI(0x08A8)"}, @@ -28104,55 +28223,56 @@ pci_id_t pci_vid_183B[] = { {0x183B, 0x08B0, 0xFFFF, 0xFFFF, "MVC200-DC(0x08B0)"}, }; /* pci_vid_183B[] */ -pci_id_t pci_vid_1846[] = { +static pci_id_t const pci_vid_1846[] = { {0x1846, 0xFFFF, 0xFFFF, 0xFFFF, "Alcatel-Lucent(0x1846)"}, }; /* pci_vid_1846[] */ -pci_id_t pci_vid_1849[] = { +static pci_id_t const pci_vid_1849[] = { {0x1849, 0xFFFF, 0xFFFF, 0xFFFF, "ASRock Incorporation(0x1849)"}, +{0x1849, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1849[] */ -pci_id_t pci_vid_184A[] = { +static pci_id_t const pci_vid_184A[] = { {0x184A, 0xFFFF, 0xFFFF, 0xFFFF, "Thales Computers(0x184A)"}, {0x184A, 0x1100, 0xFFFF, 0xFFFF, "MAX II cPLD(0x1100)"}, }; /* pci_vid_184A[] */ -pci_id_t pci_vid_1850[] = { +static pci_id_t const pci_vid_1850[] = { {0x1850, 0xFFFF, 0xFFFF, 0xFFFF, "Advantest Corporation(0x1850)"}, {0x1850, 0x0048, 0xFFFF, 0xFFFF, "EK220-66401 Computer Interface Card(0x0048)"}, }; /* pci_vid_1850[] */ -pci_id_t pci_vid_1851[] = { +static pci_id_t const pci_vid_1851[] = { {0x1851, 0xFFFF, 0xFFFF, 0xFFFF, "Microtune, Inc.(0x1851)"}, }; /* pci_vid_1851[] */ -pci_id_t pci_vid_1852[] = { +static pci_id_t const pci_vid_1852[] = { {0x1852, 0xFFFF, 0xFFFF, 0xFFFF, "Anritsu Corp.(0x1852)"}, }; /* pci_vid_1852[] */ -pci_id_t pci_vid_1853[] = { +static pci_id_t const pci_vid_1853[] = { {0x1853, 0xFFFF, 0xFFFF, 0xFFFF, "SMSC Automotive Infotainment System Group(0x1853)"}, }; /* pci_vid_1853[] */ -pci_id_t pci_vid_1854[] = { +static pci_id_t const pci_vid_1854[] = { {0x1854, 0xFFFF, 0xFFFF, 0xFFFF, "LG Electronics, Inc.(0x1854)"}, }; /* pci_vid_1854[] */ -pci_id_t pci_vid_185B[] = { +static pci_id_t const pci_vid_185B[] = { {0x185B, 0xFFFF, 0xFFFF, 0xFFFF, "Compro Technology, Inc.(0x185B)"}, {0x185B, 0x1489, 0xFFFF, 0xFFFF, "VideoMate Vista T100(0x1489)"}, }; /* pci_vid_185B[] */ -pci_id_t pci_vid_185F[] = { +static pci_id_t const pci_vid_185F[] = { {0x185F, 0xFFFF, 0xFFFF, 0xFFFF, "Wistron NeWeb Corp.(0x185F)"}, }; /* pci_vid_185F[] */ -pci_id_t pci_vid_1864[] = { +static pci_id_t const pci_vid_1864[] = { {0x1864, 0xFFFF, 0xFFFF, 0xFFFF, "SilverBack(0x1864)"}, {0x1864, 0x2110, 0xFFFF, 0xFFFF, "ISNAP 2110(0x2110)"}, }; /* pci_vid_1864[] */ -pci_id_t pci_vid_1867[] = { +static pci_id_t const pci_vid_1867[] = { {0x1867, 0xFFFF, 0xFFFF, 0xFFFF, "Topspin Communications(0x1867)"}, {0x1867, 0x5A44, 0xFFFF, 0xFFFF, "MT23108 InfiniHost HCA(0x5A44)"}, {0x1867, 0x5A45, 0xFFFF, 0xFFFF, "MT23108 InfiniHost HCA flash recovery(0x5A45)"}, @@ -28161,7 +28281,7 @@ pci_id_t pci_vid_1867[] = { {0x1867, 0x6282, 0xFFFF, 0xFFFF, "MT25208 InfiniHost III Ex(0x6282)"}, }; /* pci_vid_1867[] */ -pci_id_t pci_vid_186C[] = { +static pci_id_t const pci_vid_186C[] = { {0x186C, 0xFFFF, 0xFFFF, 0xFFFF, "Humusoft, s.r.o.(0x186C)"}, {0x186C, 0x0612, 0xFFFF, 0xFFFF, "AD612 Data Acquisition Device(0x0612)"}, {0x186C, 0x0614, 0xFFFF, 0xFFFF, "MF614 Multifunction I/O Card(0x0614)"}, @@ -28172,28 +28292,28 @@ pci_id_t pci_vid_186C[] = { {0x186C, 0x0644, 0xFFFF, 0xFFFF, "MF644 Multifunction I/O Thb Card(0x0644)"}, }; /* pci_vid_186C[] */ -pci_id_t pci_vid_186F[] = { +static pci_id_t const pci_vid_186F[] = { {0x186F, 0xFFFF, 0xFFFF, 0xFFFF, "WiNRADiO Communications(0x186F)"}, }; /* pci_vid_186F[] */ -pci_id_t pci_vid_1876[] = { +static pci_id_t const pci_vid_1876[] = { {0x1876, 0xFFFF, 0xFFFF, 0xFFFF, "L-3 Communications(0x1876)"}, {0x1876, 0xA101, 0xFFFF, 0xFFFF, "VigraWATCH PCI(0xA101)"}, {0x1876, 0xA102, 0xFFFF, 0xFFFF, "VigraWATCH PMC(0xA102)"}, {0x1876, 0xA103, 0xFFFF, 0xFFFF, "Vigra I/O(0xA103)"}, }; /* pci_vid_1876[] */ -pci_id_t pci_vid_187E[] = { +static pci_id_t const pci_vid_187E[] = { {0x187E, 0xFFFF, 0xFFFF, 0xFFFF, "ZyXEL Communications Corporation(0x187E)"}, {0x187E, 0x3403, 0xFFFF, 0xFFFF, "ZyAir G-110 802.11g(0x3403)"}, {0x187E, 0x340E, 0xFFFF, 0xFFFF, "M-302 802.11g XtremeMIMO(0x340E)"}, }; /* pci_vid_187E[] */ -pci_id_t pci_vid_1885[] = { +static pci_id_t const pci_vid_1885[] = { {0x1885, 0xFFFF, 0xFFFF, 0xFFFF, "Avvida Systems Inc.(0x1885)"}, }; /* pci_vid_1885[] */ -pci_id_t pci_vid_1888[] = { +static pci_id_t const pci_vid_1888[] = { {0x1888, 0xFFFF, 0xFFFF, 0xFFFF, "Varisys Ltd(0x1888)"}, {0x1888, 0x0301, 0xFFFF, 0xFFFF, "VMFX1 FPGA PMC module(0x0301)"}, {0x1888, 0x0601, 0xFFFF, 0xFFFF, "VSM2 dual PMC carrier(0x0601)"}, @@ -28201,19 +28321,19 @@ pci_id_t pci_vid_1888[] = { {0x1888, 0x0720, 0xFFFF, 0xFFFF, "VS24x series PowerPC PCI board(0x0720)"}, }; /* pci_vid_1888[] */ -pci_id_t pci_vid_188A[] = { +static pci_id_t const pci_vid_188A[] = { {0x188A, 0xFFFF, 0xFFFF, 0xFFFF, "Ample Communications, Inc(0x188A)"}, }; /* pci_vid_188A[] */ -pci_id_t pci_vid_1890[] = { +static pci_id_t const pci_vid_1890[] = { {0x1890, 0xFFFF, 0xFFFF, 0xFFFF, "Egenera, Inc.(0x1890)"}, }; /* pci_vid_1890[] */ -pci_id_t pci_vid_1894[] = { +static pci_id_t const pci_vid_1894[] = { {0x1894, 0xFFFF, 0xFFFF, 0xFFFF, "KNC One(0x1894)"}, }; /* pci_vid_1894[] */ -pci_id_t pci_vid_1896[] = { +static pci_id_t const pci_vid_1896[] = { {0x1896, 0xFFFF, 0xFFFF, 0xFFFF, "B&B Electronics Manufacturing Company, Inc.(0x1896)"}, {0x1896, 0x4202, 0xFFFF, 0xFFFF, "MIport 3PCIU2 2-port Serial(0x4202)"}, {0x1896, 0x4204, 0xFFFF, 0xFFFF, "MIport 3PCIU4 4-port Serial(0x4204)"}, @@ -28225,24 +28345,24 @@ pci_id_t pci_vid_1896[] = { {0x1896, 0xBB11, 0xFFFF, 0xFFFF, "3PCIO1 1-Port Isolated Serial(0xBB11)"}, }; /* pci_vid_1896[] */ -pci_id_t pci_vid_1897[] = { +static pci_id_t const pci_vid_1897[] = { {0x1897, 0xFFFF, 0xFFFF, 0xFFFF, "AMtek(0x1897)"}, }; /* pci_vid_1897[] */ -pci_id_t pci_vid_18A1[] = { +static pci_id_t const pci_vid_18A1[] = { {0x18A1, 0xFFFF, 0xFFFF, 0xFFFF, "Astute Networks Inc.(0x18A1)"}, }; /* pci_vid_18A1[] */ -pci_id_t pci_vid_18A2[] = { +static pci_id_t const pci_vid_18A2[] = { {0x18A2, 0xFFFF, 0xFFFF, 0xFFFF, "Stretch Inc.(0x18A2)"}, {0x18A2, 0x0002, 0xFFFF, 0xFFFF, "VRC6016 16-Channel PCIe DVR Card(0x0002)"}, }; /* pci_vid_18A2[] */ -pci_id_t pci_vid_18A3[] = { +static pci_id_t const pci_vid_18A3[] = { {0x18A3, 0xFFFF, 0xFFFF, 0xFFFF, "AT&T(0x18A3)"}, }; /* pci_vid_18A3[] */ -pci_id_t pci_vid_18AC[] = { +static pci_id_t const pci_vid_18AC[] = { {0x18AC, 0xFFFF, 0xFFFF, 0xFFFF, "DViCO Corporation(0x18AC)"}, {0x18AC, 0xD500, 0xFFFF, 0xFFFF, "FusionHDTV 5(0xD500)"}, {0x18AC, 0xD800, 0xFFFF, 0xFFFF, "FusionHDTV 3 Gold(0xD800)"}, @@ -28253,30 +28373,30 @@ pci_id_t pci_vid_18AC[] = { {0x18AC, 0xDB78, 0xFFFF, 0xFFFF, "FusionHDTV DVB-T Dual Express(0xDB78)"}, }; /* pci_vid_18AC[] */ -pci_id_t pci_vid_18B8[] = { +static pci_id_t const pci_vid_18B8[] = { {0x18B8, 0xFFFF, 0xFFFF, 0xFFFF, "Ammasso(0x18B8)"}, {0x18B8, 0xB001, 0xFFFF, 0xFFFF, "AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor(0xB001)"}, }; /* pci_vid_18B8[] */ -pci_id_t pci_vid_18BC[] = { +static pci_id_t const pci_vid_18BC[] = { {0x18BC, 0xFFFF, 0xFFFF, 0xFFFF, "GeCube Technologies, Inc.(0x18BC)"}, }; /* pci_vid_18BC[] */ -pci_id_t pci_vid_18C3[] = { +static pci_id_t const pci_vid_18C3[] = { {0x18C3, 0xFFFF, 0xFFFF, 0xFFFF, "Micronas Semiconductor Holding AG(0x18C3)"}, {0x18C3, 0x0720, 0xFFFF, 0xFFFF, "nGene PCI-Express Multimedia Controller(0x0720)"}, {0x18C3, 0x0720, 0x1461, 0x032E, "Hybrid M779 PCI-E(0x1461-0x032E)"}, }; /* pci_vid_18C3[] */ -pci_id_t pci_vid_18C8[] = { +static pci_id_t const pci_vid_18C8[] = { {0x18C8, 0xFFFF, 0xFFFF, 0xFFFF, "Cray Inc(0x18C8)"}, }; /* pci_vid_18C8[] */ -pci_id_t pci_vid_18C9[] = { +static pci_id_t const pci_vid_18C9[] = { {0x18C9, 0xFFFF, 0xFFFF, 0xFFFF, "ARVOO Engineering BV(0x18C9)"}, }; /* pci_vid_18C9[] */ -pci_id_t pci_vid_18CA[] = { +static pci_id_t const pci_vid_18CA[] = { {0x18CA, 0xFFFF, 0xFFFF, 0xFFFF, "XGI Technology Inc. (eXtreme Graphics Innovation)(0x18CA)"}, {0x18CA, 0x0020, 0xFFFF, 0xFFFF, "Z7/Z9 (XG20 core)(0x0020)"}, {0x18CA, 0x0021, 0xFFFF, 0xFFFF, "Z9s/Z9m (XG21 core)(0x0021)"}, @@ -28285,38 +28405,38 @@ pci_id_t pci_vid_18CA[] = { {0x18CA, 0x0047, 0xFFFF, 0xFFFF, "Volari 8300 (chip: XP10, codename: XG47)(0x0047)"}, }; /* pci_vid_18CA[] */ -pci_id_t pci_vid_18D2[] = { +static pci_id_t const pci_vid_18D2[] = { {0x18D2, 0xFFFF, 0xFFFF, 0xFFFF, "Sitecom Europe BV (Wrong ID)(0x18D2)"}, {0x18D2, 0x3069, 0xFFFF, 0xFFFF, "DC-105v2 ISDN controller(0x3069)"}, }; /* pci_vid_18D2[] */ -pci_id_t pci_vid_18D4[] = { +static pci_id_t const pci_vid_18D4[] = { {0x18D4, 0xFFFF, 0xFFFF, 0xFFFF, "Celestica(0x18D4)"}, }; /* pci_vid_18D4[] */ -pci_id_t pci_vid_18D8[] = { +static pci_id_t const pci_vid_18D8[] = { {0x18D8, 0xFFFF, 0xFFFF, 0xFFFF, "Dialogue Technology Corp.(0x18D8)"}, }; /* pci_vid_18D8[] */ -pci_id_t pci_vid_18DD[] = { +static pci_id_t const pci_vid_18DD[] = { {0x18DD, 0xFFFF, 0xFFFF, 0xFFFF, "Artimi Inc(0x18DD)"}, {0x18DD, 0x4C6F, 0xFFFF, 0xFFFF, "Artimi RTMI-100 UWB adapter(0x4C6F)"}, }; /* pci_vid_18DD[] */ -pci_id_t pci_vid_18DF[] = { +static pci_id_t const pci_vid_18DF[] = { {0x18DF, 0xFFFF, 0xFFFF, 0xFFFF, "LeWiz Communications(0x18DF)"}, }; /* pci_vid_18DF[] */ -pci_id_t pci_vid_18E6[] = { +static pci_id_t const pci_vid_18E6[] = { {0x18E6, 0xFFFF, 0xFFFF, 0xFFFF, "MPL AG(0x18E6)"}, {0x18E6, 0x0001, 0xFFFF, 0xFFFF, "OSCI [Octal Serial Communication Interface](0x0001)"}, }; /* pci_vid_18E6[] */ -pci_id_t pci_vid_18EB[] = { +static pci_id_t const pci_vid_18EB[] = { {0x18EB, 0xFFFF, 0xFFFF, 0xFFFF, "Advance Multimedia Internet Technology, Inc.(0x18EB)"}, }; /* pci_vid_18EB[] */ -pci_id_t pci_vid_18EC[] = { +static pci_id_t const pci_vid_18EC[] = { {0x18EC, 0xFFFF, 0xFFFF, 0xFFFF, "Cesnet, z.s.p.o.(0x18EC)"}, {0x18EC, 0x6D05, 0xFFFF, 0xFFFF, "ML555(0x6D05)"}, {0x18EC, 0x6D05, 0x18EC, 0x0100, "NIC (ethernet interfaces)(0x18EC-0x0100)"}, @@ -28369,15 +28489,15 @@ pci_id_t pci_vid_18EC[] = { {0x18EC, 0xC400, 0xFFFF, 0xFFFF, "COMBO-400G1(0xC400)"}, }; /* pci_vid_18EC[] */ -pci_id_t pci_vid_18EE[] = { +static pci_id_t const pci_vid_18EE[] = { {0x18EE, 0xFFFF, 0xFFFF, 0xFFFF, "Chenming Mold Ind. Corp.(0x18EE)"}, }; /* pci_vid_18EE[] */ -pci_id_t pci_vid_18F1[] = { +static pci_id_t const pci_vid_18F1[] = { {0x18F1, 0xFFFF, 0xFFFF, 0xFFFF, "Spectrum GmbH(0x18F1)"}, }; /* pci_vid_18F1[] */ -pci_id_t pci_vid_18F4[] = { +static pci_id_t const pci_vid_18F4[] = { {0x18F4, 0xFFFF, 0xFFFF, 0xFFFF, "Napatech A/S(0x18F4)"}, {0x18F4, 0x0031, 0xFFFF, 0xFFFF, "NT20X Network Adapter(0x0031)"}, {0x18F4, 0x0051, 0xFFFF, 0xFFFF, "NT20X Capture Card(0x0051)"}, @@ -28411,7 +28531,7 @@ pci_id_t pci_vid_18F4[] = { {0x18F4, 0x0225, 0xFFFF, 0xFFFF, "NT40A11 Network Adapter(0x0225)"}, }; /* pci_vid_18F4[] */ -pci_id_t pci_vid_18F6[] = { +static pci_id_t const pci_vid_18F6[] = { {0x18F6, 0xFFFF, 0xFFFF, 0xFFFF, "NextIO(0x18F6)"}, {0x18F6, 0x1000, 0xFFFF, 0xFFFF, "[Nexsis] Switch Virtual P2P PCIe Bridge(0x1000)"}, {0x18F6, 0x1001, 0xFFFF, 0xFFFF, "[Texsis] Switch Virtual P2P PCIe Bridge(0x1001)"}, @@ -28421,7 +28541,7 @@ pci_id_t pci_vid_18F6[] = { {0x18F6, 0x2001, 0xFFFF, 0xFFFF, "[Texsis] Switch Integrated Mgmt. Endpoint(0x2001)"}, }; /* pci_vid_18F6[] */ -pci_id_t pci_vid_18F7[] = { +static pci_id_t const pci_vid_18F7[] = { {0x18F7, 0xFFFF, 0xFFFF, 0xFFFF, "Commtech, Inc.(0x18F7)"}, {0x18F7, 0x0001, 0xFFFF, 0xFFFF, "ESCC-PCI-335 Serial PCI Adapter [Fastcom](0x0001)"}, {0x18F7, 0x0002, 0xFFFF, 0xFFFF, "422/4-PCI-335 Serial PCI Adapter [Fastcom](0x0002)"}, @@ -28454,21 +28574,21 @@ pci_id_t pci_vid_18F7[] = { {0x18F7, 0x0027, 0xFFFF, 0xFFFF, "FSCC/4 Serial PCIe Adapter [Fastcom](0x0027)"}, }; /* pci_vid_18F7[] */ -pci_id_t pci_vid_18FB[] = { +static pci_id_t const pci_vid_18FB[] = { {0x18FB, 0xFFFF, 0xFFFF, 0xFFFF, "Resilience Corporation(0x18FB)"}, }; /* pci_vid_18FB[] */ -pci_id_t pci_vid_1904[] = { +static pci_id_t const pci_vid_1904[] = { {0x1904, 0xFFFF, 0xFFFF, 0xFFFF, "Hangzhou Silan Microelectronics Co., Ltd.(0x1904)"}, {0x1904, 0x2031, 0xFFFF, 0xFFFF, "SC92031 PCI Fast Ethernet Adapter(0x2031)"}, {0x1904, 0x8139, 0xFFFF, 0xFFFF, "RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor(0x8139)"}, }; /* pci_vid_1904[] */ -pci_id_t pci_vid_1905[] = { +static pci_id_t const pci_vid_1905[] = { {0x1905, 0xFFFF, 0xFFFF, 0xFFFF, "Micronas USA, Inc.(0x1905)"}, }; /* pci_vid_1905[] */ -pci_id_t pci_vid_1912[] = { +static pci_id_t const pci_vid_1912[] = { {0x1912, 0xFFFF, 0xFFFF, 0xFFFF, "Renesas Technology Corp.(0x1912)"}, {0x1912, 0x0002, 0xFFFF, 0xFFFF, "SH7780 PCI Controller (PCIC)(0x0002)"}, {0x1912, 0x0011, 0xFFFF, 0xFFFF, "SH7757 PCIe End-Point [PBI](0x0011)"}, @@ -28481,11 +28601,11 @@ pci_id_t pci_vid_1912[] = { {0x1912, 0x001D, 0xFFFF, 0xFFFF, "SH7758 PCIe Switch [PS](0x001D)"}, }; /* pci_vid_1912[] */ -pci_id_t pci_vid_1919[] = { +static pci_id_t const pci_vid_1919[] = { {0x1919, 0xFFFF, 0xFFFF, 0xFFFF, "Soltek Computer Inc.(0x1919)"}, }; /* pci_vid_1919[] */ -pci_id_t pci_vid_1923[] = { +static pci_id_t const pci_vid_1923[] = { {0x1923, 0xFFFF, 0xFFFF, 0xFFFF, "Sangoma Technologies Corp.(0x1923)"}, {0x1923, 0x0040, 0xFFFF, 0xFFFF, "A200/Remora FXO/FXS Analog AFT card(0x0040)"}, {0x1923, 0x0100, 0xFFFF, 0xFFFF, "A104d QUAD T1/E1 AFT card(0x0100)"}, @@ -28493,7 +28613,7 @@ pci_id_t pci_vid_1923[] = { {0x1923, 0x0400, 0xFFFF, 0xFFFF, "A104u Quad T1/E1 AFT(0x0400)"}, }; /* pci_vid_1923[] */ -pci_id_t pci_vid_1924[] = { +static pci_id_t const pci_vid_1924[] = { {0x1924, 0xFFFF, 0xFFFF, 0xFFFF, "Solarflare Communications(0x1924)"}, {0x1924, 0x0703, 0xFFFF, 0xFFFF, "SFC4000 rev A net [Solarstorm](0x0703)"}, {0x1924, 0x0703, 0x10B8, 0x0102, "SMC10GPCIe-10BT (A2) [TigerCard](0x10B8-0x0102)"}, @@ -28625,33 +28745,33 @@ pci_id_t pci_vid_1924[] = { {0x1924, 0xC101, 0xFFFF, 0xFFFF, "EF1-21022T [EtherFabric](0xC101)"}, }; /* pci_vid_1924[] */ -pci_id_t pci_vid_192A[] = { +static pci_id_t const pci_vid_192A[] = { {0x192A, 0xFFFF, 0xFFFF, 0xFFFF, "BiTMICRO Networks Inc.(0x192A)"}, {0x192A, 0x0008, 0xFFFF, 0xFFFF, "RAMPART(0x0008)"}, }; /* pci_vid_192A[] */ -pci_id_t pci_vid_192E[] = { +static pci_id_t const pci_vid_192E[] = { {0x192E, 0xFFFF, 0xFFFF, 0xFFFF, "TransDimension(0x192E)"}, }; /* pci_vid_192E[] */ -pci_id_t pci_vid_1931[] = { +static pci_id_t const pci_vid_1931[] = { {0x1931, 0xFFFF, 0xFFFF, 0xFFFF, "Option N.V.(0x1931)"}, {0x1931, 0x000C, 0xFFFF, 0xFFFF, "Qualcomm MSM6275 UMTS chip(0x000C)"}, }; /* pci_vid_1931[] */ -pci_id_t pci_vid_1932[] = { +static pci_id_t const pci_vid_1932[] = { {0x1932, 0xFFFF, 0xFFFF, 0xFFFF, "DiBcom(0x1932)"}, }; /* pci_vid_1932[] */ -pci_id_t pci_vid_193C[] = { +static pci_id_t const pci_vid_193C[] = { {0x193C, 0xFFFF, 0xFFFF, 0xFFFF, "MAXIM Integrated Products(0x193C)"}, }; /* pci_vid_193C[] */ -pci_id_t pci_vid_193D[] = { +static pci_id_t const pci_vid_193D[] = { {0x193D, 0xFFFF, 0xFFFF, 0xFFFF, "New H3C Technologies Co., Ltd.(0x193D)"}, }; /* pci_vid_193D[] */ -pci_id_t pci_vid_193F[] = { +static pci_id_t const pci_vid_193F[] = { {0x193F, 0xFFFF, 0xFFFF, 0xFFFF, "AHA Products Group(0x193F)"}, {0x193F, 0x0001, 0xFFFF, 0xFFFF, "AHA36x-PCIX(0x0001)"}, {0x193F, 0x0360, 0xFFFF, 0xFFFF, "AHA360-PCIe(0x0360)"}, @@ -28667,22 +28787,22 @@ pci_id_t pci_vid_193F[] = { {0x193F, 0x6102, 0xFFFF, 0xFFFF, "AHA6102(0x6102)"}, }; /* pci_vid_193F[] */ -pci_id_t pci_vid_1942[] = { +static pci_id_t const pci_vid_1942[] = { {0x1942, 0xFFFF, 0xFFFF, 0xFFFF, "ClearSpeed Technology plc(0x1942)"}, {0x1942, 0xE511, 0xFFFF, 0xFFFF, "Advance X620 accelerator card(0xE511)"}, {0x1942, 0xE521, 0xFFFF, 0xFFFF, "Advance e620 accelerator card(0xE521)"}, }; /* pci_vid_1942[] */ -pci_id_t pci_vid_1947[] = { +static pci_id_t const pci_vid_1947[] = { {0x1947, 0xFFFF, 0xFFFF, 0xFFFF, "C-guys, Inc.(0x1947)"}, {0x1947, 0x4743, 0xFFFF, 0xFFFF, "CG200 Dual SD/SDIO Host controller device(0x4743)"}, }; /* pci_vid_1947[] */ -pci_id_t pci_vid_1948[] = { +static pci_id_t const pci_vid_1948[] = { {0x1948, 0xFFFF, 0xFFFF, 0xFFFF, "Alpha Networks Inc.(0x1948)"}, }; /* pci_vid_1948[] */ -pci_id_t pci_vid_194A[] = { +static pci_id_t const pci_vid_194A[] = { {0x194A, 0xFFFF, 0xFFFF, 0xFFFF, "DapTechnology B.V.(0x194A)"}, {0x194A, 0x1111, 0xFFFF, 0xFFFF, "FireSpy3850(0x1111)"}, {0x194A, 0x1112, 0xFFFF, 0xFFFF, "FireSpy450b(0x1112)"}, @@ -28695,11 +28815,11 @@ pci_id_t pci_vid_194A[] = { {0x194A, 0x1203, 0xFFFF, 0xFFFF, "FireTrac 3460bT (fallback firmware)(0x1203)"}, }; /* pci_vid_194A[] */ -pci_id_t pci_vid_1954[] = { +static pci_id_t const pci_vid_1954[] = { {0x1954, 0xFFFF, 0xFFFF, 0xFFFF, "One Stop Systems, Inc.(0x1954)"}, }; /* pci_vid_1954[] */ -pci_id_t pci_vid_1957[] = { +static pci_id_t const pci_vid_1957[] = { {0x1957, 0xFFFF, 0xFFFF, 0xFFFF, "Freescale Semiconductor Inc(0x1957)"}, {0x1957, 0x0012, 0xFFFF, 0xFFFF, "MPC8548E(0x0012)"}, {0x1957, 0x0013, 0xFFFF, 0xFFFF, "MPC8548(0x0013)"}, @@ -28788,11 +28908,11 @@ pci_id_t pci_vid_1957[] = { {0x1957, 0xFC03, 0xFFFF, 0xFFFF, "CFI(0xFC03)"}, }; /* pci_vid_1957[] */ -pci_id_t pci_vid_1958[] = { +static pci_id_t const pci_vid_1958[] = { {0x1958, 0xFFFF, 0xFFFF, 0xFFFF, "Faster Technology, LLC.(0x1958)"}, }; /* pci_vid_1958[] */ -pci_id_t pci_vid_1959[] = { +static pci_id_t const pci_vid_1959[] = { {0x1959, 0xFFFF, 0xFFFF, 0xFFFF, "PA Semi, Inc(0x1959)"}, {0x1959, 0xA000, 0xFFFF, 0xFFFF, "PA6T Core(0xA000)"}, {0x1959, 0xA001, 0xFFFF, 0xFFFF, "PWRficient Host Bridge(0xA001)"}, @@ -28810,7 +28930,7 @@ pci_id_t pci_vid_1959[] = { {0x1959, 0xA00D, 0xFFFF, 0xFFFF, "PWRficient PCI-Express Internal Endpoint(0xA00D)"}, }; /* pci_vid_1959[] */ -pci_id_t pci_vid_1966[] = { +static pci_id_t const pci_vid_1966[] = { {0x1966, 0xFFFF, 0xFFFF, 0xFFFF, "Orad Hi-Tec Systems(0x1966)"}, {0x1966, 0x1975, 0xFFFF, 0xFFFF, "DVG64 family(0x1975)"}, {0x1966, 0x1977, 0xFFFF, 0xFFFF, "DVG128 family(0x1977)"}, @@ -28821,7 +28941,7 @@ pci_id_t pci_vid_1966[] = { {0x1966, 0x1980, 0x1234, 0x3410, "UHD2(0x1234-0x3410)"}, }; /* pci_vid_1966[] */ -pci_id_t pci_vid_1969[] = { +static pci_id_t const pci_vid_1969[] = { {0x1969, 0xFFFF, 0xFFFF, 0xFFFF, "Qualcomm Atheros(0x1969)"}, {0x1969, 0x1026, 0xFFFF, 0xFFFF, "AR8121/AR8113/AR8114 Gigabit or Fast Ethernet(0x1026)"}, {0x1969, 0x1026, 0x1043, 0x8304, "P5KPL-CM Motherboard(0x1043-0x8304)"}, @@ -28841,37 +28961,39 @@ pci_id_t pci_vid_1969[] = { {0x1969, 0x1091, 0x1043, 0x1477, "N56VZ(0x1043-0x1477)"}, {0x1969, 0x10A0, 0xFFFF, 0xFFFF, "QCA8172 Fast Ethernet(0x10A0)"}, {0x1969, 0x10A1, 0xFFFF, 0xFFFF, "QCA8171 Gigabit Ethernet(0x10A1)"}, +{0x1969, 0x2010, 0xFFFF, 0xFFFF, "QCA8175 card reader controller(0x2010)"}, {0x1969, 0x2048, 0xFFFF, 0xFFFF, "Attansic L2 Fast Ethernet(0x2048)"}, {0x1969, 0x2060, 0xFFFF, 0xFFFF, "AR8152 v1.1 Fast Ethernet(0x2060)"}, {0x1969, 0x2062, 0xFFFF, 0xFFFF, "AR8152 v2.0 Fast Ethernet(0x2062)"}, {0x1969, 0x2062, 0x1043, 0x8468, "Eee PC 1015PX(0x1043-0x8468)"}, +{0x1969, 0x3010, 0xFFFF, 0xFFFF, "QCA8175 SD controller(0x3010)"}, {0x1969, 0xE091, 0xFFFF, 0xFFFF, "Killer E220x Gigabit Ethernet Controller(0xE091)"}, {0x1969, 0xE0A1, 0xFFFF, 0xFFFF, "Killer E2400 Gigabit Ethernet Controller(0xE0A1)"}, {0x1969, 0xE0B1, 0xFFFF, 0xFFFF, "Killer E2500 Gigabit Ethernet Controller(0xE0B1)"}, }; /* pci_vid_1969[] */ -pci_id_t pci_vid_196A[] = { +static pci_id_t const pci_vid_196A[] = { {0x196A, 0xFFFF, 0xFFFF, 0xFFFF, "Sensory Networks Inc.(0x196A)"}, {0x196A, 0x0101, 0xFFFF, 0xFFFF, "NodalCore C-1000 Content Classification Accelerator(0x0101)"}, {0x196A, 0x0102, 0xFFFF, 0xFFFF, "NodalCore C-2000 Content Classification Accelerator(0x0102)"}, {0x196A, 0x0105, 0xFFFF, 0xFFFF, "NodalCore C-3000 Content Classification Accelerator(0x0105)"}, }; /* pci_vid_196A[] */ -pci_id_t pci_vid_196D[] = { +static pci_id_t const pci_vid_196D[] = { {0x196D, 0xFFFF, 0xFFFF, 0xFFFF, "Club-3D BV(0x196D)"}, }; /* pci_vid_196D[] */ -pci_id_t pci_vid_196E[] = { +static pci_id_t const pci_vid_196E[] = { {0x196E, 0xFFFF, 0xFFFF, 0xFFFF, "PNY(0x196E)"}, }; /* pci_vid_196E[] */ -pci_id_t pci_vid_1971[] = { +static pci_id_t const pci_vid_1971[] = { {0x1971, 0xFFFF, 0xFFFF, 0xFFFF, "AGEIA Technologies, Inc.(0x1971)"}, {0x1971, 0x1011, 0xFFFF, 0xFFFF, "Physics Processing Unit [PhysX](0x1011)"}, {0x1971, 0x1011, 0x1043, 0x0001, "PhysX P1(0x1043-0x0001)"}, }; /* pci_vid_1971[] */ -pci_id_t pci_vid_1974[] = { +static pci_id_t const pci_vid_1974[] = { {0x1974, 0xFFFF, 0xFFFF, 0xFFFF, "Star Electronics GmbH & Co. KG(0x1974)"}, {0x1974, 0x0009, 0xFFFF, 0xFFFF, "FlexCard PMC-II(0x0009)"}, {0x1974, 0x0011, 0xFFFF, 0xFFFF, "FlexCard PMC-II Ethernet(0x0011)"}, @@ -28881,15 +29003,15 @@ pci_id_t pci_vid_1974[] = { {0x1974, 0x001B, 0xFFFF, 0xFFFF, "FlexCard PCIe Ethernet(0x001B)"}, }; /* pci_vid_1974[] */ -pci_id_t pci_vid_1976[] = { +static pci_id_t const pci_vid_1976[] = { {0x1976, 0xFFFF, 0xFFFF, 0xFFFF, "TRENDnet(0x1976)"}, }; /* pci_vid_1976[] */ -pci_id_t pci_vid_1977[] = { +static pci_id_t const pci_vid_1977[] = { {0x1977, 0xFFFF, 0xFFFF, 0xFFFF, "Parsec(0x1977)"}, }; /* pci_vid_1977[] */ -pci_id_t pci_vid_197B[] = { +static pci_id_t const pci_vid_197B[] = { {0x197B, 0xFFFF, 0xFFFF, 0xFFFF, "JMicron Technology Corp.(0x197B)"}, {0x197B, 0x0250, 0xFFFF, 0xFFFF, "JMC250 PCI Express Gigabit Ethernet Controller(0x0250)"}, {0x197B, 0x0260, 0xFFFF, 0xFFFF, "JMC260 PCI Express Fast Ethernet Controller(0x0260)"}, @@ -28924,16 +29046,16 @@ pci_id_t pci_vid_197B[] = { {0x197B, 0x2394, 0xFFFF, 0xFFFF, "xD Host Controller(0x2394)"}, }; /* pci_vid_197B[] */ -pci_id_t pci_vid_1982[] = { +static pci_id_t const pci_vid_1982[] = { {0x1982, 0xFFFF, 0xFFFF, 0xFFFF, "Distant Early Warning Communications Inc(0x1982)"}, {0x1982, 0x1600, 0xFFFF, 0xFFFF, "OX16C954 HOST-A(0x1600)"}, {0x1982, 0x16FF, 0xFFFF, 0xFFFF, "OX16C954 HOST-B(0x16FF)"}, }; /* pci_vid_1982[] */ -pci_id_t pci_vid_1987[] = { +static pci_id_t const pci_vid_1987[] = { {0x1987, 0xFFFF, 0xFFFF, 0xFFFF, "Phison Electronics Corporation(0x1987)"}, {0x1987, 0x5007, 0xFFFF, 0xFFFF, "E7 NVMe Controller(0x5007)"}, -{0x1987, 0x5008, 0xFFFF, 0xFFFF, "E8 PCIe3 NVMe Controller(0x5008)"}, +{0x1987, 0x5008, 0xFFFF, 0xFFFF, "E8 PCIe3 x2 NVMe Controller(0x5008)"}, {0x1987, 0x5012, 0xFFFF, 0xFFFF, "E12 NVMe Controller(0x5012)"}, {0x1987, 0x5013, 0xFFFF, 0xFFFF, "PS5013-E13 PCIe3 NVMe Controller (DRAM-less)(0x5013)"}, {0x1987, 0x5015, 0xFFFF, 0xFFFF, "PS5015-E15 PCIe3 NVMe Controller (DRAM-less)(0x5015)"}, @@ -28942,44 +29064,45 @@ pci_id_t pci_vid_1987[] = { {0x1987, 0x5019, 0xFFFF, 0xFFFF, "PS5019-E19 PCIe4 NVMe Controller (DRAM-less)(0x5019)"}, {0x1987, 0x5021, 0xFFFF, 0xFFFF, "PS5021-E21 PCIe4 NVMe Controller (DRAM-less)(0x5021)"}, {0x1987, 0x5026, 0xFFFF, 0xFFFF, "PS5026-E26 PCIe5 NVMe Controller(0x5026)"}, +{0x1987, 0x5027, 0xFFFF, 0xFFFF, "PS5027-E27T PCIe4 NVMe Controller (DRAM-less)(0x5027)"}, }; /* pci_vid_1987[] */ -pci_id_t pci_vid_1989[] = { +static pci_id_t const pci_vid_1989[] = { {0x1989, 0xFFFF, 0xFFFF, 0xFFFF, "Montilio Inc.(0x1989)"}, {0x1989, 0x0001, 0xFFFF, 0xFFFF, "RapidFile Bridge(0x0001)"}, {0x1989, 0x8001, 0xFFFF, 0xFFFF, "RapidFile(0x8001)"}, }; /* pci_vid_1989[] */ -pci_id_t pci_vid_198A[] = { +static pci_id_t const pci_vid_198A[] = { {0x198A, 0xFFFF, 0xFFFF, 0xFFFF, "Nallatech Ltd.(0x198A)"}, }; /* pci_vid_198A[] */ -pci_id_t pci_vid_1993[] = { +static pci_id_t const pci_vid_1993[] = { {0x1993, 0xFFFF, 0xFFFF, 0xFFFF, "Innominate Security Technologies AG(0x1993)"}, }; /* pci_vid_1993[] */ -pci_id_t pci_vid_1999[] = { +static pci_id_t const pci_vid_1999[] = { {0x1999, 0xFFFF, 0xFFFF, 0xFFFF, "A-Logics(0x1999)"}, {0x1999, 0xA900, 0xFFFF, 0xFFFF, "AM-7209 Video Processor(0xA900)"}, }; /* pci_vid_1999[] */ -pci_id_t pci_vid_199A[] = { +static pci_id_t const pci_vid_199A[] = { {0x199A, 0xFFFF, 0xFFFF, 0xFFFF, "Pulse-LINK, Inc.(0x199A)"}, }; /* pci_vid_199A[] */ -pci_id_t pci_vid_199D[] = { +static pci_id_t const pci_vid_199D[] = { {0x199D, 0xFFFF, 0xFFFF, 0xFFFF, "Xsigo Systems(0x199D)"}, {0x199D, 0x8209, 0xFFFF, 0xFFFF, "Virtual NIC Device(0x8209)"}, {0x199D, 0x890A, 0xFFFF, 0xFFFF, "Virtual HBA Device(0x890A)"}, }; /* pci_vid_199D[] */ -pci_id_t pci_vid_199F[] = { +static pci_id_t const pci_vid_199F[] = { {0x199F, 0xFFFF, 0xFFFF, 0xFFFF, "Auvitek(0x199F)"}, {0x199F, 0x8501, 0xFFFF, 0xFFFF, "AU85X1 PCI REV1.1(0x8501)"}, {0x199F, 0x8521, 0xFFFF, 0xFFFF, "AU8521 TV card(0x8521)"}, }; /* pci_vid_199F[] */ -pci_id_t pci_vid_19A2[] = { +static pci_id_t const pci_vid_19A2[] = { {0x19A2, 0xFFFF, 0xFFFF, 0xFFFF, "Emulex Corporation(0x19A2)"}, {0x19A2, 0x0120, 0xFFFF, 0xFFFF, "x1 PCIe Gen2 Bridge[Pilot4](0x0120)"}, {0x19A2, 0x0200, 0xFFFF, 0xFFFF, "BladeEngine 10Gb PCI-E iSCSI adapter(0x0200)"}, @@ -29016,62 +29139,62 @@ pci_id_t pci_vid_19A2[] = { {0x19A2, 0x0800, 0xFFFF, 0xFFFF, "ServerView iRMC HTI(0x0800)"}, }; /* pci_vid_19A2[] */ -pci_id_t pci_vid_19A4[] = { +static pci_id_t const pci_vid_19A4[] = { {0x19A4, 0xFFFF, 0xFFFF, 0xFFFF, "Owl Cyber Defense Solutions(0x19A4)"}, }; /* pci_vid_19A4[] */ -pci_id_t pci_vid_19A8[] = { +static pci_id_t const pci_vid_19A8[] = { {0x19A8, 0xFFFF, 0xFFFF, 0xFFFF, "DAQDATA GmbH(0x19A8)"}, }; /* pci_vid_19A8[] */ -pci_id_t pci_vid_19AC[] = { +static pci_id_t const pci_vid_19AC[] = { {0x19AC, 0xFFFF, 0xFFFF, 0xFFFF, "Kasten Chase Applied Research(0x19AC)"}, {0x19AC, 0x0001, 0xFFFF, 0xFFFF, "ACA2400 Crypto Accelerator(0x0001)"}, }; /* pci_vid_19AC[] */ -pci_id_t pci_vid_19AE[] = { +static pci_id_t const pci_vid_19AE[] = { {0x19AE, 0xFFFF, 0xFFFF, 0xFFFF, "Progeny Systems Corporation(0x19AE)"}, {0x19AE, 0x0520, 0xFFFF, 0xFFFF, "4135 HFT Interface Controller(0x0520)"}, {0x19AE, 0x0521, 0xFFFF, 0xFFFF, "Decimator(0x0521)"}, }; /* pci_vid_19AE[] */ -pci_id_t pci_vid_19BA[] = { +static pci_id_t const pci_vid_19BA[] = { {0x19BA, 0xFFFF, 0xFFFF, 0xFFFF, "ZyXEL Communications Corp.(0x19BA)"}, {0x19BA, 0x2330, 0xFFFF, 0xFFFF, "ZyWALL Turbo Card(0x2330)"}, }; /* pci_vid_19BA[] */ -pci_id_t pci_vid_19C1[] = { +static pci_id_t const pci_vid_19C1[] = { {0x19C1, 0xFFFF, 0xFFFF, 0xFFFF, "Exegy Inc.(0x19C1)"}, }; /* pci_vid_19C1[] */ -pci_id_t pci_vid_19D1[] = { +static pci_id_t const pci_vid_19D1[] = { {0x19D1, 0xFFFF, 0xFFFF, 0xFFFF, "Motorola Expedience(0x19D1)"}, }; /* pci_vid_19D1[] */ -pci_id_t pci_vid_19D4[] = { +static pci_id_t const pci_vid_19D4[] = { {0x19D4, 0xFFFF, 0xFFFF, 0xFFFF, "Quixant Limited(0x19D4)"}, }; /* pci_vid_19D4[] */ -pci_id_t pci_vid_19DA[] = { +static pci_id_t const pci_vid_19DA[] = { {0x19DA, 0xFFFF, 0xFFFF, 0xFFFF, "ZOTAC International (MCO) Ltd.(0x19DA)"}, }; /* pci_vid_19DA[] */ -pci_id_t pci_vid_19DE[] = { +static pci_id_t const pci_vid_19DE[] = { {0x19DE, 0xFFFF, 0xFFFF, 0xFFFF, "Pico Computing(0x19DE)"}, }; /* pci_vid_19DE[] */ -pci_id_t pci_vid_19E2[] = { +static pci_id_t const pci_vid_19E2[] = { {0x19E2, 0xFFFF, 0xFFFF, 0xFFFF, "Vector Informatik GmbH(0x19E2)"}, }; /* pci_vid_19E2[] */ -pci_id_t pci_vid_19E3[] = { +static pci_id_t const pci_vid_19E3[] = { {0x19E3, 0xFFFF, 0xFFFF, 0xFFFF, "DDRdrive LLC(0x19E3)"}, {0x19E3, 0x5801, 0xFFFF, 0xFFFF, "DDRdrive X1(0x5801)"}, {0x19E3, 0x5808, 0xFFFF, 0xFFFF, "DDRdrive X8(0x5808)"}, {0x19E3, 0xDD52, 0xFFFF, 0xFFFF, "DDRdrive X1-30(0xDD52)"}, }; /* pci_vid_19E3[] */ -pci_id_t pci_vid_19E5[] = { +static pci_id_t const pci_vid_19E5[] = { {0x19E5, 0xFFFF, 0xFFFF, 0xFFFF, "Huawei Technologies Co., Ltd.(0x19E5)"}, {0x19E5, 0x0123, 0xFFFF, 0xFFFF, "ES3000 V3 NVMe PCIe SSD(0x0123)"}, {0x19E5, 0x0123, 0x19E5, 0x3022, "NVMe SSD ES3600P V3 800GB 2.5\" U.2(0x19E5-0x3022)"}, @@ -29173,7 +29296,7 @@ pci_id_t pci_vid_19E5[] = { {0x19E5, 0xA25B, 0xFFFF, 0xFFFF, "HiSilicon RDE Engine(Virtual Function)(0xA25B)"}, }; /* pci_vid_19E5[] */ -pci_id_t pci_vid_19E7[] = { +static pci_id_t const pci_vid_19E7[] = { {0x19E7, 0xFFFF, 0xFFFF, 0xFFFF, "NET (Network Equipment Technologies)(0x19E7)"}, {0x19E7, 0x1001, 0xFFFF, 0xFFFF, "STIX DSP Card(0x1001)"}, {0x19E7, 0x1002, 0xFFFF, 0xFFFF, "STIX - 1 Port T1/E1 Card(0x1002)"}, @@ -29182,19 +29305,19 @@ pci_id_t pci_vid_19E7[] = { {0x19E7, 0x1005, 0xFFFF, 0xFFFF, "STIX - 4 Port FXS Card(0x1005)"}, }; /* pci_vid_19E7[] */ -pci_id_t pci_vid_19EE[] = { +static pci_id_t const pci_vid_19EE[] = { {0x19EE, 0xFFFF, 0xFFFF, 0xFFFF, "Netronome Systems, Inc.(0x19EE)"}, }; /* pci_vid_19EE[] */ -pci_id_t pci_vid_19F1[] = { +static pci_id_t const pci_vid_19F1[] = { {0x19F1, 0xFFFF, 0xFFFF, 0xFFFF, "BFG Tech(0x19F1)"}, }; /* pci_vid_19F1[] */ -pci_id_t pci_vid_19FF[] = { +static pci_id_t const pci_vid_19FF[] = { {0x19FF, 0xFFFF, 0xFFFF, 0xFFFF, "Eclipse Electronic Systems, Inc.(0x19FF)"}, }; /* pci_vid_19FF[] */ -pci_id_t pci_vid_1A03[] = { +static pci_id_t const pci_vid_1A03[] = { {0x1A03, 0xFFFF, 0xFFFF, 0xFFFF, "ASPEED Technology, Inc.(0x1A03)"}, {0x1A03, 0x1150, 0xFFFF, 0xFFFF, "AST1150 PCI-to-PCI Bridge(0x1150)"}, {0x1A03, 0x2000, 0xFFFF, 0xFFFF, "ASPEED Graphics Family(0x2000)"}, @@ -29202,11 +29325,11 @@ pci_id_t pci_vid_1A03[] = { {0x1A03, 0x2000, 0x15D9, 0x1B95, "H12SSL-i(0x15D9-0x1B95)"}, }; /* pci_vid_1A03[] */ -pci_id_t pci_vid_1A05[] = { +static pci_id_t const pci_vid_1A05[] = { {0x1A05, 0xFFFF, 0xFFFF, 0xFFFF, "deltaww(0x1A05)"}, }; /* pci_vid_1A05[] */ -pci_id_t pci_vid_1A07[] = { +static pci_id_t const pci_vid_1A07[] = { {0x1A07, 0xFFFF, 0xFFFF, 0xFFFF, "Kvaser AB(0x1A07)"}, {0x1A07, 0x0006, 0xFFFF, 0xFFFF, "CAN interface PC104+ HS/HS(0x0006)"}, {0x1A07, 0x0007, 0xFFFF, 0xFFFF, "CAN interface PCIcanx II HS or HS/HS(0x0007)"}, @@ -29214,16 +29337,16 @@ pci_id_t pci_vid_1A07[] = { {0x1A07, 0x0009, 0xFFFF, 0xFFFF, "CAN interface PCI104 HS/HS(0x0009)"}, }; /* pci_vid_1A07[] */ -pci_id_t pci_vid_1A08[] = { +static pci_id_t const pci_vid_1A08[] = { {0x1A08, 0xFFFF, 0xFFFF, 0xFFFF, "Sierra semiconductor(0x1A08)"}, {0x1A08, 0x0000, 0xFFFF, 0xFFFF, "SC15064(0x0000)"}, }; /* pci_vid_1A08[] */ -pci_id_t pci_vid_1A0D[] = { +static pci_id_t const pci_vid_1A0D[] = { {0x1A0D, 0xFFFF, 0xFFFF, 0xFFFF, "SEAKR Engineering(0x1A0D)"}, }; /* pci_vid_1A0D[] */ -pci_id_t pci_vid_1A0E[] = { +static pci_id_t const pci_vid_1A0E[] = { {0x1A0E, 0xFFFF, 0xFFFF, 0xFFFF, "DekTec Digital Video B.V.(0x1A0E)"}, {0x1A0E, 0x083F, 0xFFFF, 0xFFFF, "DTA-2111 VHF/UHF Modulator(0x083F)"}, {0x1A0E, 0x0860, 0xFFFF, 0xFFFF, "DTA-2144(B) Quad ASI/SDI in+out(0x0860)"}, @@ -29236,25 +29359,25 @@ pci_id_t pci_vid_1A0E[] = { {0x1A0E, 0xB87E, 0xFFFF, 0xFFFF, "DTA-2174B Quad 3G-SDI/ASI ports (1x12G) with genlock(0xB87E)"}, }; /* pci_vid_1A0E[] */ -pci_id_t pci_vid_1A17[] = { +static pci_id_t const pci_vid_1A17[] = { {0x1A17, 0xFFFF, 0xFFFF, 0xFFFF, "Force10 Networks, Inc.(0x1A17)"}, {0x1A17, 0x8002, 0xFFFF, 0xFFFF, "PB-10GE-2P 10GbE Security Card(0x8002)"}, }; /* pci_vid_1A17[] */ -pci_id_t pci_vid_1A1D[] = { +static pci_id_t const pci_vid_1A1D[] = { {0x1A1D, 0xFFFF, 0xFFFF, 0xFFFF, "GFaI e.V.(0x1A1D)"}, {0x1A1D, 0x1A17, 0xFFFF, 0xFFFF, "Meta Networks MTP-1G IDPS NIC(0x1A17)"}, }; /* pci_vid_1A1D[] */ -pci_id_t pci_vid_1A1E[] = { +static pci_id_t const pci_vid_1A1E[] = { {0x1A1E, 0xFFFF, 0xFFFF, 0xFFFF, "3Leaf Systems, Inc.(0x1A1E)"}, }; /* pci_vid_1A1E[] */ -pci_id_t pci_vid_1A22[] = { +static pci_id_t const pci_vid_1A22[] = { {0x1A22, 0xFFFF, 0xFFFF, 0xFFFF, "Ambric Inc.(0x1A22)"}, }; /* pci_vid_1A22[] */ -pci_id_t pci_vid_1A29[] = { +static pci_id_t const pci_vid_1A29[] = { {0x1A29, 0xFFFF, 0xFFFF, 0xFFFF, "Fortinet, Inc.(0x1A29)"}, {0x1A29, 0x4338, 0xFFFF, 0xFFFF, "CP8 Content Processor ASIC(0x4338)"}, {0x1A29, 0x43A0, 0xFFFF, 0xFFFF, "CP9 Content Processor ASIC(0x43A0)"}, @@ -29262,7 +29385,7 @@ pci_id_t pci_vid_1A29[] = { {0x1A29, 0x4E37, 0xFFFF, 0xFFFF, "NP7 Network Processor(0x4E37)"}, }; /* pci_vid_1A29[] */ -pci_id_t pci_vid_1A2B[] = { +static pci_id_t const pci_vid_1A2B[] = { {0x1A2B, 0xFFFF, 0xFFFF, 0xFFFF, "Ascom AG(0x1A2B)"}, {0x1A2B, 0x0000, 0xFFFF, 0xFFFF, "GESP v1.2(0x0000)"}, {0x1A2B, 0x0001, 0xFFFF, 0xFFFF, "GESP v1.3(0x0001)"}, @@ -29272,23 +29395,23 @@ pci_id_t pci_vid_1A2B[] = { {0x1A2B, 0x000E, 0xFFFF, 0xFFFF, "DSLP-104 v1.1(0x000E)"}, }; /* pci_vid_1A2B[] */ -pci_id_t pci_vid_1A30[] = { +static pci_id_t const pci_vid_1A30[] = { {0x1A30, 0xFFFF, 0xFFFF, 0xFFFF, "Lantiq(0x1A30)"}, {0x1A30, 0x0680, 0xFFFF, 0xFFFF, "MtW8171 [Hyperion II](0x0680)"}, {0x1A30, 0x0700, 0xFFFF, 0xFFFF, "Wave300 PSB8224 [Hyperion III](0x0700)"}, {0x1A30, 0x0710, 0xFFFF, 0xFFFF, "Wave300 PSB8231 [Hyperion III](0x0710)"}, }; /* pci_vid_1A30[] */ -pci_id_t pci_vid_1A32[] = { +static pci_id_t const pci_vid_1A32[] = { {0x1A32, 0xFFFF, 0xFFFF, 0xFFFF, "Quanta Microsystems, Inc(0x1A32)"}, }; /* pci_vid_1A32[] */ -pci_id_t pci_vid_1A3B[] = { +static pci_id_t const pci_vid_1A3B[] = { {0x1A3B, 0xFFFF, 0xFFFF, 0xFFFF, "AzureWave(0x1A3B)"}, {0x1A3B, 0x1112, 0xFFFF, 0xFFFF, "AR9285 Wireless Network Adapter (PCI-Express)(0x1112)"}, }; /* pci_vid_1A3B[] */ -pci_id_t pci_vid_1A41[] = { +static pci_id_t const pci_vid_1A41[] = { {0x1A41, 0xFFFF, 0xFFFF, 0xFFFF, "Tilera Corp.(0x1A41)"}, {0x1A41, 0x0001, 0xFFFF, 0xFFFF, "TILE64 processor(0x0001)"}, {0x1A41, 0x0002, 0xFFFF, 0xFFFF, "TILEPro processor(0x0002)"}, @@ -29297,7 +29420,7 @@ pci_id_t pci_vid_1A41[] = { {0x1A41, 0x2000, 0xFFFF, 0xFFFF, "TILE-Gx PCI Express Root Port(0x2000)"}, }; /* pci_vid_1A41[] */ -pci_id_t pci_vid_1A4A[] = { +static pci_id_t const pci_vid_1A4A[] = { {0x1A4A, 0xFFFF, 0xFFFF, 0xFFFF, "SLAC National Accelerator Lab TID-AIR(0x1A4A)"}, {0x1A4A, 0x1000, 0xFFFF, 0xFFFF, "MCOR Power Supply Controller(0x1000)"}, {0x1A4A, 0x1010, 0xFFFF, 0xFFFF, "AMC EVR - Stockholm Timing Board(0x1010)"}, @@ -29314,11 +29437,11 @@ pci_id_t pci_vid_1A4A[] = { {0x1A4A, 0x3001, 0xFFFF, 0xFFFF, "COB DTM V2(0x3001)"}, }; /* pci_vid_1A4A[] */ -pci_id_t pci_vid_1A51[] = { +static pci_id_t const pci_vid_1A51[] = { {0x1A51, 0xFFFF, 0xFFFF, 0xFFFF, "Hectronic AB(0x1A51)"}, }; /* pci_vid_1A51[] */ -pci_id_t pci_vid_1A55[] = { +static pci_id_t const pci_vid_1A55[] = { {0x1A55, 0xFFFF, 0xFFFF, 0xFFFF, "Rohde & Schwarz DVS GmbH(0x1A55)"}, {0x1A55, 0x0010, 0xFFFF, 0xFFFF, "SDStationOEM(0x0010)"}, {0x1A55, 0x0011, 0xFFFF, 0xFFFF, "SDStationOEM II(0x0011)"}, @@ -29338,52 +29461,52 @@ pci_id_t pci_vid_1A55[] = { {0x1A55, 0x0090, 0xFFFF, 0xFFFF, "CinePlay(0x0090)"}, }; /* pci_vid_1A55[] */ -pci_id_t pci_vid_1A56[] = { +static pci_id_t const pci_vid_1A56[] = { {0x1A56, 0xFFFF, 0xFFFF, 0xFFFF, "Rivet Networks(0x1A56)"}, }; /* pci_vid_1A56[] */ -pci_id_t pci_vid_1A57[] = { +static pci_id_t const pci_vid_1A57[] = { {0x1A57, 0xFFFF, 0xFFFF, 0xFFFF, "Highly Reliable Systems(0x1A57)"}, }; /* pci_vid_1A57[] */ -pci_id_t pci_vid_1A58[] = { +static pci_id_t const pci_vid_1A58[] = { {0x1A58, 0xFFFF, 0xFFFF, 0xFFFF, "Razer USA Ltd.(0x1A58)"}, }; /* pci_vid_1A58[] */ -pci_id_t pci_vid_1A5D[] = { +static pci_id_t const pci_vid_1A5D[] = { {0x1A5D, 0xFFFF, 0xFFFF, 0xFFFF, "Celoxica(0x1A5D)"}, }; /* pci_vid_1A5D[] */ -pci_id_t pci_vid_1A5E[] = { +static pci_id_t const pci_vid_1A5E[] = { {0x1A5E, 0xFFFF, 0xFFFF, 0xFFFF, "Aprius Inc.(0x1A5E)"}, }; /* pci_vid_1A5E[] */ -pci_id_t pci_vid_1A5F[] = { +static pci_id_t const pci_vid_1A5F[] = { {0x1A5F, 0xFFFF, 0xFFFF, 0xFFFF, "System TALKS Inc.(0x1A5F)"}, }; /* pci_vid_1A5F[] */ -pci_id_t pci_vid_1A68[] = { +static pci_id_t const pci_vid_1A68[] = { {0x1A68, 0xFFFF, 0xFFFF, 0xFFFF, "VirtenSys Limited(0x1A68)"}, }; /* pci_vid_1A68[] */ -pci_id_t pci_vid_1A71[] = { +static pci_id_t const pci_vid_1A71[] = { {0x1A71, 0xFFFF, 0xFFFF, 0xFFFF, "XenSource, Inc.(0x1A71)"}, }; /* pci_vid_1A71[] */ -pci_id_t pci_vid_1A73[] = { +static pci_id_t const pci_vid_1A73[] = { {0x1A73, 0xFFFF, 0xFFFF, 0xFFFF, "Violin Memory, Inc(0x1A73)"}, {0x1A73, 0x0001, 0xFFFF, 0xFFFF, "Mozart [Memory Appliance 1010](0x0001)"}, }; /* pci_vid_1A73[] */ -pci_id_t pci_vid_1A76[] = { +static pci_id_t const pci_vid_1A76[] = { {0x1A76, 0xFFFF, 0xFFFF, 0xFFFF, "Wavesat(0x1A76)"}, }; /* pci_vid_1A76[] */ -pci_id_t pci_vid_1A77[] = { +static pci_id_t const pci_vid_1A77[] = { {0x1A77, 0xFFFF, 0xFFFF, 0xFFFF, "Lightfleet Corporation(0x1A77)"}, }; /* pci_vid_1A77[] */ -pci_id_t pci_vid_1A78[] = { +static pci_id_t const pci_vid_1A78[] = { {0x1A78, 0xFFFF, 0xFFFF, 0xFFFF, "Virident Systems Inc.(0x1A78)"}, {0x1A78, 0x0031, 0xFFFF, 0xFFFF, "FlashMAX Drive(0x0031)"}, {0x1A78, 0x0031, 0x1A78, 0x0034, "FlashMAX PCIe SSD [rev 3](0x1A78-0x0034)"}, @@ -29396,37 +29519,37 @@ pci_id_t pci_vid_1A78[] = { {0x1A78, 0x0050, 0xFFFF, 0xFFFF, "FlashMAX III(0x0050)"}, }; /* pci_vid_1A78[] */ -pci_id_t pci_vid_1A84[] = { +static pci_id_t const pci_vid_1A84[] = { {0x1A84, 0xFFFF, 0xFFFF, 0xFFFF, "Commex Technologies(0x1A84)"}, {0x1A84, 0x0001, 0xFFFF, 0xFFFF, "Vulcan SP HT6210 10-Gigabit Ethernet (rev 02)(0x0001)"}, }; /* pci_vid_1A84[] */ -pci_id_t pci_vid_1A88[] = { +static pci_id_t const pci_vid_1A88[] = { {0x1A88, 0xFFFF, 0xFFFF, 0xFFFF, "Duagon AG(0x1A88)"}, {0x1A88, 0x4D45, 0xFFFF, 0xFFFF, "Multifunction IP core(0x4D45)"}, }; /* pci_vid_1A88[] */ -pci_id_t pci_vid_1A8A[] = { +static pci_id_t const pci_vid_1A8A[] = { {0x1A8A, 0xFFFF, 0xFFFF, 0xFFFF, "StarBridge, Inc.(0x1A8A)"}, }; /* pci_vid_1A8A[] */ -pci_id_t pci_vid_1A8C[] = { +static pci_id_t const pci_vid_1A8C[] = { {0x1A8C, 0xFFFF, 0xFFFF, 0xFFFF, "Verigy Pte. Ltd.(0x1A8C)"}, {0x1A8C, 0x1100, 0xFFFF, 0xFFFF, "E8001-66443 PCI Express CIC(0x1100)"}, }; /* pci_vid_1A8C[] */ -pci_id_t pci_vid_1A8E[] = { +static pci_id_t const pci_vid_1A8E[] = { {0x1A8E, 0xFFFF, 0xFFFF, 0xFFFF, "DRS Technologies(0x1A8E)"}, {0x1A8E, 0x2090, 0xFFFF, 0xFFFF, "Model 2090 PCI Express(0x2090)"}, }; /* pci_vid_1A8E[] */ -pci_id_t pci_vid_1AA8[] = { +static pci_id_t const pci_vid_1AA8[] = { {0x1AA8, 0xFFFF, 0xFFFF, 0xFFFF, "Ciprico, Inc.(0x1AA8)"}, {0x1AA8, 0x0009, 0xFFFF, 0xFFFF, "RAIDCore Controller(0x0009)"}, {0x1AA8, 0x000A, 0xFFFF, 0xFFFF, "RAIDCore Controller(0x000A)"}, }; /* pci_vid_1AA8[] */ -pci_id_t pci_vid_1AA9[] = { +static pci_id_t const pci_vid_1AA9[] = { {0x1AA9, 0xFFFF, 0xFFFF, 0xFFFF, "Schweitzer Engineering Laboratories(0x1AA9)"}, {0x1AA9, 0x000D, 0xFFFF, 0xFFFF, "SEL-3390S8 Serial Adapter(0x000D)"}, {0x1AA9, 0x000E, 0xFFFF, 0xFFFF, "SEL-3390E4 Ethernet Adapter(0x000E)"}, @@ -29438,55 +29561,55 @@ pci_id_t pci_vid_1AA9[] = { {0x1AA9, 0x001C, 0xFFFF, 0xFFFF, "SEL-3390E4 Ethernet Adapter(0x001C)"}, }; /* pci_vid_1AA9[] */ -pci_id_t pci_vid_1AAB[] = { +static pci_id_t const pci_vid_1AAB[] = { {0x1AAB, 0xFFFF, 0xFFFF, 0xFFFF, "Silver Creations AG(0x1AAB)"}, {0x1AAB, 0x7750, 0xFFFF, 0xFFFF, "Sceye 10L(0x7750)"}, }; /* pci_vid_1AAB[] */ -pci_id_t pci_vid_1AAE[] = { +static pci_id_t const pci_vid_1AAE[] = { {0x1AAE, 0xFFFF, 0xFFFF, 0xFFFF, "Global Velocity, Inc.(0x1AAE)"}, }; /* pci_vid_1AAE[] */ -pci_id_t pci_vid_1AB4[] = { +static pci_id_t const pci_vid_1AB4[] = { {0x1AB4, 0xFFFF, 0xFFFF, 0xFFFF, "Distributed Management Task Force, Inc. (DMTF)(0x1AB4)"}, }; /* pci_vid_1AB4[] */ -pci_id_t pci_vid_1AB6[] = { +static pci_id_t const pci_vid_1AB6[] = { {0x1AB6, 0xFFFF, 0xFFFF, 0xFFFF, "CalDigit, Inc.(0x1AB6)"}, {0x1AB6, 0x6201, 0xFFFF, 0xFFFF, "RAID Card(0x6201)"}, }; /* pci_vid_1AB6[] */ -pci_id_t pci_vid_1AB8[] = { +static pci_id_t const pci_vid_1AB8[] = { {0x1AB8, 0xFFFF, 0xFFFF, 0xFFFF, "Parallels, Inc.(0x1AB8)"}, {0x1AB8, 0x4000, 0xFFFF, 0xFFFF, "Virtual Machine Communication Interface(0x4000)"}, {0x1AB8, 0x4005, 0xFFFF, 0xFFFF, "Accelerated Virtual Video Adapter(0x4005)"}, {0x1AB8, 0x4006, 0xFFFF, 0xFFFF, "Memory Ballooning Controller(0x4006)"}, }; /* pci_vid_1AB8[] */ -pci_id_t pci_vid_1AB9[] = { +static pci_id_t const pci_vid_1AB9[] = { {0x1AB9, 0xFFFF, 0xFFFF, 0xFFFF, "Espia Srl(0x1AB9)"}, }; /* pci_vid_1AB9[] */ -pci_id_t pci_vid_1AC1[] = { +static pci_id_t const pci_vid_1AC1[] = { {0x1AC1, 0xFFFF, 0xFFFF, 0xFFFF, "Global Unichip Corp.(0x1AC1)"}, {0x1AC1, 0x089A, 0xFFFF, 0xFFFF, "Coral Edge TPU(0x089A)"}, }; /* pci_vid_1AC1[] */ -pci_id_t pci_vid_1AC8[] = { +static pci_id_t const pci_vid_1AC8[] = { {0x1AC8, 0xFFFF, 0xFFFF, 0xFFFF, "Aeroflex Gaisler(0x1AC8)"}, }; /* pci_vid_1AC8[] */ -pci_id_t pci_vid_1ACC[] = { +static pci_id_t const pci_vid_1ACC[] = { {0x1ACC, 0xFFFF, 0xFFFF, 0xFFFF, "Point of View BV(0x1ACC)"}, }; /* pci_vid_1ACC[] */ -pci_id_t pci_vid_1AD7[] = { +static pci_id_t const pci_vid_1AD7[] = { {0x1AD7, 0xFFFF, 0xFFFF, 0xFFFF, "Spectracom Corporation(0x1AD7)"}, {0x1AD7, 0x8000, 0xFFFF, 0xFFFF, "TSync-PCIe Time Code Processor(0x8000)"}, {0x1AD7, 0x9100, 0xFFFF, 0xFFFF, "TPRO-PCI-66U Timecode Reader/Generator(0x9100)"}, }; /* pci_vid_1AD7[] */ -pci_id_t pci_vid_1ADE[] = { +static pci_id_t const pci_vid_1ADE[] = { {0x1ADE, 0xFFFF, 0xFFFF, 0xFFFF, "Spin Master Ltd.(0x1ADE)"}, {0x1ADE, 0x1501, 0xFFFF, 0xFFFF, "Swipetech barcode scanner(0x1501)"}, {0x1ADE, 0x3038, 0xFFFF, 0xFFFF, "PCIe Video Bridge(0x3038)"}, @@ -29494,23 +29617,23 @@ pci_id_t pci_vid_1ADE[] = { {0x1ADE, 0x3038, 0x4254, 0x0552, "S952 v3(0x4254-0x0552)"}, }; /* pci_vid_1ADE[] */ -pci_id_t pci_vid_1AE0[] = { +static pci_id_t const pci_vid_1AE0[] = { {0x1AE0, 0xFFFF, 0xFFFF, 0xFFFF, "Google, Inc.(0x1AE0)"}, {0x1AE0, 0x001F, 0xFFFF, 0xFFFF, "NVMe device(0x001F)"}, {0x1AE0, 0x0042, 0xFFFF, 0xFFFF, "Compute Engine Virtual Ethernet [gVNIC](0x0042)"}, {0x1AE0, 0xABCD, 0xFFFF, 0xFFFF, "Airbrush Combined Paintbox IPU/Oscar Edge TPU [Pixel Neural Core](0xABCD)"}, }; /* pci_vid_1AE0[] */ -pci_id_t pci_vid_1AE3[] = { +static pci_id_t const pci_vid_1AE3[] = { {0x1AE3, 0xFFFF, 0xFFFF, 0xFFFF, "SANBlaze Technology, Inc.(0x1AE3)"}, }; /* pci_vid_1AE3[] */ -pci_id_t pci_vid_1AE7[] = { +static pci_id_t const pci_vid_1AE7[] = { {0x1AE7, 0xFFFF, 0xFFFF, 0xFFFF, "First Wise Media GmbH(0x1AE7)"}, {0x1AE7, 0x0520, 0xFFFF, 0xFFFF, "HFC-S PCI A [X-TENSIONS XC-520](0x0520)"}, }; /* pci_vid_1AE7[] */ -pci_id_t pci_vid_1AE8[] = { +static pci_id_t const pci_vid_1AE8[] = { {0x1AE8, 0xFFFF, 0xFFFF, 0xFFFF, "Basler AG(0x1AE8)"}, {0x1AE8, 0x0751, 0xFFFF, 0xFFFF, "mE5 marathon VCL(0x0751)"}, {0x1AE8, 0x0752, 0xFFFF, 0xFFFF, "mE5 marathon AF2(0x0752)"}, @@ -29544,7 +29667,7 @@ pci_id_t pci_vid_1AE8[] = { {0x1AE8, 0x0E44, 0xFFFF, 0xFFFF, "microEnable IV VQ4-GE(0x0E44)"}, }; /* pci_vid_1AE8[] */ -pci_id_t pci_vid_1AE9[] = { +static pci_id_t const pci_vid_1AE9[] = { {0x1AE9, 0xFFFF, 0xFFFF, 0xFFFF, "Wilocity Ltd.(0x1AE9)"}, {0x1AE9, 0x0101, 0xFFFF, 0xFFFF, "Wil6200 PCI Express Upstream Port(0x0101)"}, {0x1AE9, 0x0200, 0xFFFF, 0xFFFF, "Wil6200 PCI Express Port(0x0200)"}, @@ -29554,18 +29677,18 @@ pci_id_t pci_vid_1AE9[] = { {0x1AE9, 0x0310, 0xFFFF, 0xFFFF, "Wil6200 802.11ad Wireless Network Adapter(0x0310)"}, }; /* pci_vid_1AE9[] */ -pci_id_t pci_vid_1AEA[] = { +static pci_id_t const pci_vid_1AEA[] = { {0x1AEA, 0xFFFF, 0xFFFF, 0xFFFF, "Alcor Micro(0x1AEA)"}, {0x1AEA, 0x6601, 0xFFFF, 0xFFFF, "AU6601 PCI-E Flash card reader controller(0x6601)"}, {0x1AEA, 0x6621, 0xFFFF, 0xFFFF, "AU6621 PCI-E Flash card reader controller(0x6621)"}, {0x1AEA, 0x6625, 0xFFFF, 0xFFFF, "AU6625 PCI-E Flash card reader controller(0x6625)"}, }; /* pci_vid_1AEA[] */ -pci_id_t pci_vid_1AEC[] = { +static pci_id_t const pci_vid_1AEC[] = { {0x1AEC, 0xFFFF, 0xFFFF, 0xFFFF, "Wolfson Microelectronics(0x1AEC)"}, }; /* pci_vid_1AEC[] */ -pci_id_t pci_vid_1AED[] = { +static pci_id_t const pci_vid_1AED[] = { {0x1AED, 0xFFFF, 0xFFFF, 0xFFFF, "SanDisk(0x1AED)"}, {0x1AED, 0x1003, 0xFFFF, 0xFFFF, "ioDimm3 (v1.2)(0x1003)"}, {0x1AED, 0x1005, 0xFFFF, 0xFFFF, "ioDimm3(0x1005)"}, @@ -29585,11 +29708,11 @@ pci_id_t pci_vid_1AED[] = { {0x1AED, 0x3003, 0xFFFF, 0xFFFF, "ioMemory Mezzanine(0x3003)"}, }; /* pci_vid_1AED[] */ -pci_id_t pci_vid_1AEE[] = { +static pci_id_t const pci_vid_1AEE[] = { {0x1AEE, 0xFFFF, 0xFFFF, 0xFFFF, "Caustic Graphics Inc.(0x1AEE)"}, }; /* pci_vid_1AEE[] */ -pci_id_t pci_vid_1AF4[] = { +static pci_id_t const pci_vid_1AF4[] = { {0x1AF4, 0xFFFF, 0xFFFF, 0xFFFF, "Red Hat, Inc.(0x1AF4)"}, {0x1AF4, 0x1000, 0xFFFF, 0xFFFF, "Virtio network device(0x1000)"}, {0x1AF4, 0x1000, 0x01DE, 0xFFFB, "Propolis Virtio network device(0x01DE-0xFFFB)"}, @@ -29615,76 +29738,92 @@ pci_id_t pci_vid_1AF4[] = { {0x1AF4, 0x1110, 0x1AF4, 0x1100, "QEMU Virtual Machine(0x1AF4-0x1100)"}, }; /* pci_vid_1AF4[] */ -pci_id_t pci_vid_1AF5[] = { +static pci_id_t const pci_vid_1AF5[] = { {0x1AF5, 0xFFFF, 0xFFFF, 0xFFFF, "Netezza Corp.(0x1AF5)"}, }; /* pci_vid_1AF5[] */ -pci_id_t pci_vid_1AFA[] = { +static pci_id_t const pci_vid_1AFA[] = { {0x1AFA, 0xFFFF, 0xFFFF, 0xFFFF, "J & W Electronics Co., Ltd.(0x1AFA)"}, }; /* pci_vid_1AFA[] */ -pci_id_t pci_vid_1B00[] = { +static pci_id_t const pci_vid_1B00[] = { {0x1B00, 0xFFFF, 0xFFFF, 0xFFFF, "Montage Technology Co., Ltd.(0x1B00)"}, +{0x1B00, 0xC001, 0xFFFF, 0xFFFF, "CXL Memory Expander Controller M88MX5891(0xC001)"}, +{0x1B00, 0xC001, 0x1FF9, 0x00A2, "CXL Memory Expander(0x1FF9-0x00A2)"}, +{0x1B00, 0xC001, 0x1FF9, 0x00A4, "CXL Memory Expander(0x1FF9-0x00A4)"}, }; /* pci_vid_1B00[] */ -pci_id_t pci_vid_1B03[] = { +static pci_id_t const pci_vid_1B03[] = { {0x1B03, 0xFFFF, 0xFFFF, 0xFFFF, "Magnum Semiconductor, Inc,(0x1B03)"}, {0x1B03, 0x6100, 0xFFFF, 0xFFFF, "DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder(0x6100)"}, {0x1B03, 0x7000, 0xFFFF, 0xFFFF, "D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder(0x7000)"}, }; /* pci_vid_1B03[] */ -pci_id_t pci_vid_1B08[] = { +static pci_id_t const pci_vid_1B08[] = { {0x1B08, 0xFFFF, 0xFFFF, 0xFFFF, "MSC Technologies GmbH(0x1B08)"}, }; /* pci_vid_1B08[] */ -pci_id_t pci_vid_1B0A[] = { +static pci_id_t const pci_vid_1B0A[] = { {0x1B0A, 0xFFFF, 0xFFFF, 0xFFFF, "Pegatron(0x1B0A)"}, +{0x1B0A, 0x9602, 0xFFFF, 0xFFFF, "RS780/RS880 PCI to PCI bridge (int gfx)(0x9602)"}, }; /* pci_vid_1B0A[] */ -pci_id_t pci_vid_1B13[] = { +static pci_id_t const pci_vid_1B13[] = { {0x1B13, 0xFFFF, 0xFFFF, 0xFFFF, "Jaton Corp(0x1B13)"}, }; /* pci_vid_1B13[] */ -pci_id_t pci_vid_1B1A[] = { +static pci_id_t const pci_vid_1B1A[] = { {0x1B1A, 0xFFFF, 0xFFFF, 0xFFFF, "K&F Computing Research Co.(0x1B1A)"}, {0x1B1A, 0x0E70, 0xFFFF, 0xFFFF, "GRAPE(0x0E70)"}, }; /* pci_vid_1B1A[] */ -pci_id_t pci_vid_1B1C[] = { +static pci_id_t const pci_vid_1B1C[] = { {0x1B1C, 0xFFFF, 0xFFFF, 0xFFFF, "Corsair(0x1B1C)"}, }; /* pci_vid_1B1C[] */ -pci_id_t pci_vid_1B21[] = { +static pci_id_t const pci_vid_1B21[] = { {0x1B21, 0xFFFF, 0xFFFF, 0xFFFF, "ASMedia Technology Inc.(0x1B21)"}, -{0x1B21, 0x0611, 0xFFFF, 0xFFFF, "ASM1061 SATA IDE Controller(0x0611)"}, -{0x1B21, 0x0612, 0xFFFF, 0xFFFF, "ASM1062 Serial ATA Controller(0x0612)"}, +{0x1B21, 0x0611, 0xFFFF, 0xFFFF, "ASM1061 Serial ATA Controller(0x0611)"}, +{0x1B21, 0x0612, 0xFFFF, 0xFFFF, "ASM1061/ASM1062 Serial ATA Controller(0x0612)"}, {0x1B21, 0x0612, 0x1849, 0x0612, "Motherboard(0x1849-0x0612)"}, +{0x1B21, 0x0622, 0xFFFF, 0xFFFF, "ASM106x Serial ATA AHCI Controller(0x0622)"}, +{0x1B21, 0x0624, 0xFFFF, 0xFFFF, "ASM106x SATA/RAID Controller(0x0624)"}, {0x1B21, 0x0625, 0xFFFF, 0xFFFF, "106x SATA/RAID Controller(0x0625)"}, -{0x1B21, 0x1040, 0xFFFF, 0xFFFF, "ASM1040 XHCI Controller(0x1040)"}, +{0x1B21, 0x1040, 0xFFFF, 0xFFFF, "ASM1040 SuperSpeed USB Host Controller(0x1040)"}, +{0x1B21, 0x1041, 0xFFFF, 0xFFFF, "ASM1041 SuperSpeed USB Host Controller(0x1041)"}, {0x1B21, 0x1042, 0xFFFF, 0xFFFF, "ASM1042 SuperSpeed USB Host Controller(0x1042)"}, {0x1B21, 0x1042, 0x1043, 0x1059, "K53SM motherboard(0x1043-0x1059)"}, {0x1B21, 0x1042, 0x1043, 0x8488, "P8B WS Motherboard(0x1043-0x8488)"}, {0x1B21, 0x1042, 0x1849, 0x1042, "Motherboard(0x1849-0x1042)"}, +{0x1B21, 0x1064, 0xFFFF, 0xFFFF, "ASM1064 Serial ATA Controller(0x1064)"}, {0x1B21, 0x1080, 0xFFFF, 0xFFFF, "ASM1083/1085 PCIe to PCI Bridge(0x1080)"}, {0x1B21, 0x1080, 0x1849, 0x1080, "Motherboard(0x1849-0x1080)"}, {0x1B21, 0x1142, 0xFFFF, 0xFFFF, "ASM1042A USB 3.0 Host Controller(0x1142)"}, +{0x1B21, 0x1164, 0xFFFF, 0xFFFF, "ASM1164 Serial ATA AHCI Controller(0x1164)"}, {0x1B21, 0x1166, 0xFFFF, 0xFFFF, "ASM1166 Serial ATA Controller(0x1166)"}, {0x1B21, 0x1182, 0xFFFF, 0xFFFF, "ASM1182e 2-Port PCIe x1 Gen2 Packet Switch(0x1182)"}, {0x1B21, 0x1182, 0x1B21, 0x118F, "ASM1182e 2-Port PCIe x1 Gen2 Packet Switch(0x1B21-0x118F)"}, {0x1B21, 0x1184, 0xFFFF, 0xFFFF, "ASM1184e 4-Port PCIe x1 Gen2 Packet Switch(0x1184)"}, {0x1B21, 0x1184, 0x1849, 0x1184, "ASM1184e 4-Port PCIe x1 Gen2 Packet Switch(0x1849-0x1184)"}, {0x1B21, 0x1187, 0xFFFF, 0xFFFF, "ASM1187e 7-Port PCIe x1 Gen2 Packet Switch(0x1187)"}, +{0x1B21, 0x118F, 0xFFFF, 0xFFFF, "ASM1187e 7-Port PCIe x1 Gen2 Packet Switch(0x118F)"}, {0x1B21, 0x1242, 0xFFFF, 0xFFFF, "ASM1142 USB 3.1 Host Controller(0x1242)"}, {0x1B21, 0x1343, 0xFFFF, 0xFFFF, "ASM1143 USB 3.1 Host Controller(0x1343)"}, +{0x1B21, 0x1806, 0xFFFF, 0xFFFF, "ASM1806 4-Port PCIe x2 Gen2 Packet Switch(0x1806)"}, {0x1B21, 0x1812, 0xFFFF, 0xFFFF, "ASM1812 6-Port PCIe x4 Gen2 Packet Switch(0x1812)"}, +{0x1B21, 0x1824, 0xFFFF, 0xFFFF, "ASM1824 12-Port PCIe x8 Gen2 Packet Switch(0x1824)"}, {0x1B21, 0x2142, 0xFFFF, 0xFFFF, "ASM2142/ASM3142 USB 3.1 Host Controller(0x2142)"}, {0x1B21, 0x2142, 0x1462, 0x7A72, "H270 PC MATE(0x1462-0x7A72)"}, +{0x1B21, 0x2806, 0xFFFF, 0xFFFF, "ASM2806 4-Port PCIe x2 Gen3 Packet Switch(0x2806)"}, +{0x1B21, 0x2812, 0xFFFF, 0xFFFF, "ASM2812 6-Port PCIe x4 Gen3 Packet Switch(0x2812)"}, {0x1B21, 0x2824, 0xFFFF, 0xFFFF, "ASM2824 PCIe Gen3 Packet Switch(0x2824)"}, {0x1B21, 0x3042, 0xFFFF, 0xFFFF, "ASM3042 USB 3.2 Gen 1 xHCI Controller(0x3042)"}, +{0x1B21, 0x3142, 0xFFFF, 0xFFFF, "ASM3142 USB 3.2 Gen 2x1 xHCI Controller(0x3142)"}, +{0x1B21, 0x3241, 0xFFFF, 0xFFFF, "ASM3241 USB 3.2 Gen 2 Host Controller(0x3241)"}, {0x1B21, 0x3242, 0xFFFF, 0xFFFF, "ASM3242 USB 3.2 Host Controller(0x3242)"}, }; /* pci_vid_1B21[] */ -pci_id_t pci_vid_1B26[] = { +static pci_id_t const pci_vid_1B26[] = { {0x1B26, 0xFFFF, 0xFFFF, 0xFFFF, "Netcope Technologies, a.s.(0x1B26)"}, {0x1B26, 0xC132, 0xFFFF, 0xFFFF, "COMBO-LXT155(0xC132)"}, {0x1B26, 0xC1C0, 0xFFFF, 0xFFFF, "NFB-100G1-e0(0xC1C0)"}, @@ -29698,11 +29837,11 @@ pci_id_t pci_vid_1B26[] = { {0x1B26, 0xCB80, 0xFFFF, 0xFFFF, "NFB-40G2(0xCB80)"}, }; /* pci_vid_1B26[] */ -pci_id_t pci_vid_1B2C[] = { +static pci_id_t const pci_vid_1B2C[] = { {0x1B2C, 0xFFFF, 0xFFFF, 0xFFFF, "Opal-RT Technologies Inc.(0x1B2C)"}, }; /* pci_vid_1B2C[] */ -pci_id_t pci_vid_1B36[] = { +static pci_id_t const pci_vid_1B36[] = { {0x1B36, 0xFFFF, 0xFFFF, 0xFFFF, "Red Hat, Inc.(0x1B36)"}, {0x1B36, 0x0001, 0xFFFF, 0xFFFF, "QEMU PCI-PCI bridge(0x0001)"}, {0x1B36, 0x0002, 0xFFFF, 0xFFFF, "QEMU PCI 16550A Adapter(0x0002)"}, @@ -29728,7 +29867,7 @@ pci_id_t pci_vid_1B36[] = { {0x1B36, 0x0100, 0x1AF4, 0x1100, "QEMU Virtual Machine(0x1AF4-0x1100)"}, }; /* pci_vid_1B36[] */ -pci_id_t pci_vid_1B37[] = { +static pci_id_t const pci_vid_1B37[] = { {0x1B37, 0xFFFF, 0xFFFF, 0xFFFF, "Signal Processing Devices Sweden AB(0x1B37)"}, {0x1B37, 0x0001, 0xFFFF, 0xFFFF, "ADQ214(0x0001)"}, {0x1B37, 0x0003, 0xFFFF, 0xFFFF, "ADQ114(0x0003)"}, @@ -29749,34 +29888,34 @@ pci_id_t pci_vid_1B37[] = { {0x1B37, 0x2019, 0xFFFF, 0xFFFF, "S6000(0x2019)"}, }; /* pci_vid_1B37[] */ -pci_id_t pci_vid_1B39[] = { +static pci_id_t const pci_vid_1B39[] = { {0x1B39, 0xFFFF, 0xFFFF, 0xFFFF, "sTec, Inc.(0x1B39)"}, {0x1B39, 0x0001, 0xFFFF, 0xFFFF, "S1120 PCIe Accelerator SSD(0x0001)"}, }; /* pci_vid_1B39[] */ -pci_id_t pci_vid_1B3A[] = { +static pci_id_t const pci_vid_1B3A[] = { {0x1B3A, 0xFFFF, 0xFFFF, 0xFFFF, "Westar Display Technologies(0x1B3A)"}, {0x1B3A, 0x7589, 0xFFFF, 0xFFFF, "HRED J2000 - JPEG 2000 Video Codec Device(0x7589)"}, }; /* pci_vid_1B3A[] */ -pci_id_t pci_vid_1B3E[] = { +static pci_id_t const pci_vid_1B3E[] = { {0x1B3E, 0xFFFF, 0xFFFF, 0xFFFF, "Teradata Corp.(0x1B3E)"}, {0x1B3E, 0x1FA8, 0xFFFF, 0xFFFF, "BYNET BIC2SE/X(0x1FA8)"}, {0x1B3E, 0x1FA8, 0x1B3E, 0x00A3, "BYNET BIC2SX(0x1B3E-0x00A3)"}, {0x1B3E, 0x1FA8, 0x1B3E, 0x00C3, "BYNET BIC2SE(0x1B3E-0x00C3)"}, }; /* pci_vid_1B3E[] */ -pci_id_t pci_vid_1B40[] = { +static pci_id_t const pci_vid_1B40[] = { {0x1B40, 0xFFFF, 0xFFFF, 0xFFFF, "Schooner Information Technology, Inc.(0x1B40)"}, }; /* pci_vid_1B40[] */ -pci_id_t pci_vid_1B47[] = { +static pci_id_t const pci_vid_1B47[] = { {0x1B47, 0xFFFF, 0xFFFF, 0xFFFF, "Numascale AS(0x1B47)"}, {0x1B47, 0x0601, 0xFFFF, 0xFFFF, "NumaChip N601(0x0601)"}, {0x1B47, 0x0602, 0xFFFF, 0xFFFF, "NumaChip N602(0x0602)"}, }; /* pci_vid_1B47[] */ -pci_id_t pci_vid_1B4B[] = { +static pci_id_t const pci_vid_1B4B[] = { {0x1B4B, 0xFFFF, 0xFFFF, 0xFFFF, "Marvell Technology Group Ltd.(0x1B4B)"}, {0x1B4B, 0x0100, 0xFFFF, 0xFFFF, "88F3700 [Armada 3700 Family] ARM SoC(0x0100)"}, {0x1B4B, 0x0640, 0xFFFF, 0xFFFF, "88SE9128 SATA III 6Gb/s RAID Controller(0x0640)"}, @@ -29830,11 +29969,11 @@ pci_id_t pci_vid_1B4B[] = { {0x1B4B, 0x9485, 0xFFFF, 0xFFFF, "88SE9485 SAS/SATA 6Gb/s controller(0x9485)"}, }; /* pci_vid_1B4B[] */ -pci_id_t pci_vid_1B4C[] = { +static pci_id_t const pci_vid_1B4C[] = { {0x1B4C, 0xFFFF, 0xFFFF, 0xFFFF, "GALAX(0x1B4C)"}, }; /* pci_vid_1B4C[] */ -pci_id_t pci_vid_1B55[] = { +static pci_id_t const pci_vid_1B55[] = { {0x1B55, 0xFFFF, 0xFFFF, 0xFFFF, "NetUP Inc.(0x1B55)"}, {0x1B55, 0x18F6, 0xFFFF, 0xFFFF, "Dual DVB Universal CI card(0x18F6)"}, {0x1B55, 0x18F7, 0xFFFF, 0xFFFF, "Dual DVB Universal CI card rev 1.4(0x18F7)"}, @@ -29844,12 +29983,12 @@ pci_id_t pci_vid_1B55[] = { {0x1B55, 0xF1C4, 0xFFFF, 0xFFFF, "Dual ASI-RX/TX-CI card(0xF1C4)"}, }; /* pci_vid_1B55[] */ -pci_id_t pci_vid_1B66[] = { +static pci_id_t const pci_vid_1B66[] = { {0x1B66, 0xFFFF, 0xFFFF, 0xFFFF, "DELTACAST(0x1B66)"}, {0x1B66, 0x0007, 0xFFFF, 0xFFFF, "DELTA-3G-elp-d(0x0007)"}, }; /* pci_vid_1B66[] */ -pci_id_t pci_vid_1B6F[] = { +static pci_id_t const pci_vid_1B6F[] = { {0x1B6F, 0xFFFF, 0xFFFF, 0xFFFF, "Etron Technology, Inc.(0x1B6F)"}, {0x1B6F, 0x7023, 0xFFFF, 0xFFFF, "EJ168 USB 3.0 Host Controller(0x7023)"}, {0x1B6F, 0x7023, 0x1458, 0x5007, "GA-880GMA-USB3(0x1458-0x5007)"}, @@ -29857,7 +29996,7 @@ pci_id_t pci_vid_1B6F[] = { {0x1B6F, 0x7052, 0x1849, 0x7052, "QC5000-ITX/PH(0x1849-0x7052)"}, }; /* pci_vid_1B6F[] */ -pci_id_t pci_vid_1B73[] = { +static pci_id_t const pci_vid_1B73[] = { {0x1B73, 0xFFFF, 0xFFFF, 0xFFFF, "Fresco Logic(0x1B73)"}, {0x1B73, 0x1000, 0xFFFF, 0xFFFF, "FL1000G USB 3.0 Host Controller(0x1000)"}, {0x1B73, 0x1000, 0x1D5C, 0x1000, "Anker USB 3.0 Express Card(0x1D5C-0x1000)"}, @@ -29866,7 +30005,7 @@ pci_id_t pci_vid_1B73[] = { {0x1B73, 0x1100, 0x16B8, 0x6E31, "Allegro Pro USB 3.0 PCIe(0x16B8-0x6E31)"}, }; /* pci_vid_1B73[] */ -pci_id_t pci_vid_1B74[] = { +static pci_id_t const pci_vid_1B74[] = { {0x1B74, 0xFFFF, 0xFFFF, 0xFFFF, "OpenVox Communication Co. Ltd.(0x1B74)"}, {0x1B74, 0x0115, 0xFFFF, 0xFFFF, "D115P/D115E Single-port E1/T1 card(0x0115)"}, {0x1B74, 0xD130, 0xFFFF, 0xFFFF, "D130P/D130E Single-port E1/T1 card (3rd GEN)(0xD130)"}, @@ -29876,11 +30015,11 @@ pci_id_t pci_vid_1B74[] = { {0x1B74, 0xD430, 0xFFFF, 0xFFFF, "D410/430 Quad-port E1/T1 card(0xD430)"}, }; /* pci_vid_1B74[] */ -pci_id_t pci_vid_1B79[] = { +static pci_id_t const pci_vid_1B79[] = { {0x1B79, 0xFFFF, 0xFFFF, 0xFFFF, "Absolute Analysis(0x1B79)"}, }; /* pci_vid_1B79[] */ -pci_id_t pci_vid_1B85[] = { +static pci_id_t const pci_vid_1B85[] = { {0x1B85, 0xFFFF, 0xFFFF, 0xFFFF, "OCZ Technology Group, Inc.(0x1B85)"}, {0x1B85, 0x1021, 0xFFFF, 0xFFFF, "RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller)(0x1021)"}, {0x1B85, 0x1041, 0xFFFF, 0xFFFF, "RevoDrive 3 X2 PCIe SSD 240 GB (Marvell SAS Controller)(0x1041)"}, @@ -29889,12 +30028,12 @@ pci_id_t pci_vid_1B85[] = { {0x1B85, 0x8788, 0xFFFF, 0xFFFF, "RevoDrive Hybrid(0x8788)"}, }; /* pci_vid_1B85[] */ -pci_id_t pci_vid_1B94[] = { +static pci_id_t const pci_vid_1B94[] = { {0x1B94, 0xFFFF, 0xFFFF, 0xFFFF, "Signatec / Dynamic Signals Corp(0x1B94)"}, {0x1B94, 0xE400, 0xFFFF, 0xFFFF, "PX14400 Dual Xilinx Virtex5 based Digitizer(0xE400)"}, }; /* pci_vid_1B94[] */ -pci_id_t pci_vid_1B96[] = { +static pci_id_t const pci_vid_1B96[] = { {0x1B96, 0xFFFF, 0xFFFF, 0xFFFF, "Western Digital(0x1B96)"}, {0x1B96, 0x2200, 0xFFFF, 0xFFFF, "Ultrastar DC SN630 NVMe SSD(0x2200)"}, {0x1B96, 0x2201, 0xFFFF, 0xFFFF, "Ultrastar DC SN630 NVMe SSD(0x2201)"}, @@ -29916,27 +30055,27 @@ pci_id_t pci_vid_1B96[] = { {0x1B96, 0x3734, 0xFFFF, 0xFFFF, "PC SN730 NVMe SSD(0x3734)"}, }; /* pci_vid_1B96[] */ -pci_id_t pci_vid_1B9A[] = { +static pci_id_t const pci_vid_1B9A[] = { {0x1B9A, 0xFFFF, 0xFFFF, 0xFFFF, "XAVi Technologies Corp.(0x1B9A)"}, }; /* pci_vid_1B9A[] */ -pci_id_t pci_vid_1BAA[] = { +static pci_id_t const pci_vid_1BAA[] = { {0x1BAA, 0xFFFF, 0xFFFF, 0xFFFF, "QNAP Systems, Inc.(0x1BAA)"}, }; /* pci_vid_1BAA[] */ -pci_id_t pci_vid_1BAD[] = { +static pci_id_t const pci_vid_1BAD[] = { {0x1BAD, 0xFFFF, 0xFFFF, 0xFFFF, "ReFLEX CES(0x1BAD)"}, {0x1BAD, 0xC001, 0xFFFF, 0xFFFF, "XpressGXA10-LP1150(0xC001)"}, {0x1BAD, 0xC002, 0xFFFF, 0xFFFF, "XpressGXA10-LP1151(0xC002)"}, }; /* pci_vid_1BAD[] */ -pci_id_t pci_vid_1BB0[] = { +static pci_id_t const pci_vid_1BB0[] = { {0x1BB0, 0xFFFF, 0xFFFF, 0xFFFF, "SimpliVity Corporation(0x1BB0)"}, {0x1BB0, 0x0002, 0xFFFF, 0xFFFF, "OmniCube Accelerator OA-3000(0x0002)"}, {0x1BB0, 0x0010, 0xFFFF, 0xFFFF, "OmniCube Accelerator OA-3000-2(0x0010)"}, }; /* pci_vid_1BB0[] */ -pci_id_t pci_vid_1BB1[] = { +static pci_id_t const pci_vid_1BB1[] = { {0x1BB1, 0xFFFF, 0xFFFF, 0xFFFF, "Seagate Technology PLC(0x1BB1)"}, {0x1BB1, 0x005D, 0xFFFF, 0xFFFF, "Nytro PCIe Flash Storage(0x005D)"}, {0x1BB1, 0x005D, 0x1BB1, 0x6501, "Nytro XP6500-8A1536 1.5TB(0x1BB1-0x6501)"}, @@ -30003,7 +30142,7 @@ pci_id_t pci_vid_1BB1[] = { {0x1BB1, 0x5026, 0xFFFF, 0xFFFF, "FireCuda 540 SSD(0x5026)"}, }; /* pci_vid_1BB1[] */ -pci_id_t pci_vid_1BB3[] = { +static pci_id_t const pci_vid_1BB3[] = { {0x1BB3, 0xFFFF, 0xFFFF, 0xFFFF, "Bluecherry(0x1BB3)"}, {0x1BB3, 0x4304, 0xFFFF, 0xFFFF, "BC-04120A MPEG4 4 port video encoder / decoder(0x4304)"}, {0x1BB3, 0x4309, 0xFFFF, 0xFFFF, "BC-08240A MPEG4 4 port video encoder / decoder(0x4309)"}, @@ -30016,17 +30155,17 @@ pci_id_t pci_vid_1BB3[] = { {0x1BB3, 0x5310, 0xFFFF, 0xFFFF, "BC-H16480A 16 port H.264 video and audio encoder / decoder(0x5310)"}, }; /* pci_vid_1BB3[] */ -pci_id_t pci_vid_1BB5[] = { +static pci_id_t const pci_vid_1BB5[] = { {0x1BB5, 0xFFFF, 0xFFFF, 0xFFFF, "Quantenna Communications, Inc.(0x1BB5)"}, }; /* pci_vid_1BB5[] */ -pci_id_t pci_vid_1BBF[] = { +static pci_id_t const pci_vid_1BBF[] = { {0x1BBF, 0xFFFF, 0xFFFF, 0xFFFF, "Maxeler Technologies Ltd.(0x1BBF)"}, {0x1BBF, 0x0003, 0xFFFF, 0xFFFF, "MAX3(0x0003)"}, {0x1BBF, 0x0004, 0xFFFF, 0xFFFF, "MAX4(0x0004)"}, }; /* pci_vid_1BBF[] */ -pci_id_t pci_vid_1BC0[] = { +static pci_id_t const pci_vid_1BC0[] = { {0x1BC0, 0xFFFF, 0xFFFF, 0xFFFF, "Innodisk Corporation(0x1BC0)"}, {0x1BC0, 0x1001, 0xFFFF, 0xFFFF, "PCIe 3TG6-P Controller(0x1001)"}, {0x1BC0, 0x1002, 0xFFFF, 0xFFFF, "PCIe 3TE6 Controller (DRAM-less)(0x1002)"}, @@ -30039,17 +30178,17 @@ pci_id_t pci_vid_1BC0[] = { {0x1BC0, 0x5236, 0xFFFF, 0xFFFF, "PCIe 4TG2-P Controller(0x5236)"}, }; /* pci_vid_1BC0[] */ -pci_id_t pci_vid_1BCD[] = { +static pci_id_t const pci_vid_1BCD[] = { {0x1BCD, 0xFFFF, 0xFFFF, 0xFFFF, "Apacer Technology(0x1BCD)"}, {0x1BCD, 0x0120, 0xFFFF, 0xFFFF, "NVMe SSD Drive 960GB(0x0120)"}, }; /* pci_vid_1BCD[] */ -pci_id_t pci_vid_1BCF[] = { +static pci_id_t const pci_vid_1BCF[] = { {0x1BCF, 0xFFFF, 0xFFFF, 0xFFFF, "NEC Corporation(0x1BCF)"}, {0x1BCF, 0x001C, 0xFFFF, 0xFFFF, "Vector Engine 1.0(0x001C)"}, }; /* pci_vid_1BCF[] */ -pci_id_t pci_vid_1BD0[] = { +static pci_id_t const pci_vid_1BD0[] = { {0x1BD0, 0xFFFF, 0xFFFF, 0xFFFF, "Astronics Corporation(0x1BD0)"}, {0x1BD0, 0x1001, 0xFFFF, 0xFFFF, "Mx5 PMC/XMC Databus Interface Card(0x1001)"}, {0x1BD0, 0x1002, 0xFFFF, 0xFFFF, "PM1553-5 (PC/104+ MIL-STD-1553 Interface Card)(0x1002)"}, @@ -30070,7 +30209,7 @@ pci_id_t pci_vid_1BD0[] = { {0x1BD0, 0x1203, 0xFFFF, 0xFFFF, "NG3 Series Avionics Discrete Interface(0x1203)"}, }; /* pci_vid_1BD0[] */ -pci_id_t pci_vid_1BD4[] = { +static pci_id_t const pci_vid_1BD4[] = { {0x1BD4, 0xFFFF, 0xFFFF, 0xFFFF, "Inspur Electronic Information Industry Co., Ltd.(0x1BD4)"}, {0x1BD4, 0x0911, 0xFFFF, 0xFFFF, "Arria10_PCIe_F10A1150(0x0911)"}, {0x1BD4, 0x1000, 0xFFFF, 0xFFFF, "NS8600G1U160 NVME SSD(0x1000)"}, @@ -30085,42 +30224,47 @@ pci_id_t pci_vid_1BD4[] = { {0x1BD4, 0x100E, 0xFFFF, 0xFFFF, "NS8500G2Uxxxx, NS8600G2Uxxxx NVME SSD(0x100E)"}, }; /* pci_vid_1BD4[] */ -pci_id_t pci_vid_1BEE[] = { +static pci_id_t const pci_vid_1BEE[] = { {0x1BEE, 0xFFFF, 0xFFFF, 0xFFFF, "IXXAT Automation GmbH(0x1BEE)"}, {0x1BEE, 0x0002, 0xFFFF, 0xFFFF, "CAN-IB100/PCIe(0x0002)"}, {0x1BEE, 0x0003, 0xFFFF, 0xFFFF, "CAN-IB200/PCIe(0x0003)"}, }; /* pci_vid_1BEE[] */ -pci_id_t pci_vid_1BEF[] = { +static pci_id_t const pci_vid_1BEF[] = { {0x1BEF, 0xFFFF, 0xFFFF, 0xFFFF, "Lantiq(0x1BEF)"}, {0x1BEF, 0x0011, 0xFFFF, 0xFFFF, "MIPS SoC PCI Express Port(0x0011)"}, }; /* pci_vid_1BEF[] */ -pci_id_t pci_vid_1BF4[] = { +static pci_id_t const pci_vid_1BF4[] = { {0x1BF4, 0xFFFF, 0xFFFF, 0xFFFF, "VTI Instruments Corporation(0x1BF4)"}, {0x1BF4, 0x0001, 0xFFFF, 0xFFFF, "SentinelEX(0x0001)"}, {0x1BF4, 0x7011, 0xFFFF, 0xFFFF, "RX0xxx(0x7011)"}, }; /* pci_vid_1BF4[] */ -pci_id_t pci_vid_1BF5[] = { +static pci_id_t const pci_vid_1BF5[] = { {0x1BF5, 0xFFFF, 0xFFFF, 0xFFFF, "Greenliant(0x1BF5)"}, {0x1BF5, 0x1000, 0xFFFF, 0xFFFF, "G7200 series U.2 NVMe SSD(0x1000)"}, }; /* pci_vid_1BF5[] */ -pci_id_t pci_vid_1BFC[] = { +static pci_id_t const pci_vid_1BFC[] = { {0x1BFC, 0xFFFF, 0xFFFF, 0xFFFF, "Duagon AG(0x1BFC)"}, }; /* pci_vid_1BFC[] */ -pci_id_t pci_vid_1BFD[] = { +static pci_id_t const pci_vid_1BFD[] = { {0x1BFD, 0xFFFF, 0xFFFF, 0xFFFF, "EeeTOP(0x1BFD)"}, }; /* pci_vid_1BFD[] */ -pci_id_t pci_vid_1C00[] = { +static pci_id_t const pci_vid_1C00[] = { {0x1C00, 0xFFFF, 0xFFFF, 0xFFFF, "Nanjing Qinheng Microelectronics Co., Ltd.(0x1C00)"}, +{0x1C00, 0x2170, 0xFFFF, 0xFFFF, "CH351 PCIe Parallel Port Adapter(0x2170)"}, +{0x1C00, 0x2273, 0xFFFF, 0xFFFF, "CH351 PCIe Dual Port Serial Adapter(0x2273)"}, +{0x1C00, 0x3050, 0xFFFF, 0xFFFF, "CH382L PCIe Parallel Port Adapter(0x3050)"}, +{0x1C00, 0x3250, 0xFFFF, 0xFFFF, "CH384 Dual Port Serial and Parallel Port Adapter(0x3250)"}, {0x1C00, 0x3252, 0xFFFF, 0xFFFF, "CH382 PCIe Dual Port Serial Adapter(0x3252)"}, +{0x1C00, 0x3253, 0xFFFF, 0xFFFF, "CH352/CH382 PCI/PCIe Dual Port Serial Adapter(0x3253)"}, }; /* pci_vid_1C00[] */ -pci_id_t pci_vid_1C09[] = { +static pci_id_t const pci_vid_1C09[] = { {0x1C09, 0xFFFF, 0xFFFF, 0xFFFF, "CSP, Inc.(0x1C09)"}, {0x1C09, 0x4254, 0xFFFF, 0xFFFF, "10G-PCIE3-8D-2S(0x4254)"}, {0x1C09, 0x4255, 0xFFFF, 0xFFFF, "10G-PCIE3-8D-Q(0x4255)"}, @@ -30136,12 +30280,12 @@ pci_id_t pci_vid_1C09[] = { {0x1C09, 0x5001, 0xFFFF, 0xFFFF, "25G-PCIE3-8B-2S Security Intelligent Adapter(0x5001)"}, }; /* pci_vid_1C09[] */ -pci_id_t pci_vid_1C1C[] = { +static pci_id_t const pci_vid_1C1C[] = { {0x1C1C, 0xFFFF, 0xFFFF, 0xFFFF, "Symphony(0x1C1C)"}, {0x1C1C, 0x0001, 0xFFFF, 0xFFFF, "82C101(0x0001)"}, }; /* pci_vid_1C1C[] */ -pci_id_t pci_vid_1C1F[] = { +static pci_id_t const pci_vid_1C1F[] = { {0x1C1F, 0xFFFF, 0xFFFF, 0xFFFF, "SoftLab-NSK(0x1C1F)"}, {0x1C1F, 0x0015, 0xFFFF, 0xFFFF, "FD842(0x0015)"}, {0x1C1F, 0x0019, 0xFFFF, 0xFFFF, "FD722(0x0019)"}, @@ -30153,14 +30297,15 @@ pci_id_t pci_vid_1C1F[] = { {0x1C1F, 0x0020, 0xFFFF, 0xFFFF, "FD2110(0x0020)"}, {0x1C1F, 0x0021, 0xFFFF, 0xFFFF, "FD722(0x0021)"}, {0x1C1F, 0x0022, 0xFFFF, 0xFFFF, "FD788(0x0022)"}, +{0x1C1F, 0x0023, 0xFFFF, 0xFFFF, "FD722-M2(0x0023)"}, }; /* pci_vid_1C1F[] */ -pci_id_t pci_vid_1C28[] = { +static pci_id_t const pci_vid_1C28[] = { {0x1C28, 0xFFFF, 0xFFFF, 0xFFFF, "Lite-On IT Corp. / Plextor(0x1C28)"}, {0x1C28, 0x0122, 0xFFFF, 0xFFFF, "M6e PCI Express SSD [Marvell 88SS9183](0x0122)"}, }; /* pci_vid_1C28[] */ -pci_id_t pci_vid_1C2C[] = { +static pci_id_t const pci_vid_1C2C[] = { {0x1C2C, 0xFFFF, 0xFFFF, 0xFFFF, "Silicom Denmark(0x1C2C)"}, {0x1C2C, 0x000A, 0xFFFF, 0xFFFF, "Capture(0x000A)"}, {0x1C2C, 0x000F, 0xFFFF, 0xFFFF, "SmartNIC(0x000F)"}, @@ -30186,6 +30331,7 @@ pci_id_t pci_vid_1C2C[] = { {0x1C2C, 0xA000, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 2x40Gb [Mango_02](0xA000)"}, {0x1C2C, 0xA001, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 2x100Gb [Mango_02](0xA001)"}, {0x1C2C, 0xA003, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 16x10Gb [Mango](0xA003)"}, +{0x1C2C, 0xA006, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 2x100Gb [Mango](0xA006)"}, {0x1C2C, 0xA007, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 2x40Gb [Mango](0xA007)"}, {0x1C2C, 0xA008, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 2x25Gb [Mango](0xA008)"}, {0x1C2C, 0xA009, 0xFFFF, 0xFFFF, "FBC2CGG3 Capture 16x10Gb [Mango](0xA009)"}, @@ -30198,35 +30344,37 @@ pci_id_t pci_vid_1C2C[] = { {0x1C2C, 0xA013, 0xFFFF, 0xFFFF, "FB2CGHH Capture 2x25Gb [Tivoli](0xA013)"}, {0x1C2C, 0xA014, 0xFFFF, 0xFFFF, "FB2CGHH Capture 8x10Gb [Tivoli](0xA014)"}, {0x1C2C, 0xA015, 0xFFFF, 0xFFFF, "FB2CGHH Capture 2x100Gb [Tivoli](0xA015)"}, +{0x1C2C, 0xA016, 0xFFFF, 0xFFFF, "FB2CG Capture 8x25Gb [Savona](0xA016)"}, +{0x1C2C, 0xA017, 0xFFFF, 0xFFFF, "FB2CGHH Capture 8x25Gb [Tivoli] a017(0xA017)"}, }; /* pci_vid_1C2C[] */ -pci_id_t pci_vid_1C32[] = { +static pci_id_t const pci_vid_1C32[] = { {0x1C32, 0xFFFF, 0xFFFF, 0xFFFF, "Highland Technology, Inc.(0x1C32)"}, }; /* pci_vid_1C32[] */ -pci_id_t pci_vid_1C33[] = { +static pci_id_t const pci_vid_1C33[] = { {0x1C33, 0xFFFF, 0xFFFF, 0xFFFF, "Daktronics, Inc(0x1C33)"}, }; /* pci_vid_1C33[] */ -pci_id_t pci_vid_1C36[] = { +static pci_id_t const pci_vid_1C36[] = { {0x1C36, 0xFFFF, 0xFFFF, 0xFFFF, "Annapurna Labs Ltd.(0x1C36)"}, {0x1C36, 0x0001, 0xFFFF, 0xFFFF, "Gigabit Ethernet Adapter(0x0001)"}, {0x1C36, 0x0002, 0xFFFF, 0xFFFF, "SFP+ 10G Ethernet Adapter(0x0002)"}, }; /* pci_vid_1C36[] */ -pci_id_t pci_vid_1C3B[] = { +static pci_id_t const pci_vid_1C3B[] = { {0x1C3B, 0xFFFF, 0xFFFF, 0xFFFF, "Accensus, LLC(0x1C3B)"}, {0x1C3B, 0x0200, 0xFFFF, 0xFFFF, "Telas2(0x0200)"}, {0x1C3B, 0x0300, 0xFFFF, 0xFFFF, "Telas 2.V(0x0300)"}, }; /* pci_vid_1C3B[] */ -pci_id_t pci_vid_1C44[] = { +static pci_id_t const pci_vid_1C44[] = { {0x1C44, 0xFFFF, 0xFFFF, 0xFFFF, "Enmotus Inc(0x1C44)"}, {0x1C44, 0x1100, 0xFFFF, 0xFFFF, "Fuzedrive NVMe SSD(0x1100)"}, {0x1C44, 0x8000, 0xFFFF, 0xFFFF, "8000 Storage IO Controller(0x8000)"}, }; /* pci_vid_1C44[] */ -pci_id_t pci_vid_1C58[] = { +static pci_id_t const pci_vid_1C58[] = { {0x1C58, 0xFFFF, 0xFFFF, 0xFFFF, "HGST, Inc.(0x1C58)"}, {0x1C58, 0x0003, 0xFFFF, 0xFFFF, "Ultrastar SN100 Series NVMe SSD(0x0003)"}, {0x1C58, 0x0003, 0x1014, 0x04F5, "PCIe3 1.6TB NVMe Flash Adapter(0x1014-0x04F5)"}, @@ -30236,7 +30384,7 @@ pci_id_t pci_vid_1C58[] = { {0x1C58, 0x0023, 0x1C58, 0x8823, "Ultrastar Memory (ME200)(0x1C58-0x8823)"}, }; /* pci_vid_1C58[] */ -pci_id_t pci_vid_1C5C[] = { +static pci_id_t const pci_vid_1C5C[] = { {0x1C5C, 0xFFFF, 0xFFFF, 0xFFFF, "SK hynix(0x1C5C)"}, {0x1C5C, 0x1282, 0xFFFF, 0xFFFF, "PC300 NVMe Solid State Drive 128GB(0x1282)"}, {0x1C5C, 0x1283, 0xFFFF, 0xFFFF, "PC300 NVMe Solid State Drive 256GB(0x1283)"}, @@ -30283,7 +30431,7 @@ pci_id_t pci_vid_1C5C[] = { {0x1C5C, 0x2B59, 0xFFFF, 0xFFFF, "PS10x0 Series NVMe Solid State Drives(0x2B59)"}, }; /* pci_vid_1C5C[] */ -pci_id_t pci_vid_1C5F[] = { +static pci_id_t const pci_vid_1C5F[] = { {0x1C5F, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Memblaze Technology Co. Ltd.(0x1C5F)"}, {0x1C5F, 0x000D, 0xFFFF, 0xFFFF, "PBlaze5 520/526(0x000D)"}, {0x1C5F, 0x000D, 0x1C5F, 0x0220, "NVMe SSD PBlaze5 520 1920G AIC(0x1C5F-0x0220)"}, @@ -30392,31 +30540,31 @@ pci_id_t pci_vid_1C5F[] = { {0x1C5F, 0x0557, 0xFFFF, 0xFFFF, "PBlaze5 910/916(0x0557)"}, }; /* pci_vid_1C5F[] */ -pci_id_t pci_vid_1C63[] = { +static pci_id_t const pci_vid_1C63[] = { {0x1C63, 0xFFFF, 0xFFFF, 0xFFFF, "Science and Research Centre of Computer Technology (JSC \"NICEVT\")(0x1C63)"}, {0x1C63, 0x0008, 0xFFFF, 0xFFFF, "K1927BB1Ya [EC8430] Angara Interconnection Network Adapter(0x0008)"}, }; /* pci_vid_1C63[] */ -pci_id_t pci_vid_1C7E[] = { +static pci_id_t const pci_vid_1C7E[] = { {0x1C7E, 0xFFFF, 0xFFFF, 0xFFFF, "TTTech Computertechnik AG(0x1C7E)"}, {0x1C7E, 0x0200, 0xFFFF, 0xFFFF, "zFAS Debug Port(0x0200)"}, }; /* pci_vid_1C7E[] */ -pci_id_t pci_vid_1C7F[] = { +static pci_id_t const pci_vid_1C7F[] = { {0x1C7F, 0xFFFF, 0xFFFF, 0xFFFF, "Elektrobit Austria GmbH(0x1C7F)"}, {0x1C7F, 0x5100, 0xFFFF, 0xFFFF, "EB5100(0x5100)"}, }; /* pci_vid_1C7F[] */ -pci_id_t pci_vid_1C8A[] = { +static pci_id_t const pci_vid_1C8A[] = { {0x1C8A, 0xFFFF, 0xFFFF, 0xFFFF, "TSF5 Corporation(0x1C8A)"}, {0x1C8A, 0x0001, 0xFFFF, 0xFFFF, "Hunter PCI Express(0x0001)"}, }; /* pci_vid_1C8A[] */ -pci_id_t pci_vid_1C8C[] = { +static pci_id_t const pci_vid_1C8C[] = { {0x1C8C, 0xFFFF, 0xFFFF, 0xFFFF, "Mobiveil, Inc.(0x1C8C)"}, }; /* pci_vid_1C8C[] */ -pci_id_t pci_vid_1CB0[] = { +static pci_id_t const pci_vid_1CB0[] = { {0x1CB0, 0xFFFF, 0xFFFF, 0xFFFF, "Shannon Systems(0x1CB0)"}, {0x1CB0, 0x8266, 0xFFFF, 0xFFFF, "SP4 Series SSD(0x8266)"}, {0x1CB0, 0x8266, 0x1CB0, 0x2021, "SP4 Series OCS U.2 SSD(0x1CB0-0x2021)"}, @@ -30436,20 +30584,20 @@ pci_id_t pci_vid_1CB0[] = { {0x1CB0, 0xD000, 0x1CB0, 0xAF12, "Venice-X Series NVMe AIC(0x1CB0-0xAF12)"}, }; /* pci_vid_1CB0[] */ -pci_id_t pci_vid_1CB1[] = { +static pci_id_t const pci_vid_1CB1[] = { {0x1CB1, 0xFFFF, 0xFFFF, 0xFFFF, "Collion UG & Co.KG(0x1CB1)"}, }; /* pci_vid_1CB1[] */ -pci_id_t pci_vid_1CB5[] = { +static pci_id_t const pci_vid_1CB5[] = { {0x1CB5, 0xFFFF, 0xFFFF, 0xFFFF, "Focusrite Audio Engineering Ltd(0x1CB5)"}, {0x1CB5, 0x0002, 0xFFFF, 0xFFFF, "Clarett(0x0002)"}, }; /* pci_vid_1CB5[] */ -pci_id_t pci_vid_1CB8[] = { +static pci_id_t const pci_vid_1CB8[] = { {0x1CB8, 0xFFFF, 0xFFFF, 0xFFFF, "Dawning Information Industry Co., Ltd.(0x1CB8)"}, }; /* pci_vid_1CB8[] */ -pci_id_t pci_vid_1CC1[] = { +static pci_id_t const pci_vid_1CC1[] = { {0x1CC1, 0xFFFF, 0xFFFF, 0xFFFF, "ADATA Technology Co., Ltd.(0x1CC1)"}, {0x1CC1, 0x1202, 0xFFFF, 0xFFFF, "IM2P32A8 NVMe SSD (DRAM-less)(0x1202)"}, {0x1CC1, 0x2263, 0xFFFF, 0xFFFF, "XPG SX6000 Lite NVMe SSD (DRAM-less)(0x2263)"}, @@ -30458,22 +30606,24 @@ pci_id_t pci_vid_1CC1[] = { {0x1CC1, 0x33F4, 0xFFFF, 0xFFFF, "IM2P33F4 NVMe SSD (DRAM-less)(0x33F4)"}, {0x1CC1, 0x33F8, 0xFFFF, 0xFFFF, "IM2P33F8 series NVMe SSD (DRAM-less)(0x33F8)"}, {0x1CC1, 0x41C3, 0xFFFF, 0xFFFF, "SM2P41C3 NVMe SSD (DRAM-less)(0x41C3)"}, +{0x1CC1, 0x41C8, 0xFFFF, 0xFFFF, "SM2P41C8 NVMe SSD (DRAM-less)(0x41C8)"}, {0x1CC1, 0x5236, 0xFFFF, 0xFFFF, "XPG GAMMIX S70 BLADE NVMe SSD(0x5236)"}, -{0x1CC1, 0x5350, 0xFFFF, 0xFFFF, "XPG GAMMIX S50 NVMe SSD(0x5350)"}, -{0x1CC1, 0x5762, 0xFFFF, 0xFFFF, "FALCON NVMe SSD(0x5762)"}, +{0x1CC1, 0x5350, 0xFFFF, 0xFFFF, "XPG GAMMIX S50, S50 Lite NVMe SSD(0x5350)"}, +{0x1CC1, 0x5370, 0xFFFF, 0xFFFF, "GAMMIX S70 BLADE, PS5 PREMIUM NVMe SSD(0x5370)"}, +{0x1CC1, 0x5762, 0xFFFF, 0xFFFF, "FALCON, GAMMIX S41, SPECTRIX S40G NVMe SSD (DRAM-less)(0x5762)"}, {0x1CC1, 0x5763, 0xFFFF, 0xFFFF, "XPG GAMMIX S5 NVMe SSD (DRAM-less)(0x5763)"}, -{0x1CC1, 0x5766, 0xFFFF, 0xFFFF, "ADATA XPG GAMMIXS1 1L Media (256 GB SSD)(0x5766)"}, +{0x1CC1, 0x5766, 0xFFFF, 0xFFFF, "XPG GAMMIXS1 1L, XPG GAMMIX S5, LEGEND 710 / 740, SWORDFISH NVMe SSD (DRAM-less)(0x5766)"}, {0x1CC1, 0x612A, 0xFFFF, 0xFFFF, "LEGEND 750 NVMe SSD (DRAM-less)(0x612A)"}, -{0x1CC1, 0x613A, 0xFFFF, 0xFFFF, "LEGEND 840 NVMe SSD (DRAM-less)(0x613A)"}, +{0x1CC1, 0x613A, 0xFFFF, 0xFFFF, "ATOM 50, LEGEND 840 NVMe SSD (DRAM-less)(0x613A)"}, {0x1CC1, 0x621A, 0xFFFF, 0xFFFF, "LEGEND 850 NVMe SSD (DRAM-less)(0x621A)"}, {0x1CC1, 0x622A, 0xFFFF, 0xFFFF, "LEGEND 960 NVMe SSD(0x622A)"}, -{0x1CC1, 0x624A, 0xFFFF, 0xFFFF, "LEGEND 700 NVMe SSD (DRAM-less)(0x624A)"}, +{0x1CC1, 0x624A, 0xFFFF, 0xFFFF, "LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less)(0x624A)"}, {0x1CC1, 0x627A, 0xFFFF, 0xFFFF, "LEGEND 800 NVMe SSD (DRAM-less)(0x627A)"}, {0x1CC1, 0x628A, 0xFFFF, 0xFFFF, "LEGEND 800 NVMe SSD (DRAM-less)(0x628A)"}, {0x1CC1, 0x8201, 0xFFFF, 0xFFFF, "XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive(0x8201)"}, }; /* pci_vid_1CC1[] */ -pci_id_t pci_vid_1CC4[] = { +static pci_id_t const pci_vid_1CC4[] = { {0x1CC4, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Unionmemory Information System Ltd.(0x1CC4)"}, {0x1CC4, 0x1203, 0xFFFF, 0xFFFF, "NVMe SSD Controller UHXXXa series(0x1203)"}, {0x1CC4, 0x1203, 0x1CC4, 0xA121, "NVMe SSD UHXXXa series U.2 960GB(0x1CC4-0xA121)"}, @@ -30524,24 +30674,24 @@ pci_id_t pci_vid_1CC4[] = { {0x1CC4, 0x8030, 0x1CC4, 0x2215, "NVMe SSD UH832a E3.S 12.8TB(0x1CC4-0x2215)"}, }; /* pci_vid_1CC4[] */ -pci_id_t pci_vid_1CC5[] = { +static pci_id_t const pci_vid_1CC5[] = { {0x1CC5, 0xFFFF, 0xFFFF, 0xFFFF, "Embedded Intelligence, Inc.(0x1CC5)"}, {0x1CC5, 0x0100, 0xFFFF, 0xFFFF, "PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1.(0x0100)"}, {0x1CC5, 0x0101, 0xFFFF, 0xFFFF, "PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1.(0x0101)"}, }; /* pci_vid_1CC5[] */ -pci_id_t pci_vid_1CC7[] = { +static pci_id_t const pci_vid_1CC7[] = { {0x1CC7, 0xFFFF, 0xFFFF, 0xFFFF, "Radian Memory Systems Inc.(0x1CC7)"}, {0x1CC7, 0x0200, 0xFFFF, 0xFFFF, "RMS-200 PCIe NVMe SSD(0x0200)"}, {0x1CC7, 0x0250, 0xFFFF, 0xFFFF, "RMS-250 U.2 NVMe SSD(0x0250)"}, }; /* pci_vid_1CC7[] */ -pci_id_t pci_vid_1CCF[] = { +static pci_id_t const pci_vid_1CCF[] = { {0x1CCF, 0xFFFF, 0xFFFF, 0xFFFF, "Zoom Corporation(0x1CCF)"}, {0x1CCF, 0x0001, 0xFFFF, 0xFFFF, "TAC-2 Thunderbolt Audio Converter(0x0001)"}, }; /* pci_vid_1CCF[] */ -pci_id_t pci_vid_1CD2[] = { +static pci_id_t const pci_vid_1CD2[] = { {0x1CD2, 0xFFFF, 0xFFFF, 0xFFFF, "SesKion GmbH(0x1CD2)"}, {0x1CD2, 0x0301, 0xFFFF, 0xFFFF, "Simulyzer-RT CompactPCI Serial DIO-1 card(0x0301)"}, {0x1CD2, 0x0302, 0xFFFF, 0xFFFF, "Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card(0x0302)"}, @@ -30552,7 +30702,7 @@ pci_id_t pci_vid_1CD2[] = { {0x1CD2, 0x0307, 0xFFFF, 0xFFFF, "Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+](0x0307)"}, }; /* pci_vid_1CD2[] */ -pci_id_t pci_vid_1CD7[] = { +static pci_id_t const pci_vid_1CD7[] = { {0x1CD7, 0xFFFF, 0xFFFF, 0xFFFF, "Nanjing Magewell Electronics Co., Ltd.(0x1CD7)"}, {0x1CD7, 0x0002, 0xFFFF, 0xFFFF, "Pro Capture AIO(0x0002)"}, {0x1CD7, 0x0010, 0xFFFF, 0xFFFF, "Pro Capture Endpoint(0x0010)"}, @@ -30564,11 +30714,11 @@ pci_id_t pci_vid_1CD7[] = { {0x1CD7, 0x0054, 0xFFFF, 0xFFFF, "Eco Capture Quad SDI M.2(0x0054)"}, }; /* pci_vid_1CD7[] */ -pci_id_t pci_vid_1CDD[] = { +static pci_id_t const pci_vid_1CDD[] = { {0x1CDD, 0xFFFF, 0xFFFF, 0xFFFF, "secunet Security Networks AG(0x1CDD)"}, }; /* pci_vid_1CDD[] */ -pci_id_t pci_vid_1CE4[] = { +static pci_id_t const pci_vid_1CE4[] = { {0x1CE4, 0xFFFF, 0xFFFF, 0xFFFF, "Exablaze(0x1CE4)"}, {0x1CE4, 0x0001, 0xFFFF, 0xFFFF, "ExaNIC X4(0x0001)"}, {0x1CE4, 0x0002, 0xFFFF, 0xFFFF, "ExaNIC X2(0x0002)"}, @@ -30585,37 +30735,38 @@ pci_id_t pci_vid_1CE4[] = { {0x1CE4, 0x0100, 0xFFFF, 0xFFFF, "ExaDISK FX1(0x0100)"}, }; /* pci_vid_1CE4[] */ -pci_id_t pci_vid_1CF0[] = { +static pci_id_t const pci_vid_1CF0[] = { {0x1CF0, 0xFFFF, 0xFFFF, 0xFFFF, "Akitio(0x1CF0)"}, }; /* pci_vid_1CF0[] */ -pci_id_t pci_vid_1CF7[] = { +static pci_id_t const pci_vid_1CF7[] = { {0x1CF7, 0xFFFF, 0xFFFF, 0xFFFF, "Subspace Dynamics(0x1CF7)"}, }; /* pci_vid_1CF7[] */ -pci_id_t pci_vid_1CFA[] = { +static pci_id_t const pci_vid_1CFA[] = { {0x1CFA, 0xFFFF, 0xFFFF, 0xFFFF, "Corsair Memory, Inc(0x1CFA)"}, }; /* pci_vid_1CFA[] */ -pci_id_t pci_vid_1CFD[] = { +static pci_id_t const pci_vid_1CFD[] = { {0x1CFD, 0xFFFF, 0xFFFF, 0xFFFF, "Mangstor(0x1CFD)"}, {0x1CFD, 0x6300, 0xFFFF, 0xFFFF, "MX6300 series PCIe x8 NVMe SSD(0x6300)"}, }; /* pci_vid_1CFD[] */ -pci_id_t pci_vid_1D00[] = { +static pci_id_t const pci_vid_1D00[] = { {0x1D00, 0xFFFF, 0xFFFF, 0xFFFF, "Pure Storage(0x1D00)"}, }; /* pci_vid_1D00[] */ -pci_id_t pci_vid_1D05[] = { +static pci_id_t const pci_vid_1D05[] = { {0x1D05, 0xFFFF, 0xFFFF, 0xFFFF, "Tongfang Hongkong Limited(0x1D05)"}, }; /* pci_vid_1D05[] */ -pci_id_t pci_vid_1D0F[] = { +static pci_id_t const pci_vid_1D0F[] = { {0x1D0F, 0xFFFF, 0xFFFF, 0xFFFF, "Amazon.com, Inc.(0x1D0F)"}, {0x1D0F, 0x7064, 0xFFFF, 0xFFFF, "NeuronDevice (Inferentia)(0x7064)"}, {0x1D0F, 0x7164, 0xFFFF, 0xFFFF, "NeuronDevice (Trainium)(0x7164)"}, {0x1D0F, 0x7164, 0x1D0F, 0x0000, "Trainium(0x1D0F-0x0000)"}, {0x1D0F, 0x7264, 0xFFFF, 0xFFFF, "NeuronDevice (Inferentia2)(0x7264)"}, +{0x1D0F, 0x7364, 0xFFFF, 0xFFFF, "NeuronDevice (Trainium2)(0x7364)"}, {0x1D0F, 0x8061, 0xFFFF, 0xFFFF, "NVMe EBS Controller(0x8061)"}, {0x1D0F, 0xCD01, 0xFFFF, 0xFFFF, "NVMe SSD Controller(0xCD01)"}, {0x1D0F, 0xEC20, 0xFFFF, 0xFFFF, "Elastic Network Adapter (ENA)(0xEC20)"}, @@ -30624,7 +30775,7 @@ pci_id_t pci_vid_1D0F[] = { {0x1D0F, 0xEFA2, 0xFFFF, 0xFFFF, "Elastic Fabric Adapter (EFA)(0xEFA2)"}, }; /* pci_vid_1D0F[] */ -pci_id_t pci_vid_1D17[] = { +static pci_id_t const pci_vid_1D17[] = { {0x1D17, 0xFFFF, 0xFFFF, 0xFFFF, "Zhaoxin(0x1D17)"}, {0x1D17, 0x070F, 0xFFFF, 0xFFFF, "ZX-100 PCI Express Root Port(0x070F)"}, {0x1D17, 0x0710, 0xFFFF, 0xFFFF, "ZX-100/ZX-200 PCI Express Root Port(0x0710)"}, @@ -30634,55 +30785,67 @@ pci_id_t pci_vid_1D17[] = { {0x1D17, 0x0714, 0xFFFF, 0xFFFF, "ZX-100/ZX-200 PCI Express Root Port(0x0714)"}, {0x1D17, 0x0715, 0xFFFF, 0xFFFF, "ZX-100/ZX-200 PCI Express Root Port(0x0715)"}, {0x1D17, 0x0716, 0xFFFF, 0xFFFF, "ZX-D PCI Express Root Port(0x0716)"}, -{0x1D17, 0x0717, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x0717)"}, -{0x1D17, 0x0718, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x0718)"}, -{0x1D17, 0x0719, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x0719)"}, +{0x1D17, 0x0717, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x0717)"}, +{0x1D17, 0x0718, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x0718)"}, +{0x1D17, 0x0719, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x0719)"}, {0x1D17, 0x071A, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x071A)"}, -{0x1D17, 0x071B, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x071B)"}, -{0x1D17, 0x071C, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x071C)"}, +{0x1D17, 0x071B, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x071B)"}, +{0x1D17, 0x071C, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x071C)"}, {0x1D17, 0x071D, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x071D)"}, -{0x1D17, 0x071E, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000 PCI Express Root Port(0x071E)"}, +{0x1D17, 0x071E, 0xFFFF, 0xFFFF, "KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Express Root Port(0x071E)"}, {0x1D17, 0x071F, 0xFFFF, 0xFFFF, "ZX-200 Upstream Port of PCI Express Switch(0x071F)"}, {0x1D17, 0x0720, 0xFFFF, 0xFFFF, "ZX-200 PCIE RC6 controller(0x0720)"}, {0x1D17, 0x0721, 0xFFFF, 0xFFFF, "ZX-200 Downstream Port of PCI Express Switch(0x0721)"}, {0x1D17, 0x0722, 0xFFFF, 0xFFFF, "ZX-200 PCIE P2C bridge(0x0722)"}, {0x1D17, 0x0731, 0xFFFF, 0xFFFF, "KH-40000 PCI Express Root Port(0x0731)"}, -{0x1D17, 0x0732, 0xFFFF, 0xFFFF, "KH-40000 PCI Express Root Port(0x0732)"}, +{0x1D17, 0x0732, 0xFFFF, 0xFFFF, "KH-40000/KX-7000 PCI Express Root Port(0x0732)"}, +{0x1D17, 0x0733, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0733)"}, +{0x1D17, 0x0734, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0734)"}, +{0x1D17, 0x0735, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0735)"}, +{0x1D17, 0x0736, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0736)"}, +{0x1D17, 0x0737, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0737)"}, +{0x1D17, 0x0738, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0738)"}, +{0x1D17, 0x0739, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x0739)"}, +{0x1D17, 0x073A, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x073A)"}, +{0x1D17, 0x073B, 0xFFFF, 0xFFFF, "KX-7000 PCIE Express Root Port(0x073B)"}, {0x1D17, 0x1000, 0xFFFF, 0xFFFF, "ZX-D Standard Host Bridge(0x1000)"}, -{0x1D17, 0x1001, 0xFFFF, 0xFFFF, "ZX-D/ZX-E/KH-40000 Miscellaneous Bus(0x1001)"}, +{0x1D17, 0x1001, 0xFFFF, 0xFFFF, "ZX-D/ZX-E/KH-40000/KX-7000 Miscellaneous Bus(0x1001)"}, {0x1D17, 0x1003, 0xFFFF, 0xFFFF, "ZX-E Standard Host Bridge(0x1003)"}, {0x1D17, 0x1005, 0xFFFF, 0xFFFF, "KH-40000 Standard Host Bridge(0x1005)"}, {0x1D17, 0x1006, 0xFFFF, 0xFFFF, "KX-6000G Standard Host Bridge(0x1006)"}, +{0x1D17, 0x1007, 0xFFFF, 0xFFFF, "KX-7000 Standard Host Bridge(0x1007)"}, {0x1D17, 0x3001, 0xFFFF, 0xFFFF, "ZX-100 Standard Host Bridge(0x3001)"}, {0x1D17, 0x300A, 0xFFFF, 0xFFFF, "ZX-100 Miscellaneous Bus(0x300A)"}, -{0x1D17, 0x3038, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000 Standard Universal PCI to USB Host Controller(0x3038)"}, -{0x1D17, 0x3104, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000 Standard Enhanced PCI to USB Host Controller(0x3104)"}, -{0x1D17, 0x31B0, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Standard Host Bridge(0x31B0)"}, -{0x1D17, 0x31B1, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Standard Host Bridge(0x31B1)"}, -{0x1D17, 0x31B2, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 DRAM Controller(0x31B2)"}, -{0x1D17, 0x31B3, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Power Management Controller(0x31B3)"}, -{0x1D17, 0x31B4, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 I/O APIC(0x31B4)"}, -{0x1D17, 0x31B5, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Scratch Device(0x31B5)"}, -{0x1D17, 0x31B7, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Standard Host Bridge(0x31B7)"}, +{0x1D17, 0x3038, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Universal PCI to USB Host Controller(0x3038)"}, +{0x1D17, 0x3104, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Enhanced PCI to USB Host Controller(0x3104)"}, +{0x1D17, 0x31B0, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge(0x31B0)"}, +{0x1D17, 0x31B1, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge(0x31B1)"}, +{0x1D17, 0x31B2, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 DRAM Controller(0x31B2)"}, +{0x1D17, 0x31B3, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Power Management Controller(0x31B3)"}, +{0x1D17, 0x31B4, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 I/O APIC(0x31B4)"}, +{0x1D17, 0x31B5, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Scratch Device(0x31B5)"}, +{0x1D17, 0x31B7, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 Standard Host Bridge(0x31B7)"}, {0x1D17, 0x31B8, 0xFFFF, 0xFFFF, "ZX-100/ZX-D PCI to PCI Bridge(0x31B8)"}, -{0x1D17, 0x3288, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 High Definition Audio Controller(0x3288)"}, +{0x1D17, 0x3200, 0xFFFF, 0xFFFF, "KX-7000 Host Bridge(0x3200)"}, +{0x1D17, 0x3288, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 High Definition Audio Controller(0x3288)"}, {0x1D17, 0x345B, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 Miscellaneous Bus(0x345B)"}, {0x1D17, 0x3A02, 0xFFFF, 0xFFFF, "ZX-100 C-320 GPU(0x3A02)"}, {0x1D17, 0x3A03, 0xFFFF, 0xFFFF, "ZX-D C-860 GPU(0x3A03)"}, -{0x1D17, 0x3A04, 0xFFFF, 0xFFFF, "ZX-E C-960 GPU(0x3A04)"}, +{0x1D17, 0x3A04, 0xFFFF, 0xFFFF, "KX-6000 C-960 GPU(0x3A04)"}, +{0x1D17, 0x3A05, 0xFFFF, 0xFFFF, "KX-7000 C-1190 GPU(0x3A05)"}, {0x1D17, 0x3B01, 0xFFFF, 0xFFFF, "KH-40000 OPI Controller(0x3B01)"}, {0x1D17, 0x3B02, 0xFFFF, 0xFFFF, "KH-40000 OPI Controller(0x3B02)"}, {0x1D17, 0x3B03, 0xFFFF, 0xFFFF, "KH-40000 OPI Controller(0x3B03)"}, {0x1D17, 0x3B04, 0xFFFF, 0xFFFF, "KH-40000 OPI Controller(0x3B04)"}, -{0x1D17, 0x3C00, 0xFFFF, 0xFFFF, "KH-40000 DRAM Controller(0x3C00)"}, +{0x1D17, 0x3C00, 0xFFFF, 0xFFFF, "KH-40000/KX-7000 DRAM Controller(0x3C00)"}, {0x1D17, 0x3C02, 0xFFFF, 0xFFFF, "KX-6000G DRAM Controller(0x3C02)"}, {0x1D17, 0x3D01, 0xFFFF, 0xFFFF, "KX-6000G C-1080 GPU(0x3D01)"}, -{0x1D17, 0x9002, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KH-40000 EIDE Controller(0x9002)"}, +{0x1D17, 0x9002, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KH-40000/KX-7000 EIDE Controller(0x9002)"}, {0x1D17, 0x9003, 0xFFFF, 0xFFFF, "ZX-100/KX-6000/KX-6000G EIDE Controller(0x9003)"}, -{0x1D17, 0x9043, 0xFFFF, 0xFFFF, "KX-6000G/KH-40000 RAID Controller(0x9043)"}, +{0x1D17, 0x9043, 0xFFFF, 0xFFFF, "KX-6000G/KH-40000/KX-7000 RAID Controller(0x9043)"}, {0x1D17, 0x9045, 0xFFFF, 0xFFFF, "ZX-100/ZX-D/ZX-E RAID Accelerator 0(0x9045)"}, {0x1D17, 0x9046, 0xFFFF, 0xFFFF, "ZX-D/ZX-E RAID Accelerator 1(0x9046)"}, -{0x1D17, 0x9083, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000 StorX AHCI Controller(0x9083)"}, +{0x1D17, 0x9083, 0xFFFF, 0xFFFF, "ZX-100/ZX-200/KX-6000/KX-6000G/KH-40000/KX-7000 StorX AHCI Controller(0x9083)"}, {0x1D17, 0x9084, 0xFFFF, 0xFFFF, "ZX-100 StorX AHCI Controller(0x9084)"}, {0x1D17, 0x9100, 0xFFFF, 0xFFFF, "ZX-200 Cross bus(0x9100)"}, {0x1D17, 0x9101, 0xFFFF, 0xFFFF, "ZX-200 Traffic Controller(0x9101)"}, @@ -30690,25 +30853,29 @@ pci_id_t pci_vid_1D17[] = { {0x1D17, 0x9142, 0xFFFF, 0xFFFF, "ZX-D High Definition Audio Controller(0x9142)"}, {0x1D17, 0x9144, 0xFFFF, 0xFFFF, "ZX-E High Definition Audio Controller(0x9144)"}, {0x1D17, 0x9145, 0xFFFF, 0xFFFF, "KX-6000G High Definition Audio Controller(0x9145)"}, +{0x1D17, 0x9146, 0xFFFF, 0xFFFF, "KX-7000 High Definition Audio Controller(0x9146)"}, {0x1D17, 0x9180, 0xFFFF, 0xFFFF, "ZX-200 Networking Gigabit Ethernet Adapter(0x9180)"}, {0x1D17, 0x91C1, 0xFFFF, 0xFFFF, "KH-40000 ZPI Controller(0x91C1)"}, {0x1D17, 0x91C2, 0xFFFF, 0xFFFF, "KH-40000 ZPI Controller(0x91C2)"}, {0x1D17, 0x9202, 0xFFFF, 0xFFFF, "ZX-100 USB eXtensible Host Controller(0x9202)"}, {0x1D17, 0x9203, 0xFFFF, 0xFFFF, "ZX-200 USB eXtensible Host Controller(0x9203)"}, -{0x1D17, 0x9204, 0xFFFF, 0xFFFF, "KX-6000/KX-6000G USB eXtensible Host Controller(0x9204)"}, +{0x1D17, 0x9204, 0xFFFF, 0xFFFF, "KX-6000/KX-6000G/KX-7000 USB3 xHCI Host Controller(0x9204)"}, {0x1D17, 0x9205, 0xFFFF, 0xFFFF, "KH-40000 USB eXtensible Host Controller(0x9205)"}, +{0x1D17, 0x9206, 0xFFFF, 0xFFFF, "KX-7000 USB4 Contoller(0x9206)"}, {0x1D17, 0x9286, 0xFFFF, 0xFFFF, "ZX-D eMMC Host Controller(0x9286)"}, -{0x1D17, 0x9300, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 eSPI Host Controller(0x9300)"}, +{0x1D17, 0x9300, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 eSPI Host Controller(0x9300)"}, +{0x1D17, 0x9500, 0xFFFF, 0xFFFF, "KX-7000 I2S Controller(0x9500)"}, +{0x1D17, 0x9501, 0xFFFF, 0xFFFF, "KX-7000 I2S Controller(0x9501)"}, {0x1D17, 0x95D0, 0xFFFF, 0xFFFF, "ZX-100 Universal SD Host Controller(0x95D0)"}, -{0x1D17, 0xF410, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000 PCI Com Port(0xF410)"}, +{0x1D17, 0xF410, 0xFFFF, 0xFFFF, "ZX-100/KX-5000/KX-6000/KX-6000G/KH-40000/KX-7000 PCI Com Port(0xF410)"}, }; /* pci_vid_1D17[] */ -pci_id_t pci_vid_1D18[] = { +static pci_id_t const pci_vid_1D18[] = { {0x1D18, 0xFFFF, 0xFFFF, 0xFFFF, "RME(0x1D18)"}, {0x1D18, 0x0001, 0xFFFF, 0xFFFF, "Fireface UFX+(0x0001)"}, }; /* pci_vid_1D18[] */ -pci_id_t pci_vid_1D1C[] = { +static pci_id_t const pci_vid_1D1C[] = { {0x1D1C, 0xFFFF, 0xFFFF, 0xFFFF, "Barefoot Networks, Inc.(0x1D1C)"}, {0x1D1C, 0x0001, 0xFFFF, 0xFFFF, "Tofino 1(0x0001)"}, {0x1D1C, 0x0010, 0xFFFF, 0xFFFF, "Tofino 1(0x0010)"}, @@ -30716,24 +30883,24 @@ pci_id_t pci_vid_1D1C[] = { {0x1D1C, 0x0110, 0xFFFF, 0xFFFF, "Tofino 2(0x0110)"}, }; /* pci_vid_1D1C[] */ -pci_id_t pci_vid_1D1D[] = { +static pci_id_t const pci_vid_1D1D[] = { {0x1D1D, 0xFFFF, 0xFFFF, 0xFFFF, "CNEX Labs(0x1D1D)"}, {0x1D1D, 0x1F1F, 0xFFFF, 0xFFFF, "QEMU NVM Express LightNVM Controller(0x1F1F)"}, {0x1D1D, 0x2807, 0xFFFF, 0xFFFF, "8800 series NVMe SSD(0x2807)"}, }; /* pci_vid_1D1D[] */ -pci_id_t pci_vid_1D21[] = { +static pci_id_t const pci_vid_1D21[] = { {0x1D21, 0xFFFF, 0xFFFF, 0xFFFF, "Allo(0x1D21)"}, }; /* pci_vid_1D21[] */ -pci_id_t pci_vid_1D22[] = { +static pci_id_t const pci_vid_1D22[] = { {0x1D22, 0xFFFF, 0xFFFF, 0xFFFF, "Baidu Technology(0x1D22)"}, {0x1D22, 0x1380, 0xFFFF, 0xFFFF, "Cloud Storage Device(0x1380)"}, {0x1D22, 0x3684, 0xFFFF, 0xFFFF, "Kunlun AI Accelerator(0x3684)"}, {0x1D22, 0x3685, 0xFFFF, 0xFFFF, "Kunlun2 AI Accelerator [VF](0x3685)"}, }; /* pci_vid_1D22[] */ -pci_id_t pci_vid_1D26[] = { +static pci_id_t const pci_vid_1D26[] = { {0x1D26, 0xFFFF, 0xFFFF, 0xFFFF, "Kalray Inc.(0x1D26)"}, {0x1D26, 0x0040, 0xFFFF, 0xFFFF, "Turbocard2 Accelerator(0x0040)"}, {0x1D26, 0x0080, 0xFFFF, 0xFFFF, "Open Network Interface Card 80G(0x0080)"}, @@ -30742,7 +30909,7 @@ pci_id_t pci_vid_1D26[] = { {0x1D26, 0xE004, 0xFFFF, 0xFFFF, "AB01/EMB01 Development Board(0xE004)"}, }; /* pci_vid_1D26[] */ -pci_id_t pci_vid_1D37[] = { +static pci_id_t const pci_vid_1D37[] = { {0x1D37, 0xFFFF, 0xFFFF, 0xFFFF, "NovaSparks(0x1D37)"}, {0x1D37, 0x0013, 0xFFFF, 0xFFFF, "PM3(0x0013)"}, {0x1D37, 0x0014, 0xFFFF, 0xFFFF, "PM4(0x0014)"}, @@ -30750,70 +30917,74 @@ pci_id_t pci_vid_1D37[] = { {0x1D37, 0x0016, 0xFFFF, 0xFFFF, "PM4edge User Device(0x0016)"}, }; /* pci_vid_1D37[] */ -pci_id_t pci_vid_1D40[] = { +static pci_id_t const pci_vid_1D40[] = { {0x1D40, 0xFFFF, 0xFFFF, 0xFFFF, "Techman Electronics (Changshu) Co., Ltd.(0x1D40)"}, {0x1D40, 0x5501, 0xFFFF, 0xFFFF, "XC100C55-xxxx NVME SSD(0x5501)"}, {0x1D40, 0x5C01, 0xFFFF, 0xFFFF, "XC100C5C-xxxx, XC100E5C-xxxx NVME SSD(0x5C01)"}, {0x1D40, 0xB100, 0xFFFF, 0xFFFF, "PV100C55-xxxx NVME SSD(0xB100)"}, }; /* pci_vid_1D40[] */ -pci_id_t pci_vid_1D44[] = { +static pci_id_t const pci_vid_1D44[] = { {0x1D44, 0xFFFF, 0xFFFF, 0xFFFF, "DPT(0x1D44)"}, {0x1D44, 0xA400, 0xFFFF, 0xFFFF, "PM2x24/PM3224(0xA400)"}, }; /* pci_vid_1D44[] */ -pci_id_t pci_vid_1D49[] = { +static pci_id_t const pci_vid_1D49[] = { {0x1D49, 0xFFFF, 0xFFFF, 0xFFFF, "Lenovo(0x1D49)"}, -{0x1D49, 0x0522, 0xFFFF, 0xFFFF, "ThinkSystem RAID 5350-8i PCIe 12Gb Internal Adapter(0x0522)"}, }; /* pci_vid_1D49[] */ -pci_id_t pci_vid_1D4C[] = { +static pci_id_t const pci_vid_1D4C[] = { {0x1D4C, 0xFFFF, 0xFFFF, 0xFFFF, "Diamanti, Inc.(0x1D4C)"}, }; /* pci_vid_1D4C[] */ -pci_id_t pci_vid_1D5C[] = { +static pci_id_t const pci_vid_1D5C[] = { {0x1D5C, 0xFFFF, 0xFFFF, 0xFFFF, "Fantasia Trading LLC(0x1D5C)"}, }; /* pci_vid_1D5C[] */ -pci_id_t pci_vid_1D61[] = { +static pci_id_t const pci_vid_1D61[] = { {0x1D61, 0xFFFF, 0xFFFF, 0xFFFF, "Technobox, Inc.(0x1D61)"}, }; /* pci_vid_1D61[] */ -pci_id_t pci_vid_1D62[] = { +static pci_id_t const pci_vid_1D62[] = { {0x1D62, 0xFFFF, 0xFFFF, 0xFFFF, "Nebbiolo Technologies(0x1D62)"}, }; /* pci_vid_1D62[] */ -pci_id_t pci_vid_1D65[] = { +static pci_id_t const pci_vid_1D65[] = { {0x1D65, 0xFFFF, 0xFFFF, 0xFFFF, "Imagine Communications Corp.(0x1D65)"}, {0x1D65, 0x04DE, 0xFFFF, 0xFFFF, "Taurus/McKinley(0x04DE)"}, }; /* pci_vid_1D65[] */ -pci_id_t pci_vid_1D69[] = { +static pci_id_t const pci_vid_1D69[] = { {0x1D69, 0xFFFF, 0xFFFF, 0xFFFF, "Celeno Communications(0x1D69)"}, {0x1D69, 0x2432, 0xFFFF, 0xFFFF, "CL2432(0x2432)"}, {0x1D69, 0x2440, 0xFFFF, 0xFFFF, "CL2440(0x2440)"}, }; /* pci_vid_1D69[] */ -pci_id_t pci_vid_1D6A[] = { +static pci_id_t const pci_vid_1D6A[] = { {0x1D6A, 0xFFFF, 0xFFFF, 0xFFFF, "Aquantia Corp.(0x1D6A)"}, {0x1D6A, 0x0001, 0xFFFF, 0xFFFF, "AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x0001)"}, -{0x1D6A, 0x00B1, 0xFFFF, 0xFFFF, "AQC100 10G Ethernet MAC controller [AQtion](0x00B1)"}, -{0x1D6A, 0x07B1, 0xFFFF, 0xFFFF, "AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x07B1)"}, +{0x1D6A, 0x00B1, 0xFFFF, 0xFFFF, "AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G](0x00B1)"}, +{0x1D6A, 0x00C0, 0xFFFF, 0xFFFF, "Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample(0x00C0)"}, +{0x1D6A, 0x04C0, 0xFFFF, 0xFFFF, "AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G](0x04C0)"}, +{0x1D6A, 0x07B1, 0xFFFF, 0xFFFF, "AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G](0x07B1)"}, {0x1D6A, 0x07B1, 0x1BAA, 0x07B1, "QM2-2P10G1TA [QXG 10GbE Network Adapter](0x1BAA-0x07B1)"}, {0x1D6A, 0x07B1, 0x1BAA, 0x07B2, "QM2-2P10G1TA [QM2 Expansion Adapter](0x1BAA-0x07B2)"}, {0x1D6A, 0x08B1, 0xFFFF, 0xFFFF, "AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x08B1)"}, {0x1D6A, 0x11B1, 0xFFFF, 0xFFFF, "AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x11B1)"}, {0x1D6A, 0x12B1, 0xFFFF, 0xFFFF, "AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x12B1)"}, -{0x1D6A, 0x14C0, 0xFFFF, 0xFFFF, "AQC113C NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x14C0)"}, -{0x1D6A, 0x87B1, 0xFFFF, 0xFFFF, "AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x87B1)"}, -{0x1D6A, 0x94C0, 0xFFFF, 0xFFFF, "AQC113CS NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0x94C0)"}, +{0x1D6A, 0x12C0, 0xFFFF, 0xFFFF, "AQtion AQC115C NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 2.5G](0x12C0)"}, +{0x1D6A, 0x14C0, 0xFFFF, 0xFFFF, "AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig](0x14C0)"}, +{0x1D6A, 0x80B1, 0xFFFF, 0xFFFF, "AQtion AQC100S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G](0x80B1)"}, +{0x1D6A, 0x87B1, 0xFFFF, 0xFFFF, "AQtion AQC107S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G](0x87B1)"}, +{0x1D6A, 0x93C0, 0xFFFF, 0xFFFF, "AQtion AQC114CS NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 5G](0x93C0)"}, +{0x1D6A, 0x94C0, 0xFFFF, 0xFFFF, "AQtion AQC113CS NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G](0x94C0)"}, {0x1D6A, 0x94C0, 0x1043, 0x87F5, "ProArt X570-CREATOR WIFI(0x1043-0x87F5)"}, -{0x1D6A, 0xD107, 0xFFFF, 0xFFFF, "AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0xD107)"}, +{0x1D6A, 0xD107, 0xFFFF, 0xFFFF, "AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G](0xD107)"}, {0x1D6A, 0xD107, 0x1043, 0x8741, "XG-C100C(0x1043-0x8741)"}, {0x1D6A, 0xD108, 0xFFFF, 0xFFFF, "AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion](0xD108)"}, }; /* pci_vid_1D6A[] */ -pci_id_t pci_vid_1D6C[] = { +static pci_id_t const pci_vid_1D6C[] = { {0x1D6C, 0xFFFF, 0xFFFF, 0xFFFF, "Atomic Rules LLC(0x1D6C)"}, {0x1D6C, 0x1001, 0xFFFF, 0xFFFF, "A5PL-E1(0x1001)"}, {0x1D6C, 0x1002, 0xFFFF, 0xFFFF, "A5PL-E7(0x1002)"}, @@ -30852,14 +31023,17 @@ pci_id_t pci_vid_1D6C[] = { {0x1D6C, 0x1021, 0xFFFF, 0xFFFF, "AR-MGMT-PF [Board-Generic Management Physical Function](0x1021)"}, {0x1D6C, 0x1022, 0xFFFF, 0xFFFF, "AR-ARKA-FX2 [Arkville 128B DPDK Data Mover for Agilex](0x1022)"}, {0x1D6C, 0x1023, 0xFFFF, 0xFFFF, "AR-BD-FX1 [BufferDirect Zero-Bounce Data Motion Endpoint](0x1023)"}, +{0x1D6C, 0x1024, 0xFFFF, 0xFFFF, "AR-TK242 [2x10GbE Packet Capture Device](0x1024)"}, +{0x1D6C, 0x1025, 0xFFFF, 0xFFFF, "AR-TK242-FX2 [2x100GbE Gen5 Packet Capture Device](0x1025)"}, +{0x1D6C, 0x1026, 0xFFFF, 0xFFFF, "AR-TK242-FX2 [1x200GbE Gen5 Packet Capture Device](0x1026)"}, {0x1D6C, 0x4200, 0xFFFF, 0xFFFF, "A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument](0x4200)"}, }; /* pci_vid_1D6C[] */ -pci_id_t pci_vid_1D72[] = { +static pci_id_t const pci_vid_1D72[] = { {0x1D72, 0xFFFF, 0xFFFF, 0xFFFF, "Xiaomi(0x1D72)"}, }; /* pci_vid_1D72[] */ -pci_id_t pci_vid_1D78[] = { +static pci_id_t const pci_vid_1D78[] = { {0x1D78, 0xFFFF, 0xFFFF, 0xFFFF, "DERA Storage(0x1D78)"}, {0x1D78, 0x1512, 0xFFFF, 0xFFFF, "TAI NVMe Controller(0x1512)"}, {0x1D78, 0x1512, 0x1D78, 0x2004, "D5437 HHHL 2TB NVMe SSD(0x1D78-0x2004)"}, @@ -30924,7 +31098,7 @@ pci_id_t pci_vid_1D78[] = { {0x1D78, 0x1515, 0x1D78, 0x7208, "Aliflash V2 U.2 15mm 7.68TB NVMe SSD(0x1D78-0x7208)"}, }; /* pci_vid_1D78[] */ -pci_id_t pci_vid_1D79[] = { +static pci_id_t const pci_vid_1D79[] = { {0x1D79, 0xFFFF, 0xFFFF, 0xFFFF, "Transcend Information, Inc.(0x1D79)"}, {0x1D79, 0x2262, 0xFFFF, 0xFFFF, "NVMe PCIe SSD 220S/MTE662T2(0x2262)"}, {0x1D79, 0x2263, 0xFFFF, 0xFFFF, "NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less)(0x2263)"}, @@ -30933,12 +31107,12 @@ pci_id_t pci_vid_1D79[] = { {0x1D79, 0x5766, 0xFFFF, 0xFFFF, "NVMe PCIe SSD 110Q (DRAM-less)(0x5766)"}, }; /* pci_vid_1D79[] */ -pci_id_t pci_vid_1D7C[] = { +static pci_id_t const pci_vid_1D7C[] = { {0x1D7C, 0xFFFF, 0xFFFF, 0xFFFF, "Aerotech, Inc.(0x1D7C)"}, {0x1D7C, 0x0001, 0xFFFF, 0xFFFF, "HyperWire Adapter(0x0001)"}, }; /* pci_vid_1D7C[] */ -pci_id_t pci_vid_1D82[] = { +static pci_id_t const pci_vid_1D82[] = { {0x1D82, 0xFFFF, 0xFFFF, 0xFFFF, "NETINT Technologies Inc.(0x1D82)"}, {0x1D82, 0x0101, 0xFFFF, 0xFFFF, "Codensity D400 SSD(0x0101)"}, {0x1D82, 0x0102, 0xFFFF, 0xFFFF, "Codensity D408 PCIe Gen4 NVMe SSD(0x0102)"}, @@ -30946,7 +31120,7 @@ pci_id_t pci_vid_1D82[] = { {0x1D82, 0x0401, 0xFFFF, 0xFFFF, "Quadra Video Processing Unit (VPU)(0x0401)"}, }; /* pci_vid_1D82[] */ -pci_id_t pci_vid_1D87[] = { +static pci_id_t const pci_vid_1D87[] = { {0x1D87, 0xFFFF, 0xFFFF, 0xFFFF, "Rockchip Electronics Co., Ltd(0x1D87)"}, {0x1D87, 0x0100, 0xFFFF, 0xFFFF, "RK3399 PCI Express Root Port(0x0100)"}, {0x1D87, 0x1808, 0xFFFF, 0xFFFF, "RK1808 Neural Network Processor Card(0x1808)"}, @@ -30956,24 +31130,24 @@ pci_id_t pci_vid_1D87[] = { {0x1D87, 0x3588, 0xFFFF, 0xFFFF, "RK3588(0x3588)"}, }; /* pci_vid_1D87[] */ -pci_id_t pci_vid_1D89[] = { +static pci_id_t const pci_vid_1D89[] = { {0x1D89, 0xFFFF, 0xFFFF, 0xFFFF, "YEESTOR Microelectronics Co., Ltd(0x1D89)"}, {0x1D89, 0x0280, 0xFFFF, 0xFFFF, "PCIe NVMe SSD(0x0280)"}, }; /* pci_vid_1D89[] */ -pci_id_t pci_vid_1D8F[] = { +static pci_id_t const pci_vid_1D8F[] = { {0x1D8F, 0xFFFF, 0xFFFF, 0xFFFF, "Enyx(0x1D8F)"}, }; /* pci_vid_1D8F[] */ -pci_id_t pci_vid_1D92[] = { +static pci_id_t const pci_vid_1D92[] = { {0x1D92, 0xFFFF, 0xFFFF, 0xFFFF, "Abaco Systems Inc.(0x1D92)"}, }; /* pci_vid_1D92[] */ -pci_id_t pci_vid_1D93[] = { +static pci_id_t const pci_vid_1D93[] = { {0x1D93, 0xFFFF, 0xFFFF, 0xFFFF, "YADRO(0x1D93)"}, }; /* pci_vid_1D93[] */ -pci_id_t pci_vid_1D94[] = { +static pci_id_t const pci_vid_1D94[] = { {0x1D94, 0xFFFF, 0xFFFF, 0xFFFF, "Chengdu Haiguang IC Design Co., Ltd.(0x1D94)"}, {0x1D94, 0x1450, 0xFFFF, 0xFFFF, "Root Complex(0x1450)"}, {0x1D94, 0x1451, 0xFFFF, 0xFFFF, "I/O Memory Management Unit(0x1451)"}, @@ -31006,41 +31180,43 @@ pci_id_t pci_vid_1D94[] = { {0x1D94, 0x790E, 0xFFFF, 0xFFFF, "FCH LPC Bridge(0x790E)"}, }; /* pci_vid_1D94[] */ -pci_id_t pci_vid_1D95[] = { +static pci_id_t const pci_vid_1D95[] = { {0x1D95, 0xFFFF, 0xFFFF, 0xFFFF, "Graphcore Ltd(0x1D95)"}, {0x1D95, 0x0001, 0xFFFF, 0xFFFF, "Colossus GC2 [C2](0x0001)"}, {0x1D95, 0x0002, 0xFFFF, 0xFFFF, "Colossus GC1 [S1](0x0002)"}, }; /* pci_vid_1D95[] */ -pci_id_t pci_vid_1D97[] = { +static pci_id_t const pci_vid_1D97[] = { {0x1D97, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Longsys Electronics Co., Ltd.(0x1D97)"}, {0x1D97, 0x1062, 0xFFFF, 0xFFFF, "Lexar NM710 NVME SSD(0x1062)"}, {0x1D97, 0x1160, 0xFFFF, 0xFFFF, "FORESEE P900 BGA NVMe SSD (DRAM-less)(0x1160)"}, {0x1D97, 0x1202, 0xFFFF, 0xFFFF, "Lexar NM610 PRO NVME SSD (DRAM-less)(0x1202)"}, +{0x1D97, 0x1602, 0xFFFF, 0xFFFF, "Lexar NM790 NVME SSD (DRAM-less)(0x1602)"}, {0x1D97, 0x1D97, 0xFFFF, 0xFFFF, "Lexar NM620 NVME SSD (DRAM-less)(0x1D97)"}, {0x1D97, 0x2263, 0xFFFF, 0xFFFF, "SM2263EN/SM2263XT-based OEM NVME SSD (DRAM-less)(0x2263)"}, -{0x1D97, 0x2269, 0xFFFF, 0xFFFF, "Lexar NM760 NVME SSD (DRAM-less)(0x2269)"}, -{0x1D97, 0x5216, 0xFFFF, 0xFFFF, "Lexar NM620 NVME SSD (DRAM-less)(0x5216)"}, +{0x1D97, 0x2269, 0xFFFF, 0xFFFF, "FORESEE XP2000, Lexar NM760 NVME SSD (DRAM-less)(0x2269)"}, +{0x1D97, 0x5216, 0xFFFF, 0xFFFF, "FORESEE XP1000 / Lexar Professional CFexpress Type B Gold series, NM620 PCIe NVME SSD (DRAM-less)(0x5216)"}, +{0x1D97, 0x5220, 0xFFFF, 0xFFFF, "FORESEE XP2100 NVMe SSD (DRAM-less)(0x5220)"}, {0x1D97, 0x5236, 0xFFFF, 0xFFFF, "Lexar NM800 PRO NVME SSD(0x5236)"}, }; /* pci_vid_1D97[] */ -pci_id_t pci_vid_1D9B[] = { +static pci_id_t const pci_vid_1D9B[] = { {0x1D9B, 0xFFFF, 0xFFFF, 0xFFFF, "Meta Platforms, Inc.(0x1D9B)"}, {0x1D9B, 0x0010, 0xFFFF, 0xFFFF, "Networking DOM Engine(0x0010)"}, {0x1D9B, 0x0011, 0xFFFF, 0xFFFF, "IO Bridge(0x0011)"}, }; /* pci_vid_1D9B[] */ -pci_id_t pci_vid_1DA1[] = { +static pci_id_t const pci_vid_1DA1[] = { {0x1DA1, 0xFFFF, 0xFFFF, 0xFFFF, "Teko Telecom S.r.l.(0x1DA1)"}, }; /* pci_vid_1DA1[] */ -pci_id_t pci_vid_1DA2[] = { +static pci_id_t const pci_vid_1DA2[] = { {0x1DA2, 0xFFFF, 0xFFFF, 0xFFFF, "Sapphire Technology Limited(0x1DA2)"}, {0x1DA2, 0xE26A, 0xFFFF, 0xFFFF, "Radeon R7 250(0xE26A)"}, {0x1DA2, 0xE445, 0xFFFF, 0xFFFF, "Sapphire Radeon RX 6700(0xE445)"}, }; /* pci_vid_1DA2[] */ -pci_id_t pci_vid_1DA3[] = { +static pci_id_t const pci_vid_1DA3[] = { {0x1DA3, 0xFFFF, 0xFFFF, 0xFFFF, "Habana Labs Ltd.(0x1DA3)"}, {0x1DA3, 0x0001, 0xFFFF, 0xFFFF, "HL-1000 AI Inference Accelerator [Goya](0x0001)"}, {0x1DA3, 0x0030, 0xFFFF, 0xFFFF, "Greco AI Inference Accelerator(0x0030)"}, @@ -31049,21 +31225,22 @@ pci_id_t pci_vid_1DA3[] = { {0x1DA3, 0x1020, 0xFFFF, 0xFFFF, "Gaudi2 AI Training Accelerator(0x1020)"}, }; /* pci_vid_1DA3[] */ -pci_id_t pci_vid_1DA8[] = { +static pci_id_t const pci_vid_1DA8[] = { {0x1DA8, 0xFFFF, 0xFFFF, 0xFFFF, "Corigine, Inc.(0x1DA8)"}, {0x1DA8, 0x3800, 0xFFFF, 0xFFFF, "Network Flow Processor 3800(0x3800)"}, {0x1DA8, 0x3803, 0xFFFF, 0xFFFF, "Network Flow Processor 3800 Virtual Function(0x3803)"}, }; /* pci_vid_1DA8[] */ -pci_id_t pci_vid_1DAD[] = { +static pci_id_t const pci_vid_1DAD[] = { {0x1DAD, 0xFFFF, 0xFFFF, 0xFFFF, "Fungible(0x1DAD)"}, +{0x1DAD, 0x0108, 0xFFFF, 0xFFFF, "FC50, FC100, FC200 DPU NVMeoF Adapters(0x0108)"}, }; /* pci_vid_1DAD[] */ -pci_id_t pci_vid_1DB2[] = { +static pci_id_t const pci_vid_1DB2[] = { {0x1DB2, 0xFFFF, 0xFFFF, 0xFFFF, "ATP ELECTRONICS INC(0x1DB2)"}, }; /* pci_vid_1DB2[] */ -pci_id_t pci_vid_1DB7[] = { +static pci_id_t const pci_vid_1DB7[] = { {0x1DB7, 0xFFFF, 0xFFFF, 0xFFFF, "Phytium Technology Co., Ltd.(0x1DB7)"}, {0x1DB7, 0xDC20, 0xFFFF, 0xFFFF, "[X100 Series](0xDC20)"}, {0x1DB7, 0xDC21, 0xFFFF, 0xFFFF, "VPU Controller [X100 Series](0xDC21)"}, @@ -31089,15 +31266,17 @@ pci_id_t pci_vid_1DB7[] = { {0x1DB7, 0xDC3C, 0xFFFF, 0xFFFF, "GPU_DMA Controller [X100 Series](0xDC3C)"}, }; /* pci_vid_1DB7[] */ -pci_id_t pci_vid_1DBB[] = { +static pci_id_t const pci_vid_1DBB[] = { {0x1DBB, 0xFFFF, 0xFFFF, 0xFFFF, "NGD Systems, Inc.(0x1DBB)"}, }; /* pci_vid_1DBB[] */ -pci_id_t pci_vid_1DBE[] = { +static pci_id_t const pci_vid_1DBE[] = { {0x1DBE, 0xFFFF, 0xFFFF, 0xFFFF, "INNOGRIT Corporation(0x1DBE)"}, {0x1DBE, 0x5216, 0xFFFF, 0xFFFF, "NVMe SSD Controller IG5216 (DRAM-less)(0x5216)"}, {0x1DBE, 0x5220, 0xFFFF, 0xFFFF, "NVMe SSD Controller IG5220 (DRAM-less)(0x5220)"}, {0x1DBE, 0x5236, 0xFFFF, 0xFFFF, "NVMe SSD Controller IG5236(0x5236)"}, +{0x1DBE, 0x5236, 0x1DBE, 0x4001, "Dongting-B1 DC SSD M.2 480GB(0x1DBE-0x4001)"}, +{0x1DBE, 0x5236, 0x1DBE, 0x4002, "Dongting-B1 DC SSD M.2 960GB(0x1DBE-0x4002)"}, {0x1DBE, 0x5636, 0xFFFF, 0xFFFF, "NVMe DC SSD IG5636(0x5636)"}, {0x1DBE, 0x5636, 0x1DBE, 0x0001, "Dongting-N1 DC SSD U.2 1600GB(0x1DBE-0x0001)"}, {0x1DBE, 0x5636, 0x1DBE, 0x0002, "Dongting-N1 DC SSD U.2 1920GB(0x1DBE-0x0002)"}, @@ -31118,41 +31297,41 @@ pci_id_t pci_vid_1DBE[] = { {0x1DBE, 0x5638, 0x1DBE, 0x3002, "Donghu-Z2 DC ZNS SSD U.2 8000GB(0x1DBE-0x3002)"}, }; /* pci_vid_1DBE[] */ -pci_id_t pci_vid_1DBF[] = { +static pci_id_t const pci_vid_1DBF[] = { {0x1DBF, 0xFFFF, 0xFFFF, 0xFFFF, "Guizhou Huaxintong Semiconductor Technology Co., Ltd(0x1DBF)"}, {0x1DBF, 0x0401, 0xFFFF, 0xFFFF, "StarDragon4800 PCI Express Root Port(0x0401)"}, }; /* pci_vid_1DBF[] */ -pci_id_t pci_vid_1DC2[] = { +static pci_id_t const pci_vid_1DC2[] = { {0x1DC2, 0xFFFF, 0xFFFF, 0xFFFF, "Alco Digital Devices Limited(0x1DC2)"}, }; /* pci_vid_1DC2[] */ -pci_id_t pci_vid_1DC5[] = { +static pci_id_t const pci_vid_1DC5[] = { {0x1DC5, 0xFFFF, 0xFFFF, 0xFFFF, "FADU Inc.(0x1DC5)"}, {0x1DC5, 0x4081, 0xFFFF, 0xFFFF, "FC4121 PCIe 4.0 NVMe controller [DELTA](0x4081)"}, {0x1DC5, 0x6150, 0xFFFF, 0xFFFF, "FC3081 PCIe 3.0 NVMe controller [BRAVO](0x6150)"}, }; /* pci_vid_1DC5[] */ -pci_id_t pci_vid_1DCD[] = { +static pci_id_t const pci_vid_1DCD[] = { {0x1DCD, 0xFFFF, 0xFFFF, 0xFFFF, "Liqid Inc.(0x1DCD)"}, }; /* pci_vid_1DCD[] */ -pci_id_t pci_vid_1DCF[] = { +static pci_id_t const pci_vid_1DCF[] = { {0x1DCF, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Sinead Technology Co., Ltd.(0x1DCF)"}, }; /* pci_vid_1DCF[] */ -pci_id_t pci_vid_1DD3[] = { +static pci_id_t const pci_vid_1DD3[] = { {0x1DD3, 0xFFFF, 0xFFFF, 0xFFFF, "Sage Microelectronics Corp.(0x1DD3)"}, }; /* pci_vid_1DD3[] */ -pci_id_t pci_vid_1DD4[] = { +static pci_id_t const pci_vid_1DD4[] = { {0x1DD4, 0xFFFF, 0xFFFF, 0xFFFF, "Swissbit AG(0x1DD4)"}, {0x1DD4, 0x0010, 0xFFFF, 0xFFFF, "N-10m2 NVMe SSD(0x0010)"}, {0x1DD4, 0x0016, 0xFFFF, 0xFFFF, "N-16(0x0016)"}, {0x1DD4, 0x0020, 0xFFFF, 0xFFFF, "EN-20 BGA NVMe SSD (DRAM-less)(0x0020)"}, }; /* pci_vid_1DD4[] */ -pci_id_t pci_vid_1DD8[] = { +static pci_id_t const pci_vid_1DD8[] = { {0x1DD8, 0xFFFF, 0xFFFF, 0xFFFF, "AMD Pensando Systems(0x1DD8)"}, {0x1DD8, 0x0002, 0xFFFF, 0xFFFF, "DSC2 Elba Upstream Port(0x0002)"}, {0x1DD8, 0x0002, 0x1DD8, 0x100E, "Distributed Services Card(0x1DD8-0x100E)"}, @@ -31373,11 +31552,11 @@ pci_id_t pci_vid_1DD8[] = { {0x1DD8, 0x100D, 0x1DD8, 0x500F, "DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T(0x1DD8-0x500F)"}, }; /* pci_vid_1DD8[] */ -pci_id_t pci_vid_1DDD[] = { +static pci_id_t const pci_vid_1DDD[] = { {0x1DDD, 0xFFFF, 0xFFFF, 0xFFFF, "Thorlabs(0x1DDD)"}, }; /* pci_vid_1DDD[] */ -pci_id_t pci_vid_1DE0[] = { +static pci_id_t const pci_vid_1DE0[] = { {0x1DE0, 0xFFFF, 0xFFFF, 0xFFFF, "Groq(0x1DE0)"}, {0x1DE0, 0x0000, 0xFFFF, 0xFFFF, "TSP [GroqChip](0x0000)"}, {0x1DE0, 0x0000, 0x1DE0, 0x0000, "GC1-010X-ES [GroqCard](0x1DE0-0x0000)"}, @@ -31386,7 +31565,7 @@ pci_id_t pci_vid_1DE0[] = { {0x1DE0, 0x0000, 0x1DE0, 0xC007, "GC1-0100 [GroqCard](0x1DE0-0xC007)"}, }; /* pci_vid_1DE0[] */ -pci_id_t pci_vid_1DE1[] = { +static pci_id_t const pci_vid_1DE1[] = { {0x1DE1, 0xFFFF, 0xFFFF, 0xFFFF, "Tekram Technology Co.,Ltd.(0x1DE1)"}, {0x1DE1, 0x0391, 0xFFFF, 0xFFFF, "TRM-S1040 [DC-315 / DC-395 series](0x0391)"}, {0x1DE1, 0x2020, 0xFFFF, 0xFFFF, "DC-390 Series SCSI Adapter [AMD Am53C974](0x2020)"}, @@ -31394,14 +31573,19 @@ pci_id_t pci_vid_1DE1[] = { {0x1DE1, 0xDC29, 0xFFFF, 0xFFFF, "DC290(0xDC29)"}, }; /* pci_vid_1DE1[] */ -pci_id_t pci_vid_1DE5[] = { +static pci_id_t const pci_vid_1DE4[] = { +{0x1DE4, 0xFFFF, 0xFFFF, 0xFFFF, "Raspberry Pi Ltd(0x1DE4)"}, +{0x1DE4, 0x0001, 0xFFFF, 0xFFFF, "RP1 PCIe 2.0 South Bridge(0x0001)"}, +}; /* pci_vid_1DE4[] */ + +static pci_id_t const pci_vid_1DE5[] = { {0x1DE5, 0xFFFF, 0xFFFF, 0xFFFF, "Eideticom, Inc(0x1DE5)"}, {0x1DE5, 0x1000, 0xFFFF, 0xFFFF, "IO Memory Controller(0x1000)"}, {0x1DE5, 0x2000, 0xFFFF, 0xFFFF, "NoLoad Hardware Development Kit(0x2000)"}, {0x1DE5, 0x3000, 0xFFFF, 0xFFFF, "eBPF-based PCIe Accelerator(0x3000)"}, }; /* pci_vid_1DE5[] */ -pci_id_t pci_vid_1DED[] = { +static pci_id_t const pci_vid_1DED[] = { {0x1DED, 0xFFFF, 0xFFFF, 0xFFFF, "Alibaba (China) Co., Ltd.(0x1DED)"}, {0x1DED, 0x107F, 0xFFFF, 0xFFFF, "Elastic RDMA Adapter(0x107F)"}, {0x1DED, 0x5007, 0xFFFF, 0xFFFF, "Elastic RDMA Adapter(0x5007)"}, @@ -31412,13 +31596,14 @@ pci_id_t pci_vid_1DED[] = { {0x1DED, 0x8004, 0xFFFF, 0xFFFF, "RCEC VF(0x8004)"}, }; /* pci_vid_1DED[] */ -pci_id_t pci_vid_1DEE[] = { +static pci_id_t const pci_vid_1DEE[] = { {0x1DEE, 0xFFFF, 0xFFFF, 0xFFFF, "Biwin Storage Technology Co., Ltd.(0x1DEE)"}, {0x1DEE, 0x2262, 0xFFFF, 0xFFFF, "HP EX950 NVMe SSD(0x2262)"}, {0x1DEE, 0x2263, 0xFFFF, 0xFFFF, "HP EX900 NVMe SSD (DRAM-less)(0x2263)"}, +{0x1DEE, 0x5216, 0xFFFF, 0xFFFF, "KingSpec NX series NVMe SSD (DRAM-less)(0x5216)"}, }; /* pci_vid_1DEE[] */ -pci_id_t pci_vid_1DEF[] = { +static pci_id_t const pci_vid_1DEF[] = { {0x1DEF, 0xFFFF, 0xFFFF, 0xFFFF, "Ampere Computing, LLC(0x1DEF)"}, {0x1DEF, 0xE005, 0xFFFF, 0xFFFF, "eMAG PCI Express Root Port 0(0xE005)"}, {0x1DEF, 0xE006, 0xFFFF, 0xFFFF, "eMAG PCI Express Root Port 1(0xE006)"}, @@ -31448,7 +31633,7 @@ pci_id_t pci_vid_1DEF[] = { {0x1DEF, 0xE118, 0xFFFF, 0xFFFF, "Altra PCI Express Root Port b7(0xE118)"}, }; /* pci_vid_1DEF[] */ -pci_id_t pci_vid_1DF3[] = { +static pci_id_t const pci_vid_1DF3[] = { {0x1DF3, 0xFFFF, 0xFFFF, 0xFFFF, "Ethernity Networks(0x1DF3)"}, {0x1DF3, 0x0201, 0xFFFF, 0xFFFF, "ACE-NIC40 Programmable Network Accelerator(0x0201)"}, {0x1DF3, 0x0201, 0x1DF3, 0x0001, "ENA1040(0x1DF3-0x0001)"}, @@ -31480,19 +31665,19 @@ pci_id_t pci_vid_1DF3[] = { {0x1DF3, 0x0208, 0x1DF3, 0x0001, "ENA2100RN(0x1DF3-0x0001)"}, }; /* pci_vid_1DF3[] */ -pci_id_t pci_vid_1DF5[] = { +static pci_id_t const pci_vid_1DF5[] = { {0x1DF5, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen TIGO Semiconductor(0x1DF5)"}, {0x1DF5, 0x1202, 0xFFFF, 0xFFFF, "kimtigo NVMe SSD (DRAM-less)(0x1202)"}, }; /* pci_vid_1DF5[] */ -pci_id_t pci_vid_1DF7[] = { +static pci_id_t const pci_vid_1DF7[] = { {0x1DF7, 0xFFFF, 0xFFFF, 0xFFFF, "opencpi.org(0x1DF7)"}, {0x1DF7, 0x0001, 0xFFFF, 0xFFFF, "ml605(0x0001)"}, {0x1DF7, 0x0002, 0xFFFF, 0xFFFF, "alst4(0x0002)"}, {0x1DF7, 0x0003, 0xFFFF, 0xFFFF, "alst4x(0x0003)"}, }; /* pci_vid_1DF7[] */ -pci_id_t pci_vid_1DF8[] = { +static pci_id_t const pci_vid_1DF8[] = { {0x1DF8, 0xFFFF, 0xFFFF, 0xFFFF, "V&G Information System Co.,Ltd(0x1DF8)"}, {0x1DF8, 0x3000, 0xFFFF, 0xFFFF, "PC NVMe SSD(0x3000)"}, {0x1DF8, 0x3000, 0x1DF8, 0x3100, "M.2 NVMe Gen3*4 SSD(0x1DF8-0x3100)"}, @@ -31504,16 +31689,16 @@ pci_id_t pci_vid_1DF8[] = { {0x1DF8, 0xD000, 0x1DF8, 0xD600, "M.2 NVMe SSD(0x1DF8-0xD600)"}, }; /* pci_vid_1DF8[] */ -pci_id_t pci_vid_1DFC[] = { +static pci_id_t const pci_vid_1DFC[] = { {0x1DFC, 0xFFFF, 0xFFFF, 0xFFFF, "JSC NT-COM(0x1DFC)"}, {0x1DFC, 0x1181, 0xFFFF, 0xFFFF, "TDM 8 Port E1/T1/J1 Adapter(0x1181)"}, }; /* pci_vid_1DFC[] */ -pci_id_t pci_vid_1E0D[] = { +static pci_id_t const pci_vid_1E0D[] = { {0x1E0D, 0xFFFF, 0xFFFF, 0xFFFF, "SambaNova Systems, Inc(0x1E0D)"}, }; /* pci_vid_1E0D[] */ -pci_id_t pci_vid_1E0F[] = { +static pci_id_t const pci_vid_1E0F[] = { {0x1E0F, 0xFFFF, 0xFFFF, 0xFFFF, "KIOXIA Corporation(0x1E0F)"}, {0x1E0F, 0x0001, 0xFFFF, 0xFFFF, "NVMe SSD Controller BG4 (DRAM-less)(0x0001)"}, {0x1E0F, 0x0007, 0xFFFF, 0xFFFF, "NVMe SSD Controller Cx6(0x0007)"}, @@ -31606,17 +31791,26 @@ pci_id_t pci_vid_1E0F[] = { {0x1E0F, 0x0025, 0x1028, 0x223C, "Ent NVMe CM7 U.2 MU 6.4TB(0x1028-0x223C)"}, {0x1E0F, 0x0025, 0x1028, 0x223D, "Ent NVMe CM7 U.2 MU 3.2TB(0x1028-0x223D)"}, {0x1E0F, 0x0025, 0x1028, 0x223E, "Ent NVMe CM7 U.2 MU 1.6TB(0x1028-0x223E)"}, +{0x1E0F, 0x002C, 0xFFFF, 0xFFFF, "NVMe SSD Controller CD8P EDSFF(0x002C)"}, +{0x1E0F, 0x002C, 0x1028, 0x22BF, "DC NVMe CD8P E3.S 15.36TB(0x1028-0x22BF)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C0, "DC NVMe CD8P E3.S 7.68TB(0x1028-0x22C0)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C1, "DC NVMe CD8P E3.S 3.84TB(0x1028-0x22C1)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C2, "DC NVMe CD8P E3.S 1.92TB(0x1028-0x22C2)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C7, "DC NVMe CD8P E3.S MU 12.8TB(0x1028-0x22C7)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C8, "DC NVMe CD8P E3.S MU 6.4TB(0x1028-0x22C8)"}, +{0x1E0F, 0x002C, 0x1028, 0x22C9, "DC NVMe CD8P E3.S MU 3.2TB(0x1028-0x22C9)"}, +{0x1E0F, 0x002C, 0x1028, 0x22CA, "DC NVMe CD8P E3.S MU 1.6TB(0x1028-0x22CA)"}, }; /* pci_vid_1E0F[] */ -pci_id_t pci_vid_1E17[] = { +static pci_id_t const pci_vid_1E17[] = { {0x1E17, 0xFFFF, 0xFFFF, 0xFFFF, "Arnold & Richter Cine Technik GmbH & Co. Betriebs KG(0x1E17)"}, }; /* pci_vid_1E17[] */ -pci_id_t pci_vid_1E18[] = { +static pci_id_t const pci_vid_1E18[] = { {0x1E18, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing GuangRunTong Technology Development Co.,Ltd(0x1E18)"}, }; /* pci_vid_1E18[] */ -pci_id_t pci_vid_1E24[] = { +static pci_id_t const pci_vid_1E24[] = { {0x1E24, 0xFFFF, 0xFFFF, 0xFFFF, "Squirrels Research Labs(0x1E24)"}, {0x1E24, 0x0101, 0xFFFF, 0xFFFF, "Acorn CLE-101(0x0101)"}, {0x1E24, 0x0215, 0xFFFF, 0xFFFF, "Acorn CLE-215(0x0215)"}, @@ -31627,11 +31821,11 @@ pci_id_t pci_vid_1E24[] = { {0x1E24, 0x1635, 0xFFFF, 0xFFFF, "JCM35(0x1635)"}, }; /* pci_vid_1E24[] */ -pci_id_t pci_vid_1E26[] = { +static pci_id_t const pci_vid_1E26[] = { {0x1E26, 0xFFFF, 0xFFFF, 0xFFFF, "Fujitsu Client Computing Limited(0x1E26)"}, }; /* pci_vid_1E26[] */ -pci_id_t pci_vid_1E36[] = { +static pci_id_t const pci_vid_1E36[] = { {0x1E36, 0xFFFF, 0xFFFF, 0xFFFF, "Shanghai Enflame Technology Co. Ltd(0x1E36)"}, {0x1E36, 0x0001, 0xFFFF, 0xFFFF, "T10 [CloudBlazer](0x0001)"}, {0x1E36, 0x0002, 0xFFFF, 0xFFFF, "T11 [CloudBlazer](0x0002)"}, @@ -31650,22 +31844,24 @@ pci_id_t pci_vid_1E36[] = { {0x1E36, 0xC033, 0xFFFF, 0xFFFF, "S60 [Enflame](0xC033)"}, }; /* pci_vid_1E36[] */ -pci_id_t pci_vid_1E38[] = { +static pci_id_t const pci_vid_1E38[] = { {0x1E38, 0xFFFF, 0xFFFF, 0xFFFF, "Blaize, Inc(0x1E38)"}, {0x1E38, 0x0102, 0xFFFF, 0xFFFF, "Xplorer X1600(0x0102)"}, }; /* pci_vid_1E38[] */ -pci_id_t pci_vid_1E39[] = { +static pci_id_t const pci_vid_1E39[] = { {0x1E39, 0xFFFF, 0xFFFF, 0xFFFF, "MEDION AG(0x1E39)"}, }; /* pci_vid_1E39[] */ -pci_id_t pci_vid_1E3A[] = { +static pci_id_t const pci_vid_1E3A[] = { {0x1E3A, 0xFFFF, 0xFFFF, 0xFFFF, "Cactus Technologies Limited(0x1E3A)"}, +{0x1E3A, 0x2263, 0xFFFF, 0xFFFF, "270PM6, 270PM7 series NVMe SSD(0x2263)"}, }; /* pci_vid_1E3A[] */ -pci_id_t pci_vid_1E3B[] = { +static pci_id_t const pci_vid_1E3B[] = { {0x1E3B, 0xFFFF, 0xFFFF, 0xFFFF, "DapuStor Corporation(0x1E3B)"}, {0x1E3B, 0x0600, 0xFFFF, 0xFFFF, "NVMe SSD Controller DP600(0x0600)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x0006, "Enterprise NVMe SSD U.2 QDP 7.68TB (J5000)(0x1E3B-0x0006)"}, {0x1E3B, 0x0600, 0x1E3B, 0x0010, "Enterprise NVMe SSD U.2 3.84TB (R5102)(0x1E3B-0x0010)"}, {0x1E3B, 0x0600, 0x1E3B, 0x0013, "Enterprise NVMe SSD U.2 3.20TB (R5302)(0x1E3B-0x0013)"}, {0x1E3B, 0x0600, 0x1E3B, 0x0030, "Enterprise NVMe SSD U.2 3.84TB (J5100)(0x1E3B-0x0030)"}, @@ -31700,6 +31896,21 @@ pci_id_t pci_vid_1E3B[] = { {0x1E3B, 0x0600, 0x1E3B, 0x0069, "Enterprise NVMe SSD U.2 3.20TB (R5301D)(0x1E3B-0x0069)"}, {0x1E3B, 0x0600, 0x1E3B, 0x006C, "Enterprise NVMe SSD U.2 1.92TB (R5101)(0x1E3B-0x006C)"}, {0x1E3B, 0x0600, 0x1E3B, 0x006D, "Enterprise NVMe SSD U.2 1.60TB (J5301)(0x1E3B-0x006D)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00B9, "Enterprise NVMe SSD U.2 QDP 25.60TB (R5300)(0x1E3B-0x00B9)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00BE, "Enterprise NVMe SSD U.2 QDP 30.72TB (R5100)(0x1E3B-0x00BE)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00C1, "Enterprise NVMe SSD U.2 QDP 25.60TB (R5300D)(0x1E3B-0x00C1)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00C4, "Enterprise NVMe SSD U.2 QDP 30.72TB (R5100D)(0x1E3B-0x00C4)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00C9, "Enterprise NVMe SSD U.2 15.36TB (J5000)(0x1E3B-0x00C9)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CA, "Enterprise NVMe SSD U.2 3.84TB (J5102)(0x1E3B-0x00CA)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CB, "Enterprise NVMe SSD U.2 7.68TB (J5102)(0x1E3B-0x00CB)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CC, "Enterprise NVMe SSD U.2 3.84TB (J5101)(0x1E3B-0x00CC)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CD, "Enterprise NVMe SSD U.2 7.68TB (J5101)(0x1E3B-0x00CD)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CE, "Enterprise NVMe SSD U.2 3.84TB (J5101D)(0x1E3B-0x00CE)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00CF, "Enterprise NVMe SSD U.2 7.68TB (J5101D)(0x1E3B-0x00CF)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00E8, "Enterprise NVMe SSD U.2 3.20TB (J5301)(0x1E3B-0x00E8)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00E9, "Enterprise NVMe SSD U.2 6.40TB (J5301)(0x1E3B-0x00E9)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00EA, "Enterprise NVMe SSD U.2 3.20TB (J5301D)(0x1E3B-0x00EA)"}, +{0x1E3B, 0x0600, 0x1E3B, 0x00EB, "Enterprise NVMe SSD U.2 6.40TB (J5301D)(0x1E3B-0x00EB)"}, {0x1E3B, 0x0600, 0x1E3B, 0x00F0, "Enterprise NVMe SSD U.2 0.40TB (X2900)(0x1E3B-0x00F0)"}, {0x1E3B, 0x0600, 0x1E3B, 0x00F1, "Enterprise NVMe SSD U.2 0.80TB (X2900)(0x1E3B-0x00F1)"}, {0x1E3B, 0x0600, 0x1E3B, 0x00F2, "Enterprise NVMe SSD U.2 1.60TB (X2900)(0x1E3B-0x00F2)"}, @@ -31744,22 +31955,22 @@ pci_id_t pci_vid_1E3B[] = { {0x1E3B, 0x1333, 0x1E3B, 0x0085, "Enterprise NVMe SSD U.2 6.4TB (H5300)(0x1E3B-0x0085)"}, }; /* pci_vid_1E3B[] */ -pci_id_t pci_vid_1E3D[] = { +static pci_id_t const pci_vid_1E3D[] = { {0x1E3D, 0xFFFF, 0xFFFF, 0xFFFF, "Burlywood, Inc(0x1E3D)"}, }; /* pci_vid_1E3D[] */ -pci_id_t pci_vid_1E43[] = { +static pci_id_t const pci_vid_1E43[] = { {0x1E43, 0xFFFF, 0xFFFF, 0xFFFF, "MaxLinear Inc(0x1E43)"}, {0x1E43, 0x8904, 0xFFFF, 0xFFFF, "MxL8904(0x8904)"}, {0x1E43, 0x8906, 0xFFFF, 0xFFFF, "MxL8906(0x8906)"}, {0x1E43, 0x8908, 0xFFFF, 0xFFFF, "MxL8908(0x8908)"}, }; /* pci_vid_1E43[] */ -pci_id_t pci_vid_1E44[] = { +static pci_id_t const pci_vid_1E44[] = { {0x1E44, 0xFFFF, 0xFFFF, 0xFFFF, "Valve Software(0x1E44)"}, }; /* pci_vid_1E44[] */ -pci_id_t pci_vid_1E49[] = { +static pci_id_t const pci_vid_1E49[] = { {0x1E49, 0xFFFF, 0xFFFF, 0xFFFF, "Yangtze Memory Technologies Co.,Ltd(0x1E49)"}, {0x1E49, 0x0001, 0xFFFF, 0xFFFF, "ZHITAI PC005 NVMe SSD(0x0001)"}, {0x1E49, 0x0021, 0xFFFF, 0xFFFF, "ZHITAI TiPro5000 NVMe SSD(0x0021)"}, @@ -31771,91 +31982,92 @@ pci_id_t pci_vid_1E49[] = { {0x1E49, 0x1031, 0xFFFF, 0xFFFF, "PC300 NVMe SSD (DRAM-less)(0x1031)"}, }; /* pci_vid_1E49[] */ -pci_id_t pci_vid_1E4B[] = { +static pci_id_t const pci_vid_1E4B[] = { {0x1E4B, 0xFFFF, 0xFFFF, 0xFFFF, "MAXIO Technology (Hangzhou) Ltd.(0x1E4B)"}, {0x1E4B, 0x1001, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1001(0x1001)"}, -{0x1E4B, 0x1002, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1002(0x1002)"}, +{0x1E4B, 0x1002, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1002 (DRAM-less)(0x1002)"}, {0x1E4B, 0x1003, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1003(0x1003)"}, {0x1E4B, 0x1201, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1201(0x1201)"}, -{0x1E4B, 0x1202, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1202(0x1202)"}, +{0x1E4B, 0x1202, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1202 (DRAM-less)(0x1202)"}, {0x1E4B, 0x1601, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1601(0x1601)"}, -{0x1E4B, 0x1602, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1602(0x1602)"}, +{0x1E4B, 0x1602, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1602 (DRAM-less)(0x1602)"}, +{0x1E4B, 0x1608, 0xFFFF, 0xFFFF, "NVMe SSD Controller MAP1608 (DRAM-less)(0x1608)"}, }; /* pci_vid_1E4B[] */ -pci_id_t pci_vid_1E4C[] = { +static pci_id_t const pci_vid_1E4C[] = { {0x1E4C, 0xFFFF, 0xFFFF, 0xFFFF, "GSI Technology(0x1E4C)"}, {0x1E4C, 0x0010, 0xFFFF, 0xFFFF, "Associative Processing Unit [Leda](0x0010)"}, {0x1E4C, 0x0010, 0x1E4C, 0x0120, "SE120(0x1E4C-0x0120)"}, }; /* pci_vid_1E4C[] */ -pci_id_t pci_vid_1E50[] = { +static pci_id_t const pci_vid_1E50[] = { {0x1E50, 0xFFFF, 0xFFFF, 0xFFFF, "IP3 Tech (HK) Limited(0x1E50)"}, }; /* pci_vid_1E50[] */ -pci_id_t pci_vid_1E52[] = { +static pci_id_t const pci_vid_1E52[] = { {0x1E52, 0xFFFF, 0xFFFF, 0xFFFF, "Tenstorrent Inc(0x1E52)"}, {0x1E52, 0x401E, 0xFFFF, 0xFFFF, "Wormhole(0x401E)"}, {0x1E52, 0xB140, 0xFFFF, 0xFFFF, "Blackhole(0xB140)"}, {0x1E52, 0xFACA, 0xFFFF, 0xFFFF, "Grayskull(0xFACA)"}, }; /* pci_vid_1E52[] */ -pci_id_t pci_vid_1E57[] = { +static pci_id_t const pci_vid_1E57[] = { {0x1E57, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Panyi Technology Co., Ltd(0x1E57)"}, {0x1E57, 0x0100, 0xFFFF, 0xFFFF, "The device has already been deleted.(0x0100)"}, {0x1E57, 0x0100, 0x0000, 0x0100, "PY8800 64GB Accelerator(0x0000-0x0100)"}, }; /* pci_vid_1E57[] */ -pci_id_t pci_vid_1E59[] = { +static pci_id_t const pci_vid_1E59[] = { {0x1E59, 0xFFFF, 0xFFFF, 0xFFFF, "Oxford Nanopore Technologies(0x1E59)"}, {0x1E59, 0x0001, 0xFFFF, 0xFFFF, "MinION Mk1C(0x0001)"}, }; /* pci_vid_1E59[] */ -pci_id_t pci_vid_1E5D[] = { +static pci_id_t const pci_vid_1E5D[] = { {0x1E5D, 0xFFFF, 0xFFFF, 0xFFFF, "ASR Microelectronics(0x1E5D)"}, {0x1E5D, 0x7000, 0xFFFF, 0xFFFF, "AI controller A7000(0x7000)"}, {0x1E5D, 0x7010, 0xFFFF, 0xFFFF, "AI controller A7010(0x7010)"}, }; /* pci_vid_1E5D[] */ -pci_id_t pci_vid_1E60[] = { +static pci_id_t const pci_vid_1E60[] = { {0x1E60, 0xFFFF, 0xFFFF, 0xFFFF, "Hailo Technologies Ltd.(0x1E60)"}, {0x1E60, 0x2864, 0xFFFF, 0xFFFF, "Hailo-8 AI Processor(0x2864)"}, }; /* pci_vid_1E60[] */ -pci_id_t pci_vid_1E67[] = { +static pci_id_t const pci_vid_1E67[] = { {0x1E67, 0xFFFF, 0xFFFF, 0xFFFF, "Untether AI(0x1E67)"}, {0x1E67, 0x0002, 0xFFFF, 0xFFFF, "runAI200 AI Inference Accelerator(0x0002)"}, }; /* pci_vid_1E67[] */ -pci_id_t pci_vid_1E68[] = { +static pci_id_t const pci_vid_1E68[] = { {0x1E68, 0xFFFF, 0xFFFF, 0xFFFF, "Jiangsu Xinsheng Intelligent Technology Co., Ltd(0x1E68)"}, {0x1E68, 0x8111, 0xFFFF, 0xFFFF, "EP2000Pro PCIe 3 NVMe SSD (DRAM-less)(0x8111)"}, }; /* pci_vid_1E68[] */ -pci_id_t pci_vid_1E6B[] = { +static pci_id_t const pci_vid_1E6B[] = { {0x1E6B, 0xFFFF, 0xFFFF, 0xFFFF, "Axiado Corp.(0x1E6B)"}, }; /* pci_vid_1E6B[] */ -pci_id_t pci_vid_1E7B[] = { +static pci_id_t const pci_vid_1E7B[] = { {0x1E7B, 0xFFFF, 0xFFFF, 0xFFFF, "Dataland(0x1E7B)"}, }; /* pci_vid_1E7B[] */ -pci_id_t pci_vid_1E7C[] = { +static pci_id_t const pci_vid_1E7C[] = { {0x1E7C, 0xFFFF, 0xFFFF, 0xFFFF, "Brainchip Inc(0x1E7C)"}, {0x1E7C, 0xBCA1, 0xFFFF, 0xFFFF, "AKD1000 Neural Network Coprocessor [Akida](0xBCA1)"}, }; /* pci_vid_1E7C[] */ -pci_id_t pci_vid_1E7E[] = { +static pci_id_t const pci_vid_1E7E[] = { {0x1E7E, 0xFFFF, 0xFFFF, 0xFFFF, "Pliops(0x1E7E)"}, {0x1E7E, 0x9034, 0xFFFF, 0xFFFF, "Pliops Extreme Data Processor [XDP1.0](0x9034)"}, }; /* pci_vid_1E7E[] */ -pci_id_t pci_vid_1E7F[] = { +static pci_id_t const pci_vid_1E7F[] = { {0x1E7F, 0xFFFF, 0xFFFF, 0xFFFF, "Jiangsu Huacun Elec. Tech. Co., Ltd.(0x1E7F)"}, {0x1E7F, 0x6002, 0xFFFF, 0xFFFF, "MMY MMSP350 PCIe 3 NVMe SSD (DRAM-less)(0x6002)"}, {0x1E7F, 0x6003, 0xFFFF, 0xFFFF, "MMY HC512GP3KH2T PCIe 3 NVMe SSD (DRAM-less)(0x6003)"}, }; /* pci_vid_1E7F[] */ -pci_id_t pci_vid_1E81[] = { +static pci_id_t const pci_vid_1E81[] = { {0x1E81, 0xFFFF, 0xFFFF, 0xFFFF, "Ramaxel Technology(Shenzhen) Limited(0x1E81)"}, {0x1E81, 0x1203, 0xFFFF, 0xFFFF, "NVMe SSD Controller UHXXXa series(0x1203)"}, {0x1E81, 0x1203, 0x1E81, 0xA121, "NVMe SSD UHXXXa series U.2 960GB(0x1E81-0xA121)"}, @@ -31871,91 +32083,102 @@ pci_id_t pci_vid_1E81[] = { {0x1E81, 0x6206, 0xFFFF, 0xFFFF, "AM620 NVMe SSD(0x6206)"}, }; /* pci_vid_1E81[] */ -pci_id_t pci_vid_1E83[] = { +static pci_id_t const pci_vid_1E83[] = { {0x1E83, 0xFFFF, 0xFFFF, 0xFFFF, "Huaqin Technology Co.Ltd(0x1E83)"}, }; /* pci_vid_1E83[] */ -pci_id_t pci_vid_1E85[] = { +static pci_id_t const pci_vid_1E85[] = { {0x1E85, 0xFFFF, 0xFFFF, 0xFFFF, "Heitec AG(0x1E85)"}, }; /* pci_vid_1E85[] */ -pci_id_t pci_vid_1E89[] = { +static pci_id_t const pci_vid_1E89[] = { {0x1E89, 0xFFFF, 0xFFFF, 0xFFFF, "ID Quantique SA(0x1E89)"}, {0x1E89, 0x0002, 0xFFFF, 0xFFFF, "Quantis-PCIe-40M(0x0002)"}, {0x1E89, 0x0003, 0xFFFF, 0xFFFF, "Quantis-PCIe-240M(0x0003)"}, }; /* pci_vid_1E89[] */ -pci_id_t pci_vid_1E93[] = { +static pci_id_t const pci_vid_1E93[] = { {0x1E93, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Bytedance Network Technology Co., Ltd.(0x1E93)"}, }; /* pci_vid_1E93[] */ -pci_id_t pci_vid_1E94[] = { +static pci_id_t const pci_vid_1E94[] = { {0x1E94, 0xFFFF, 0xFFFF, 0xFFFF, "Calian SED(0x1E94)"}, }; /* pci_vid_1E94[] */ -pci_id_t pci_vid_1E95[] = { +static pci_id_t const pci_vid_1E95[] = { {0x1E95, 0xFFFF, 0xFFFF, 0xFFFF, "Solid State Storage Technology Corporation(0x1E95)"}, +{0x1E95, 0x1000, 0xFFFF, 0xFFFF, "XA1-311024 NVMe SSD M.2(0x1000)"}, +{0x1E95, 0x1001, 0xFFFF, 0xFFFF, "CA6-8D512 NVMe SSD M.2(0x1001)"}, {0x1E95, 0x1002, 0xFFFF, 0xFFFF, "NVMe SSD [3DNAND] 2.5\" U.2 (LJ1)(0x1002)"}, {0x1E95, 0x1002, 0x1E95, 0x1101, "NVMe SSD [3DNAND] 2.5\" U.2 (LJ1)(0x1E95-0x1101)"}, {0x1E95, 0x1002, 0x1EA0, 0x5636, "TP1500 Series U.2 NVMe Datacenter SSD(0x1EA0-0x5636)"}, {0x1E95, 0x1003, 0xFFFF, 0xFFFF, "CLR-8W512 NVMe SSD M.2 (DRAM-less)(0x1003)"}, +{0x1E95, 0x1005, 0xFFFF, 0xFFFF, "PLEXTOR M10P(GN) NVMe SSD M.2(0x1005)"}, {0x1E95, 0x1007, 0xFFFF, 0xFFFF, "CL4-8D512 NVMe SSD M.2 (DRAM-less)(0x1007)"}, +{0x1E95, 0x1008, 0xFFFF, 0xFFFF, "CL5-8D512 NVMe SSD M.2 (DRAM-less)(0x1008)"}, +{0x1E95, 0x3500, 0xFFFF, 0xFFFF, "CA5-8D256 NVMe SSD M.2(0x3500)"}, +{0x1E95, 0x35F1, 0xFFFF, 0xFFFF, "PLEXTOR M9PGN Plus NVMe SSD M.2(0x35F1)"}, {0x1E95, 0x9100, 0xFFFF, 0xFFFF, "CL1-3D256-Q11 NVMe SSD M.2(0x9100)"}, }; /* pci_vid_1E95[] */ -pci_id_t pci_vid_1E96[] = { +static pci_id_t const pci_vid_1E96[] = { {0x1E96, 0xFFFF, 0xFFFF, 0xFFFF, "Drut Technologies Inc.(0x1E96)"}, }; /* pci_vid_1E96[] */ -pci_id_t pci_vid_1E9F[] = { +static pci_id_t const pci_vid_1E9F[] = { {0x1E9F, 0xFFFF, 0xFFFF, 0xFFFF, "Lynxi Technologies Co., Ltd.(0x1E9F)"}, }; /* pci_vid_1E9F[] */ -pci_id_t pci_vid_1EA0[] = { +static pci_id_t const pci_vid_1EA0[] = { {0x1EA0, 0xFFFF, 0xFFFF, 0xFFFF, "Tencent Technology (Shenzhen) Company Limited(0x1EA0)"}, {0x1EA0, 0x2A16, 0xFFFF, 0xFFFF, "Cloud Intelligent Inference Controller(0x2A16)"}, {0x1EA0, 0x2A18, 0xFFFF, 0xFFFF, "Video Transcode Controller(0x2A18)"}, {0x1EA0, 0x2A20, 0xFFFF, 0xFFFF, "Cloud Intelligent Inference and Training Controller(0x2A20)"}, }; /* pci_vid_1EA0[] */ -pci_id_t pci_vid_1EA7[] = { +static pci_id_t const pci_vid_1EA7[] = { {0x1EA7, 0xFFFF, 0xFFFF, 0xFFFF, "Intelliprop, Inc(0x1EA7)"}, {0x1EA7, 0x223A, 0xFFFF, 0xFFFF, "Typhon+ PCIe to Gen-Z Bridge(0x223A)"}, {0x1EA7, 0x224A, 0xFFFF, 0xFFFF, "IPA-PE224A CXL to Gen-Z Bridge [Sphinx](0x224A)"}, }; /* pci_vid_1EA7[] */ -pci_id_t pci_vid_1EAB[] = { +static pci_id_t const pci_vid_1EAB[] = { {0x1EAB, 0xFFFF, 0xFFFF, 0xFFFF, "Hefei DATANG Storage Technology Co.,LTD.(0x1EAB)"}, {0x1EAB, 0x300A, 0xFFFF, 0xFFFF, "NVMe SSD Controller 300A(0x300A)"}, {0x1EAB, 0x300B, 0xFFFF, 0xFFFF, "NVMe SSD Controller 300B (DRAM-less)(0x300B)"}, }; /* pci_vid_1EAB[] */ -pci_id_t pci_vid_1EAC[] = { +static pci_id_t const pci_vid_1EAC[] = { {0x1EAC, 0xFFFF, 0xFFFF, 0xFFFF, "Quectel Wireless Solutions Co., Ltd.(0x1EAC)"}, {0x1EAC, 0x1001, 0xFFFF, 0xFFFF, "EM120R-GL LTE Modem(0x1001)"}, {0x1EAC, 0x1002, 0xFFFF, 0xFFFF, "EM160R-GL LTE Modem(0x1002)"}, }; /* pci_vid_1EAC[] */ -pci_id_t pci_vid_1EAE[] = { +static pci_id_t const pci_vid_1EAE[] = { {0x1EAE, 0xFFFF, 0xFFFF, 0xFFFF, "XFX Limited(0x1EAE)"}, }; /* pci_vid_1EAE[] */ -pci_id_t pci_vid_1EB1[] = { +static pci_id_t const pci_vid_1EB1[] = { {0x1EB1, 0xFFFF, 0xFFFF, 0xFFFF, "VeriSilicon Inc(0x1EB1)"}, {0x1EB1, 0x1001, 0xFFFF, 0xFFFF, "Video Accelerator(0x1001)"}, }; /* pci_vid_1EB1[] */ -pci_id_t pci_vid_1EB4[] = { +static pci_id_t const pci_vid_1EB4[] = { {0x1EB4, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum Nebula Microelectronics Technology Co.,Ltd.(0x1EB4)"}, {0x1EB4, 0x3401, 0xFFFF, 0xFFFF, "SSD Contoller(0x3401)"}, }; /* pci_vid_1EB4[] */ -pci_id_t pci_vid_1EBD[] = { +static pci_id_t const pci_vid_1EB9[] = { +{0x1EB9, 0xFFFF, 0xFFFF, 0xFFFF, "Senscomm Semiconductor, Inc(0x1EB9)"}, +{0x1EB9, 0x2020, 0xFFFF, 0xFFFF, "SCM2625 Wi-Fi6 Network Adapter(0x2020)"}, +}; /* pci_vid_1EB9[] */ + +static pci_id_t const pci_vid_1EBD[] = { {0x1EBD, 0xFFFF, 0xFFFF, 0xFFFF, "EMERGETECH Company Ltd.(0x1EBD)"}, {0x1EBD, 0x0101, 0xFFFF, 0xFFFF, "Seirios 2063 Video Codec(0x0101)"}, }; /* pci_vid_1EBD[] */ -pci_id_t pci_vid_1EC6[] = { +static pci_id_t const pci_vid_1EC6[] = { {0x1EC6, 0xFFFF, 0xFFFF, 0xFFFF, "Vastai Technologies(0x1EC6)"}, {0x1EC6, 0x0100, 0xFFFF, 0xFFFF, "SV100(0x0100)"}, {0x1EC6, 0x0100, 0x1EC6, 0x0010, "VA1V(0x1EC6-0x0010)"}, @@ -31980,7 +32203,7 @@ pci_id_t pci_vid_1EC6[] = { {0x1EC6, 0x020F, 0xFFFF, 0xFFFF, "SG100 vGPU(0x020F)"}, }; /* pci_vid_1EC6[] */ -pci_id_t pci_vid_1EC8[] = { +static pci_id_t const pci_vid_1EC8[] = { {0x1EC8, 0xFFFF, 0xFFFF, 0xFFFF, "Innosilicon Co Ltd(0x1EC8)"}, {0x1EC8, 0x8800, 0xFFFF, 0xFFFF, "Fantasy I(0x8800)"}, {0x1EC8, 0x8800, 0x1EC8, 0x12A2, "Fantasy I Device(0x1EC8-0x12A2)"}, @@ -31996,25 +32219,29 @@ pci_id_t pci_vid_1EC8[] = { {0x1EC8, 0x9810, 0x1EC8, 0x12A2, "Fantasy II Device(0x1EC8-0x12A2)"}, }; /* pci_vid_1EC8[] */ -pci_id_t pci_vid_1EC9[] = { +static pci_id_t const pci_vid_1EC9[] = { {0x1EC9, 0xFFFF, 0xFFFF, 0xFFFF, "Wingtech Group(HongKong)Limited(0x1EC9)"}, }; /* pci_vid_1EC9[] */ -pci_id_t pci_vid_1ECA[] = { +static pci_id_t const pci_vid_1ECA[] = { {0x1ECA, 0xFFFF, 0xFFFF, 0xFFFF, "Lightmatter(0x1ECA)"}, {0x1ECA, 0x0000, 0xFFFF, 0xFFFF, "Envise-B(0x0000)"}, }; /* pci_vid_1ECA[] */ -pci_id_t pci_vid_1ED2[] = { +static pci_id_t const pci_vid_1ED0[] = { +{0x1ED0, 0xFFFF, 0xFFFF, 0xFFFF, "Hosin Global Electronics(0x1ED0)"}, +}; /* pci_vid_1ED0[] */ + +static pci_id_t const pci_vid_1ED2[] = { {0x1ED2, 0xFFFF, 0xFFFF, 0xFFFF, "FuriosaAI, Inc.(0x1ED2)"}, {0x1ED2, 0x0000, 0xFFFF, 0xFFFF, "Warboy(0x0000)"}, }; /* pci_vid_1ED2[] */ -pci_id_t pci_vid_1ED3[] = { +static pci_id_t const pci_vid_1ED3[] = { {0x1ED3, 0xFFFF, 0xFFFF, 0xFFFF, "Yeston(0x1ED3)"}, }; /* pci_vid_1ED3[] */ -pci_id_t pci_vid_1ED5[] = { +static pci_id_t const pci_vid_1ED5[] = { {0x1ED5, 0xFFFF, 0xFFFF, 0xFFFF, "Moore Threads Technology Co.,Ltd(0x1ED5)"}, {0x1ED5, 0x0100, 0xFFFF, 0xFFFF, "MTT S10(0x0100)"}, {0x1ED5, 0x0101, 0xFFFF, 0xFFFF, "MTT S10(0x0101)"}, @@ -32030,7 +32257,7 @@ pci_id_t pci_vid_1ED5[] = { {0x1ED5, 0x0201, 0xFFFF, 0xFFFF, "MTT S80(0x0201)"}, {0x1ED5, 0x0202, 0xFFFF, 0xFFFF, "MTT S70(0x0202)"}, {0x1ED5, 0x0203, 0xFFFF, 0xFFFF, "MTT S60(0x0203)"}, -{0x1ED5, 0x0211, 0xFFFF, 0xFFFF, "MTT X200(0x0211)"}, +{0x1ED5, 0x0211, 0xFFFF, 0xFFFF, "MTT X300(0x0211)"}, {0x1ED5, 0x0221, 0xFFFF, 0xFFFF, "G2S80(0x0221)"}, {0x1ED5, 0x0222, 0xFFFF, 0xFFFF, "MTT S3000(0x0222)"}, {0x1ED5, 0x0223, 0xFFFF, 0xFFFF, "G2S4(0x0223)"}, @@ -32043,16 +32270,17 @@ pci_id_t pci_vid_1ED5[] = { {0x1ED5, 0x03FF, 0xFFFF, 0xFFFF, "MTT HDMI/DP Audio(0x03FF)"}, }; /* pci_vid_1ED5[] */ -pci_id_t pci_vid_1ED8[] = { +static pci_id_t const pci_vid_1ED8[] = { {0x1ED8, 0xFFFF, 0xFFFF, 0xFFFF, "Digiteq Automotive(0x1ED8)"}, -{0x1ED8, 0x0101, 0xFFFF, 0xFFFF, "FG4 PCIe Frame Grabber(0x0101)"}, +{0x1ED8, 0x0101, 0xFFFF, 0xFFFF, "FG4 PCIe Frame Grabber (T100)(0x0101)"}, +{0x1ED8, 0x0201, 0xFFFF, 0xFFFF, "FG4 PCIe Frame Grabber (T200)(0x0201)"}, }; /* pci_vid_1ED8[] */ -pci_id_t pci_vid_1ED9[] = { +static pci_id_t const pci_vid_1ED9[] = { {0x1ED9, 0xFFFF, 0xFFFF, 0xFFFF, "Myrtle.ai(0x1ED9)"}, }; /* pci_vid_1ED9[] */ -pci_id_t pci_vid_1EE1[] = { +static pci_id_t const pci_vid_1EE1[] = { {0x1EE1, 0xFFFF, 0xFFFF, 0xFFFF, "Suzhou Kuhan Information Technologies(0x1EE1)"}, {0x1EE1, 0x0050, 0xFFFF, 0xFFFF, "Aurora NVMe SSD Controller(0x0050)"}, {0x1EE1, 0x0050, 0x1EE1, 0x0009, "Airglow A430 NVMe SSD U.2 1.6TB(0x1EE1-0x0009)"}, @@ -32061,22 +32289,22 @@ pci_id_t pci_vid_1EE1[] = { {0x1EE1, 0x0050, 0x1EE1, 0x0012, "Airglow Z400 NVMe ZNS SSD U.2 5.76TB(0x1EE1-0x0012)"}, }; /* pci_vid_1EE1[] */ -pci_id_t pci_vid_1EE4[] = { +static pci_id_t const pci_vid_1EE4[] = { {0x1EE4, 0xFFFF, 0xFFFF, 0xFFFF, "PETAIO INC(0x1EE4)"}, {0x1EE4, 0x1180, 0xFFFF, 0xFFFF, "P8118 U.2 Single Port SSD(0x1180)"}, }; /* pci_vid_1EE4[] */ -pci_id_t pci_vid_1EE9[] = { +static pci_id_t const pci_vid_1EE9[] = { {0x1EE9, 0xFFFF, 0xFFFF, 0xFFFF, "SUSE LLC(0x1EE9)"}, }; /* pci_vid_1EE9[] */ -pci_id_t pci_vid_1EEC[] = { +static pci_id_t const pci_vid_1EEC[] = { {0x1EEC, 0xFFFF, 0xFFFF, 0xFFFF, "Viscore Technologies Ltd(0x1EEC)"}, {0x1EEC, 0x0102, 0xFFFF, 0xFFFF, "VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe(0x0102)"}, {0x1EEC, 0x1EEC, 0xFFFF, 0xFFFF, "VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe(0x1EEC)"}, }; /* pci_vid_1EEC[] */ -pci_id_t pci_vid_1EED[] = { +static pci_id_t const pci_vid_1EED[] = { {0x1EED, 0xFFFF, 0xFFFF, 0xFFFF, "XDX Computing Technology Ltd.(0x1EED)"}, {0x1EED, 0x10A0, 0xFFFF, 0xFFFF, "XDX110 Graphic/VGA Controller(0x10A0)"}, {0x1EED, 0x10A1, 0xFFFF, 0xFFFF, "XDX110 Audio Controller(0x10A1)"}, @@ -32115,23 +32343,23 @@ pci_id_t pci_vid_1EED[] = { {0x1EED, 0x1830, 0xFFFF, 0xFFFF, "XDX TJ03 Audio(0x1830)"}, }; /* pci_vid_1EED[] */ -pci_id_t pci_vid_1EF6[] = { +static pci_id_t const pci_vid_1EF6[] = { {0x1EF6, 0xFFFF, 0xFFFF, 0xFFFF, "GrAI Matter Labs(0x1EF6)"}, }; /* pci_vid_1EF6[] */ -pci_id_t pci_vid_1EF7[] = { +static pci_id_t const pci_vid_1EF7[] = { {0x1EF7, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Gunnir Technology Development Co., Ltd(0x1EF7)"}, }; /* pci_vid_1EF7[] */ -pci_id_t pci_vid_1EFB[] = { +static pci_id_t const pci_vid_1EFB[] = { {0x1EFB, 0xFFFF, 0xFFFF, 0xFFFF, "Flexxon Pte Ltd(0x1EFB)"}, }; /* pci_vid_1EFB[] */ -pci_id_t pci_vid_1F02[] = { +static pci_id_t const pci_vid_1F02[] = { {0x1F02, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Dayu Technology(0x1F02)"}, }; /* pci_vid_1F02[] */ -pci_id_t pci_vid_1F03[] = { +static pci_id_t const pci_vid_1F03[] = { {0x1F03, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Shichuangyi Electronics Co., Ltd(0x1F03)"}, {0x1F03, 0x1202, 0xFFFF, 0xFFFF, "MAP1202-Based NVMe SSD (DRAM-less)(0x1202)"}, {0x1F03, 0x2262, 0xFFFF, 0xFFFF, "SM2262EN-based OEM SSD(0x2262)"}, @@ -32142,12 +32370,12 @@ pci_id_t pci_vid_1F03[] = { {0x1F03, 0x5636, 0xFFFF, 0xFFFF, "IG5636-Based NVMe SSD(0x5636)"}, }; /* pci_vid_1F03[] */ -pci_id_t pci_vid_1F0A[] = { +static pci_id_t const pci_vid_1F0A[] = { {0x1F0A, 0xFFFF, 0xFFFF, 0xFFFF, "Motorcomm Microelectronics.(0x1F0A)"}, {0x1F0A, 0x6801, 0xFFFF, 0xFFFF, "YT6801 Gigabit Ethernet Controller(0x6801)"}, }; /* pci_vid_1F0A[] */ -pci_id_t pci_vid_1F0F[] = { +static pci_id_t const pci_vid_1F0F[] = { {0x1F0F, 0xFFFF, 0xFFFF, 0xFFFF, "NebulaMatrix Technology(0x1F0F)"}, {0x1F0F, 0x1041, 0xFFFF, 0xFFFF, "D1055AS vDPA Ethernet Controller(0x1041)"}, {0x1F0F, 0x1041, 0x1F0F, 0x0001, "D1055AS vDPA Ethernet Controller(0x1F0F-0x0001)"}, @@ -32169,18 +32397,18 @@ pci_id_t pci_vid_1F0F[] = { {0x1F0F, 0x9088, 0xFFFF, 0xFFFF, "D1055AS PCI Express Switch Downstream Port(0x9088)"}, }; /* pci_vid_1F0F[] */ -pci_id_t pci_vid_1F17[] = { +static pci_id_t const pci_vid_1F17[] = { {0x1F17, 0xFFFF, 0xFFFF, 0xFFFF, "Zettastone Technology(0x1F17)"}, }; /* pci_vid_1F17[] */ -pci_id_t pci_vid_1F24[] = { +static pci_id_t const pci_vid_1F24[] = { {0x1F24, 0xFFFF, 0xFFFF, 0xFFFF, "xFusion Digital Technologies Co., Ltd.(0x1F24)"}, {0x1F24, 0x1058, 0xFFFF, 0xFFFF, "EP500/EP600 NVMe SSD(0x1058)"}, {0x1F24, 0x1058, 0x1F24, 0x1114, "EP500 NVMe SSD(RI)(0x1F24-0x1114)"}, {0x1F24, 0x1058, 0x1F24, 0x1115, "EP600 NVMe SSD(MU)(0x1F24-0x1115)"}, }; /* pci_vid_1F24[] */ -pci_id_t pci_vid_1F2F[] = { +static pci_id_t const pci_vid_1F2F[] = { {0x1F2F, 0xFFFF, 0xFFFF, 0xFFFF, "China Mobile (Hangzhou) Information Technology Co.Ltd.(0x1F2F)"}, {0x1F2F, 0x1513, 0xFFFF, 0xFFFF, "DERA MENG NVMe Controller(0x1513)"}, {0x1F2F, 0x1513, 0x1F2F, 0x6113, "KM660 U.2 1.6TB NVMe SSD(0x1F2F-0x6113)"}, @@ -32190,12 +32418,12 @@ pci_id_t pci_vid_1F2F[] = { {0x1F2F, 0x1513, 0x1F2F, 0x6118, "KM560 U.2 7.68TB NVMe SSD(0x1F2F-0x6118)"}, }; /* pci_vid_1F2F[] */ -pci_id_t pci_vid_1F31[] = { +static pci_id_t const pci_vid_1F31[] = { {0x1F31, 0xFFFF, 0xFFFF, 0xFFFF, "Nextorage(0x1F31)"}, {0x1F31, 0x4512, 0xFFFF, 0xFFFF, "Nextorage NE1N NVMe SSD(0x4512)"}, }; /* pci_vid_1F31[] */ -pci_id_t pci_vid_1F3F[] = { +static pci_id_t const pci_vid_1F3F[] = { {0x1F3F, 0xFFFF, 0xFFFF, 0xFFFF, "3SNIC Ltd(0x1F3F)"}, {0x1F3F, 0x2100, 0xFFFF, 0xFFFF, "SSSHBA SAS/SATA HBA(0x2100)"}, {0x1F3F, 0x2100, 0x1F3F, 0x0120, "HBA 32 Ports(0x1F3F-0x0120)"}, @@ -32236,7 +32464,7 @@ pci_id_t pci_vid_1F3F[] = { {0x1F3F, 0x9032, 0x1F3F, 0x00A1, "Dual Port 100GE SDI5.1(0x1F3F-0x00A1)"}, }; /* pci_vid_1F3F[] */ -pci_id_t pci_vid_1F40[] = { +static pci_id_t const pci_vid_1F40[] = { {0x1F40, 0xFFFF, 0xFFFF, 0xFFFF, "Netac Technology Co.,Ltd(0x1F40)"}, {0x1F40, 0x0001, 0xFFFF, 0xFFFF, "PCIe 4 NVMe SSD (DRAM-less)(0x0001)"}, {0x1F40, 0x1202, 0xFFFF, 0xFFFF, "PCIe 3 NVMe SSD (DRAM-less)(0x1202)"}, @@ -32248,33 +32476,35 @@ pci_id_t pci_vid_1F40[] = { {0x1F40, 0x5765, 0xFFFF, 0xFFFF, "PCIe 3 NVMe SSD (DRAM-less)(0x5765)"}, }; /* pci_vid_1F40[] */ -pci_id_t pci_vid_1F44[] = { +static pci_id_t const pci_vid_1F44[] = { {0x1F44, 0xFFFF, 0xFFFF, 0xFFFF, "VVDN Technologies Private Limited(0x1F44)"}, }; /* pci_vid_1F44[] */ -pci_id_t pci_vid_1F47[] = { +static pci_id_t const pci_vid_1F47[] = { {0x1F47, 0xFFFF, 0xFFFF, 0xFFFF, "YUSUR Tech(0x1F47)"}, +{0x1F47, 0x2018, 0xFFFF, 0xFFFF, "DPU Card(0x2018)"}, +{0x1F47, 0x2020, 0xFFFF, 0xFFFF, "DPU(0x2020)"}, }; /* pci_vid_1F47[] */ -pci_id_t pci_vid_1F4B[] = { +static pci_id_t const pci_vid_1F4B[] = { {0x1F4B, 0xFFFF, 0xFFFF, 0xFFFF, "Axera Semiconductor Co., Ltd(0x1F4B)"}, }; /* pci_vid_1F4B[] */ -pci_id_t pci_vid_1F52[] = { +static pci_id_t const pci_vid_1F52[] = { {0x1F52, 0xFFFF, 0xFFFF, 0xFFFF, "MangoBoost Inc.(0x1F52)"}, }; /* pci_vid_1F52[] */ -pci_id_t pci_vid_1F56[] = { +static pci_id_t const pci_vid_1F56[] = { {0x1F56, 0xFFFF, 0xFFFF, 0xFFFF, "SAPEON Inc.(0x1F56)"}, }; /* pci_vid_1F56[] */ -pci_id_t pci_vid_1F60[] = { +static pci_id_t const pci_vid_1F60[] = { {0x1F60, 0xFFFF, 0xFFFF, 0xFFFF, "Accelecom(0x1F60)"}, {0x1F60, 0x0001, 0xFFFF, 0xFFFF, "XELE-NIC 25K5(0x0001)"}, {0x1F60, 0x0054, 0xFFFF, 0xFFFF, "XELE-NIC 25K5(0x0054)"}, }; /* pci_vid_1F60[] */ -pci_id_t pci_vid_1F67[] = { +static pci_id_t const pci_vid_1F67[] = { {0x1F67, 0xFFFF, 0xFFFF, 0xFFFF, "Yunsilicon Technology(0x1F67)"}, {0x1F67, 0x1011, 0xFFFF, 0xFFFF, "metaConnect SmartNIC Physical Function(0x1011)"}, {0x1F67, 0x1012, 0xFFFF, 0xFFFF, "metaConnect SmartNIC Virtual Function(0x1012)"}, @@ -32287,21 +32517,23 @@ pci_id_t pci_vid_1F67[] = { {0x1F67, 0x1152, 0xFFFF, 0xFFFF, "metaVisor DPU Virtual Function(0x1152)"}, }; /* pci_vid_1F67[] */ -pci_id_t pci_vid_1FAA[] = { +static pci_id_t const pci_vid_1FAA[] = { {0x1FAA, 0xFFFF, 0xFFFF, 0xFFFF, "Hexaflake (Shanghai) Information Technology Co., Ltd.(0x1FAA)"}, {0x1FAA, 0x0C10, 0xFFFF, 0xFFFF, "Compass C10 PF(0x0C10)"}, {0x1FAA, 0x0C11, 0xFFFF, 0xFFFF, "Compass C10 VF(0x0C11)"}, }; /* pci_vid_1FAA[] */ -pci_id_t pci_vid_1FAB[] = { +static pci_id_t const pci_vid_1FAB[] = { {0x1FAB, 0xFFFF, 0xFFFF, 0xFFFF, "Unifabrix Ltd.(0x1FAB)"}, {0x1FAB, 0x0000, 0xFFFF, 0xFFFF, "Nexus Alpha IVPU(0x0000)"}, {0x1FAB, 0x0100, 0xFFFF, 0xFFFF, "NoX Gamma(0x0100)"}, +{0x1FAB, 0x01FD, 0xFFFF, 0xFFFF, "Smart Memory Node Generic CXL Port (T1)(0x01FD)"}, {0x1FAB, 0x01FE, 0xFFFF, 0xFFFF, "Smart Memory Node Generic CXL Port (T2)(0x01FE)"}, {0x1FAB, 0x01FF, 0xFFFF, 0xFFFF, "Smart Memory Node Generic CXL Port (T3)(0x01FF)"}, +{0x1FAB, 0x1B00, 0xFFFF, 0xFFFF, "MAX Host Device(0x1B00)"}, }; /* pci_vid_1FAB[] */ -pci_id_t pci_vid_1FB0[] = { +static pci_id_t const pci_vid_1FB0[] = { {0x1FB0, 0xFFFF, 0xFFFF, 0xFFFF, "ICube Corporation Limited(0x1FB0)"}, {0x1FB0, 0x1000, 0xFFFF, 0xFFFF, "NF1000 Series GPU(0x1000)"}, {0x1FB0, 0x1000, 0x1FB0, 0x1001, "NF1001(0x1FB0-0x1001)"}, @@ -32329,19 +32561,19 @@ pci_id_t pci_vid_1FB0[] = { {0x1FB0, 0x5000, 0x1FB0, 0x5003, "NF5003(0x1FB0-0x5003)"}, }; /* pci_vid_1FB0[] */ -pci_id_t pci_vid_1FC0[] = { +static pci_id_t const pci_vid_1FC0[] = { {0x1FC0, 0xFFFF, 0xFFFF, 0xFFFF, "Ascom (Finland) Oy(0x1FC0)"}, {0x1FC0, 0x0300, 0xFFFF, 0xFFFF, "E2200 Dual E1/Rawpipe Card(0x0300)"}, {0x1FC0, 0x0301, 0xFFFF, 0xFFFF, "C5400 SHDSL/E1 Card(0x0301)"}, }; /* pci_vid_1FC0[] */ -pci_id_t pci_vid_1FC1[] = { +static pci_id_t const pci_vid_1FC1[] = { {0x1FC1, 0xFFFF, 0xFFFF, 0xFFFF, "QLogic, Corp.(0x1FC1)"}, {0x1FC1, 0x000D, 0xFFFF, 0xFFFF, "IBA6110 InfiniBand HCA(0x000D)"}, {0x1FC1, 0x0010, 0xFFFF, 0xFFFF, "IBA6120 InfiniBand HCA(0x0010)"}, }; /* pci_vid_1FC1[] */ -pci_id_t pci_vid_1FC9[] = { +static pci_id_t const pci_vid_1FC9[] = { {0x1FC9, 0xFFFF, 0xFFFF, 0xFFFF, "Tehuti Networks Ltd.(0x1FC9)"}, {0x1FC9, 0x3009, 0xFFFF, 0xFFFF, "10-Giga TOE SmartNIC(0x3009)"}, {0x1FC9, 0x3010, 0xFFFF, 0xFFFF, "10-Giga TOE SmartNIC(0x3010)"}, @@ -32392,37 +32624,37 @@ pci_id_t pci_vid_1FC9[] = { {0x1FC9, 0x4527, 0xFFFF, 0xFFFF, "TN9710Q 5GBase-T/NBASE-T Ethernet Adapter(0x4527)"}, }; /* pci_vid_1FC9[] */ -pci_id_t pci_vid_1FCC[] = { +static pci_id_t const pci_vid_1FCC[] = { {0x1FCC, 0xFFFF, 0xFFFF, 0xFFFF, "StreamLabs(0x1FCC)"}, {0x1FCC, 0xF416, 0xFFFF, 0xFFFF, "MS416(0xF416)"}, {0x1FCC, 0xFB01, 0xFFFF, 0xFFFF, "MH4LM(0xFB01)"}, }; /* pci_vid_1FCC[] */ -pci_id_t pci_vid_1FCE[] = { +static pci_id_t const pci_vid_1FCE[] = { {0x1FCE, 0xFFFF, 0xFFFF, 0xFFFF, "Cognio Inc.(0x1FCE)"}, {0x1FCE, 0x0001, 0xFFFF, 0xFFFF, "Spectrum Analyzer PC Card (SAgE)(0x0001)"}, }; /* pci_vid_1FCE[] */ -pci_id_t pci_vid_1FD4[] = { +static pci_id_t const pci_vid_1FD4[] = { {0x1FD4, 0xFFFF, 0xFFFF, 0xFFFF, "SUNIX Co., Ltd.(0x1FD4)"}, {0x1FD4, 0x0001, 0xFFFF, 0xFFFF, "Matrix multiport serial adapter(0x0001)"}, {0x1FD4, 0x1999, 0xFFFF, 0xFFFF, "Multiport serial controller(0x1999)"}, }; /* pci_vid_1FD4[] */ -pci_id_t pci_vid_1FDE[] = { +static pci_id_t const pci_vid_1FDE[] = { {0x1FDE, 0xFFFF, 0xFFFF, 0xFFFF, "Kratos Defense & Security Solutions, Inc.(0x1FDE)"}, {0x1FDE, 0x1125, 0xFFFF, 0xFFFF, "OpenEdge 1125P(0x1125)"}, {0x1FDE, 0x2500, 0xFFFF, 0xFFFF, "OpenEdge 2500P(0x2500)"}, }; /* pci_vid_1FDE[] */ -pci_id_t pci_vid_1FE0[] = { +static pci_id_t const pci_vid_1FE0[] = { {0x1FE0, 0xFFFF, 0xFFFF, 0xFFFF, "Allwinmeta Co., Ltd.(0x1FE0)"}, {0x1FE0, 0x1010, 0xFFFF, 0xFFFF, "AWM 1(0x1010)"}, {0x1FE0, 0x2000, 0xFFFF, 0xFFFF, "AWM 2(0x2000)"}, {0x1FE0, 0x2010, 0xFFFF, 0xFFFF, "AWM 2-M(0x2010)"}, }; /* pci_vid_1FE0[] */ -pci_id_t pci_vid_1FE4[] = { +static pci_id_t const pci_vid_1FE4[] = { {0x1FE4, 0xFFFF, 0xFFFF, 0xFFFF, "HippStor Technology(0x1FE4)"}, {0x1FE4, 0x1600, 0xFFFF, 0xFFFF, "HP600 Series NVMe SSD(0x1600)"}, {0x1FE4, 0x1600, 0x1FE4, 0x0075, "Enterprise NVMe SSD U.2 3.84TB(HP610)(0x1FE4-0x0075)"}, @@ -32431,70 +32663,93 @@ pci_id_t pci_vid_1FE4[] = { {0x1FE4, 0x1600, 0x1FE4, 0x0078, "Enterprise NVMe SSD U.2 3.20TB(HP630)(0x1FE4-0x0078)"}, }; /* pci_vid_1FE4[] */ -pci_id_t pci_vid_1FF4[] = { +static pci_id_t const pci_vid_1FF4[] = { {0x1FF4, 0xFFFF, 0xFFFF, 0xFFFF, "DEEPX Co., Ltd.(0x1FF4)"}, {0x1FF4, 0x0000, 0xFFFF, 0xFFFF, "DX_M1(0x0000)"}, {0x1FF4, 0x0001, 0xFFFF, 0xFFFF, "DX_M1A(0x0001)"}, {0x1FF4, 0x1000, 0xFFFF, 0xFFFF, "DX_H1(0x1000)"}, }; /* pci_vid_1FF4[] */ -pci_id_t pci_vid_2000[] = { +static pci_id_t const pci_vid_1FF8[] = { +{0x1FF8, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Gengtu Technology Co.Ltd(0x1FF8)"}, +{0x1FF8, 0x2000, 0xFFFF, 0xFFFF, "GT6910(0x2000)"}, +{0x1FF8, 0x2010, 0xFFFF, 0xFFFF, "GT6908(0x2010)"}, +}; /* pci_vid_1FF8[] */ + +static pci_id_t const pci_vid_1FF9[] = { +{0x1FF9, 0xFFFF, 0xFFFF, 0xFFFF, "Inagile Electronic Technology Co., LTD(0x1FF9)"}, +}; /* pci_vid_1FF9[] */ + +static pci_id_t const pci_vid_2000[] = { {0x2000, 0xFFFF, 0xFFFF, 0xFFFF, "Smart Link Ltd.(0x2000)"}, {0x2000, 0x2800, 0xFFFF, 0xFFFF, "SmartPCI2800 V.92 PCI Soft DFT(0x2800)"}, }; /* pci_vid_2000[] */ -pci_id_t pci_vid_2001[] = { +static pci_id_t const pci_vid_2001[] = { {0x2001, 0xFFFF, 0xFFFF, 0xFFFF, "Temporal Research Ltd(0x2001)"}, }; /* pci_vid_2001[] */ -pci_id_t pci_vid_2003[] = { +static pci_id_t const pci_vid_2003[] = { {0x2003, 0xFFFF, 0xFFFF, 0xFFFF, "Smart Link Ltd.(0x2003)"}, {0x2003, 0x8800, 0xFFFF, 0xFFFF, "LM-I56N(0x8800)"}, }; /* pci_vid_2003[] */ -pci_id_t pci_vid_2004[] = { +static pci_id_t const pci_vid_2004[] = { {0x2004, 0xFFFF, 0xFFFF, 0xFFFF, "Smart Link Ltd.(0x2004)"}, }; /* pci_vid_2004[] */ -pci_id_t pci_vid_2048[] = { +static pci_id_t const pci_vid_2046[] = { +{0x2046, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Inovance Technology Co., Ltd.(0x2046)"}, +}; /* pci_vid_2046[] */ + +static pci_id_t const pci_vid_2048[] = { {0x2048, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing SpaceControl Technology Co.Ltd(0x2048)"}, }; /* pci_vid_2048[] */ -pci_id_t pci_vid_20F4[] = { +static pci_id_t const pci_vid_20F4[] = { {0x20F4, 0xFFFF, 0xFFFF, 0xFFFF, "TRENDnet(0x20F4)"}, }; /* pci_vid_20F4[] */ -pci_id_t pci_vid_2116[] = { +static pci_id_t const pci_vid_2116[] = { {0x2116, 0xFFFF, 0xFFFF, 0xFFFF, "ZyDAS Technology Corp.(0x2116)"}, }; /* pci_vid_2116[] */ -pci_id_t pci_vid_21B4[] = { +static pci_id_t const pci_vid_21B4[] = { {0x21B4, 0xFFFF, 0xFFFF, 0xFFFF, "Hunan Goke Microelectronics Co., Ltd(0x21B4)"}, }; /* pci_vid_21B4[] */ -pci_id_t pci_vid_21C3[] = { +static pci_id_t const pci_vid_21C3[] = { {0x21C3, 0xFFFF, 0xFFFF, 0xFFFF, "21st Century Computer Corp.(0x21C3)"}, }; /* pci_vid_21C3[] */ -pci_id_t pci_vid_22B8[] = { +static pci_id_t const pci_vid_22B8[] = { {0x22B8, 0xFFFF, 0xFFFF, 0xFFFF, "Flex-Logix Technologies(0x22B8)"}, {0x22B8, 0x22A0, 0xFFFF, 0xFFFF, "Flex Logix InferX X1 Inference Accelerator(0x22A0)"}, }; /* pci_vid_22B8[] */ -pci_id_t pci_vid_22DB[] = { +static pci_id_t const pci_vid_22DB[] = { {0x22DB, 0xFFFF, 0xFFFF, 0xFFFF, "Missing Link Electronics, Inc.(0x22DB)"}, }; /* pci_vid_22DB[] */ -pci_id_t pci_vid_2304[] = { +static pci_id_t const pci_vid_2304[] = { {0x2304, 0xFFFF, 0xFFFF, 0xFFFF, "Colorgraphic Communications Corp.(0x2304)"}, }; /* pci_vid_2304[] */ -pci_id_t pci_vid_2348[] = { +static pci_id_t const pci_vid_2321[] = { +{0x2321, 0xFFFF, 0xFFFF, 0xFFFF, "Bruker AXS Inc.(0x2321)"}, +}; /* pci_vid_2321[] */ + +static pci_id_t const pci_vid_2348[] = { {0x2348, 0xFFFF, 0xFFFF, 0xFFFF, "Racore(0x2348)"}, {0x2348, 0x2010, 0xFFFF, 0xFFFF, "8142 100VG/AnyLAN(0x2010)"}, }; /* pci_vid_2348[] */ -pci_id_t pci_vid_2646[] = { +static pci_id_t const pci_vid_256C[] = { +{0x256C, 0xFFFF, 0xFFFF, 0xFFFF, "Graphics Technology (HK) Co., Ltd.(0x256C)"}, +{0x256C, 0x006D, 0xFFFF, 0xFFFF, "HS610(0x006D)"}, +}; /* pci_vid_256C[] */ + +static pci_id_t const pci_vid_2646[] = { {0x2646, 0xFFFF, 0xFFFF, 0xFFFF, "Kingston Technology Company, Inc.(0x2646)"}, {0x2646, 0x0010, 0xFFFF, 0xFFFF, "HyperX Predator PCIe AHCI SSD(0x0010)"}, {0x2646, 0x2262, 0xFFFF, 0xFFFF, "KC2000/KC2500 NVMe SSD SM2262EN(0x2262)"}, @@ -32504,87 +32759,89 @@ pci_id_t pci_vid_2646[] = { {0x2646, 0x500B, 0xFFFF, 0xFFFF, "DC1000M NVMe SSD SM2270(0x500B)"}, {0x2646, 0x500C, 0xFFFF, 0xFFFF, "OM8PCP Design-In PCIe 3 NVMe SSD (DRAM-less)(0x500C)"}, {0x2646, 0x500D, 0xFFFF, 0xFFFF, "OM3PDP3 NVMe SSD(0x500D)"}, -{0x2646, 0x500E, 0xFFFF, 0xFFFF, "NV1 NVMe SSD E13T(0x500E)"}, -{0x2646, 0x500F, 0xFFFF, 0xFFFF, "NV1 NVMe SSD SM2263XT(0x500F)"}, +{0x2646, 0x500E, 0xFFFF, 0xFFFF, "NV1 NVMe SSD E13T (DRAM-less)(0x500E)"}, +{0x2646, 0x500F, 0xFFFF, 0xFFFF, "NV1 NVMe SSD SM2263XT (DRAM-less)(0x500F)"}, {0x2646, 0x5010, 0xFFFF, 0xFFFF, "OM8SBP NVMe PCIe SSD (DRAM-less)(0x5010)"}, {0x2646, 0x5012, 0xFFFF, 0xFFFF, "DC1500M NVMe SSD SM2270(0x5012)"}, {0x2646, 0x5013, 0xFFFF, 0xFFFF, "KC3000/FURY Renegade NVMe SSD E18(0x5013)"}, -{0x2646, 0x5014, 0xFFFF, 0xFFFF, "Design-In PCIe 4 NVMe SSD (TLC)(0x5014)"}, +{0x2646, 0x5014, 0xFFFF, 0xFFFF, "OM8SEP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less)(0x5014)"}, {0x2646, 0x5016, 0xFFFF, 0xFFFF, "OM3PGP4 NVMe SSD(0x5016)"}, -{0x2646, 0x5017, 0xFFFF, 0xFFFF, "NV2 NVMe SSD SM2267XT(0x5017)"}, -{0x2646, 0x5019, 0xFFFF, 0xFFFF, "NV2 NVMe SSD E21T(0x5019)"}, +{0x2646, 0x5017, 0xFFFF, 0xFFFF, "NV2 NVMe SSD SM2267XT (DRAM-less)(0x5017)"}, +{0x2646, 0x5019, 0xFFFF, 0xFFFF, "NV2 NVMe SSD E21T (DRAM-less)(0x5019)"}, +{0x2646, 0x501A, 0xFFFF, 0xFFFF, "OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less)(0x501A)"}, {0x2646, 0x501B, 0xFFFF, 0xFFFF, "OM8PGP4 NVMe PCIe SSD (DRAM-less)(0x501B)"}, {0x2646, 0x501C, 0xFFFF, 0xFFFF, "NV2 NVMe SSD E19T(0x501C)"}, -{0x2646, 0x501D, 0xFFFF, 0xFFFF, "NV2 NVMe SSD TC2200(0x501D)"}, +{0x2646, 0x501D, 0xFFFF, 0xFFFF, "NV2 NVMe SSD TC2200 (DRAM-less)(0x501D)"}, {0x2646, 0x501F, 0xFFFF, 0xFFFF, "FURY Renegade NVMe SSD with heatsink(0x501F)"}, -{0x2646, 0x5021, 0xFFFF, 0xFFFF, "Design-In PCIe 4 NVMe SSD (QLC)(0x5021)"}, +{0x2646, 0x5021, 0xFFFF, 0xFFFF, "OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less)(0x5021)"}, {0x2646, 0x5023, 0xFFFF, 0xFFFF, "NV2 NVMe SSD SM2269XT(0x5023)"}, }; /* pci_vid_2646[] */ -pci_id_t pci_vid_270B[] = { +static pci_id_t const pci_vid_270B[] = { {0x270B, 0xFFFF, 0xFFFF, 0xFFFF, "Xantel Corporation(0x270B)"}, }; /* pci_vid_270B[] */ -pci_id_t pci_vid_270F[] = { +static pci_id_t const pci_vid_270F[] = { {0x270F, 0xFFFF, 0xFFFF, 0xFFFF, "Chaintech Computer Co. Ltd(0x270F)"}, }; /* pci_vid_270F[] */ -pci_id_t pci_vid_2711[] = { +static pci_id_t const pci_vid_2711[] = { {0x2711, 0xFFFF, 0xFFFF, 0xFFFF, "AVID Technology Inc.(0x2711)"}, }; /* pci_vid_2711[] */ -pci_id_t pci_vid_2782[] = { +static pci_id_t const pci_vid_2782[] = { {0x2782, 0xFFFF, 0xFFFF, 0xFFFF, "Emdoor Digital Technology Co., Ltd(0x2782)"}, }; /* pci_vid_2782[] */ -pci_id_t pci_vid_2955[] = { +static pci_id_t const pci_vid_2955[] = { {0x2955, 0xFFFF, 0xFFFF, 0xFFFF, "Connectix Virtual PC(0x2955)"}, {0x2955, 0x6E61, 0xFFFF, 0xFFFF, "OHCI USB 1.1 controller(0x6E61)"}, }; /* pci_vid_2955[] */ -pci_id_t pci_vid_2A15[] = { +static pci_id_t const pci_vid_2A15[] = { {0x2A15, 0xFFFF, 0xFFFF, 0xFFFF, "3D Vision(?-?-?-)(0x2A15)"}, }; /* pci_vid_2A15[] */ -pci_id_t pci_vid_2A18[] = { +static pci_id_t const pci_vid_2A18[] = { {0x2A18, 0xFFFF, 0xFFFF, 0xFFFF, "Video Transcode Controller(0x2A18)"}, }; /* pci_vid_2A18[] */ -pci_id_t pci_vid_2BD8[] = { +static pci_id_t const pci_vid_2BD8[] = { {0x2BD8, 0xFFFF, 0xFFFF, 0xFFFF, "ROPEX Industrie-Elektronik GmbH(0x2BD8)"}, }; /* pci_vid_2BD8[] */ -pci_id_t pci_vid_3000[] = { +static pci_id_t const pci_vid_3000[] = { {0x3000, 0xFFFF, 0xFFFF, 0xFFFF, "Hansol Electronics Inc.(0x3000)"}, }; /* pci_vid_3000[] */ -pci_id_t pci_vid_3100[] = { +static pci_id_t const pci_vid_3100[] = { {0x3100, 0xFFFF, 0xFFFF, 0xFFFF, "Dynabook Inc.(0x3100)"}, }; /* pci_vid_3100[] */ -pci_id_t pci_vid_3112[] = { +static pci_id_t const pci_vid_3112[] = { {0x3112, 0xFFFF, 0xFFFF, 0xFFFF, "Satelco Ingenieria S.A.(0x3112)"}, }; /* pci_vid_3112[] */ -pci_id_t pci_vid_3130[] = { +static pci_id_t const pci_vid_3130[] = { {0x3130, 0xFFFF, 0xFFFF, 0xFFFF, "AUDIOTRAK(0x3130)"}, }; /* pci_vid_3130[] */ -pci_id_t pci_vid_3142[] = { +static pci_id_t const pci_vid_3142[] = { {0x3142, 0xFFFF, 0xFFFF, 0xFFFF, "Post Impression Systems.(0x3142)"}, }; /* pci_vid_3142[] */ -pci_id_t pci_vid_31AB[] = { +static pci_id_t const pci_vid_31AB[] = { {0x31AB, 0xFFFF, 0xFFFF, 0xFFFF, "Zonet(0x31AB)"}, {0x31AB, 0x1FAA, 0xFFFF, 0xFFFF, "ZEW1602 802.11b/g Wireless Adapter(0x1FAA)"}, }; /* pci_vid_31AB[] */ -pci_id_t pci_vid_328F[] = { +static pci_id_t const pci_vid_328F[] = { {0x328F, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen EMEET Technology Co., Ltd.(0x328F)"}, {0x328F, 0x004C, 0xFFFF, 0xFFFF, "OfficeCore M1A(0x004C)"}, +{0x328F, 0x2019, 0xFFFF, 0xFFFF, "REC 600 HD Webcam(0x2019)"}, }; /* pci_vid_328F[] */ -pci_id_t pci_vid_3388[] = { +static pci_id_t const pci_vid_3388[] = { {0x3388, 0xFFFF, 0xFFFF, 0xFFFF, "Hint Corp(0x3388)"}, {0x3388, 0x0013, 0xFFFF, 0xFFFF, "HiNT HC4 PCI to ISDN bridge, Multimedia audio controller(0x0013)"}, {0x3388, 0x0014, 0xFFFF, 0xFFFF, "HiNT HC4 PCI to ISDN bridge, Network controller(0x0014)"}, @@ -32615,29 +32872,33 @@ pci_id_t pci_vid_3388[] = { {0x3388, 0xA103, 0xFFFF, 0xFFFF, "Blackmagic Design DeckLink HD Pro(0xA103)"}, }; /* pci_vid_3388[] */ -pci_id_t pci_vid_3411[] = { +static pci_id_t const pci_vid_3411[] = { {0x3411, 0xFFFF, 0xFFFF, 0xFFFF, "Quantum Designs (H.K.) Inc(0x3411)"}, }; /* pci_vid_3411[] */ -pci_id_t pci_vid_3442[] = { +static pci_id_t const pci_vid_3442[] = { {0x3442, 0xFFFF, 0xFFFF, 0xFFFF, "Bihl+Wiedemann GmbH(0x3442)"}, {0x3442, 0x1783, 0xFFFF, 0xFFFF, "AS-i 3.0 cPCI Master(0x1783)"}, {0x3442, 0x1922, 0xFFFF, 0xFFFF, "AS-i 3.0 PCI Master(0x1922)"}, }; /* pci_vid_3442[] */ -pci_id_t pci_vid_3475[] = { +static pci_id_t const pci_vid_3475[] = { {0x3475, 0xFFFF, 0xFFFF, 0xFFFF, "Arista Networks, Inc.(0x3475)"}, }; /* pci_vid_3475[] */ -pci_id_t pci_vid_34BA[] = { +static pci_id_t const pci_vid_34BA[] = { {0x34BA, 0xFFFF, 0xFFFF, 0xFFFF, "Ice Lake-LP PCI Express Root Port #3(0x34BA)"}, }; /* pci_vid_34BA[] */ -pci_id_t pci_vid_3513[] = { +static pci_id_t const pci_vid_3513[] = { {0x3513, 0xFFFF, 0xFFFF, 0xFFFF, "ARCOM Control Systems Ltd(0x3513)"}, }; /* pci_vid_3513[] */ -pci_id_t pci_vid_37D9[] = { +static pci_id_t const pci_vid_369A[] = { +{0x369A, 0xFFFF, 0xFFFF, 0xFFFF, "HighSecLabs, Ltd.(0x369A)"}, +}; /* pci_vid_369A[] */ + +static pci_id_t const pci_vid_37D9[] = { {0x37D9, 0xFFFF, 0xFFFF, 0xFFFF, "ITD Firm ltd.(0x37D9)"}, {0x37D9, 0x1138, 0xFFFF, 0xFFFF, "SCHD-PH-8 Phase detector(0x1138)"}, {0x37D9, 0x1140, 0xFFFF, 0xFFFF, "VR-12-PCI 12-ch Relay Actuator Card(0x1140)"}, @@ -32645,15 +32906,19 @@ pci_id_t pci_vid_37D9[] = { {0x37D9, 0x1142, 0xFFFF, 0xFFFF, "PCI-CAN2(0x1142)"}, }; /* pci_vid_37D9[] */ -pci_id_t pci_vid_3842[] = { +static pci_id_t const pci_vid_3842[] = { {0x3842, 0xFFFF, 0xFFFF, 0xFFFF, "eVga.com. Corp.(0x3842)"}, }; /* pci_vid_3842[] */ -pci_id_t pci_vid_38EF[] = { +static pci_id_t const pci_vid_38EF[] = { {0x38EF, 0xFFFF, 0xFFFF, 0xFFFF, "4Links(0x38EF)"}, }; /* pci_vid_38EF[] */ -pci_id_t pci_vid_3D3D[] = { +static pci_id_t const pci_vid_393E[] = { +{0x393E, 0xFFFF, 0xFFFF, 0xFFFF, "Lenovo (wrong ID)(0x393E)"}, +}; /* pci_vid_393E[] */ + +static pci_id_t const pci_vid_3D3D[] = { {0x3D3D, 0xFFFF, 0xFFFF, 0xFFFF, "3DLabs(0x3D3D)"}, {0x3D3D, 0x0001, 0xFFFF, 0xFFFF, "GLINT 300SX(0x0001)"}, {0x3D3D, 0x0002, 0xFFFF, 0xFFFF, "GLINT 500TX(0x0002)"}, @@ -32705,7 +32970,7 @@ pci_id_t pci_vid_3D3D[] = { {0x3D3D, 0xFFFF, 0xFFFF, 0xFFFF, "Glint VGA(0xFFFF)"}, }; /* pci_vid_3D3D[] */ -pci_id_t pci_vid_4005[] = { +static pci_id_t const pci_vid_4005[] = { {0x4005, 0xFFFF, 0xFFFF, 0xFFFF, "Avance Logic Inc.(0x4005)"}, {0x4005, 0x0300, 0xFFFF, 0xFFFF, "ALS300 PCI Audio Device(0x0300)"}, {0x4005, 0x0308, 0xFFFF, 0xFFFF, "ALS300+ PCI Audio Device(0x0308)"}, @@ -32724,12 +32989,12 @@ pci_id_t pci_vid_4005[] = { {0x4005, 0x4710, 0xFFFF, 0xFFFF, "ALC200/200P(0x4710)"}, }; /* pci_vid_4005[] */ -pci_id_t pci_vid_4033[] = { +static pci_id_t const pci_vid_4033[] = { {0x4033, 0xFFFF, 0xFFFF, 0xFFFF, "Addtron Technology Co, Inc.(0x4033)"}, {0x4033, 0x1360, 0xFFFF, 0xFFFF, "RTL8139 Ethernet(0x1360)"}, }; /* pci_vid_4033[] */ -pci_id_t pci_vid_4040[] = { +static pci_id_t const pci_vid_4040[] = { {0x4040, 0xFFFF, 0xFFFF, 0xFFFF, "NetXen Incorporated(0x4040)"}, {0x4040, 0x0001, 0xFFFF, 0xFFFF, "NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface(0x0001)"}, {0x4040, 0x0001, 0x103C, 0x7047, "NC510F PCIe 10-Gigabit Server Adapter(0x103C-0x7047)"}, @@ -32752,45 +33017,45 @@ pci_id_t pci_vid_4040[] = { {0x4040, 0x0100, 0x4040, 0x0126, "Dual Port SFP+ 10GbE Server Adapter(0x4040-0x0126)"}, }; /* pci_vid_4040[] */ -pci_id_t pci_vid_4143[] = { +static pci_id_t const pci_vid_4143[] = { {0x4143, 0xFFFF, 0xFFFF, 0xFFFF, "Digital Equipment Corp(0x4143)"}, }; /* pci_vid_4143[] */ -pci_id_t pci_vid_4144[] = { +static pci_id_t const pci_vid_4144[] = { {0x4144, 0xFFFF, 0xFFFF, 0xFFFF, "Alpha Data(0x4144)"}, {0x4144, 0x0044, 0xFFFF, 0xFFFF, "ADM-XRCIIPro(0x0044)"}, }; /* pci_vid_4144[] */ -pci_id_t pci_vid_4150[] = { +static pci_id_t const pci_vid_4150[] = { {0x4150, 0xFFFF, 0xFFFF, 0xFFFF, "ONA Electroerosion(0x4150)"}, {0x4150, 0x0001, 0xFFFF, 0xFFFF, "PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller(0x0001)"}, {0x4150, 0x0006, 0xFFFF, 0xFFFF, "PCI32TLITE UART 16550 Opencores(0x0006)"}, {0x4150, 0x0007, 0xFFFF, 0xFFFF, "PCI32TLITE CAN Controller Opencores(0x0007)"}, }; /* pci_vid_4150[] */ -pci_id_t pci_vid_415A[] = { +static pci_id_t const pci_vid_415A[] = { {0x415A, 0xFFFF, 0xFFFF, 0xFFFF, "Auzentech, Inc.(0x415A)"}, }; /* pci_vid_415A[] */ -pci_id_t pci_vid_416C[] = { +static pci_id_t const pci_vid_416C[] = { {0x416C, 0xFFFF, 0xFFFF, 0xFFFF, "Aladdin Knowledge Systems(0x416C)"}, {0x416C, 0x0100, 0xFFFF, 0xFFFF, "AladdinCARD(0x0100)"}, {0x416C, 0x0200, 0xFFFF, 0xFFFF, "CPC(0x0200)"}, }; /* pci_vid_416C[] */ -pci_id_t pci_vid_4242[] = { +static pci_id_t const pci_vid_4242[] = { {0x4242, 0xFFFF, 0xFFFF, 0xFFFF, "Universall Answer Generators(0x4242)"}, }; /* pci_vid_4242[] */ -pci_id_t pci_vid_4254[] = { +static pci_id_t const pci_vid_4254[] = { {0x4254, 0xFFFF, 0xFFFF, 0xFFFF, "DVBSky(0x4254)"}, }; /* pci_vid_4254[] */ -pci_id_t pci_vid_4321[] = { +static pci_id_t const pci_vid_4321[] = { {0x4321, 0xFFFF, 0xFFFF, 0xFFFF, "Tata Power Strategic Electronics Division(0x4321)"}, }; /* pci_vid_4321[] */ -pci_id_t pci_vid_4348[] = { +static pci_id_t const pci_vid_4348[] = { {0x4348, 0xFFFF, 0xFFFF, 0xFFFF, "WCH.CN(0x4348)"}, {0x4348, 0x2273, 0xFFFF, 0xFFFF, "CH351 PCI Dual Serial Port Controller(0x2273)"}, {0x4348, 0x3253, 0xFFFF, 0xFFFF, "CH352 PCI Dual Serial Port Controller(0x3253)"}, @@ -32801,11 +33066,11 @@ pci_id_t pci_vid_4348[] = { {0x4348, 0x7173, 0xFFFF, 0xFFFF, "CH355 PCI Quad Serial Port Controller(0x7173)"}, }; /* pci_vid_4348[] */ -pci_id_t pci_vid_434E[] = { +static pci_id_t const pci_vid_434E[] = { {0x434E, 0xFFFF, 0xFFFF, 0xFFFF, "Cornelis Networks(0x434E)"}, }; /* pci_vid_434E[] */ -pci_id_t pci_vid_4444[] = { +static pci_id_t const pci_vid_4444[] = { {0x4444, 0xFFFF, 0xFFFF, 0xFFFF, "Internext Compression Inc(0x4444)"}, {0x4444, 0x0016, 0xFFFF, 0xFFFF, "iTVC16 (CX23416) Video Decoder(0x0016)"}, {0x4444, 0x0016, 0x0070, 0x0003, "WinTV PVR 250(0x0070-0x0003)"}, @@ -32872,47 +33137,47 @@ pci_id_t pci_vid_4444[] = { {0x4444, 0x0803, 0x1461, 0xA3CF, "M179(0x1461-0xA3CF)"}, }; /* pci_vid_4444[] */ -pci_id_t pci_vid_4468[] = { +static pci_id_t const pci_vid_4468[] = { {0x4468, 0xFFFF, 0xFFFF, 0xFFFF, "Bridgeport machines(0x4468)"}, }; /* pci_vid_4468[] */ -pci_id_t pci_vid_4594[] = { +static pci_id_t const pci_vid_4594[] = { {0x4594, 0xFFFF, 0xFFFF, 0xFFFF, "Cogetec Informatique Inc(0x4594)"}, }; /* pci_vid_4594[] */ -pci_id_t pci_vid_45FB[] = { +static pci_id_t const pci_vid_45FB[] = { {0x45FB, 0xFFFF, 0xFFFF, 0xFFFF, "Baldor Electric Company(0x45FB)"}, }; /* pci_vid_45FB[] */ -pci_id_t pci_vid_4624[] = { +static pci_id_t const pci_vid_4624[] = { {0x4624, 0xFFFF, 0xFFFF, 0xFFFF, "Budker Institute of Nuclear Physics(0x4624)"}, {0x4624, 0xADC1, 0xFFFF, 0xFFFF, "ADC200ME High speed ADC(0xADC1)"}, {0x4624, 0xDE01, 0xFFFF, 0xFFFF, "DL200ME High resolution delay line PCI based card(0xDE01)"}, {0x4624, 0xDE02, 0xFFFF, 0xFFFF, "DL200ME Middle resolution delay line PCI based card(0xDE02)"}, }; /* pci_vid_4624[] */ -pci_id_t pci_vid_4651[] = { +static pci_id_t const pci_vid_4651[] = { {0x4651, 0xFFFF, 0xFFFF, 0xFFFF, "TXIC(0x4651)"}, }; /* pci_vid_4651[] */ -pci_id_t pci_vid_4680[] = { +static pci_id_t const pci_vid_4680[] = { {0x4680, 0xFFFF, 0xFFFF, 0xFFFF, "Umax Computer Corp(0x4680)"}, }; /* pci_vid_4680[] */ -pci_id_t pci_vid_4843[] = { +static pci_id_t const pci_vid_4843[] = { {0x4843, 0xFFFF, 0xFFFF, 0xFFFF, "Hercules Computer Technology Inc(0x4843)"}, }; /* pci_vid_4843[] */ -pci_id_t pci_vid_4916[] = { +static pci_id_t const pci_vid_4916[] = { {0x4916, 0xFFFF, 0xFFFF, 0xFFFF, "RedCreek Communications Inc(0x4916)"}, {0x4916, 0x1960, 0xFFFF, 0xFFFF, "RedCreek PCI adapter(0x1960)"}, }; /* pci_vid_4916[] */ -pci_id_t pci_vid_4943[] = { +static pci_id_t const pci_vid_4943[] = { {0x4943, 0xFFFF, 0xFFFF, 0xFFFF, "Growth Networks(0x4943)"}, }; /* pci_vid_4943[] */ -pci_id_t pci_vid_494F[] = { +static pci_id_t const pci_vid_494F[] = { {0x494F, 0xFFFF, 0xFFFF, 0xFFFF, "ACCES I/O Products, Inc.(0x494F)"}, {0x494F, 0x0508, 0xFFFF, 0xFFFF, "PCI-IDO-16A FET Output Card(0x0508)"}, {0x494F, 0x0518, 0xFFFF, 0xFFFF, "PCI-IDO-32A FET Output Card(0x0518)"}, @@ -33038,33 +33303,47 @@ pci_id_t pci_vid_494F[] = { {0x494F, 0xECE9, 0xFFFF, 0xFFFF, "LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card(0xECE9)"}, }; /* pci_vid_494F[] */ -pci_id_t pci_vid_4978[] = { +static pci_id_t const pci_vid_4978[] = { {0x4978, 0xFFFF, 0xFFFF, 0xFFFF, "Axil Computer Inc(0x4978)"}, }; /* pci_vid_4978[] */ -pci_id_t pci_vid_4A14[] = { +static pci_id_t const pci_vid_4A14[] = { {0x4A14, 0xFFFF, 0xFFFF, 0xFFFF, "NetVin(0x4A14)"}, {0x4A14, 0x5000, 0xFFFF, 0xFFFF, "NV5000SC(0x5000)"}, {0x4A14, 0x5000, 0x4A14, 0x5000, "RT8029-Based Ethernet Adapter(0x4A14-0x5000)"}, }; /* pci_vid_4A14[] */ -pci_id_t pci_vid_4B10[] = { +static pci_id_t const pci_vid_4B10[] = { {0x4B10, 0xFFFF, 0xFFFF, 0xFFFF, "Buslogic Inc.(0x4B10)"}, }; /* pci_vid_4B10[] */ -pci_id_t pci_vid_4C48[] = { +static pci_id_t const pci_vid_4B43[] = { +{0x4B43, 0xFFFF, 0xFFFF, 0xFFFF, "KonteX Inc.(0x4B43)"}, +}; /* pci_vid_4B43[] */ + +static pci_id_t const pci_vid_4C48[] = { {0x4C48, 0xFFFF, 0xFFFF, 0xFFFF, "LUNG HWA Electronics(0x4C48)"}, }; /* pci_vid_4C48[] */ -pci_id_t pci_vid_4C4D[] = { +static pci_id_t const pci_vid_4C4D[] = { {0x4C4D, 0xFFFF, 0xFFFF, 0xFFFF, "Liquid-Markets GmbH(0x4C4D)"}, +{0x4C4D, 0x9998, 0xFFFF, 0xFFFF, "TaSR(0x9998)"}, +{0x4C4D, 0x9999, 0xFFFF, 0xFFFF, "UberNIC PoC/testing/dev(0x9999)"}, }; /* pci_vid_4C4D[] */ -pci_id_t pci_vid_4C52[] = { -{0x4C52, 0xFFFF, 0xFFFF, 0xFFFF, "LR-Link(0x4C52)"}, +static pci_id_t const pci_vid_4C52[] = { +{0x4C52, 0xFFFF, 0xFFFF, 0xFFFF, "LR-LINK(0x4C52)"}, +{0x4C52, 0x1001, 0xFFFF, 0xFFFF, "Smart Network Adapter(0x1001)"}, +{0x4C52, 0x1001, 0x4C52, 0xA006, "LREG1006PT Single-port 1.2Gb Network Security Isolation Adapter(0x4C52-0xA006)"}, +{0x4C52, 0x1001, 0x4C52, 0xA008, "LREG1008PT Single-port 1Gb Smart Ethernet Network Adapter(0x4C52-0xA008)"}, +{0x4C52, 0x1001, 0x4C52, 0xA009, "LREG1009PT Single-port 2.5Gb Smart Ethernet Network Adapter(0x4C52-0xA009)"}, +{0x4C52, 0x1002, 0xFFFF, 0xFFFF, "Smart Network Adapter(0x1002)"}, +{0x4C52, 0x1002, 0x4C52, 0xA007, "LREG1007PT Quad-port 10Gb Smart Ethernet Network Adapter(0x4C52-0xA007)"}, +{0x4C52, 0x1003, 0xFFFF, 0xFFFF, "Smart Network Adapter(0x1003)"}, +{0x4C52, 0x1003, 0x4C52, 0xB010, "LREG1010PF Single-port 10Gb FPGA Network Security Isolation Adapter(0x4C52-0xB010)"}, }; /* pci_vid_4C52[] */ -pci_id_t pci_vid_4C53[] = { +static pci_id_t const pci_vid_4C53[] = { {0x4C53, 0xFFFF, 0xFFFF, 0xFFFF, "SBS Technologies(0x4C53)"}, {0x4C53, 0x0000, 0xFFFF, 0xFFFF, "PLUSTEST device(0x0000)"}, {0x4C53, 0x0000, 0x4C53, 0x3000, "PLUSTEST card (PC104+)(0x4C53-0x3000)"}, @@ -33073,20 +33352,20 @@ pci_id_t pci_vid_4C53[] = { {0x4C53, 0x0001, 0x4C53, 0x3002, "PLUSTEST-MM card (PMC)(0x4C53-0x3002)"}, }; /* pci_vid_4C53[] */ -pci_id_t pci_vid_4CA1[] = { +static pci_id_t const pci_vid_4CA1[] = { {0x4CA1, 0xFFFF, 0xFFFF, 0xFFFF, "Seanix Technology Inc(0x4CA1)"}, }; /* pci_vid_4CA1[] */ -pci_id_t pci_vid_4D51[] = { +static pci_id_t const pci_vid_4D51[] = { {0x4D51, 0xFFFF, 0xFFFF, 0xFFFF, "MediaQ Inc.(0x4D51)"}, {0x4D51, 0x0200, 0xFFFF, 0xFFFF, "MQ-200(0x0200)"}, }; /* pci_vid_4D51[] */ -pci_id_t pci_vid_4D54[] = { +static pci_id_t const pci_vid_4D54[] = { {0x4D54, 0xFFFF, 0xFFFF, 0xFFFF, "Microtechnica Co Ltd(0x4D54)"}, }; /* pci_vid_4D54[] */ -pci_id_t pci_vid_4D56[] = { +static pci_id_t const pci_vid_4D56[] = { {0x4D56, 0xFFFF, 0xFFFF, 0xFFFF, "Balluff MV GmbH(0x4D56)"}, {0x4D56, 0x0000, 0xFFFF, 0xFFFF, "[mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber(0x0000)"}, {0x4D56, 0x0001, 0xFFFF, 0xFFFF, "[mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber(0x0001)"}, @@ -33099,7 +33378,7 @@ pci_id_t pci_vid_4D56[] = { {0x4D56, 0x7024, 0xFFFF, 0xFFFF, "[mvBlueNAOS BVS CA-BN] PCIe Gen2 x4 Camera(0x7024)"}, }; /* pci_vid_4D56[] */ -pci_id_t pci_vid_4DDC[] = { +static pci_id_t const pci_vid_4DDC[] = { {0x4DDC, 0xFFFF, 0xFFFF, 0xFFFF, "ILC Data Device Corp(0x4DDC)"}, {0x4DDC, 0x0100, 0xFFFF, 0xFFFF, "DD-42924I5-300 (ARINC 429 Data Bus)(0x0100)"}, {0x4DDC, 0x0300, 0xFFFF, 0xFFFF, "SB-3620 Motion Feedback Device(0x0300)"}, @@ -33129,60 +33408,64 @@ pci_id_t pci_vid_4DDC[] = { {0x4DDC, 0x3000, 0xFFFF, 0xFFFF, "SB-3644 Motion Feedback Device(0x3000)"}, }; /* pci_vid_4DDC[] */ -pci_id_t pci_vid_4E58[] = { +static pci_id_t const pci_vid_4E4C[] = { +{0x4E4C, 0xFFFF, 0xFFFF, 0xFFFF, "NieL TechSolution(0x4E4C)"}, +}; /* pci_vid_4E4C[] */ + +static pci_id_t const pci_vid_4E58[] = { {0x4E58, 0xFFFF, 0xFFFF, 0xFFFF, "Nutanix, Inc.(0x4E58)"}, {0x4E58, 0x0001, 0xFFFF, 0xFFFF, "Virtual NVMe Controller(0x0001)"}, }; /* pci_vid_4E58[] */ -pci_id_t pci_vid_5045[] = { +static pci_id_t const pci_vid_5045[] = { {0x5045, 0xFFFF, 0xFFFF, 0xFFFF, "University of Toronto(0x5045)"}, {0x5045, 0x4243, 0xFFFF, 0xFFFF, "BLASTbus PCI Interface Card v1(0x4243)"}, }; /* pci_vid_5045[] */ -pci_id_t pci_vid_5046[] = { +static pci_id_t const pci_vid_5046[] = { {0x5046, 0xFFFF, 0xFFFF, 0xFFFF, "GemTek Technology Corporation(0x5046)"}, {0x5046, 0x1001, 0xFFFF, 0xFFFF, "PCI Radio(0x1001)"}, }; /* pci_vid_5046[] */ -pci_id_t pci_vid_5053[] = { +static pci_id_t const pci_vid_5053[] = { {0x5053, 0xFFFF, 0xFFFF, 0xFFFF, "Voyetra Technologies(0x5053)"}, {0x5053, 0x2010, 0xFFFF, 0xFFFF, "Daytona Audio Adapter(0x2010)"}, }; /* pci_vid_5053[] */ -pci_id_t pci_vid_50B2[] = { +static pci_id_t const pci_vid_50B2[] = { {0x50B2, 0xFFFF, 0xFFFF, 0xFFFF, "TerraTec Electronic GmbH(0x50B2)"}, }; /* pci_vid_50B2[] */ -pci_id_t pci_vid_50CE[] = { +static pci_id_t const pci_vid_50CE[] = { {0x50CE, 0xFFFF, 0xFFFF, 0xFFFF, "System-on-Chip Engineering S.L.(0x50CE)"}, {0x50CE, 0x0001, 0xFFFF, 0xFFFF, "RELY-MIL-XMC-TSN-SWITCH(0x0001)"}, }; /* pci_vid_50CE[] */ -pci_id_t pci_vid_5136[] = { +static pci_id_t const pci_vid_5136[] = { {0x5136, 0xFFFF, 0xFFFF, 0xFFFF, "S S Technologies(0x5136)"}, }; /* pci_vid_5136[] */ -pci_id_t pci_vid_5143[] = { +static pci_id_t const pci_vid_5143[] = { {0x5143, 0xFFFF, 0xFFFF, 0xFFFF, "Qualcomm Inc(0x5143)"}, }; /* pci_vid_5143[] */ -pci_id_t pci_vid_5145[] = { +static pci_id_t const pci_vid_5145[] = { {0x5145, 0xFFFF, 0xFFFF, 0xFFFF, "Ensoniq (Old)(0x5145)"}, {0x5145, 0x3031, 0xFFFF, 0xFFFF, "Concert AudioPCI(0x3031)"}, }; /* pci_vid_5145[] */ -pci_id_t pci_vid_5168[] = { +static pci_id_t const pci_vid_5168[] = { {0x5168, 0xFFFF, 0xFFFF, 0xFFFF, "Animation Technologies Inc.(0x5168)"}, {0x5168, 0x0300, 0xFFFF, 0xFFFF, "FlyDVB-S(0x0300)"}, {0x5168, 0x0301, 0xFFFF, 0xFFFF, "FlyDVB-T(0x0301)"}, }; /* pci_vid_5168[] */ -pci_id_t pci_vid_5301[] = { +static pci_id_t const pci_vid_5301[] = { {0x5301, 0xFFFF, 0xFFFF, 0xFFFF, "Alliance Semiconductor Corp.(0x5301)"}, {0x5301, 0x0001, 0xFFFF, 0xFFFF, "ProMotion aT3D(0x0001)"}, }; /* pci_vid_5301[] */ -pci_id_t pci_vid_5333[] = { +static pci_id_t const pci_vid_5333[] = { {0x5333, 0xFFFF, 0xFFFF, 0xFFFF, "S3 Graphics Ltd.(0x5333)"}, {0x5333, 0x0551, 0xFFFF, 0xFFFF, "Plato/PX (system)(0x0551)"}, {0x5333, 0x5631, 0xFFFF, 0xFFFF, "86c325 [ViRGE](0x5631)"}, @@ -33331,16 +33614,16 @@ pci_id_t pci_vid_5333[] = { {0x5333, 0xCA00, 0xFFFF, 0xFFFF, "SonicVibes(0xCA00)"}, }; /* pci_vid_5333[] */ -pci_id_t pci_vid_5431[] = { +static pci_id_t const pci_vid_5431[] = { {0x5431, 0xFFFF, 0xFFFF, 0xFFFF, "AuzenTech, Inc.(0x5431)"}, }; /* pci_vid_5431[] */ -pci_id_t pci_vid_544C[] = { +static pci_id_t const pci_vid_544C[] = { {0x544C, 0xFFFF, 0xFFFF, 0xFFFF, "Teralogic Inc(0x544C)"}, {0x544C, 0x0350, 0xFFFF, 0xFFFF, "TL880-based HDTV/ATSC tuner(0x0350)"}, }; /* pci_vid_544C[] */ -pci_id_t pci_vid_544D[] = { +static pci_id_t const pci_vid_544D[] = { {0x544D, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies(0x544D)"}, {0x544D, 0x6178, 0xFFFF, 0xFFFF, "DVB Tuner PCIe Card(0x6178)"}, {0x544D, 0x6178, 0x544D, 0x6904, "TBS6904 DVB-S2 Quad Tuner PCIe Card(0x544D-0x6904)"}, @@ -33360,67 +33643,68 @@ pci_id_t pci_vid_544D[] = { {0x544D, 0x6178, 0x6910, 0x0002, "TBS6910SE DVB-S/S2/S2x + 2xCI(0x6910-0x0002)"}, }; /* pci_vid_544D[] */ -pci_id_t pci_vid_5452[] = { +static pci_id_t const pci_vid_5452[] = { {0x5452, 0xFFFF, 0xFFFF, 0xFFFF, "SCANLAB AG(0x5452)"}, {0x5452, 0x3443, 0xFFFF, 0xFFFF, "RTC4(0x3443)"}, }; /* pci_vid_5452[] */ -pci_id_t pci_vid_5455[] = { +static pci_id_t const pci_vid_5455[] = { {0x5455, 0xFFFF, 0xFFFF, 0xFFFF, "Technische Universitaet Berlin(0x5455)"}, {0x5455, 0x4458, 0xFFFF, 0xFFFF, "S5933(0x4458)"}, }; /* pci_vid_5455[] */ -pci_id_t pci_vid_5456[] = { +static pci_id_t const pci_vid_5456[] = { {0x5456, 0xFFFF, 0xFFFF, 0xFFFF, "GoTView(0x5456)"}, }; /* pci_vid_5456[] */ -pci_id_t pci_vid_5519[] = { +static pci_id_t const pci_vid_5519[] = { {0x5519, 0xFFFF, 0xFFFF, 0xFFFF, "Cnet Technologies, Inc.(0x5519)"}, }; /* pci_vid_5519[] */ -pci_id_t pci_vid_5544[] = { +static pci_id_t const pci_vid_5544[] = { {0x5544, 0xFFFF, 0xFFFF, 0xFFFF, "Dunord Technologies(0x5544)"}, {0x5544, 0x0001, 0xFFFF, 0xFFFF, "I-30xx Scanner Interface(0x0001)"}, }; /* pci_vid_5544[] */ -pci_id_t pci_vid_5555[] = { +static pci_id_t const pci_vid_5555[] = { {0x5555, 0xFFFF, 0xFFFF, 0xFFFF, "Genroco, Inc(0x5555)"}, {0x5555, 0x0003, 0xFFFF, 0xFFFF, "TURBOstor HFP-832 [HiPPI NIC](0x0003)"}, +{0x5555, 0x0004, 0xFFFF, 0xFFFF, "Torrent QN16e [16-128 Channel MPEG QAM Modulator for DVB-C](0x0004)"}, {0x5555, 0x3B00, 0xFFFF, 0xFFFF, "Epiphan DVI2PCIe video capture card(0x3B00)"}, }; /* pci_vid_5555[] */ -pci_id_t pci_vid_5646[] = { +static pci_id_t const pci_vid_5646[] = { {0x5646, 0xFFFF, 0xFFFF, 0xFFFF, "Vector Fabrics BV(0x5646)"}, }; /* pci_vid_5646[] */ -pci_id_t pci_vid_5654[] = { +static pci_id_t const pci_vid_5654[] = { {0x5654, 0xFFFF, 0xFFFF, 0xFFFF, "VoiceTronix Pty Ltd(0x5654)"}, }; /* pci_vid_5654[] */ -pci_id_t pci_vid_5678[] = { +static pci_id_t const pci_vid_5678[] = { {0x5678, 0xFFFF, 0xFFFF, 0xFFFF, "Dawicontrol Computersysteme GmbH(0x5678)"}, }; /* pci_vid_5678[] */ -pci_id_t pci_vid_5700[] = { +static pci_id_t const pci_vid_5700[] = { {0x5700, 0xFFFF, 0xFFFF, 0xFFFF, "Netpower(0x5700)"}, }; /* pci_vid_5700[] */ -pci_id_t pci_vid_5845[] = { +static pci_id_t const pci_vid_5845[] = { {0x5845, 0xFFFF, 0xFFFF, 0xFFFF, "X-ES, Inc.(0x5845)"}, }; /* pci_vid_5845[] */ -pci_id_t pci_vid_584D[] = { +static pci_id_t const pci_vid_584D[] = { {0x584D, 0xFFFF, 0xFFFF, 0xFFFF, "AuzenTech Co., Ltd.(0x584D)"}, }; /* pci_vid_584D[] */ -pci_id_t pci_vid_5851[] = { +static pci_id_t const pci_vid_5851[] = { {0x5851, 0xFFFF, 0xFFFF, 0xFFFF, "Exacq Technologies(0x5851)"}, {0x5851, 0x8008, 0xFFFF, 0xFFFF, "tDVR8008 8-port video capture card(0x8008)"}, {0x5851, 0x8016, 0xFFFF, 0xFFFF, "tDVR8016 16-chan video capture card(0x8016)"}, {0x5851, 0x8032, 0xFFFF, 0xFFFF, "tDVR8032 32-chan video capture card(0x8032)"}, }; /* pci_vid_5851[] */ -pci_id_t pci_vid_5853[] = { +static pci_id_t const pci_vid_5853[] = { {0x5853, 0xFFFF, 0xFFFF, 0xFFFF, "XenSource, Inc.(0x5853)"}, {0x5853, 0x0001, 0xFFFF, 0xFFFF, "Xen Platform Device(0x0001)"}, {0x5853, 0xC000, 0xFFFF, 0xFFFF, "Citrix XenServer PCI Device for Windows Update(0xC000)"}, @@ -33429,51 +33713,51 @@ pci_id_t pci_vid_5853[] = { {0x5853, 0xC200, 0xFFFF, 0xFFFF, "XCP-ng Project PCI Device for Windows Update(0xC200)"}, }; /* pci_vid_5853[] */ -pci_id_t pci_vid_5854[] = { +static pci_id_t const pci_vid_5854[] = { {0x5854, 0xFFFF, 0xFFFF, 0xFFFF, "GoTView(0x5854)"}, }; /* pci_vid_5854[] */ -pci_id_t pci_vid_5ACE[] = { +static pci_id_t const pci_vid_5ACE[] = { {0x5ACE, 0xFFFF, 0xFFFF, 0xFFFF, "Beholder International Ltd.(0x5ACE)"}, }; /* pci_vid_5ACE[] */ -pci_id_t pci_vid_6205[] = { +static pci_id_t const pci_vid_6205[] = { {0x6205, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6205)"}, }; /* pci_vid_6205[] */ -pci_id_t pci_vid_6209[] = { +static pci_id_t const pci_vid_6209[] = { {0x6209, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6209)"}, }; /* pci_vid_6209[] */ -pci_id_t pci_vid_631C[] = { +static pci_id_t const pci_vid_631C[] = { {0x631C, 0xFFFF, 0xFFFF, 0xFFFF, "SmartInfra Ltd(0x631C)"}, {0x631C, 0x1652, 0xFFFF, 0xFFFF, "PXI-1652 Signal Generator(0x1652)"}, {0x631C, 0x2504, 0xFFFF, 0xFFFF, "PXI-2504 Signal Interrogator(0x2504)"}, }; /* pci_vid_631C[] */ -pci_id_t pci_vid_6356[] = { +static pci_id_t const pci_vid_6356[] = { {0x6356, 0xFFFF, 0xFFFF, 0xFFFF, "UltraStor(0x6356)"}, }; /* pci_vid_6356[] */ -pci_id_t pci_vid_6374[] = { +static pci_id_t const pci_vid_6374[] = { {0x6374, 0xFFFF, 0xFFFF, 0xFFFF, "c't Magazin fuer Computertechnik(0x6374)"}, {0x6374, 0x6773, 0xFFFF, 0xFFFF, "GPPCI(0x6773)"}, }; /* pci_vid_6374[] */ -pci_id_t pci_vid_6409[] = { +static pci_id_t const pci_vid_6409[] = { {0x6409, 0xFFFF, 0xFFFF, 0xFFFF, "Logitec Corp.(0x6409)"}, }; /* pci_vid_6409[] */ -pci_id_t pci_vid_6549[] = { +static pci_id_t const pci_vid_6549[] = { {0x6549, 0xFFFF, 0xFFFF, 0xFFFF, "Teradici Corp.(0x6549)"}, {0x6549, 0x1200, 0xFFFF, 0xFFFF, "TERA1200 PC-over-IP Host(0x1200)"}, }; /* pci_vid_6549[] */ -pci_id_t pci_vid_6590[] = { +static pci_id_t const pci_vid_6590[] = { {0x6590, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6590)"}, }; /* pci_vid_6590[] */ -pci_id_t pci_vid_6666[] = { +static pci_id_t const pci_vid_6666[] = { {0x6666, 0xFFFF, 0xFFFF, 0xFFFF, "Decision Computer International Co.(0x6666)"}, {0x6666, 0x0001, 0xFFFF, 0xFFFF, "PCCOM4(0x0001)"}, {0x6666, 0x0002, 0xFFFF, 0xFFFF, "PCCOM8(0x0002)"}, @@ -33488,7 +33772,7 @@ pci_id_t pci_vid_6666[] = { {0x6666, 0x4000, 0xFFFF, 0xFFFF, "WatchDog Card(0x4000)"}, }; /* pci_vid_6666[] */ -pci_id_t pci_vid_6688[] = { +static pci_id_t const pci_vid_6688[] = { {0x6688, 0xFFFF, 0xFFFF, 0xFFFF, "Zycoo Co., Ltd(0x6688)"}, {0x6688, 0x1200, 0xFFFF, 0xFFFF, "CooVox TDM Analog Module(0x1200)"}, {0x6688, 0x1400, 0xFFFF, 0xFFFF, "CooVOX TDM GSM Module(0x1400)"}, @@ -33496,11 +33780,11 @@ pci_id_t pci_vid_6688[] = { {0x6688, 0x1800, 0xFFFF, 0xFFFF, "CooVOX TDM BRI Module(0x1800)"}, }; /* pci_vid_6688[] */ -pci_id_t pci_vid_6704[] = { +static pci_id_t const pci_vid_6704[] = { {0x6704, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6704)"}, }; /* pci_vid_6704[] */ -pci_id_t pci_vid_6766[] = { +static pci_id_t const pci_vid_6766[] = { {0x6766, 0xFFFF, 0xFFFF, 0xFFFF, "Glenfly Tech Co., Ltd.(0x6766)"}, {0x6766, 0x3D00, 0xFFFF, 0xFFFF, "Arise-GT-10C0(0x3D00)"}, {0x6766, 0x3D02, 0xFFFF, 0xFFFF, "Arise1020(0x3D02)"}, @@ -33514,91 +33798,95 @@ pci_id_t pci_vid_6766[] = { {0x6766, 0x3D43, 0xFFFF, 0xFFFF, "GLF HDMI/DP Audio(0x3D43)"}, }; /* pci_vid_6766[] */ -pci_id_t pci_vid_6899[] = { +static pci_id_t const pci_vid_6899[] = { {0x6899, 0xFFFF, 0xFFFF, 0xFFFF, "ZT Systems(0x6899)"}, }; /* pci_vid_6899[] */ -pci_id_t pci_vid_6900[] = { +static pci_id_t const pci_vid_6900[] = { {0x6900, 0xFFFF, 0xFFFF, 0xFFFF, "Red Hat, Inc.(0x6900)"}, }; /* pci_vid_6900[] */ -pci_id_t pci_vid_6903[] = { +static pci_id_t const pci_vid_6903[] = { {0x6903, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6903)"}, }; /* pci_vid_6903[] */ -pci_id_t pci_vid_6909[] = { +static pci_id_t const pci_vid_6909[] = { {0x6909, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6909)"}, }; /* pci_vid_6909[] */ -pci_id_t pci_vid_6910[] = { +static pci_id_t const pci_vid_6910[] = { {0x6910, 0xFFFF, 0xFFFF, 0xFFFF, "TBS Technologies (wrong ID)(0x6910)"}, }; /* pci_vid_6910[] */ -pci_id_t pci_vid_7063[] = { +static pci_id_t const pci_vid_6F67[] = { +{0x6F67, 0xFFFF, 0xFFFF, 0xFFFF, "NOVAIUM Technology(0x6F67)"}, +}; /* pci_vid_6F67[] */ + +static pci_id_t const pci_vid_7063[] = { {0x7063, 0xFFFF, 0xFFFF, 0xFFFF, "pcHDTV(0x7063)"}, {0x7063, 0x2000, 0xFFFF, 0xFFFF, "HD-2000(0x2000)"}, {0x7063, 0x3000, 0xFFFF, 0xFFFF, "HD-3000(0x3000)"}, {0x7063, 0x5500, 0xFFFF, 0xFFFF, "HD5500 HDTV(0x5500)"}, }; /* pci_vid_7063[] */ -pci_id_t pci_vid_7284[] = { +static pci_id_t const pci_vid_7284[] = { {0x7284, 0xFFFF, 0xFFFF, 0xFFFF, "HT OMEGA Inc.(0x7284)"}, }; /* pci_vid_7284[] */ -pci_id_t pci_vid_7357[] = { +static pci_id_t const pci_vid_7357[] = { {0x7357, 0xFFFF, 0xFFFF, 0xFFFF, "IOxOS Technologies SA(0x7357)"}, {0x7357, 0x7910, 0xFFFF, 0xFFFF, "7910 [Althea](0x7910)"}, }; /* pci_vid_7357[] */ -pci_id_t pci_vid_7377[] = { +static pci_id_t const pci_vid_7377[] = { {0x7377, 0xFFFF, 0xFFFF, 0xFFFF, "Shenzhen Colorful Yugong Technology and Development Co.(0x7377)"}, }; /* pci_vid_7377[] */ -pci_id_t pci_vid_7401[] = { +static pci_id_t const pci_vid_7401[] = { {0x7401, 0xFFFF, 0xFFFF, 0xFFFF, "EndRun Technologies(0x7401)"}, {0x7401, 0xE100, 0xFFFF, 0xFFFF, "PTP3100 PCIe PTP Slave Clock(0xE100)"}, }; /* pci_vid_7401[] */ -pci_id_t pci_vid_7470[] = { +static pci_id_t const pci_vid_7470[] = { {0x7470, 0xFFFF, 0xFFFF, 0xFFFF, "TP-LINK Technologies Co., Ltd.(0x7470)"}, }; /* pci_vid_7470[] */ -pci_id_t pci_vid_7526[] = { +static pci_id_t const pci_vid_7526[] = { {0x7526, 0xFFFF, 0xFFFF, 0xFFFF, "HongQin (Beijing) Technology Co., Ltd.(0x7526)"}, -{0x7526, 0x0082, 0xFFFF, 0xFFFF, "HQ SSD 1TB(0x0082)"}, +{0x7526, 0x0082, 0xFFFF, 0xFFFF, "HQ SSD M.2(0x0082)"}, {0x7526, 0x0083, 0xFFFF, 0xFFFF, "HQ SSD 2TB M.2 NVMe(0x0083)"}, }; /* pci_vid_7526[] */ -pci_id_t pci_vid_7604[] = { +static pci_id_t const pci_vid_7604[] = { {0x7604, 0xFFFF, 0xFFFF, 0xFFFF, "O.N. Electronic Co Ltd.(0x7604)"}, }; /* pci_vid_7604[] */ -pci_id_t pci_vid_78C0[] = { +static pci_id_t const pci_vid_78C0[] = { {0x78C0, 0xFFFF, 0xFFFF, 0xFFFF, "Herrick Technology Laboratories, Inc. [HTL](0x78C0)"}, {0x78C0, 0x0000, 0xFFFF, 0xFFFF, "HTLv-1 / HTLv-2 / HTLv-13 / HTLv-23(0x0000)"}, {0x78C0, 0x0011, 0xFFFF, 0xFFFF, "HTLv-53(0x0011)"}, }; /* pci_vid_78C0[] */ -pci_id_t pci_vid_7BDE[] = { +static pci_id_t const pci_vid_7BDE[] = { {0x7BDE, 0xFFFF, 0xFFFF, 0xFFFF, "MIDAC Corporation(0x7BDE)"}, }; /* pci_vid_7BDE[] */ -pci_id_t pci_vid_7FED[] = { +static pci_id_t const pci_vid_7FED[] = { {0x7FED, 0xFFFF, 0xFFFF, 0xFFFF, "PowerTV(0x7FED)"}, }; /* pci_vid_7FED[] */ -pci_id_t pci_vid_8008[] = { +static pci_id_t const pci_vid_8008[] = { {0x8008, 0xFFFF, 0xFFFF, 0xFFFF, "Quancom Electronic GmbH(0x8008)"}, {0x8008, 0x0010, 0xFFFF, 0xFFFF, "WDOG1 [PCI-Watchdog 1](0x0010)"}, {0x8008, 0x0011, 0xFFFF, 0xFFFF, "PWDOG2 [PCI-Watchdog 2](0x0011)"}, {0x8008, 0x0015, 0xFFFF, 0xFFFF, "Clock77/PCI & Clock77/PCIe (DCF-77 receiver)(0x0015)"}, }; /* pci_vid_8008[] */ -pci_id_t pci_vid_807D[] = { +static pci_id_t const pci_vid_807D[] = { {0x807D, 0xFFFF, 0xFFFF, 0xFFFF, "Asustek Computer, Inc.(0x807D)"}, }; /* pci_vid_807D[] */ -pci_id_t pci_vid_8086[] = { +static pci_id_t const pci_vid_8086[] = { {0x8086, 0xFFFF, 0xFFFF, 0xFFFF, "Intel Corporation(0x8086)"}, {0x8086, 0x0007, 0xFFFF, 0xFFFF, "82379AB(0x0007)"}, {0x8086, 0x0008, 0xFFFF, 0xFFFF, "Extended Express System Support Controller(0x0008)"}, @@ -33682,6 +33970,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x0100, 0xFFFF, 0xFFFF, "2nd Generation Core Processor Family DRAM Controller(0x0100)"}, {0x8086, 0x0100, 0x1028, 0x04AA, "XPS 8300(0x1028-0x04AA)"}, {0x8086, 0x0100, 0x1043, 0x844D, "P8P67/P8H67 Series Motherboard(0x1043-0x844D)"}, +{0x8086, 0x0100, 0x1734, 0x11B9, "Esprimo P510 D3171 motherboard(0x1734-0x11B9)"}, {0x8086, 0x0100, 0x8086, 0x200D, "DH61CR motherboard(0x8086-0x200D)"}, {0x8086, 0x0101, 0xFFFF, 0xFFFF, "Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port(0x0101)"}, {0x8086, 0x0101, 0x1028, 0x04B2, "Vostro 3350(0x1028-0x04B2)"}, @@ -33690,6 +33979,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x0102, 0xFFFF, 0xFFFF, "2nd Generation Core Processor Family Integrated Graphics Controller(0x0102)"}, {0x8086, 0x0102, 0x1028, 0x04AA, "XPS 8300(0x1028-0x04AA)"}, {0x8086, 0x0102, 0x1043, 0x0102, "P8H67 Series Motherboard(0x1043-0x0102)"}, +{0x8086, 0x0102, 0x1734, 0x11B9, "G640 [Sandy Bridge, HD Graphics] on Esprimo P510 D3171 motherboard(0x1734-0x11B9)"}, {0x8086, 0x0104, 0xFFFF, 0xFFFF, "2nd Generation Core Processor Family DRAM Controller(0x0104)"}, {0x8086, 0x0104, 0x1028, 0x04A3, "Precision M4600(0x1028-0x04A3)"}, {0x8086, 0x0104, 0x1028, 0x04B2, "Vostro 3350(0x1028-0x04B2)"}, @@ -33774,6 +34064,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x02B1, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #10(0x02B1)"}, {0x8086, 0x02B3, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #12(0x02B3)"}, {0x8086, 0x02B4, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #13(0x02B4)"}, +{0x8086, 0x02B5, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #14(0x02B5)"}, {0x8086, 0x02B8, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #1(0x02B8)"}, {0x8086, 0x02BC, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #5(0x02BC)"}, {0x8086, 0x02BF, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #8(0x02BF)"}, @@ -33796,10 +34087,13 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x02EF, 0xFFFF, 0xFFFF, "Comet Lake PCH-LP Shared SRAM(0x02EF)"}, {0x8086, 0x02EF, 0x1028, 0x09BE, "Latitude 7410(0x1028-0x09BE)"}, {0x8086, 0x02F0, 0xFFFF, 0xFFFF, "Comet Lake PCH-LP CNVi WiFi(0x02F0)"}, -{0x8086, 0x02F0, 0x8086, 0x0034, "Wireless-AC 9560 160MHz(0x8086-0x0034)"}, -{0x8086, 0x02F0, 0x8086, 0x0070, "Wi-Fi 6 AX201 160MHz(0x8086-0x0070)"}, -{0x8086, 0x02F0, 0x8086, 0x0074, "Wi-Fi 6 AX201 160MHz(0x8086-0x0074)"}, -{0x8086, 0x02F0, 0x8086, 0x4070, "Wi-Fi 6 AX201 160MHz(0x8086-0x4070)"}, +{0x8086, 0x02F0, 0x8086, 0x0034, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak](0x8086-0x0034)"}, +{0x8086, 0x02F0, 0x8086, 0x0070, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x0070)"}, +{0x8086, 0x02F0, 0x8086, 0x0074, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x0074)"}, +{0x8086, 0x02F0, 0x8086, 0x0234, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak](0x8086-0x0234)"}, +{0x8086, 0x02F0, 0x8086, 0x0264, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak](0x8086-0x0264)"}, +{0x8086, 0x02F0, 0x8086, 0x02A4, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak](0x8086-0x02A4)"}, +{0x8086, 0x02F0, 0x8086, 0x4070, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x4070)"}, {0x8086, 0x02F5, 0xFFFF, 0xFFFF, "Comet Lake PCH-LP SCS3(0x02F5)"}, {0x8086, 0x02F9, 0xFFFF, 0xFFFF, "Comet Lake Thermal Subsytem(0x02F9)"}, {0x8086, 0x02F9, 0x1028, 0x09BE, "Latitude 7410(0x1028-0x09BE)"}, @@ -33912,10 +34206,12 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x06ED, 0xFFFF, 0xFFFF, "Comet Lake USB 3.1 xHCI Host Controller(0x06ED)"}, {0x8086, 0x06EF, 0xFFFF, 0xFFFF, "Comet Lake PCH Shared SRAM(0x06EF)"}, {0x8086, 0x06F0, 0xFFFF, 0xFFFF, "Comet Lake PCH CNVi WiFi(0x06F0)"}, -{0x8086, 0x06F0, 0x1A56, 0x1651, "Wi-Fi 6 AX1650s 160MHz (201D2W) [Killer](0x1A56-0x1651)"}, -{0x8086, 0x06F0, 0x8086, 0x0034, "Wireless-AC 9560(0x8086-0x0034)"}, -{0x8086, 0x06F0, 0x8086, 0x0074, "Wi-Fi 6 AX201 160MHz(0x8086-0x0074)"}, -{0x8086, 0x06F0, 0x8086, 0x02A4, "Wireless-AC 9462(0x8086-0x02A4)"}, +{0x8086, 0x06F0, 0x1A56, 0x1651, "Dual Band Wi-Fi 6(802.11ax) Killer AX1650s 160MHz 2x2 [Cyclone Peak](0x1A56-0x1651)"}, +{0x8086, 0x06F0, 0x1A56, 0x1652, "Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak](0x1A56-0x1652)"}, +{0x8086, 0x06F0, 0x8086, 0x0034, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak](0x8086-0x0034)"}, +{0x8086, 0x06F0, 0x8086, 0x0074, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x0074)"}, +{0x8086, 0x06F0, 0x8086, 0x02A4, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak](0x8086-0x02A4)"}, +{0x8086, 0x06F0, 0x8086, 0x42A4, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak](0x8086-0x42A4)"}, {0x8086, 0x06F9, 0xFFFF, 0xFFFF, "Comet Lake PCH Thermal Controller(0x06F9)"}, {0x8086, 0x06FB, 0xFFFF, 0xFFFF, "Comet Lake PCH Serial IO SPI Controller #2(0x06FB)"}, {0x8086, 0x0700, 0xFFFF, 0xFFFF, "CE Media Processor A/V Bridge(0x0700)"}, @@ -35110,6 +35406,10 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x10FB, 0x1BD4, 0x002F, "10G SFP+ DP EP102Fi4A Adapter(0x1BD4-0x002F)"}, {0x8086, 0x10FB, 0x1BD4, 0x0032, "10G SFP+ DP EP102Fi4 Adapter(0x1BD4-0x0032)"}, {0x8086, 0x10FB, 0x1BD4, 0x0067, "F102I82599(0x1BD4-0x0067)"}, +{0x8086, 0x10FB, 0x4C52, 0x3002, "LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3002)"}, +{0x8086, 0x10FB, 0x4C52, 0x3012, "LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3012)"}, +{0x8086, 0x10FB, 0x4C52, 0x9801, "LREC9801BF Single-port 10Gb Ethernet Server Adapter(0x4C52-0x9801)"}, +{0x8086, 0x10FB, 0x4C52, 0x9802, "LREC9802BF Dual-port 10Gb Ethernet Server Adapter(0x4C52-0x9802)"}, {0x8086, 0x10FB, 0x8086, 0x0002, "Ethernet Server Adapter X520-DA2(0x8086-0x0002)"}, {0x8086, 0x10FB, 0x8086, 0x0003, "Ethernet Server Adapter X520-2(0x8086-0x0003)"}, {0x8086, 0x10FB, 0x8086, 0x0006, "Ethernet Server Adapter X520-1(0x8086-0x0006)"}, @@ -35359,10 +35659,16 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x125B, 0xFFFF, 0xFFFF, "Ethernet Controller I226-LM(0x125B)"}, {0x8086, 0x125C, 0xFFFF, 0xFFFF, "Ethernet Controller I226-V(0x125C)"}, {0x8086, 0x125D, 0xFFFF, 0xFFFF, "Ethernet Controller I226-IT(0x125D)"}, +{0x8086, 0x12D1, 0xFFFF, 0xFFFF, "Ethernet Controller E830-CC for backplane(0x12D1)"}, +{0x8086, 0x12D2, 0xFFFF, 0xFFFF, "Ethernet Controller E830-CC for QSFP(0x12D2)"}, +{0x8086, 0x12D3, 0xFFFF, 0xFFFF, "Ethernet Controller E830-CC for SFP(0x12D3)"}, +{0x8086, 0x12D4, 0xFFFF, 0xFFFF, "Ethernet Controller E830-CC for SFP-DD(0x12D4)"}, {0x8086, 0x1360, 0xFFFF, 0xFFFF, "82806AA PCI64 Hub PCI Bridge(0x1360)"}, {0x8086, 0x1361, 0xFFFF, 0xFFFF, "82806AA PCI64 Hub Controller (HRes)(0x1361)"}, {0x8086, 0x1361, 0x8086, 0x1361, "82806AA PCI64 Hub Controller (HRes)(0x8086-0x1361)"}, {0x8086, 0x1361, 0x8086, 0x8000, "82806AA PCI64 Hub Controller (HRes)(0x8086-0x8000)"}, +{0x8086, 0x1452, 0xFFFF, 0xFFFF, "Infrastructure Data Path Function(0x1452)"}, +{0x8086, 0x145C, 0xFFFF, 0xFFFF, "Infrastructure Data Path Function(0x145C)"}, {0x8086, 0x1460, 0xFFFF, 0xFFFF, "82870P2 P64H2 Hub PCI Bridge(0x1460)"}, {0x8086, 0x1461, 0xFFFF, 0xFFFF, "82870P2 P64H2 I/OxAPIC(0x1461)"}, {0x8086, 0x1461, 0x15D9, 0x3480, "P4DP6(0x15D9-0x3480)"}, @@ -35452,6 +35758,12 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1521, 0x1BD4, 0x0066, "F014I350(0x1BD4-0x0066)"}, {0x8086, 0x1521, 0x1BD4, 0x008A, "F012I350(0x1BD4-0x008A)"}, {0x8086, 0x1521, 0x1BD4, 0x008D, "ENFI1100-T4(0x1BD4-0x008D)"}, +{0x8086, 0x1521, 0x4C52, 0x0350, "I350 1Gb 2-port Ethernet Network Adapter(0x4C52-0x0350)"}, +{0x8086, 0x1521, 0x4C52, 0x1350, "LREC9222HT Dual-port 1Gb Ethernet Network Adapter(0x4C52-0x1350)"}, +{0x8086, 0x1521, 0x4C52, 0x3010, "LRES3010PF Dual-port 1Gb Ethernet Server Adapter for OCP(0x4C52-0x3010)"}, +{0x8086, 0x1521, 0x4C52, 0x3023, "LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP(0x4C52-0x3023)"}, +{0x8086, 0x1521, 0x4C52, 0x3041, "LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP(0x4C52-0x3041)"}, +{0x8086, 0x1521, 0x4C52, 0x4006, "LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter(0x4C52-0x4006)"}, {0x8086, 0x1521, 0x8086, 0x0001, "Ethernet Server Adapter I350-T4(0x8086-0x0001)"}, {0x8086, 0x1521, 0x8086, 0x0002, "Ethernet Server Adapter I350-T2(0x8086-0x0002)"}, {0x8086, 0x1521, 0x8086, 0x0003, "Ethernet Network Adapter I350-T4 for OCP NIC 3.0(0x8086-0x0003)"}, @@ -35530,6 +35842,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1533, 0x17AA, 0x1509, "I210 Gigabit Network Connection(0x17AA-0x1509)"}, {0x8086, 0x1533, 0x17AA, 0x404D, "I210 PCIe 1Gb 1-Port RJ45 LOM(0x17AA-0x404D)"}, {0x8086, 0x1533, 0x17AA, 0x407A, "I210 PCIe 1Gb 1-Port RJ45 LOM(0x17AA-0x407A)"}, +{0x8086, 0x1533, 0x4C52, 0x1210, "LREC9204CT Single-port 1Gb Ethernet Network Adapter(0x4C52-0x1210)"}, {0x8086, 0x1533, 0x8086, 0x0001, "Ethernet Server Adapter I210-T1(0x8086-0x0001)"}, {0x8086, 0x1533, 0x8086, 0x0002, "Ethernet Server Adapter I210-T1(0x8086-0x0002)"}, {0x8086, 0x1536, 0xFFFF, 0xFFFF, "I210 Gigabit Fiber Network Connection(0x1536)"}, @@ -35636,12 +35949,15 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1572, 0x1BD4, 0x0065, "F102IX710(0x1BD4-0x0065)"}, {0x8086, 0x1572, 0x1BD4, 0x0074, "Ethernet Network Adapter X710-BM2 for lldp(0x1BD4-0x0074)"}, {0x8086, 0x1572, 0x1BD4, 0x008B, "F102IX710(0x1BD4-0x008B)"}, +{0x8086, 0x1572, 0x4C52, 0x3003, "LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3003)"}, +{0x8086, 0x1572, 0x4C52, 0x3007, "LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3007)"}, +{0x8086, 0x1572, 0x4C52, 0x3039, "LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3039)"}, {0x8086, 0x1572, 0x8086, 0x0000, "Ethernet Converged Network Adapter X710(0x8086-0x0000)"}, {0x8086, 0x1572, 0x8086, 0x0001, "Ethernet Converged Network Adapter X710-4(0x8086-0x0001)"}, {0x8086, 0x1572, 0x8086, 0x0002, "Ethernet Converged Network Adapter X710-4(0x8086-0x0002)"}, {0x8086, 0x1572, 0x8086, 0x0004, "Ethernet Converged Network Adapter X710-4(0x8086-0x0004)"}, -{0x8086, 0x1572, 0x8086, 0x0005, "Ethernet 10G 4P X710 Adapter(0x8086-0x0005)"}, -{0x8086, 0x1572, 0x8086, 0x0006, "Ethernet 10G 2P X710 Adapter(0x8086-0x0006)"}, +{0x8086, 0x1572, 0x8086, 0x0005, "Ethernet Converged Network Adapter X710(0x8086-0x0005)"}, +{0x8086, 0x1572, 0x8086, 0x0006, "Ethernet Converged Network Adapter X710(0x8086-0x0006)"}, {0x8086, 0x1572, 0x8086, 0x0007, "Ethernet Converged Network Adapter X710-2(0x8086-0x0007)"}, {0x8086, 0x1572, 0x8086, 0x0008, "Ethernet Converged Network Adapter X710-2(0x8086-0x0008)"}, {0x8086, 0x1572, 0x8086, 0x0009, "Ethernet Controller X710 for 10GbE SFP+(0x8086-0x0009)"}, @@ -35690,6 +36006,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1583, 0x108E, 0x7B1D, "10Gb/40Gb Ethernet Adapter(0x108E-0x7B1D)"}, {0x8086, 0x1583, 0x1137, 0x0000, "Ethernet Converged NIC XL710-QDA2(0x1137-0x0000)"}, {0x8086, 0x1583, 0x1137, 0x013C, "Ethernet Converged NIC XL710-QDA2(0x1137-0x013C)"}, +{0x8086, 0x1583, 0x4C52, 0x3042, "LRES3042PF Dual-port 40Gb Ethernet Server Adapter for OCP(0x4C52-0x3042)"}, {0x8086, 0x1583, 0x8086, 0x0000, "Ethernet Converged Network Adapter XL710-Q2(0x8086-0x0000)"}, {0x8086, 0x1583, 0x8086, 0x0001, "Ethernet Converged Network Adapter XL710-Q2(0x8086-0x0001)"}, {0x8086, 0x1583, 0x8086, 0x0002, "Ethernet Converged Network Adapter XL710-Q2(0x8086-0x0002)"}, @@ -35742,6 +36059,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x158B, 0x1374, 0x023B, "Quad Port 25 Gigabit Ethernet PCI Express Server Adapter (PE31625G4I71LEU)(0x1374-0x023B)"}, {0x8086, 0x158B, 0x1590, 0x0000, "Ethernet Network Adapter XXV710-2(0x1590-0x0000)"}, {0x8086, 0x158B, 0x1590, 0x0253, "Ethernet 10/25/Gb 2-port 661SFP28 Adapter(0x1590-0x0253)"}, +{0x8086, 0x158B, 0x4C52, 0x3017, "LRES3017PF Dual-port 25Gb Ethernet Server Adapter for OCP(0x4C52-0x3017)"}, {0x8086, 0x158B, 0x8086, 0x0000, "Ethernet Network Adapter XXV710(0x8086-0x0000)"}, {0x8086, 0x158B, 0x8086, 0x0001, "Ethernet Network Adapter XXV710-2(0x8086-0x0001)"}, {0x8086, 0x158B, 0x8086, 0x0002, "Ethernet Network Adapter XXV710-2(0x8086-0x0002)"}, @@ -35761,6 +36079,8 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1592, 0xFFFF, 0xFFFF, "Ethernet Controller E810-C for QSFP(0x1592)"}, {0x8086, 0x1592, 0x1137, 0x02BF, "E810CQDA2 2x100 GbE QSFP28 PCIe NIC(0x1137-0x02BF)"}, {0x8086, 0x1592, 0x193D, 0x1050, "NIC-ETH1060F-LP-2P 2x100GbE Ethernet PCIe Card(0x193D-0x1050)"}, +{0x8086, 0x1592, 0x4C52, 0x1014, "LRES1014PF Dual-port 100Gb Ethernet Server Adapter(0x4C52-0x1014)"}, +{0x8086, 0x1592, 0x4C52, 0x3026, "LRES3026PF Dual-port 100Gb Ethernet Server Adapter for OCP(0x4C52-0x3026)"}, {0x8086, 0x1592, 0x8086, 0x0001, "Ethernet Network Adapter E810-C-Q1(0x8086-0x0001)"}, {0x8086, 0x1592, 0x8086, 0x0002, "Ethernet Network Adapter E810-C-Q2(0x8086-0x0002)"}, {0x8086, 0x1592, 0x8086, 0x0004, "Ethernet Network Adapter E810-C-Q2(0x8086-0x0004)"}, @@ -35782,6 +36102,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1593, 0x1137, 0x02C3, "E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC(0x1137-0x02C3)"}, {0x8086, 0x1593, 0x1137, 0x02E9, "E810XXVDA4TG 4x25/10 GbE SFP28 PCIe NIC(0x1137-0x02E9)"}, {0x8086, 0x1593, 0x1137, 0x02EA, "E810XXVDA4T 4x25/10 GbE SFP28 PCIe NIC(0x1137-0x02EA)"}, +{0x8086, 0x1593, 0x4C52, 0x3027, "LRES3027PF Quad-port 25Gb Ethernet Server Adapter for OCP(0x4C52-0x3027)"}, {0x8086, 0x1593, 0x8086, 0x0002, "Ethernet Network Adapter E810-L-2(0x8086-0x0002)"}, {0x8086, 0x1593, 0x8086, 0x0005, "Ethernet Network Adapter E810-XXV-4(0x8086-0x0005)"}, {0x8086, 0x1593, 0x8086, 0x0006, "Ethernet Network Adapter E810-XXV-4(0x8086-0x0006)"}, @@ -35796,6 +36117,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1593, 0x8086, 0x0010, "Ethernet 25G 4P E810-XXV-st Adapter(0x8086-0x0010)"}, {0x8086, 0x1593, 0x8086, 0x4010, "Ethernet Network Adapter E810-XXV-4(0x8086-0x4010)"}, {0x8086, 0x1593, 0x8086, 0x4013, "Ethernet Network Adapter E810-XXV-4 for OCP 3.0(0x8086-0x4013)"}, +{0x8086, 0x1593, 0x8086, 0x401C, "Ethernet Network Adapter E810-XXV-4 for OCP 3.0(0x8086-0x401C)"}, {0x8086, 0x1599, 0xFFFF, 0xFFFF, "Ethernet Controller E810-XXV for backplane(0x1599)"}, {0x8086, 0x1599, 0x8086, 0x0001, "Ethernet 25G 2P E810-XXV-k Mezz(0x8086-0x0001)"}, {0x8086, 0x159A, 0xFFFF, 0xFFFF, "Ethernet Controller E810-XXV for QSFP(0x159A)"}, @@ -35808,6 +36130,8 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x159B, 0x1BD4, 0x0083, "Ethernet Network Adapter E810-XXVAM2 for lldp(0x1BD4-0x0083)"}, {0x8086, 0x159B, 0x1BD4, 0x00A0, "S252IE810(0x1BD4-0x00A0)"}, {0x8086, 0x159B, 0x1EEC, 0x0102, "VSE-225-41E Dual-port 10Gb/25Gb Etherent PCIe(0x1EEC-0x0102)"}, +{0x8086, 0x159B, 0x4C52, 0x0003, "LRES1021PF Dual-port 25Gb Ethernet Server Adapter(0x4C52-0x0003)"}, +{0x8086, 0x159B, 0x4C52, 0x3029, "LRES3029PF Dual-port 25Gb Ethernet Server Adapter for OCP(0x4C52-0x3029)"}, {0x8086, 0x159B, 0x8086, 0x0001, "Ethernet 25G 2P E810-XXV OCP(0x8086-0x0001)"}, {0x8086, 0x159B, 0x8086, 0x0002, "Ethernet 25G 2P E810-XXV Adapter(0x8086-0x0002)"}, {0x8086, 0x159B, 0x8086, 0x0003, "Ethernet Network Adapter E810-XXV-2(0x8086-0x0003)"}, @@ -35915,6 +36239,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x15FF, 0x1137, 0x02D9, "Ethernet Network Adapter X710-T2L OCP 3.0(0x1137-0x02D9)"}, {0x8086, 0x15FF, 0x1137, 0x02DA, "Ethernet Network Adapter X710-T4L OCP 3.0(0x1137-0x02DA)"}, {0x8086, 0x15FF, 0x193D, 0x1082, "NIC-ETH565T-3S-2P(0x193D-0x1082)"}, +{0x8086, 0x15FF, 0x4C52, 0x3021, "LRES3021PT Dual-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3021)"}, {0x8086, 0x15FF, 0x8086, 0x0000, "Ethernet Network Adapter X710-TL(0x8086-0x0000)"}, {0x8086, 0x15FF, 0x8086, 0x0001, "Ethernet Network Adapter X710-T4L(0x8086-0x0001)"}, {0x8086, 0x15FF, 0x8086, 0x0002, "Ethernet Network Adapter X710-T4L(0x8086-0x0002)"}, @@ -36391,10 +36716,12 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1D74, 0xFFFF, 0xFFFF, "C608/C606/X79 series chipset PCI Express Upstream Port(0x1D74)"}, {0x8086, 0x1D76, 0xFFFF, 0xFFFF, "C600/X79 series chipset Multi-Function Glue(0x1D76)"}, {0x8086, 0x1E00, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode](0x1E00)"}, +{0x8086, 0x1E00, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E01, 0xFFFF, 0xFFFF, "7 Series Chipset Family 4-port SATA Controller [IDE mode](0x1E01)"}, {0x8086, 0x1E01, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, {0x8086, 0x1E02, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode](0x1E02)"}, {0x8086, 0x1E02, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, +{0x8086, 0x1E02, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E02, 0x1849, 0x1E02, "Motherboard(0x1849-0x1E02)"}, {0x8086, 0x1E03, 0xFFFF, 0xFFFF, "7 Series Chipset Family 6-port SATA Controller [AHCI mode](0x1E03)"}, {0x8086, 0x1E03, 0x1043, 0x108D, "VivoBook X202EV(0x1043-0x108D)"}, @@ -36417,6 +36744,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E10, 0x1043, 0x84CA, "P8H77-I Motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E10, 0x10CF, 0x16E9, "LIFEBOOK E752(0x10CF-0x16E9)"}, {0x8086, 0x1E10, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E10, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E10, 0x1849, 0x1E10, "Motherboard(0x1849-0x1E10)"}, {0x8086, 0x1E12, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family PCI Express Root Port 2(0x1E12)"}, {0x8086, 0x1E12, 0x1043, 0x108D, "VivoBook X202EV(0x1043-0x108D)"}, @@ -36433,6 +36761,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E18, 0x1043, 0x84CA, "P8H77-I Motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E18, 0x1849, 0x1E18, "Motherboard(0x1849-0x1E18)"}, {0x8086, 0x1E1A, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family PCI Express Root Port 6(0x1E1A)"}, +{0x8086, 0x1E1A, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E1A, 0x1849, 0x1E1A, "Motherboard(0x1849-0x1E1A)"}, {0x8086, 0x1E1C, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family PCI Express Root Port 7(0x1E1C)"}, {0x8086, 0x1E1E, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family PCI Express Root Port 8(0x1E1E)"}, @@ -36447,6 +36776,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E20, 0x1043, 0x8445, "P8Z77-V LX Motherboard(0x1043-0x8445)"}, {0x8086, 0x1E20, 0x10CF, 0x1757, "LIFEBOOK E752(0x10CF-0x1757)"}, {0x8086, 0x1E20, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E20, 0x1734, 0x11D8, "B75 [Ivy Bridge] chipset CX20642 audio controller on Esprimo P510 D3171 motherboard(0x1734-0x11D8)"}, {0x8086, 0x1E20, 0x1849, 0x1898, "Z77 Extreme4 motherboard(0x1849-0x1898)"}, {0x8086, 0x1E22, 0xFFFF, 0xFFFF, "7 Series/C216 Chipset Family SMBus Controller(0x1E22)"}, {0x8086, 0x1E22, 0x1043, 0x108D, "VivoBook X202EV(0x1043-0x108D)"}, @@ -36455,6 +36785,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E22, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E22, 0x10CF, 0x16E6, "LIFEBOOK E752(0x10CF-0x16E6)"}, {0x8086, 0x1E22, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E22, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E22, 0x1849, 0x1E22, "Motherboard(0x1849-0x1E22)"}, {0x8086, 0x1E24, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family Thermal Management Controller(0x1E24)"}, {0x8086, 0x1E24, 0x1043, 0x1517, "Zenbook Prime UX31A(0x1043-0x1517)"}, @@ -36466,6 +36797,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E26, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E26, 0x10CF, 0x16E8, "LIFEBOOK E752(0x10CF-0x16E8)"}, {0x8086, 0x1E26, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E26, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E26, 0x1849, 0x1E26, "Motherboard(0x1849-0x1E26)"}, {0x8086, 0x1E2D, 0xFFFF, 0xFFFF, "7 Series/C216 Chipset Family USB Enhanced Host Controller #2(0x1E2D)"}, {0x8086, 0x1E2D, 0x1043, 0x108D, "VivoBook X202EV(0x1043-0x108D)"}, @@ -36474,6 +36806,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E2D, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E2D, 0x10CF, 0x16E8, "LIFEBOOK E752(0x10CF-0x16E8)"}, {0x8086, 0x1E2D, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E2D, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset USB 2.0 controller on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E2D, 0x1849, 0x1E2D, "Motherboard(0x1849-0x1E2D)"}, {0x8086, 0x1E31, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family USB xHCI Host Controller(0x1E31)"}, {0x8086, 0x1E31, 0x103C, 0x179B, "Elitebook 8470p(0x103C-0x179B)"}, @@ -36483,6 +36816,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E31, 0x1043, 0x1517, "Zenbook Prime UX31A(0x1043-0x1517)"}, {0x8086, 0x1E31, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E31, 0x10CF, 0x16EE, "LIFEBOOK E752(0x10CF-0x16EE)"}, +{0x8086, 0x1E31, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset USB 3.0 controller on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E31, 0x17AA, 0x21F3, "ThinkPad T430(0x17AA-0x21F3)"}, {0x8086, 0x1E31, 0x1849, 0x1E31, "Motherboard(0x1849-0x1E31)"}, {0x8086, 0x1E33, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family LAN Controller(0x1E33)"}, @@ -36493,6 +36827,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E3A, 0x1043, 0x84CA, "P8 series motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E3A, 0x10CF, 0x16EA, "LIFEBOOK E752(0x10CF-0x16EA)"}, {0x8086, 0x1E3A, 0x144D, 0xC652, "NP300E5C series laptop(0x144D-0xC652)"}, +{0x8086, 0x1E3A, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E3A, 0x1849, 0x1E3A, "Motherboard(0x1849-0x1E3A)"}, {0x8086, 0x1E3B, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family MEI Controller #2(0x1E3B)"}, {0x8086, 0x1E3C, 0xFFFF, 0xFFFF, "7 Series/C210 Series Chipset Family IDE-r Controller(0x1E3C)"}, @@ -36508,6 +36843,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x1E47, 0xFFFF, 0xFFFF, "Q77 Express Chipset LPC Controller(0x1E47)"}, {0x8086, 0x1E48, 0xFFFF, 0xFFFF, "Q75 Express Chipset LPC Controller(0x1E48)"}, {0x8086, 0x1E49, 0xFFFF, 0xFFFF, "B75 Express Chipset LPC Controller(0x1E49)"}, +{0x8086, 0x1E49, 0x1734, 0x11D6, "Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x1E4A, 0xFFFF, 0xFFFF, "H77 Express Chipset LPC Controller(0x1E4A)"}, {0x8086, 0x1E4A, 0x1043, 0x84CA, "P8H77-I Motherboard(0x1043-0x84CA)"}, {0x8086, 0x1E4B, 0xFFFF, 0xFFFF, "7 Series Chipset Family LPC Controller(0x1E4B)"}, @@ -36900,6 +37236,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x244E, 0x103C, 0x2A6F, "Asus IPIBL-LB Motherboard(0x103C-0x2A6F)"}, {0x8086, 0x244E, 0x103C, 0x31FE, "ProLiant DL140 G3(0x103C-0x31FE)"}, {0x8086, 0x244E, 0x103C, 0x330B, "ProLiant ML150 G6 Server(0x103C-0x330B)"}, +{0x8086, 0x244E, 0x1043, 0x81EC, "P5B Motherboard(0x1043-0x81EC)"}, {0x8086, 0x244E, 0x1043, 0x8277, "P5K PRO Motherboard(0x1043-0x8277)"}, {0x8086, 0x244E, 0x1043, 0x844D, "P8 series motherboard(0x1043-0x844D)"}, {0x8086, 0x244E, 0x1043, 0x8534, "ASUS B85-PLUS(0x1043-0x8534)"}, @@ -36908,6 +37245,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x244E, 0x1462, 0x7418, "Wind PC MS-7418(0x1462-0x7418)"}, {0x8086, 0x244E, 0x15D9, 0x060D, "C7SIM-Q Motherboard(0x15D9-0x060D)"}, {0x8086, 0x244E, 0x15D9, 0x9680, "X7DBN Motherboard(0x15D9-0x9680)"}, +{0x8086, 0x244E, 0x1734, 0x11D6, "B75 [Ivy Bridge] chipset on Esprimo P510 D3171 motherboard(0x1734-0x11D6)"}, {0x8086, 0x244E, 0x1775, 0x11CC, "CC11/CL11(0x1775-0x11CC)"}, {0x8086, 0x244E, 0x8086, 0x7270, "Server Board S1200BTS(0x8086-0x7270)"}, {0x8086, 0x2450, 0xFFFF, 0xFFFF, "82801E ISA Bridge (LPC)(0x2450)"}, @@ -37419,7 +37757,18 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x2522, 0x8086, 0x3806, "Optane Memory 16GB(0x8086-0x3806)"}, {0x8086, 0x2522, 0x8086, 0x3810, "Optane Memory M10 16GB(0x8086-0x3810)"}, {0x8086, 0x2525, 0xFFFF, 0xFFFF, "Optane NVME SSD P1600X Series(0x2525)"}, -{0x8086, 0x2526, 0xFFFF, 0xFFFF, "Wireless-AC 9260(0x2526)"}, +{0x8086, 0x2526, 0xFFFF, 0xFFFF, "Wi-Fi 5(802.11ac) Wireless-AC 9x6x [Thunder Peak](0x2526)"}, +{0x8086, 0x2526, 0x8086, 0x0014, "Dual Band Wi-Fi 5 Wireless-AC 9260 160MHz 2x2(0x8086-0x0014)"}, +{0x8086, 0x2526, 0x8086, 0x0210, "Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2(0x8086-0x0210)"}, +{0x8086, 0x2526, 0x8086, 0x0214, "Dual Band Wi-Fi 5 Wireless-AC 9260 80MHz 2x2(0x8086-0x0214)"}, +{0x8086, 0x2526, 0x8086, 0x0230, "Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2(0x8086-0x0230)"}, +{0x8086, 0x2526, 0x8086, 0x0234, "Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2(0x8086-0x0234)"}, +{0x8086, 0x2526, 0x8086, 0x0238, "Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2(0x8086-0x0238)"}, +{0x8086, 0x2526, 0x8086, 0x023C, "Dual Band Wi-Fi 5 Wireless-AC 9560 80MHz 2x2(0x8086-0x023C)"}, +{0x8086, 0x2526, 0x8086, 0x0260, "Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1(0x8086-0x0260)"}, +{0x8086, 0x2526, 0x8086, 0x0264, "Dual Band Wi-Fi 5 Wireless-AC 9461 80MHz 1x1(0x8086-0x0264)"}, +{0x8086, 0x2526, 0x8086, 0x02A0, "Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1(0x8086-0x02A0)"}, +{0x8086, 0x2526, 0x8086, 0x02A4, "Dual Band Wi-Fi 5 Wireless-AC 9462 80MHz 1x1(0x8086-0x02A4)"}, {0x8086, 0x2530, 0xFFFF, 0xFFFF, "82850 850 (Tehama) Chipset Host Bridge (MCH)(0x2530)"}, {0x8086, 0x2530, 0x1028, 0x00C7, "Dimension 8100(0x1028-0x00C7)"}, {0x8086, 0x2530, 0x147B, 0x0507, "TH7II-RAID(0x147B-0x0507)"}, @@ -37928,11 +38277,11 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x2723, 0xFFFF, 0xFFFF, "Wi-Fi 6 AX200(0x2723)"}, {0x8086, 0x2723, 0x1A56, 0x1654, "Killer Wi-Fi 6 AX1650x (AX200NGW)(0x1A56-0x1654)"}, {0x8086, 0x2723, 0x8086, 0x0084, "Wi-Fi 6 AX200NGW(0x8086-0x0084)"}, -{0x8086, 0x2725, 0xFFFF, 0xFFFF, "Wi-Fi 6 AX210/AX211/AX411 160MHz(0x2725)"}, +{0x8086, 0x2725, 0xFFFF, 0xFFFF, "Wi-Fi 6E(802.11ax) AX210/AX1675* 2x2 [Typhoon Peak](0x2725)"}, +{0x8086, 0x2725, 0x1A56, 0x1673, "Killer AX1675w 160MHz(0x1A56-0x1673)"}, +{0x8086, 0x2725, 0x1A56, 0x1674, "Killer Wi-Fi 6E AX1675x 160MHz(0x1A56-0x1674)"}, {0x8086, 0x2725, 0x8086, 0x0020, "Wi-Fi 6 AX210 160MHz(0x8086-0x0020)"}, {0x8086, 0x2725, 0x8086, 0x0024, "Wi-Fi 6 AX210 160MHz(0x8086-0x0024)"}, -{0x8086, 0x2725, 0x8086, 0x0090, "Wi-Fi 6 AX211 160MHz(0x8086-0x0090)"}, -{0x8086, 0x2725, 0x8086, 0x00B0, "Wi-Fi 6 AX411 160MHz(0x8086-0x00B0)"}, {0x8086, 0x2725, 0x8086, 0x0310, "Wi-Fi 6 AX210 160MHz(0x8086-0x0310)"}, {0x8086, 0x2725, 0x8086, 0x0510, "Wi-Fi 6 AX210 160MHz(0x8086-0x0510)"}, {0x8086, 0x2725, 0x8086, 0x0A10, "Wi-Fi 6 AX210 160MHz(0x8086-0x0A10)"}, @@ -37942,6 +38291,13 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x2725, 0x8086, 0x6024, "Wi-Fi 6 AX210 160MHz(0x8086-0x6024)"}, {0x8086, 0x2725, 0x8086, 0xE020, "Wi-Fi 6 AX210 160MHz(0x8086-0xE020)"}, {0x8086, 0x2725, 0x8086, 0xE024, "Wi-Fi 6 AX210 160MHz(0x8086-0xE024)"}, +{0x8086, 0x272B, 0xFFFF, 0xFFFF, "Wi-Fi 7(802.11be) AX1775*/AX1790*/BE20*/BE401/BE1750* 2x2(0x272B)"}, +{0x8086, 0x272B, 0x8086, 0x00F0, "BE200 320MHz [Gale Peak](0x8086-0x00F0)"}, +{0x8086, 0x272B, 0x8086, 0x00F4, "BE200 320MHz [Gale Peak](0x8086-0x00F4)"}, +{0x8086, 0x272B, 0x8086, 0x02F4, "BE202 160MHz [Misty Peak](0x8086-0x02F4)"}, +{0x8086, 0x272B, 0x8086, 0x40F0, "BE200 320MHz [Gale Peak](0x8086-0x40F0)"}, +{0x8086, 0x272B, 0x8086, 0x42F4, "BE202 160MHz [Misty Peak](0x8086-0x42F4)"}, +{0x8086, 0x272B, 0x8086, 0xE0F4, "BE200 320MHz [Gale Peak](0x8086-0xE0F4)"}, {0x8086, 0x2770, 0xFFFF, 0xFFFF, "82945G/GZ/P/PL Memory Controller Hub(0x2770)"}, {0x8086, 0x2770, 0x1028, 0x01AD, "OptiPlex GX620(0x1028-0x01AD)"}, {0x8086, 0x2770, 0x103C, 0x2A3B, "Pavilion A1512X(0x103C-0x2A3B)"}, @@ -38347,20 +38703,20 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x2822, 0x103C, 0x2A6F, "Asus IPIBL-LB Motherboard(0x103C-0x2A6F)"}, {0x8086, 0x2822, 0x1043, 0x8277, "P5K PRO Motherboard: 82801IR [ICH9R](0x1043-0x8277)"}, {0x8086, 0x2822, 0x1462, 0x7345, "MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R](0x1462-0x7345)"}, -{0x8086, 0x2823, 0xFFFF, 0xFFFF, "C610/X99 series chipset sSATA Controller [RAID mode](0x2823)"}, +{0x8086, 0x2823, 0xFFFF, 0xFFFF, "sSATA Controller [RAID Mode](0x2823)"}, {0x8086, 0x2824, 0xFFFF, 0xFFFF, "82801HB (ICH8) 4 port SATA Controller [AHCI mode](0x2824)"}, {0x8086, 0x2824, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x2825, 0xFFFF, 0xFFFF, "82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode](0x2825)"}, {0x8086, 0x2825, 0x1028, 0x01DA, "OptiPlex 745(0x1028-0x01DA)"}, {0x8086, 0x2825, 0x1462, 0x7235, "P965 Neo MS-7235 mainboard(0x1462-0x7235)"}, -{0x8086, 0x2826, 0xFFFF, 0xFFFF, "C600/X79 series chipset SATA RAID Controller(0x2826)"}, +{0x8086, 0x2826, 0xFFFF, 0xFFFF, "SATA Controller [RAID Mode](0x2826)"}, {0x8086, 0x2826, 0x1D49, 0x0100, "Intel RSTe SATA Software RAID(0x1D49-0x0100)"}, {0x8086, 0x2826, 0x1D49, 0x0101, "Intel RSTe SATA Software RAID(0x1D49-0x0101)"}, {0x8086, 0x2826, 0x1D49, 0x0102, "Intel RSTe SATA Software RAID(0x1D49-0x0102)"}, {0x8086, 0x2826, 0x1D49, 0x0103, "Intel RSTe SATA Software RAID(0x1D49-0x0103)"}, {0x8086, 0x2826, 0x1D49, 0x0104, "Intel RSTe SATA Software RAID(0x1D49-0x0104)"}, {0x8086, 0x2826, 0x1D49, 0x0105, "Intel RSTe SATA Software RAID(0x1D49-0x0105)"}, -{0x8086, 0x2827, 0xFFFF, 0xFFFF, "C610/X99 series chipset sSATA Controller [RAID mode](0x2827)"}, +{0x8086, 0x2827, 0xFFFF, 0xFFFF, "sSATA Controller [RAID Mode](0x2827)"}, {0x8086, 0x2828, 0xFFFF, 0xFFFF, "82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode](0x2828)"}, {0x8086, 0x2828, 0x1028, 0x01F3, "Inspiron 1420(0x1028-0x01F3)"}, {0x8086, 0x2828, 0x103C, 0x30C0, "Compaq 6710b(0x103C-0x30C0)"}, @@ -38382,6 +38738,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x282A, 0xFFFF, 0xFFFF, "82801 Mobile SATA Controller [RAID mode](0x282A)"}, {0x8086, 0x282A, 0x1028, 0x040B, "Latitude E6510(0x1028-0x040B)"}, {0x8086, 0x282A, 0xE4BF, 0x50C1, "PC1-GROOVE(0xE4BF-0x50C1)"}, +{0x8086, 0x282F, 0xFFFF, 0xFFFF, "tSATA Controller [RAID Mode](0x282F)"}, {0x8086, 0x2830, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) USB UHCI Controller #1(0x2830)"}, {0x8086, 0x2830, 0x1025, 0x0121, "Aspire 5920G(0x1025-0x0121)"}, {0x8086, 0x2830, 0x1028, 0x01DA, "OptiPlex 745(0x1028-0x01DA)"}, @@ -38516,27 +38873,32 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x283F, 0x1028, 0x01DA, "OptiPlex 745(0x1028-0x01DA)"}, {0x8086, 0x283F, 0x103C, 0x30C1, "Compaq 6910p(0x103C-0x30C1)"}, {0x8086, 0x283F, 0x1043, 0x1017, "X58LE(0x1043-0x1017)"}, +{0x8086, 0x283F, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x283F, 0x104D, 0x902D, "VAIO VGN-NR120E(0x104D-0x902D)"}, {0x8086, 0x283F, 0x17AA, 0x20AD, "ThinkPad T61/R61(0x17AA-0x20AD)"}, {0x8086, 0x283F, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, {0x8086, 0x2841, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) PCI Express Port 2(0x2841)"}, {0x8086, 0x2841, 0x103C, 0x30C1, "Compaq 6910p(0x103C-0x30C1)"}, {0x8086, 0x2841, 0x1043, 0x1017, "X58LE(0x1043-0x1017)"}, +{0x8086, 0x2841, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x2841, 0x104D, 0x902D, "VAIO VGN-NR120E(0x104D-0x902D)"}, {0x8086, 0x2841, 0x17AA, 0x20AD, "ThinkPad T61/R61(0x17AA-0x20AD)"}, {0x8086, 0x2841, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, {0x8086, 0x2843, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) PCI Express Port 3(0x2843)"}, {0x8086, 0x2843, 0x1043, 0x1017, "X58LE(0x1043-0x1017)"}, +{0x8086, 0x2843, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x2843, 0x104D, 0x902D, "VAIO VGN-NR120E(0x104D-0x902D)"}, {0x8086, 0x2843, 0x17AA, 0x20AD, "ThinkPad T61/R61(0x17AA-0x20AD)"}, {0x8086, 0x2843, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, {0x8086, 0x2845, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) PCI Express Port 4(0x2845)"}, {0x8086, 0x2845, 0x1043, 0x1017, "X58LE(0x1043-0x1017)"}, +{0x8086, 0x2845, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x2845, 0x17AA, 0x20AD, "ThinkPad T61/R61(0x17AA-0x20AD)"}, {0x8086, 0x2845, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, {0x8086, 0x2847, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) PCI Express Port 5(0x2847)"}, {0x8086, 0x2847, 0x1028, 0x01DA, "OptiPlex 745(0x1028-0x01DA)"}, {0x8086, 0x2847, 0x103C, 0x30C1, "Compaq 6910p(0x103C-0x30C1)"}, +{0x8086, 0x2847, 0x1043, 0x81EC, "P5B(0x1043-0x81EC)"}, {0x8086, 0x2847, 0x17AA, 0x20AD, "ThinkPad T61/R61(0x17AA-0x20AD)"}, {0x8086, 0x2847, 0x17C0, 0x4083, "Medion WIM 2210 Notebook PC [MD96850](0x17C0-0x4083)"}, {0x8086, 0x2849, 0xFFFF, 0xFFFF, "82801H (ICH8 Family) PCI Express Port 6(0x2849)"}, @@ -39401,6 +39763,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x2FFC, 0xFFFF, 0xFFFF, "Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers(0x2FFC)"}, {0x8086, 0x2FFD, 0xFFFF, 0xFFFF, "Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers(0x2FFD)"}, {0x8086, 0x2FFE, 0xFFFF, 0xFFFF, "Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers(0x2FFE)"}, +{0x8086, 0x3101, 0xFFFF, 0xFFFF, "Killer E3100X 2.5 Gigabit Ethernet Controller(0x3101)"}, {0x8086, 0x3140, 0xFFFF, 0xFFFF, "Easel/Monette Hill Image Processor [Pixel Visual Core](0x3140)"}, {0x8086, 0x3165, 0xFFFF, 0xFFFF, "Wireless 3165(0x3165)"}, {0x8086, 0x3165, 0x8086, 0x4010, "Dual Band Wireless AC 3165 [Stone Peak 1x1](0x8086-0x4010)"}, @@ -40402,6 +40765,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x464D, 0xFFFF, 0xFFFF, "12th Gen Core Processor PCI Express x4 Controller #0(0x464D)"}, {0x8086, 0x464F, 0xFFFF, 0xFFFF, "12th Gen Core Processor Gaussian & Neural Accelerator(0x464F)"}, {0x8086, 0x464F, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x4650, 0xFFFF, 0xFFFF, "12th Gen Core Processor Host Bridge(0x4650)"}, {0x8086, 0x465D, 0xFFFF, 0xFFFF, "Alder Lake Imaging Signal Processor(0x465D)"}, {0x8086, 0x4660, 0xFFFF, 0xFFFF, "12th Gen Core Processor Host Bridge/DRAM Registers(0x4660)"}, {0x8086, 0x4668, 0xFFFF, 0xFFFF, "12th Gen Core Processor Host Bridge/DRAM Registers(0x4668)"}, @@ -40463,21 +40827,45 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x4C8B, 0xFFFF, 0xFFFF, "RocketLake-S GT1 [UHD Graphics 730](0x4C8B)"}, {0x8086, 0x4C90, 0xFFFF, 0xFFFF, "RocketLake-S GT1 [UHD Graphics P750](0x4C90)"}, {0x8086, 0x4C9A, 0xFFFF, 0xFFFF, "RocketLake-S [UHD Graphics](0x4C9A)"}, +{0x8086, 0x4D87, 0xFFFF, 0xFFFF, "Jasper Lake eSPI Controller(0x4D87)"}, {0x8086, 0x4DA3, 0xFFFF, 0xFFFF, "Jasper Lake SMBus(0x4DA3)"}, {0x8086, 0x4DA4, 0xFFFF, 0xFFFF, "Jasper Lake SPI Controller(0x4DA4)"}, +{0x8086, 0x4DA8, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO UART Controller #0(0x4DA8)"}, +{0x8086, 0x4DAB, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO SPI Controller #1(0x4DAB)"}, +{0x8086, 0x4DB8, 0xFFFF, 0xFFFF, "Jasper Lake PCIe Root Port #1(0x4DB8)"}, +{0x8086, 0x4DB9, 0xFFFF, 0xFFFF, "Jasper Lake PCIe Root Port #2(0x4DB9)"}, +{0x8086, 0x4DBC, 0xFFFF, 0xFFFF, "Jasper Lake PCIe Root Port #5(0x4DBC)"}, +{0x8086, 0x4DBE, 0xFFFF, 0xFFFF, "Jasper Lake PCIe Root Port #7(0x4DBE)"}, +{0x8086, 0x4DC4, 0xFFFF, 0xFFFF, "Jasper Lake eMMC Controller(0x4DC4)"}, +{0x8086, 0x4DC5, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #4(0x4DC5)"}, +{0x8086, 0x4DC6, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #5(0x4DC6)"}, {0x8086, 0x4DC8, 0xFFFF, 0xFFFF, "Jasper Lake HD Audio(0x4DC8)"}, +{0x8086, 0x4DD3, 0xFFFF, 0xFFFF, "Jasper Lake SATA AHCI Controller(0x4DD3)"}, {0x8086, 0x4DE0, 0xFFFF, 0xFFFF, "Management Engine Interface(0x4DE0)"}, -{0x8086, 0x4DE8, 0xFFFF, 0xFFFF, "Serial IO I2C Host Controller(0x4DE8)"}, -{0x8086, 0x4DE9, 0xFFFF, 0xFFFF, "Serial IO I2C Host Controller(0x4DE9)"}, +{0x8086, 0x4DE8, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #0(0x4DE8)"}, +{0x8086, 0x4DE9, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #1(0x4DE9)"}, +{0x8086, 0x4DEA, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #2(0x4DEA)"}, +{0x8086, 0x4DEB, 0xFFFF, 0xFFFF, "Jasper Lake Serial IO I2C Host Controller #3(0x4DEB)"}, +{0x8086, 0x4DED, 0xFFFF, 0xFFFF, "Jasper Lake USB 3.1 xHCI Host Controller(0x4DED)"}, +{0x8086, 0x4DEF, 0xFFFF, 0xFFFF, "Jasper Lake Shared SRAM(0x4DEF)"}, {0x8086, 0x4DF0, 0xFFFF, 0xFFFF, "Wi-Fi 6 AX201 160MHz(0x4DF0)"}, +{0x8086, 0x4DF8, 0xFFFF, 0xFFFF, "Jasper Lake SD Controller(0x4DF8)"}, {0x8086, 0x4E03, 0xFFFF, 0xFFFF, "Dynamic Tuning service(0x4E03)"}, {0x8086, 0x4E19, 0xFFFF, 0xFFFF, "JasperLake IPU(0x4E19)"}, {0x8086, 0x4E55, 0xFFFF, 0xFFFF, "JasperLake [UHD Graphics](0x4E55)"}, {0x8086, 0x4E61, 0xFFFF, 0xFFFF, "JasperLake [UHD Graphics](0x4E61)"}, {0x8086, 0x4E71, 0xFFFF, 0xFFFF, "JasperLake [UHD Graphics](0x4E71)"}, -{0x8086, 0x4F80, 0xFFFF, 0xFFFF, "DG2(0x4F80)"}, -{0x8086, 0x4F81, 0xFFFF, 0xFFFF, "DG2(0x4F81)"}, -{0x8086, 0x4F82, 0xFFFF, 0xFFFF, "DG2(0x4F82)"}, +{0x8086, 0x4F80, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F80)"}, +{0x8086, 0x4F81, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F81)"}, +{0x8086, 0x4F82, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F82)"}, +{0x8086, 0x4F83, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F83)"}, +{0x8086, 0x4F84, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F84)"}, +{0x8086, 0x4F85, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F85)"}, +{0x8086, 0x4F86, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F86)"}, +{0x8086, 0x4F87, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F87)"}, +{0x8086, 0x4F88, 0xFFFF, 0xFFFF, "DG2 [Intel Xe Graphics](0x4F88)"}, +{0x8086, 0x4F89, 0xFFFF, 0xFFFF, "ACMP [Xe Graphics](0x4F89)"}, +{0x8086, 0x4F8C, 0xFFFF, 0xFFFF, "ACMP [Xe Graphics](0x4F8C)"}, {0x8086, 0x4F90, 0xFFFF, 0xFFFF, "DG2 Audio Controller(0x4F90)"}, {0x8086, 0x4F91, 0xFFFF, 0xFFFF, "DG2 Audio Controller(0x4F91)"}, {0x8086, 0x4F92, 0xFFFF, 0xFFFF, "DG2 Audio Controller(0x4F92)"}, @@ -40533,10 +40921,13 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x5182, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, {0x8086, 0x5187, 0xFFFF, 0xFFFF, "Alder Lake LPC Controller(0x5187)"}, {0x8086, 0x519D, 0xFFFF, 0xFFFF, "Raptor Lake LPC/eSPI Controller(0x519D)"}, +{0x8086, 0x519D, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51A3, 0xFFFF, 0xFFFF, "Alder Lake PCH-P SMBus Host Controller(0x51A3)"}, {0x8086, 0x51A3, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51A3, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51A4, 0xFFFF, 0xFFFF, "Alder Lake-P PCH SPI Controller(0x51A4)"}, {0x8086, 0x51A4, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51A4, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51A8, 0xFFFF, 0xFFFF, "Alder Lake PCH UART #0(0x51A8)"}, {0x8086, 0x51A9, 0xFFFF, 0xFFFF, "Alder Lake PCH UART #1(0x51A9)"}, {0x8086, 0x51AA, 0xFFFF, 0xFFFF, "Alder Lake SPI Controller(0x51AA)"}, @@ -40550,6 +40941,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x51C8, 0xFFFF, 0xFFFF, "Alder Lake PCH-P High Definition Audio Controller(0x51C8)"}, {0x8086, 0x51C8, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, {0x8086, 0x51CA, 0xFFFF, 0xFFFF, "Raptor Lake-P/U/H cAVS(0x51CA)"}, +{0x8086, 0x51CA, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51CC, 0xFFFF, 0xFFFF, "Alder Lake Smart Sound Technology Audio Controller(0x51CC)"}, {0x8086, 0x51D3, 0xFFFF, 0xFFFF, "Alder Lake-P SATA AHCI Controller(0x51D3)"}, {0x8086, 0x51D3, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, @@ -40557,33 +40949,57 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x51D9, 0xFFFF, 0xFFFF, "Alder Lake-P Serial IO I2C Controller #3(0x51D9)"}, {0x8086, 0x51E0, 0xFFFF, 0xFFFF, "Alder Lake PCH HECI Controller(0x51E0)"}, {0x8086, 0x51E0, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51E0, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51E3, 0xFFFF, 0xFFFF, "Alder Lake AMT SOL Redirection(0x51E3)"}, {0x8086, 0x51E3, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, {0x8086, 0x51E8, 0xFFFF, 0xFFFF, "Alder Lake PCH Serial IO I2C Controller #0(0x51E8)"}, {0x8086, 0x51E8, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51E8, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51E9, 0xFFFF, 0xFFFF, "Alder Lake PCH Serial IO I2C Controller #1(0x51E9)"}, {0x8086, 0x51E9, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51E9, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51EA, 0xFFFF, 0xFFFF, "Alder Lake PCH Serial IO I2C Controller #2(0x51EA)"}, {0x8086, 0x51EB, 0xFFFF, 0xFFFF, "Alder Lake PCH Serial IO I2C Controller #3(0x51EB)"}, {0x8086, 0x51ED, 0xFFFF, 0xFFFF, "Alder Lake PCH USB 3.2 xHCI Host Controller(0x51ED)"}, {0x8086, 0x51ED, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51ED, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51EF, 0xFFFF, 0xFFFF, "Alder Lake PCH Shared SRAM(0x51EF)"}, {0x8086, 0x51EF, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51EF, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x51F0, 0xFFFF, 0xFFFF, "Alder Lake-P PCH CNVi WiFi(0x51F0)"}, -{0x8086, 0x51F0, 0x8086, 0x0034, "Wireless-AC 9560 160MHz(0x8086-0x0034)"}, -{0x8086, 0x51F0, 0x8086, 0x0070, "Wi-Fi 6 AX201 160MHz(0x8086-0x0070)"}, -{0x8086, 0x51F0, 0x8086, 0x0074, "Wi-Fi 6 AX201 160MHz(0x8086-0x0074)"}, -{0x8086, 0x51F0, 0x8086, 0x0094, "Wi-Fi 6E AX211 160MHz(0x8086-0x0094)"}, -{0x8086, 0x51F0, 0x8086, 0x4070, "Wi-Fi 6 AX201 160MHz(0x8086-0x4070)"}, -{0x8086, 0x51F0, 0x8086, 0x4090, "Wi-Fi 6E AX211 160MHz(0x8086-0x4090)"}, +{0x8086, 0x51F0, 0x1A56, 0x1652, "Dual Band Wi-Fi 6(802.11ax) Killer AX1650i 160MHz 2x2 [Cyclone Peak](0x1A56-0x1652)"}, +{0x8086, 0x51F0, 0x1A56, 0x1671, "Dual Band Wi-Fi 6E(802.11ax) AX1675s 160MHz 2x2 [Garfield Peak](0x1A56-0x1671)"}, +{0x8086, 0x51F0, 0x1A56, 0x1672, "Dual Band Wi-Fi 6E(802.11ax) AX1675i 160MHz 2x2 [Garfield Peak](0x1A56-0x1672)"}, +{0x8086, 0x51F0, 0x1A56, 0x1692, "Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX1690i 160MHz 2x2 [Garfield Peak](0x1A56-0x1692)"}, +{0x8086, 0x51F0, 0x8086, 0x0034, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 160MHz 2x2 [Jefferson Peak](0x8086-0x0034)"}, +{0x8086, 0x51F0, 0x8086, 0x0070, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x0070)"}, +{0x8086, 0x51F0, 0x8086, 0x0074, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x0074)"}, +{0x8086, 0x51F0, 0x8086, 0x0094, "Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak](0x8086-0x0094)"}, +{0x8086, 0x51F0, 0x8086, 0x00B4, "Simultaneous Dual Band(Double Connect) Wi-Fi 6E AX411 160MHz 2x2 [Garfield Peak](0x8086-0x00B4)"}, +{0x8086, 0x51F0, 0x8086, 0x0234, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9560 80MHz 2x2 [Jefferson Peak](0x8086-0x0234)"}, +{0x8086, 0x51F0, 0x8086, 0x0244, "Single Band Wi-Fi 6(802.11ax) AX101 80MHz 1x1 [Harrison Peak](0x8086-0x0244)"}, +{0x8086, 0x51F0, 0x8086, 0x0264, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9461 80MHz 1x1 [Jefferson Peak](0x8086-0x0264)"}, +{0x8086, 0x51F0, 0x8086, 0x0274, "Dual Band Wi-Fi E(802.11ax) AX203 80MHz 2x2 [Johnson Peak](0x8086-0x0274)"}, +{0x8086, 0x51F0, 0x8086, 0x02A4, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak](0x8086-0x02A4)"}, +{0x8086, 0x51F0, 0x8086, 0x4070, "Dual Band Wi-Fi 6(802.11ax) AX201 160MHz 2x2 [Harrison Peak](0x8086-0x4070)"}, +{0x8086, 0x51F0, 0x8086, 0x4090, "Dual Band Wi-Fi 6E(802.11ax) AX211 160MHz 2x2 [Garfield Peak](0x8086-0x4090)"}, +{0x8086, 0x51F0, 0x8086, 0x42A4, "Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak](0x8086-0x42A4)"}, {0x8086, 0x51F1, 0xFFFF, 0xFFFF, "Raptor Lake PCH CNVi WiFi(0x51F1)"}, +{0x8086, 0x51F1, 0x8086, 0x4090, "Wi-Fi 6E AX211 160MHz(0x8086-0x4090)"}, {0x8086, 0x51FC, 0xFFFF, 0xFFFF, "Alder Lake-P Integrated Sensor Hub(0x51FC)"}, {0x8086, 0x51FC, 0x1028, 0x0B10, "Precision 3571(0x1028-0x0B10)"}, +{0x8086, 0x51FC, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0x5200, 0xFFFF, 0xFFFF, "EtherExpress PRO/100 Intelligent Server PCI Bridge(0x5200)"}, {0x8086, 0x5201, 0xFFFF, 0xFFFF, "EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller(0x5201)"}, {0x8086, 0x5201, 0x8086, 0x0001, "EtherExpress PRO/100 Server Ethernet Adapter(0x8086-0x0001)"}, {0x8086, 0x530D, 0xFFFF, 0xFFFF, "80310 (IOP) IO Processor(0x530D)"}, +{0x8086, 0x5481, 0xFFFF, 0xFFFF, "Alder Lake-N PCH eSPI Controller(0x5481)"}, +{0x8086, 0x54C8, 0xFFFF, 0xFFFF, "Alder Lake-N PCH High Definition Audio Controller(0x54C8)"}, +{0x8086, 0x54E0, 0xFFFF, 0xFFFF, "Alder Lake-N PCH HECI Controller(0x54E0)"}, +{0x8086, 0x54ED, 0xFFFF, 0xFFFF, "Alder Lake-N PCH USB 3.2 xHCI Host Controller(0x54ED)"}, +{0x8086, 0x54EF, 0xFFFF, 0xFFFF, "Alder Lake-N PCH Shared SRAM(0x54EF)"}, {0x8086, 0x54F0, 0xFFFF, 0xFFFF, "CNVi: Wi-Fi(0x54F0)"}, +{0x8086, 0x54F0, 0x8086, 0x0244, "Wi-Fi 6 AX101NGW(0x8086-0x0244)"}, {0x8086, 0x5502, 0xFFFF, 0xFFFF, "Ethernet Controller (2) I225-LMvP(0x5502)"}, {0x8086, 0x5502, 0x1AB6, 0x0225, "TS4 On-Board 2.5GbE Ethernet Adaptor(0x1AB6-0x0225)"}, {0x8086, 0x5690, 0xFFFF, 0xFFFF, "DG2 [Arc A770M](0x5690)"}, @@ -40609,6 +41025,10 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x56B1, 0xFFFF, 0xFFFF, "DG2 [Arc Pro A40/A50](0x56B1)"}, {0x8086, 0x56B2, 0xFFFF, 0xFFFF, "DG2 [Arc Pro A60M](0x56B2)"}, {0x8086, 0x56B3, 0xFFFF, 0xFFFF, "DG2 [Arc Pro A60](0x56B3)"}, +{0x8086, 0x56BA, 0xFFFF, 0xFFFF, "DG2 [Intel Graphics](0x56BA)"}, +{0x8086, 0x56BB, 0xFFFF, 0xFFFF, "DG2 [Intel Graphics](0x56BB)"}, +{0x8086, 0x56BC, 0xFFFF, 0xFFFF, "DG2 [Intel Graphics](0x56BC)"}, +{0x8086, 0x56BD, 0xFFFF, 0xFFFF, "DG2 [Intel Graphics](0x56BD)"}, {0x8086, 0x56C0, 0xFFFF, 0xFFFF, "ATS-M [Data Center GPU Flex 170](0x56C0)"}, {0x8086, 0x56C1, 0xFFFF, 0xFFFF, "ATS-M [Data Center GPU Flex 140](0x56C1)"}, {0x8086, 0x5780, 0xFFFF, 0xFFFF, "Thunderbolt 80/120G Bridge [Barlow Ridge Host 80G 2023](0x5780)"}, @@ -40701,6 +41121,10 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x5AE8, 0xFFFF, 0xFFFF, "Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface(0x5AE8)"}, {0x8086, 0x5AEE, 0xFFFF, 0xFFFF, "Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4(0x5AEE)"}, {0x8086, 0x5AF0, 0xFFFF, 0xFFFF, "Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge(0x5AF0)"}, +{0x8086, 0x6420, 0xFFFF, 0xFFFF, "Lunar Lake [Intel Graphics](0x6420)"}, +{0x8086, 0x643E, 0xFFFF, 0xFFFF, "Lunar Lake NPU(0x643E)"}, +{0x8086, 0x64A0, 0xFFFF, 0xFFFF, "Lunar Lake [Intel Graphics](0x64A0)"}, +{0x8086, 0x64B0, 0xFFFF, 0xFFFF, "Lunar Lake [Intel Graphics](0x64B0)"}, {0x8086, 0x65C0, 0xFFFF, 0xFFFF, "5100 Chipset Memory Controller Hub(0x65C0)"}, {0x8086, 0x65E2, 0xFFFF, 0xFFFF, "5100 Chipset PCI Express x4 Port 2(0x65E2)"}, {0x8086, 0x65E3, 0xFFFF, 0xFFFF, "5100 Chipset PCI Express x4 Port 3(0x65E3)"}, @@ -40990,7 +41414,28 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x7800, 0x10B4, 0x202F, "Lightspeed 740(0x10B4-0x202F)"}, {0x8086, 0x7800, 0x8086, 0x0000, "Terminator 2x/i(0x8086-0x0000)"}, {0x8086, 0x7800, 0x8086, 0x0100, "Intel740 Graphics Accelerator(0x8086-0x0100)"}, +{0x8086, 0x7A04, 0xFFFF, 0xFFFF, "Raptor Lake LPC/eSPI Controller(0x7A04)"}, +{0x8086, 0x7A23, 0xFFFF, 0xFFFF, "Raptor Lake-S PCH SMBus Controller(0x7A23)"}, +{0x8086, 0x7A24, 0xFFFF, 0xFFFF, "Raptor Lake SPI (flash) Controller(0x7A24)"}, +{0x8086, 0x7A27, 0xFFFF, 0xFFFF, "Raptor Lake-S PCH Shared SRAM(0x7A27)"}, +{0x8086, 0x7A30, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #9(0x7A30)"}, +{0x8086, 0x7A38, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #1(0x7A38)"}, +{0x8086, 0x7A3B, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #4(0x7A3B)"}, +{0x8086, 0x7A40, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #17(0x7A40)"}, +{0x8086, 0x7A44, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #21(0x7A44)"}, +{0x8086, 0x7A48, 0xFFFF, 0xFFFF, "Raptor Lake PCI Express Root Port #25(0x7A48)"}, +{0x8086, 0x7A4C, 0xFFFF, 0xFFFF, "Raptor Lake Serial IO I2C Host Controller #0(0x7A4C)"}, +{0x8086, 0x7A4D, 0xFFFF, 0xFFFF, "Raptor Lake Serial IO I2C Host Controller #1(0x7A4D)"}, +{0x8086, 0x7A4E, 0xFFFF, 0xFFFF, "Raptor Lake Serial IO I2C Host Controller #2(0x7A4E)"}, +{0x8086, 0x7A50, 0xFFFF, 0xFFFF, "Raptor Lake High Definition Audio Controller(0x7A50)"}, +{0x8086, 0x7A60, 0xFFFF, 0xFFFF, "Raptor Lake USB 3.2 Gen 2x2 (20 Gb/s) XHCI Host Controller(0x7A60)"}, +{0x8086, 0x7A62, 0xFFFF, 0xFFFF, "Raptor Lake SATA AHCI Controller(0x7A62)"}, +{0x8086, 0x7A68, 0xFFFF, 0xFFFF, "Raptor Lake CSME HECI #1(0x7A68)"}, +{0x8086, 0x7A69, 0xFFFF, 0xFFFF, "Raptor Lake CSME HECI #2(0x7A69)"}, +{0x8086, 0x7A70, 0xFFFF, 0xFFFF, "Raptor Lake-S PCH CNVi WiFi(0x7A70)"}, +{0x8086, 0x7A70, 0x8086, 0x0090, "WiFi 6E AX211 160MHz(0x8086-0x0090)"}, {0x8086, 0x7A84, 0xFFFF, 0xFFFF, "Z690 Chipset LPC/eSPI Controller(0x7A84)"}, +{0x8086, 0x7A85, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #?-?-?-?-?-(0x7A85)"}, {0x8086, 0x7AA3, 0xFFFF, 0xFFFF, "Alder Lake-S PCH SMBus Controller(0x7AA3)"}, {0x8086, 0x7AA4, 0xFFFF, 0xFFFF, "Alder Lake-S PCH SPI Controller(0x7AA4)"}, {0x8086, 0x7AA7, 0xFFFF, 0xFFFF, "Alder Lake-S PCH Shared SRAM(0x7AA7)"}, @@ -41000,9 +41445,11 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x7AB4, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #13(0x7AB4)"}, {0x8086, 0x7AB8, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #1(0x7AB8)"}, {0x8086, 0x7AB9, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #2(0x7AB9)"}, +{0x8086, 0x7ABA, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #?-?-?-?-(0x7ABA)"}, {0x8086, 0x7ABC, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #5(0x7ABC)"}, {0x8086, 0x7ABD, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #6(0x7ABD)"}, {0x8086, 0x7ABF, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #8(0x7ABF)"}, +{0x8086, 0x7AC4, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #?-?-?-?-(0x7AC4)"}, {0x8086, 0x7AC8, 0xFFFF, 0xFFFF, "Alder Lake-S PCH PCI Express Root Port #25(0x7AC8)"}, {0x8086, 0x7ACC, 0xFFFF, 0xFFFF, "Alder Lake-S PCH Serial IO I2C Controller #0(0x7ACC)"}, {0x8086, 0x7ACD, 0xFFFF, 0xFFFF, "Alder Lake-S PCH Serial IO I2C Controller #1(0x7ACD)"}, @@ -41019,10 +41466,14 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x7AFC, 0xFFFF, 0xFFFF, "Alder Lake-S PCH Serial IO I2C Controller #4(0x7AFC)"}, {0x8086, 0x7AFD, 0xFFFF, 0xFFFF, "Alder Lake-S PCH Serial IO I2C Controller #5(0x7AFD)"}, {0x8086, 0x7D0B, 0xFFFF, 0xFFFF, "Volume Management Device NVMe RAID Controller Intel Corporation(0x7D0B)"}, +{0x8086, 0x7D1D, 0xFFFF, 0xFFFF, "Meteor Lake NPU(0x7D1D)"}, {0x8086, 0x7D40, 0xFFFF, 0xFFFF, "Meteor Lake-M [Intel Graphics](0x7D40)"}, {0x8086, 0x7D45, 0xFFFF, 0xFFFF, "Meteor Lake-P [Intel Graphics](0x7D45)"}, +{0x8086, 0x7D51, 0xFFFF, 0xFFFF, "Arrow Lake-P [Intel Graphics](0x7D51)"}, {0x8086, 0x7D55, 0xFFFF, 0xFFFF, "Meteor Lake-P [Intel Arc Graphics](0x7D55)"}, {0x8086, 0x7D60, 0xFFFF, 0xFFFF, "Meteor Lake-M [Intel Graphics](0x7D60)"}, +{0x8086, 0x7D67, 0xFFFF, 0xFFFF, "Arrow Lake [Intel Graphics](0x7D67)"}, +{0x8086, 0x7DD1, 0xFFFF, 0xFFFF, "Arrow Lake-P [Intel Graphics](0x7DD1)"}, {0x8086, 0x7DD5, 0xFFFF, 0xFFFF, "Meteor Lake-P [Intel Graphics](0x7DD5)"}, {0x8086, 0x7E01, 0xFFFF, 0xFFFF, "Meteor Lake-P LPC/eSPI Controller(0x7E01)"}, {0x8086, 0x7E22, 0xFFFF, 0xFFFF, "Meteor Lake-P SMBus Controller(0x7E22)"}, @@ -41425,6 +41876,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0x9B41, 0x1028, 0x09BE, "Latitude 7410(0x1028-0x09BE)"}, {0x8086, 0x9B43, 0xFFFF, 0xFFFF, "10th Gen Core Processor Host Bridge/DRAM Registers(0x9B43)"}, {0x8086, 0x9B44, 0xFFFF, 0xFFFF, "10th Gen Core Processor Host Bridge/DRAM Registers(0x9B44)"}, +{0x8086, 0x9B51, 0xFFFF, 0xFFFF, "10th Gen Core Processor Host Bridge/DRAM Registers(0x9B51)"}, {0x8086, 0x9B53, 0xFFFF, 0xFFFF, "Comet Lake-S 6c Host Bridge/DRAM Controller(0x9B53)"}, {0x8086, 0x9B54, 0xFFFF, 0xFFFF, "10th Gen Core Processor Host Bridge/DRAM Registers(0x9B54)"}, {0x8086, 0x9B61, 0xFFFF, 0xFFFF, "Comet Lake-U v1 4c Host Bridge/DRAM Controller(0x9B61)"}, @@ -41985,6 +42437,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0xA2BA, 0xFFFF, 0xFFFF, "200 Series PCH CSME HECI #1(0xA2BA)"}, {0x8086, 0xA2BA, 0x1462, 0x7A72, "H270 PC MATE(0x1462-0x7A72)"}, {0x8086, 0xA2BB, 0xFFFF, 0xFFFF, "200 Series PCH CSME HECI #2(0xA2BB)"}, +{0x8086, 0xA2BD, 0xFFFF, 0xFFFF, "200 Series Chipset Family KT Redirection(0xA2BD)"}, {0x8086, 0xA2C4, 0xFFFF, 0xFFFF, "200 Series PCH LPC Controller (H270)(0xA2C4)"}, {0x8086, 0xA2C4, 0x1462, 0x7A72, "H270 PC MATE(0x1462-0x7A72)"}, {0x8086, 0xA2C5, 0xFFFF, 0xFFFF, "200 Series PCH LPC Controller (Z270)(0xA2C5)"}, @@ -42085,19 +42538,26 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0xA3EB, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #21(0xA3EB)"}, {0x8086, 0xA3F0, 0xFFFF, 0xFFFF, "Comet Lake PCH-V cAVS(0xA3F0)"}, {0x8086, 0xA620, 0xFFFF, 0xFFFF, "6400/6402 Advanced Memory Buffer (AMB)(0xA620)"}, +{0x8086, 0xA706, 0xFFFF, 0xFFFF, "Raptor Lake-P 6p+8e cores Host Bridge/DRAM Controller(0xA706)"}, +{0x8086, 0xA706, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA707, 0xFFFF, 0xFFFF, "Raptor Lake-P/U 4p+8e cores Host Bridge/DRAM Controller(0xA707)"}, {0x8086, 0xA708, 0xFFFF, 0xFFFF, "Raptor Lake-P/U 2p+8e cores Host Bridge/DRAM Controller(0xA708)"}, {0x8086, 0xA71D, 0xFFFF, 0xFFFF, "Raptor Lake Dynamic Platform and Thermal Framework Processor Participant(0xA71D)"}, +{0x8086, 0xA71D, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA71E, 0xFFFF, 0xFFFF, "Raptor Lake-P Thunderbolt 4 USB Controller(0xA71E)"}, +{0x8086, 0xA71E, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA720, 0xFFFF, 0xFFFF, "Raptor Lake-P [UHD Graphics](0xA720)"}, {0x8086, 0xA721, 0xFFFF, 0xFFFF, "Raptor Lake-P [UHD Graphics](0xA721)"}, {0x8086, 0xA72F, 0xFFFF, 0xFFFF, "Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2(0xA72F)"}, {0x8086, 0xA73E, 0xFFFF, 0xFFFF, "Raptor Lake-P Thunderbolt 4 NHI #0(0xA73E)"}, +{0x8086, 0xA73E, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA74D, 0xFFFF, 0xFFFF, "Raptor Lake PCIe 4.0 Graphics Port(0xA74D)"}, {0x8086, 0xA74F, 0xFFFF, 0xFFFF, "GNA Scoring Accelerator module(0xA74F)"}, +{0x8086, 0xA74F, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA76D, 0xFFFF, 0xFFFF, "Raptor Lake-P Thunderbolt 4 NHI #1(0xA76D)"}, {0x8086, 0xA76E, 0xFFFF, 0xFFFF, "Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0(0xA76E)"}, {0x8086, 0xA77D, 0xFFFF, 0xFFFF, "Raptor Lake Crashlog and Telemetry(0xA77D)"}, +{0x8086, 0xA77D, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA77F, 0xFFFF, 0xFFFF, "Volume Management Device NVMe RAID Controller Intel Corporation(0xA77F)"}, {0x8086, 0xA780, 0xFFFF, 0xFFFF, "Raptor Lake-S GT1 [UHD Graphics 770](0xA780)"}, {0x8086, 0xA781, 0xFFFF, 0xFFFF, "Raptor Lake-S UHD Graphics(0xA781)"}, @@ -42108,6 +42568,7 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0xA78A, 0xFFFF, 0xFFFF, "Raptor Lake-S UHD Graphics(0xA78A)"}, {0x8086, 0xA78B, 0xFFFF, 0xFFFF, "Raptor Lake-S UHD Graphics(0xA78B)"}, {0x8086, 0xA7A0, 0xFFFF, 0xFFFF, "Raptor Lake-P [Iris Xe Graphics](0xA7A0)"}, +{0x8086, 0xA7A0, 0x1028, 0x0C06, "Precision 3580(0x1028-0x0C06)"}, {0x8086, 0xA7A1, 0xFFFF, 0xFFFF, "Raptor Lake-P [Iris Xe Graphics](0xA7A1)"}, {0x8086, 0xA7A8, 0xFFFF, 0xFFFF, "Raptor Lake-P [UHD Graphics](0xA7A8)"}, {0x8086, 0xA7A9, 0xFFFF, 0xFFFF, "Raptor Lake-P [UHD Graphics](0xA7A9)"}, @@ -42115,8 +42576,37 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0xA7AB, 0xFFFF, 0xFFFF, "Raptor Lake-P [Intel Graphics](0xA7AB)"}, {0x8086, 0xA7AC, 0xFFFF, 0xFFFF, "Raptor Lake-U [Intel Graphics](0xA7AC)"}, {0x8086, 0xA7AD, 0xFFFF, 0xFFFF, "Raptor Lake-U [Intel Graphics](0xA7AD)"}, +{0x8086, 0xA806, 0xFFFF, 0xFFFF, "Lunar Lake-M LPC/eSPI Controller(0xA806)"}, +{0x8086, 0xA822, 0xFFFF, 0xFFFF, "Lunar Lake-M SMbus Controller(0xA822)"}, +{0x8086, 0xA823, 0xFFFF, 0xFFFF, "Lunar Lake-M SPI Controller(0xA823)"}, +{0x8086, 0xA824, 0xFFFF, 0xFFFF, "Lunar Lake-M Trace Hub(0xA824)"}, +{0x8086, 0xA825, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO UART Controller #0(0xA825)"}, +{0x8086, 0xA826, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO UART Controller #1(0xA826)"}, +{0x8086, 0xA827, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO SPI Controller #0(0xA827)"}, +{0x8086, 0xA828, 0xFFFF, 0xFFFF, "Lunar Lake-M HD Audio Controller(0xA828)"}, +{0x8086, 0xA830, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO SPI Controller #1(0xA830)"}, +{0x8086, 0xA831, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 USB Controller(0xA831)"}, +{0x8086, 0xA833, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 NHI #0(0xA833)"}, +{0x8086, 0xA834, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 NHI #1(0xA834)"}, +{0x8086, 0xA838, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #1(0xA838)"}, +{0x8086, 0xA839, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #2(0xA839)"}, +{0x8086, 0xA83A, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #3(0xA83A)"}, +{0x8086, 0xA83B, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #4(0xA83B)"}, +{0x8086, 0xA83C, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #5(0xA83C)"}, +{0x8086, 0xA83D, 0xFFFF, 0xFFFF, "Lunar Lake-M PCI Express Root Port #6(0xA83D)"}, +{0x8086, 0xA845, 0xFFFF, 0xFFFF, "Lunar Lake-M Integrated Sensor Hub(0xA845)"}, +{0x8086, 0xA847, 0xFFFF, 0xFFFF, "Lunar Lake-M UFS Controller(0xA847)"}, +{0x8086, 0xA84E, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0(0xA84E)"}, +{0x8086, 0xA84F, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 PCI Express Root Port #1(0xA84F)"}, +{0x8086, 0xA860, 0xFFFF, 0xFFFF, "Lunar Lake-M Thunderbolt 4 PCI Express Root Port #2(0xA860)"}, +{0x8086, 0xA878, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO I2C Controller #0(0xA878)"}, +{0x8086, 0xA879, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO I2C Controller #1(0xA879)"}, +{0x8086, 0xA87A, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO I2C Controller #2(0xA87A)"}, +{0x8086, 0xA87B, 0xFFFF, 0xFFFF, "Lunar Lake-M Serial IO I2C Controller #3(0xA87B)"}, +{0x8086, 0xA87D, 0xFFFF, 0xFFFF, "Lunar Lake-M USB 3.2 Gen 2x1 xHCI Host Controller(0xA87D)"}, {0x8086, 0xABC0, 0xFFFF, 0xFFFF, "Omni-Path Fabric Switch Silicon 100 Series(0xABC0)"}, {0x8086, 0xAD0B, 0xFFFF, 0xFFFF, "Volume Management Device NVMe RAID Controller Intel Corporation(0xAD0B)"}, +{0x8086, 0xAD1D, 0xFFFF, 0xFFFF, "Arrow Lake NPU(0xAD1D)"}, {0x8086, 0xB152, 0xFFFF, 0xFFFF, "21152 PCI-to-PCI Bridge(0xB152)"}, {0x8086, 0xB152, 0x8086, 0xB152, "21152 PCI-to-PCI Bridge(0x8086-0xB152)"}, {0x8086, 0xB154, 0xFFFF, 0xFFFF, "21154 PCI-to-PCI Bridge(0xB154)"}, @@ -42162,11 +42652,18 @@ pci_id_t pci_vid_8086[] = { {0x8086, 0xFAF0, 0xFFFF, 0xFFFF, "SSD 665p Series [Neptune Harbor Refresh](0xFAF0)"}, }; /* pci_vid_8086[] */ -pci_id_t pci_vid_8088[] = { +static pci_id_t const pci_vid_8088[] = { {0x8088, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Wangxun Technology Co., Ltd.(0x8088)"}, {0x8088, 0x0100, 0xFFFF, 0xFFFF, "WX1860AL-W Gigabit Ethernet Controller(0x0100)"}, {0x8088, 0x0101, 0xFFFF, 0xFFFF, "WX1860A2 Gigabit Ethernet Controller(0x0101)"}, +{0x8088, 0x0101, 0x4C52, 0x2024, "LRES2024PT Dual-port 1Gb Ethernet Network Adapter(0x4C52-0x2024)"}, +{0x8088, 0x0101, 0x4C52, 0x2025, "LRES2025PT Quad-port 1Gb Ethernet Network Adapter(0x4C52-0x2025)"}, +{0x8088, 0x0101, 0x4C52, 0x2027, "LRES2027PF Dual-port 1Gb Ethernet Server Adapter(0x4C52-0x2027)"}, +{0x8088, 0x0101, 0x4C52, 0x3018, "LRES3018PT Dual-port 1Gb Ethernet Server Adapter for OCP(0x4C52-0x3018)"}, {0x8088, 0x0101, 0x8088, 0x0201, "Dual-Port Ethernet Network Adaptor SF200T(0x8088-0x0201)"}, +{0x8088, 0x0101, 0x8088, 0x0501, "Dual-Port Ethernet Network Adapter SF200T-C101(0x8088-0x0501)"}, +{0x8088, 0x0101, 0x8088, 0x0901, "Dual-Port Ethernet Network Adapter SF200T-B401(0x8088-0x0901)"}, +{0x8088, 0x0101, 0x8088, 0x0B01, "Dual-Port Ethernet Network Adapter SF200T-B402(0x8088-0x0B01)"}, {0x8088, 0x0101, 0x8088, 0x4201, "Dual-Port Ethernet Network Adaptor SF200T (WOL)(0x8088-0x4201)"}, {0x8088, 0x0101, 0x8088, 0x8201, "Dual-Port Ethernet Network Adaptor SF200T (NCSI)(0x8088-0x8201)"}, {0x8088, 0x0101, 0x8088, 0xC201, "Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI)(0x8088-0xC201)"}, @@ -42174,8 +42671,12 @@ pci_id_t pci_vid_8088[] = { {0x8088, 0x0102, 0x8088, 0x0210, "Dual-Port Ethernet Network Adaptor SF200T-S(0x8088-0x0210)"}, {0x8088, 0x0103, 0xFFFF, 0xFFFF, "WX1860A4 Gigabit Ethernet Controller(0x0103)"}, {0x8088, 0x0103, 0x1BD4, 0x009E, "ENPW2100-T4(0x1BD4-0x009E)"}, +{0x8088, 0x0103, 0x4C52, 0x2028, "LRES2028PF Quad-port 1Gb Ethernet Server Adapter(0x4C52-0x2028)"}, +{0x8088, 0x0103, 0x4C52, 0x3019, "LRES3019PT Quad-port 1Gb Ethernet Server Adapter for OCP(0x4C52-0x3019)"}, {0x8088, 0x0103, 0x8088, 0x0401, "Qual-Port Ethernet Network Adaptor SF400T(0x8088-0x0401)"}, {0x8088, 0x0103, 0x8088, 0x0440, "Qual-Port Ethernet Network Adaptor SF400-OCP(0x8088-0x0440)"}, +{0x8088, 0x0103, 0x8088, 0x0A01, "Quad-Port Ethernet Network Adapter SF400T-B401(0x8088-0x0A01)"}, +{0x8088, 0x0103, 0x8088, 0x0C01, "Quad-Port Ethernet Network Adapter SF400T-B402(0x8088-0x0C01)"}, {0x8088, 0x0103, 0x8088, 0x4401, "Quad-Port Ethernet Network Adapter SF400T (WOL)(0x8088-0x4401)"}, {0x8088, 0x0103, 0x8088, 0x8103, "Quad-Port Ethernet Network Adaptor SF400T (NCSI)(0x8088-0x8103)"}, {0x8088, 0x0103, 0x8088, 0x8401, "Quad-Port Ethernet Network Adapter SF400T (NCSI)(0x8088-0x8401)"}, @@ -42199,6 +42700,8 @@ pci_id_t pci_vid_8088[] = { {0x8088, 0x0108, 0x8088, 0x0420, "Qual-Port Ethernet Network Adaptor SF400HT-S(0x8088-0x0420)"}, {0x8088, 0x0109, 0xFFFF, 0xFFFF, "WX1860-LC Gigabit Ethernet Controller(0x0109)"}, {0x8088, 0x010A, 0xFFFF, 0xFFFF, "WX1860A1 Gigabit Ethernet Controller(0x010A)"}, +{0x8088, 0x010A, 0x4C52, 0x2023, "LRES2034PT Single-port 1Gb Ethernet Network Adapter(0x4C52-0x2023)"}, +{0x8088, 0x010A, 0x4C52, 0x2026, "LRES2026PF Single-port 1Gb Ethernet Network Adapter(0x4C52-0x2026)"}, {0x8088, 0x010B, 0xFFFF, 0xFFFF, "WX1860AL1 Gigabit Ethernet Controller(0x010B)"}, {0x8088, 0x010B, 0x8088, 0x0102, "Single-Port Ethernet Network Adaptor SF100HT(0x8088-0x0102)"}, {0x8088, 0x010B, 0x8088, 0x4102, "Single-Port Ethernet Network Adaptor SF100HT (WOL)(0x8088-0x4102)"}, @@ -42215,6 +42718,9 @@ pci_id_t pci_vid_8088[] = { {0x8088, 0x1001, 0xFFFF, 0xFFFF, "Ethernet Controller RP1000 for 10GbE SFP+(0x1001)"}, {0x8088, 0x1001, 0x1BD4, 0x0084, "Ethernet Controller SP1000A for 10GbE SFP+(lldp)(0x1BD4-0x0084)"}, {0x8088, 0x1001, 0x1BD4, 0x0085, "Ethernet Controller SP1000A for 10GBASE-T(0x1BD4-0x0085)"}, +{0x8088, 0x1001, 0x4C52, 0x1002, "LRES1002PF Dual-port 10Gb Ethernet Server Adapter(0x4C52-0x1002)"}, +{0x8088, 0x1001, 0x4C52, 0x1003, "LRES1003PF Single-port 10Gb Ethernet Server Adapter(0x4C52-0x1003)"}, +{0x8088, 0x1001, 0x4C52, 0x3001, "LRES3001PF Dual-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3001)"}, {0x8088, 0x1001, 0x8088, 0x0000, "Ethernet Network Adaptor RP1000 for 10GbE SFP+(0x8088-0x0000)"}, {0x8088, 0x1001, 0x8088, 0x0300, "Ethernet Network Adaptor RP1000-A03 for 10GbE SFP+(0x8088-0x0300)"}, {0x8088, 0x1001, 0x8088, 0x0400, "Ethernet Network Adaptor RP1000-A04 for 10GbE SFP+(0x8088-0x0400)"}, @@ -42225,90 +42731,98 @@ pci_id_t pci_vid_8088[] = { {0x8088, 0x2001, 0x8088, 0x2400, "Ethernet Network Adaptor RP2000-A04 for 10GbE SFP+(0x8088-0x2400)"}, }; /* pci_vid_8088[] */ -pci_id_t pci_vid_80EE[] = { +static pci_id_t const pci_vid_80EE[] = { {0x80EE, 0xFFFF, 0xFFFF, 0xFFFF, "InnoTek Systemberatung GmbH(0x80EE)"}, {0x80EE, 0xBEEF, 0xFFFF, 0xFFFF, "VirtualBox Graphics Adapter(0xBEEF)"}, {0x80EE, 0xCAFE, 0xFFFF, 0xFFFF, "VirtualBox Guest Service(0xCAFE)"}, }; /* pci_vid_80EE[] */ -pci_id_t pci_vid_8322[] = { +static pci_id_t const pci_vid_8322[] = { {0x8322, 0xFFFF, 0xFFFF, 0xFFFF, "Sodick America Corp.(0x8322)"}, }; /* pci_vid_8322[] */ -pci_id_t pci_vid_8384[] = { +static pci_id_t const pci_vid_8384[] = { {0x8384, 0xFFFF, 0xFFFF, 0xFFFF, "SigmaTel(0x8384)"}, }; /* pci_vid_8384[] */ -pci_id_t pci_vid_8401[] = { +static pci_id_t const pci_vid_8401[] = { {0x8401, 0xFFFF, 0xFFFF, 0xFFFF, "TRENDware International Inc.(0x8401)"}, }; /* pci_vid_8401[] */ -pci_id_t pci_vid_8510[] = { +static pci_id_t const pci_vid_8510[] = { {0x8510, 0xFFFF, 0xFFFF, 0xFFFF, "Sietium Semiconductor Co., Ltd.(0x8510)"}, {0x8510, 0x0201, 0xFFFF, 0xFFFF, "GenBu02 [GB2062-PCIe-C0](0x0201)"}, }; /* pci_vid_8510[] */ -pci_id_t pci_vid_8686[] = { +static pci_id_t const pci_vid_8686[] = { {0x8686, 0xFFFF, 0xFFFF, 0xFFFF, "SAP(0x8686)"}, {0x8686, 0x1010, 0xFFFF, 0xFFFF, "vSMP Foundation controller [vSMP CTL](0x1010)"}, {0x8686, 0x1011, 0xFFFF, 0xFFFF, "vSMP Foundation MEX/FLX controller [vSMP CTL](0x1011)"}, }; /* pci_vid_8686[] */ -pci_id_t pci_vid_8800[] = { +static pci_id_t const pci_vid_8800[] = { {0x8800, 0xFFFF, 0xFFFF, 0xFFFF, "Trigem Computer Inc.(0x8800)"}, {0x8800, 0x2008, 0xFFFF, 0xFFFF, "Video assistant component(0x2008)"}, }; /* pci_vid_8800[] */ -pci_id_t pci_vid_8820[] = { +static pci_id_t const pci_vid_8820[] = { {0x8820, 0xFFFF, 0xFFFF, 0xFFFF, "Stryker Corporation(0x8820)"}, {0x8820, 0x2724, 0xFFFF, 0xFFFF, "Mako Front Side Motor Controller [cPCI](0x2724)"}, }; /* pci_vid_8820[] */ -pci_id_t pci_vid_8848[] = { +static pci_id_t const pci_vid_8848[] = { {0x8848, 0xFFFF, 0xFFFF, 0xFFFF, "MUCSE(0x8848)"}, {0x8848, 0x1000, 0xFFFF, 0xFFFF, "Ethernet Controller N10 Series for 10GbE or 40GbE (Dual-port)(0x1000)"}, {0x8848, 0x1000, 0x8848, 0x8410, "Ethernet Network Adapter N10G-X2-DC for 10GbE SFP+ 2-port(0x8848-0x8410)"}, {0x8848, 0x1001, 0xFFFF, 0xFFFF, "Ethernet Controller N400 Series for 1GbE (Dual-port)(0x1001)"}, {0x8848, 0x1003, 0xFFFF, 0xFFFF, "Ethernet Controller N400 Series for 10GbE (Single-port)(0x1003)"}, +{0x8848, 0x1003, 0x4C52, 0x1050, "LRES1050PF Single-port 10Gb Ethernet Network Adapter(0x4C52-0x1050)"}, {0x8848, 0x1020, 0xFFFF, 0xFFFF, "Ethernet Controller N10 Series for 10GbE (Quad-port)(0x1020)"}, +{0x8848, 0x1020, 0x4C52, 0x1030, "LRES1030PF Quad-port 10Gb Ethernet Server Adapter(0x4C52-0x1030)"}, +{0x8848, 0x1020, 0x4C52, 0x1031, "LRES1031PF Dual-port 10Gb Ethernet Server Adapter(0x4C52-0x1031)"}, +{0x8848, 0x1020, 0x4C52, 0x3031, "LRES3031PF Quad-port 10Gb Ethernet Server Adapter for OCP(0x4C52-0x3031)"}, {0x8848, 0x1020, 0x8848, 0x8451, "Ethernet Network Adapter N10G-X4-QC for 10GbE SFP+ 4-port(0x8848-0x8451)"}, {0x8848, 0x1021, 0xFFFF, 0xFFFF, "Ethernet Controller N400 Series for 1GbE (Quad-port)(0x1021)"}, +{0x8848, 0x1021, 0x4C52, 0x1032, "LRES1032PF Quad-port 1Gb Ethernet Network Adapter(0x4C52-0x1032)"}, +{0x8848, 0x1021, 0x4C52, 0x1039, "LRES1039PT Quad-port 1Gb Ethernet Network Adapter(0x4C52-0x1039)"}, {0x8848, 0x1060, 0xFFFF, 0xFFFF, "Ethernet Controller N10 Series for 1GbE or 10GbE (8-port)(0x1060)"}, {0x8848, 0x1080, 0xFFFF, 0xFFFF, "Ethernet Controller N10 Series Virtual Function(0x1080)"}, {0x8848, 0x1081, 0xFFFF, 0xFFFF, "Ethernet Controller N400 Series Virtual Function(0x1081)"}, {0x8848, 0x1083, 0xFFFF, 0xFFFF, "Ethernet Controller N400 Series Virtual Function(0x1083)"}, {0x8848, 0x8308, 0xFFFF, 0xFFFF, "Ethernet Controller N500 Series for 1GbE (Quad-port, Copper RJ45)(0x8308)"}, +{0x8848, 0x8308, 0x4C52, 0x1048, "LRES1048PT Quad-port 1Gb Ethernet Network Adapter(0x4C52-0x1048)"}, {0x8848, 0x8309, 0xFFFF, 0xFFFF, "Ethernet Controller N500 Series Virtual Function(0x8309)"}, {0x8848, 0x8318, 0xFFFF, 0xFFFF, "Ethernet Controller N500 Series for 1GbE (Dual-port, Copper RJ45)(0x8318)"}, +{0x8848, 0x8318, 0x4C52, 0x1049, "LRES1049PT Dual-port 1Gb Ethernet Network Adapter(0x4C52-0x1049)"}, }; /* pci_vid_8848[] */ -pci_id_t pci_vid_8866[] = { +static pci_id_t const pci_vid_8866[] = { {0x8866, 0xFFFF, 0xFFFF, 0xFFFF, "T-Square Design Inc.(0x8866)"}, }; /* pci_vid_8866[] */ -pci_id_t pci_vid_8888[] = { +static pci_id_t const pci_vid_8888[] = { {0x8888, 0xFFFF, 0xFFFF, 0xFFFF, "Silicon Magic(0x8888)"}, }; /* pci_vid_8888[] */ -pci_id_t pci_vid_8912[] = { +static pci_id_t const pci_vid_8912[] = { {0x8912, 0xFFFF, 0xFFFF, 0xFFFF, "TRX(0x8912)"}, }; /* pci_vid_8912[] */ -pci_id_t pci_vid_8C4A[] = { +static pci_id_t const pci_vid_8C4A[] = { {0x8C4A, 0xFFFF, 0xFFFF, 0xFFFF, "Winbond(0x8C4A)"}, {0x8C4A, 0x1980, 0xFFFF, 0xFFFF, "W89C940 misprogrammed [ne2k](0x1980)"}, }; /* pci_vid_8C4A[] */ -pci_id_t pci_vid_8E0E[] = { +static pci_id_t const pci_vid_8E0E[] = { {0x8E0E, 0xFFFF, 0xFFFF, 0xFFFF, "Computone Corporation(0x8E0E)"}, }; /* pci_vid_8E0E[] */ -pci_id_t pci_vid_8E2E[] = { +static pci_id_t const pci_vid_8E2E[] = { {0x8E2E, 0xFFFF, 0xFFFF, 0xFFFF, "KTI(0x8E2E)"}, {0x8E2E, 0x3000, 0xFFFF, 0xFFFF, "ET32P2(0x3000)"}, }; /* pci_vid_8E2E[] */ -pci_id_t pci_vid_9004[] = { +static pci_id_t const pci_vid_9004[] = { {0x9004, 0xFFFF, 0xFFFF, 0xFFFF, "Adaptec(0x9004)"}, {0x9004, 0x0078, 0xFFFF, 0xFFFF, "AHA-2940U_CN(0x0078)"}, {0x9004, 0x1078, 0xFFFF, 0xFFFF, "AIC-7810(0x1078)"}, @@ -42421,7 +42935,7 @@ pci_id_t pci_vid_9004[] = { {0x9004, 0xEC78, 0xFFFF, 0xFFFF, "AHA-4944W/UW(0xEC78)"}, }; /* pci_vid_9004[] */ -pci_id_t pci_vid_9005[] = { +static pci_id_t const pci_vid_9005[] = { {0x9005, 0xFFFF, 0xFFFF, 0xFFFF, "Adaptec(0x9005)"}, {0x9005, 0x0010, 0xFFFF, 0xFFFF, "AHA-2940U2/U2W(0x0010)"}, {0x9005, 0x0010, 0x9005, 0x2180, "AHA-2940U2 SCSI Controller(0x9005-0x2180)"}, @@ -42685,6 +43199,7 @@ pci_id_t pci_vid_9005[] = { {0x9005, 0x028F, 0x1D49, 0x0220, "ThinkSystem 4350-8i SAS/SATA 12Gb HBA(0x1D49-0x0220)"}, {0x9005, 0x028F, 0x1D49, 0x0221, "ThinkSystem 4350-16i SAS/SATA 12Gb HBA(0x1D49-0x0221)"}, {0x9005, 0x028F, 0x1D49, 0x0520, "ThinkSystem RAID 5350-8i PCIe 12Gb Adapter(0x1D49-0x0520)"}, +{0x9005, 0x028F, 0x1D49, 0x0522, "ThinkSystem RAID 5350-8i PCIe 12Gb Internal Adapter(0x1D49-0x0522)"}, {0x9005, 0x028F, 0x1D49, 0x0620, "ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Adapter(0x1D49-0x0620)"}, {0x9005, 0x028F, 0x1D49, 0x0621, "ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Internal Adapter(0x1D49-0x0621)"}, {0x9005, 0x028F, 0x1D49, 0x0622, "ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Adapter(0x1D49-0x0622)"}, @@ -42791,7 +43306,13 @@ pci_id_t pci_vid_9005[] = { {0x9005, 0x801F, 0x1734, 0x1011, "PRIMERGY RX300 onboard SCSI(0x1734-0x1011)"}, {0x9005, 0x8080, 0xFFFF, 0xFFFF, "ASC-29320A U320 w/HostRAID(0x8080)"}, {0x9005, 0x8081, 0xFFFF, 0xFFFF, "PMC-Sierra PM8001 SAS HBA [Series 6H](0x8081)"}, +{0x9005, 0x8081, 0x9005, 0x0400, "Adaptec SAS HBA 6405H(0x9005-0x0400)"}, +{0x9005, 0x8081, 0x9005, 0x0800, "Adaptec SAS HBA 6805H(0x9005-0x0800)"}, {0x9005, 0x8088, 0xFFFF, 0xFFFF, "PMC-Sierra PM8018 SAS HBA [Series 7H](0x8088)"}, +{0x9005, 0x8088, 0x9005, 0x0008, "Adaptec SAS HBA 7085H(0x9005-0x0008)"}, +{0x9005, 0x8088, 0x9005, 0x0016, "Adaptec SAS HBA 70165H(0x9005-0x0016)"}, +{0x9005, 0x8088, 0x9005, 0x0800, "Adaptec SAS HBA 7805H(0x9005-0x0800)"}, +{0x9005, 0x8088, 0x9005, 0x1600, "Adaptec SAS HBA 71605H(0x9005-0x1600)"}, {0x9005, 0x8089, 0xFFFF, 0xFFFF, "PMC-Sierra PM8019 SAS encryption HBA [Series 7He](0x8089)"}, {0x9005, 0x808F, 0xFFFF, 0xFFFF, "AIC-7901 U320 w/HostRAID(0x808F)"}, {0x9005, 0x808F, 0x1028, 0x0168, "Precision Workstation 670 Mainboard(0x1028-0x0168)"}, @@ -42810,37 +43331,37 @@ pci_id_t pci_vid_9005[] = { {0x9005, 0x809F, 0xFFFF, 0xFFFF, "AIC-7902 U320 w/HostRAID(0x809F)"}, }; /* pci_vid_9005[] */ -pci_id_t pci_vid_907F[] = { +static pci_id_t const pci_vid_907F[] = { {0x907F, 0xFFFF, 0xFFFF, 0xFFFF, "Atronics(0x907F)"}, {0x907F, 0x2015, 0xFFFF, 0xFFFF, "IDE-2015PL(0x2015)"}, }; /* pci_vid_907F[] */ -pci_id_t pci_vid_919A[] = { +static pci_id_t const pci_vid_919A[] = { {0x919A, 0xFFFF, 0xFFFF, 0xFFFF, "Gigapixel Corp(0x919A)"}, }; /* pci_vid_919A[] */ -pci_id_t pci_vid_9412[] = { +static pci_id_t const pci_vid_9412[] = { {0x9412, 0xFFFF, 0xFFFF, 0xFFFF, "Holtek(0x9412)"}, {0x9412, 0x6565, 0xFFFF, 0xFFFF, "6565(0x6565)"}, }; /* pci_vid_9412[] */ -pci_id_t pci_vid_9413[] = { +static pci_id_t const pci_vid_9413[] = { {0x9413, 0xFFFF, 0xFFFF, 0xFFFF, "Softlogic Co., Ltd.(0x9413)"}, {0x9413, 0x6010, 0xFFFF, 0xFFFF, "SOLO6010 MPEG-4 Video encoder/decoder(0x6010)"}, {0x9413, 0x6110, 0xFFFF, 0xFFFF, "SOLO6110 H.264 Video encoder/decoder(0x6110)"}, }; /* pci_vid_9413[] */ -pci_id_t pci_vid_9618[] = { +static pci_id_t const pci_vid_9618[] = { {0x9618, 0xFFFF, 0xFFFF, 0xFFFF, "JusonTech Corporation(0x9618)"}, {0x9618, 0x0001, 0xFFFF, 0xFFFF, "JusonTech Gigabit Ethernet Controller(0x0001)"}, }; /* pci_vid_9618[] */ -pci_id_t pci_vid_9699[] = { +static pci_id_t const pci_vid_9699[] = { {0x9699, 0xFFFF, 0xFFFF, 0xFFFF, "Omni Media Technology Inc(0x9699)"}, {0x9699, 0x6565, 0xFFFF, 0xFFFF, "6565(0x6565)"}, }; /* pci_vid_9699[] */ -pci_id_t pci_vid_9710[] = { +static pci_id_t const pci_vid_9710[] = { {0x9710, 0xFFFF, 0xFFFF, 0xFFFF, "MosChip Semiconductor Technology Ltd.(0x9710)"}, {0x9710, 0x9250, 0xFFFF, 0xFFFF, "PCI-to-PCI bridge [MCS9250](0x9250)"}, {0x9710, 0x9805, 0xFFFF, 0xFFFF, "PCI 1 port parallel adapter(0x9805)"}, @@ -42866,22 +43387,22 @@ pci_id_t pci_vid_9710[] = { {0x9710, 0x9990, 0xFFFF, 0xFFFF, "MCS9990 PCIe to 4-Port USB 2.0 Host Controller(0x9990)"}, }; /* pci_vid_9710[] */ -pci_id_t pci_vid_9850[] = { +static pci_id_t const pci_vid_9850[] = { {0x9850, 0xFFFF, 0xFFFF, 0xFFFF, "3Com (wrong ID)(0x9850)"}, }; /* pci_vid_9850[] */ -pci_id_t pci_vid_9902[] = { +static pci_id_t const pci_vid_9902[] = { {0x9902, 0xFFFF, 0xFFFF, 0xFFFF, "Stargen Inc.(0x9902)"}, {0x9902, 0x0001, 0xFFFF, 0xFFFF, "SG2010 PCI over Starfabric Bridge(0x0001)"}, {0x9902, 0x0002, 0xFFFF, 0xFFFF, "SG2010 PCI to Starfabric Gateway(0x0002)"}, {0x9902, 0x0003, 0xFFFF, 0xFFFF, "SG1010 Starfabric Switch and PCI Bridge(0x0003)"}, }; /* pci_vid_9902[] */ -pci_id_t pci_vid_9A11[] = { +static pci_id_t const pci_vid_9A11[] = { {0x9A11, 0xFFFF, 0xFFFF, 0xFFFF, "Tiger Lake-H Gaussian & Neural Accelerator(0x9A11)"}, }; /* pci_vid_9A11[] */ -pci_id_t pci_vid_9D32[] = { +static pci_id_t const pci_vid_9D32[] = { {0x9D32, 0xFFFF, 0xFFFF, 0xFFFF, "Beijing Starblaze Technology Co. Ltd.(0x9D32)"}, {0x9D32, 0x0000, 0xFFFF, 0xFFFF, "STAR1000 PCIe NVMe SSD Controller(0x0000)"}, {0x9D32, 0x1000, 0xFFFF, 0xFFFF, "STAR1000 PCIe NVMe SSD Controller(0x1000)"}, @@ -42902,140 +43423,140 @@ pci_id_t pci_vid_9D32[] = { {0x9D32, 0xFC22, 0xFFFF, 0xFFFF, "Asgard AN3+ NVMe SSD(0xFC22)"}, }; /* pci_vid_9D32[] */ -pci_id_t pci_vid_A000[] = { +static pci_id_t const pci_vid_A000[] = { {0xA000, 0xFFFF, 0xFFFF, 0xFFFF, "Asix Electronics Corporation (Wrong ID)(0xA000)"}, }; /* pci_vid_A000[] */ -pci_id_t pci_vid_A0A0[] = { +static pci_id_t const pci_vid_A0A0[] = { {0xA0A0, 0xFFFF, 0xFFFF, 0xFFFF, "AOPEN Inc.(0xA0A0)"}, }; /* pci_vid_A0A0[] */ -pci_id_t pci_vid_A0F1[] = { +static pci_id_t const pci_vid_A0F1[] = { {0xA0F1, 0xFFFF, 0xFFFF, 0xFFFF, "UNISYS Corporation(0xA0F1)"}, }; /* pci_vid_A0F1[] */ -pci_id_t pci_vid_A200[] = { +static pci_id_t const pci_vid_A200[] = { {0xA200, 0xFFFF, 0xFFFF, 0xFFFF, "NEC Corporation(0xA200)"}, }; /* pci_vid_A200[] */ -pci_id_t pci_vid_A259[] = { +static pci_id_t const pci_vid_A259[] = { {0xA259, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett Packard(0xA259)"}, }; /* pci_vid_A259[] */ -pci_id_t pci_vid_A25B[] = { +static pci_id_t const pci_vid_A25B[] = { {0xA25B, 0xFFFF, 0xFFFF, 0xFFFF, "Hewlett Packard GmbH PL24-MKT(0xA25B)"}, }; /* pci_vid_A25B[] */ -pci_id_t pci_vid_A304[] = { +static pci_id_t const pci_vid_A304[] = { {0xA304, 0xFFFF, 0xFFFF, 0xFFFF, "Sony(0xA304)"}, }; /* pci_vid_A304[] */ -pci_id_t pci_vid_A727[] = { +static pci_id_t const pci_vid_A727[] = { {0xA727, 0xFFFF, 0xFFFF, 0xFFFF, "3Com Corporation(0xA727)"}, {0xA727, 0x0013, 0xFFFF, 0xFFFF, "3CRPAG175 Wireless PC Card(0x0013)"}, {0xA727, 0x6803, 0xFFFF, 0xFFFF, "3CRDAG675B Wireless 11a/b/g Adapter(0x6803)"}, }; /* pci_vid_A727[] */ -pci_id_t pci_vid_AA00[] = { +static pci_id_t const pci_vid_AA00[] = { {0xAA00, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA00)"}, }; /* pci_vid_AA00[] */ -pci_id_t pci_vid_AA01[] = { +static pci_id_t const pci_vid_AA01[] = { {0xAA01, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA01)"}, }; /* pci_vid_AA01[] */ -pci_id_t pci_vid_AA02[] = { +static pci_id_t const pci_vid_AA02[] = { {0xAA02, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA02)"}, }; /* pci_vid_AA02[] */ -pci_id_t pci_vid_AA03[] = { +static pci_id_t const pci_vid_AA03[] = { {0xAA03, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA03)"}, }; /* pci_vid_AA03[] */ -pci_id_t pci_vid_AA04[] = { +static pci_id_t const pci_vid_AA04[] = { {0xAA04, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA04)"}, }; /* pci_vid_AA04[] */ -pci_id_t pci_vid_AA05[] = { +static pci_id_t const pci_vid_AA05[] = { {0xAA05, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA05)"}, }; /* pci_vid_AA05[] */ -pci_id_t pci_vid_AA06[] = { +static pci_id_t const pci_vid_AA06[] = { {0xAA06, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA06)"}, }; /* pci_vid_AA06[] */ -pci_id_t pci_vid_AA07[] = { +static pci_id_t const pci_vid_AA07[] = { {0xAA07, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA07)"}, }; /* pci_vid_AA07[] */ -pci_id_t pci_vid_AA08[] = { +static pci_id_t const pci_vid_AA08[] = { {0xAA08, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA08)"}, }; /* pci_vid_AA08[] */ -pci_id_t pci_vid_AA09[] = { +static pci_id_t const pci_vid_AA09[] = { {0xAA09, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA09)"}, }; /* pci_vid_AA09[] */ -pci_id_t pci_vid_AA0A[] = { +static pci_id_t const pci_vid_AA0A[] = { {0xAA0A, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0A)"}, }; /* pci_vid_AA0A[] */ -pci_id_t pci_vid_AA0B[] = { +static pci_id_t const pci_vid_AA0B[] = { {0xAA0B, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0B)"}, }; /* pci_vid_AA0B[] */ -pci_id_t pci_vid_AA0C[] = { +static pci_id_t const pci_vid_AA0C[] = { {0xAA0C, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0C)"}, }; /* pci_vid_AA0C[] */ -pci_id_t pci_vid_AA0D[] = { +static pci_id_t const pci_vid_AA0D[] = { {0xAA0D, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0D)"}, }; /* pci_vid_AA0D[] */ -pci_id_t pci_vid_AA0E[] = { +static pci_id_t const pci_vid_AA0E[] = { {0xAA0E, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0E)"}, }; /* pci_vid_AA0E[] */ -pci_id_t pci_vid_AA0F[] = { +static pci_id_t const pci_vid_AA0F[] = { {0xAA0F, 0xFFFF, 0xFFFF, 0xFFFF, "iTuner(0xAA0F)"}, }; /* pci_vid_AA0F[] */ -pci_id_t pci_vid_AA42[] = { +static pci_id_t const pci_vid_AA42[] = { {0xAA42, 0xFFFF, 0xFFFF, 0xFFFF, "Scitex Digital Video(0xAA42)"}, }; /* pci_vid_AA42[] */ -pci_id_t pci_vid_AA55[] = { +static pci_id_t const pci_vid_AA55[] = { {0xAA55, 0xFFFF, 0xFFFF, 0xFFFF, "Ncomputing X300 PCI-Engine(0xAA55)"}, }; /* pci_vid_AA55[] */ -pci_id_t pci_vid_AAAA[] = { +static pci_id_t const pci_vid_AAAA[] = { {0xAAAA, 0xFFFF, 0xFFFF, 0xFFFF, "Adnaco Technology Inc.(0xAAAA)"}, {0xAAAA, 0x0001, 0xFFFF, 0xFFFF, "H1 PCIe over fiber optic host controller(0x0001)"}, {0xAAAA, 0x0002, 0xFFFF, 0xFFFF, "R1BP1 PCIe over fiber optic expansion chassis(0x0002)"}, }; /* pci_vid_AAAA[] */ -pci_id_t pci_vid_ABCD[] = { +static pci_id_t const pci_vid_ABCD[] = { {0xABCD, 0xFFFF, 0xFFFF, 0xFFFF, "Vadatech Inc.(0xABCD)"}, }; /* pci_vid_ABCD[] */ -pci_id_t pci_vid_AC1E[] = { +static pci_id_t const pci_vid_AC1E[] = { {0xAC1E, 0xFFFF, 0xFFFF, 0xFFFF, "Digital Receiver Technology Inc(0xAC1E)"}, }; /* pci_vid_AC1E[] */ -pci_id_t pci_vid_AC3D[] = { +static pci_id_t const pci_vid_AC3D[] = { {0xAC3D, 0xFFFF, 0xFFFF, 0xFFFF, "Actuality Systems(0xAC3D)"}, }; /* pci_vid_AC3D[] */ -pci_id_t pci_vid_AD00[] = { +static pci_id_t const pci_vid_AD00[] = { {0xAD00, 0xFFFF, 0xFFFF, 0xFFFF, "Alta Data Technologies LLC(0xAD00)"}, }; /* pci_vid_AD00[] */ -pci_id_t pci_vid_AECB[] = { +static pci_id_t const pci_vid_AECB[] = { {0xAECB, 0xFFFF, 0xFFFF, 0xFFFF, "Adrienne Electronics Corporation(0xAECB)"}, {0xAECB, 0x6250, 0xFFFF, 0xFFFF, "VITC/LTC Timecode Reader card [PCI-VLTC/RDR](0x6250)"}, }; /* pci_vid_AECB[] */ -pci_id_t pci_vid_AFFE[] = { +static pci_id_t const pci_vid_AFFE[] = { {0xAFFE, 0xFFFF, 0xFFFF, 0xFFFF, "Sirrix AG security technologies(0xAFFE)"}, {0xAFFE, 0x01E1, 0xFFFF, 0xFFFF, "PCI1E1 1-port ISDN E1 interface(0x01E1)"}, {0xAFFE, 0x02E1, 0xFFFF, 0xFFFF, "PCI2E1 2-port ISDN E1 interface(0x02E1)"}, @@ -43043,27 +43564,27 @@ pci_id_t pci_vid_AFFE[] = { {0xAFFE, 0xDEAD, 0xFFFF, 0xFFFF, "Sirrix.PCI4S0 4-port ISDN S0 interface(0xDEAD)"}, }; /* pci_vid_AFFE[] */ -pci_id_t pci_vid_B100[] = { +static pci_id_t const pci_vid_B100[] = { {0xB100, 0xFFFF, 0xFFFF, 0xFFFF, "OpenVox Communication Co. Ltd.(0xB100)"}, }; /* pci_vid_B100[] */ -pci_id_t pci_vid_B10B[] = { +static pci_id_t const pci_vid_B10B[] = { {0xB10B, 0xFFFF, 0xFFFF, 0xFFFF, "Uakron PCI Project(0xB10B)"}, }; /* pci_vid_B10B[] */ -pci_id_t pci_vid_B1B3[] = { +static pci_id_t const pci_vid_B1B3[] = { {0xB1B3, 0xFFFF, 0xFFFF, 0xFFFF, "Shiva Europe Limited(0xB1B3)"}, }; /* pci_vid_B1B3[] */ -pci_id_t pci_vid_B1D9[] = { +static pci_id_t const pci_vid_B1D9[] = { {0xB1D9, 0xFFFF, 0xFFFF, 0xFFFF, "ATCOM Technology co., LTD.(0xB1D9)"}, }; /* pci_vid_B1D9[] */ -pci_id_t pci_vid_BD11[] = { +static pci_id_t const pci_vid_BD11[] = { {0xBD11, 0xFFFF, 0xFFFF, 0xFFFF, "Pinnacle Systems, Inc. (Wrong ID)(0xBD11)"}, }; /* pci_vid_BD11[] */ -pci_id_t pci_vid_BDBD[] = { +static pci_id_t const pci_vid_BDBD[] = { {0xBDBD, 0xFFFF, 0xFFFF, 0xFFFF, "Blackmagic Design(0xBDBD)"}, {0xBDBD, 0xA106, 0xFFFF, 0xFFFF, "Multibridge Extreme(0xA106)"}, {0xBDBD, 0xA117, 0xFFFF, 0xFFFF, "Intensity Pro(0xA117)"}, @@ -43103,57 +43624,59 @@ pci_id_t pci_vid_BDBD[] = { {0xBDBD, 0xA1FF, 0xFFFF, 0xFFFF, "eGPU RX580(0xA1FF)"}, }; /* pci_vid_BDBD[] */ -pci_id_t pci_vid_C001[] = { +static pci_id_t const pci_vid_C001[] = { {0xC001, 0xFFFF, 0xFFFF, 0xFFFF, "TSI Telsys(0xC001)"}, }; /* pci_vid_C001[] */ -pci_id_t pci_vid_C0A9[] = { +static pci_id_t const pci_vid_C0A9[] = { {0xC0A9, 0xFFFF, 0xFFFF, 0xFFFF, "Micron/Crucial Technology(0xC0A9)"}, {0xC0A9, 0x2263, 0xFFFF, 0xFFFF, "P1 NVMe PCIe SSD[Frampton](0x2263)"}, {0xC0A9, 0x5403, 0xFFFF, 0xFFFF, "P1 NVMe PCIe SSD[Frampton2](0x5403)"}, {0xC0A9, 0x5407, 0xFFFF, 0xFFFF, "P5 Plus NVMe PCIe SSD(0x5407)"}, {0xC0A9, 0x540A, 0xFFFF, 0xFFFF, "P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less)(0x540A)"}, {0xC0A9, 0x5412, 0xFFFF, 0xFFFF, "P5 NVMe PCIe SSD[SlashP5](0x5412)"}, +{0xC0A9, 0x5415, 0xFFFF, 0xFFFF, "T500 NVMe PCIe SSD(0x5415)"}, +{0xC0A9, 0x5419, 0xFFFF, 0xFFFF, "T700 NVMe PCIe SSD(0x5419)"}, }; /* pci_vid_C0A9[] */ -pci_id_t pci_vid_C0DE[] = { +static pci_id_t const pci_vid_C0DE[] = { {0xC0DE, 0xFFFF, 0xFFFF, 0xFFFF, "Motorola(0xC0DE)"}, }; /* pci_vid_C0DE[] */ -pci_id_t pci_vid_C0FE[] = { +static pci_id_t const pci_vid_C0FE[] = { {0xC0FE, 0xFFFF, 0xFFFF, 0xFFFF, "Motion Engineering, Inc.(0xC0FE)"}, }; /* pci_vid_C0FE[] */ -pci_id_t pci_vid_CA01[] = { +static pci_id_t const pci_vid_CA01[] = { {0xCA01, 0xFFFF, 0xFFFF, 0xFFFF, "I-TEK OptoElectronics Co., LTD.(0xCA01)"}, {0xCA01, 0x0212, 0xFFFF, 0xFFFF, "Vulcan-CL CameraLink Frame Grabber(0x0212)"}, }; /* pci_vid_CA01[] */ -pci_id_t pci_vid_CA02[] = { +static pci_id_t const pci_vid_CA02[] = { {0xCA02, 0xFFFF, 0xFFFF, 0xFFFF, "I-TEK OptoElectronics Co., LTD.(0xCA02)"}, {0xCA02, 0x0213, 0xFFFF, 0xFFFF, "Vulcan-CXP Frame Grabber(0x0213)"}, }; /* pci_vid_CA02[] */ -pci_id_t pci_vid_CA3B[] = { +static pci_id_t const pci_vid_CA3B[] = { {0xCA3B, 0xFFFF, 0xFFFF, 0xFFFF, "Cambrionix Ltd.(0xCA3B)"}, }; /* pci_vid_CA3B[] */ -pci_id_t pci_vid_CA50[] = { +static pci_id_t const pci_vid_CA50[] = { {0xCA50, 0xFFFF, 0xFFFF, 0xFFFF, "Varian Australia Pty Ltd(0xCA50)"}, }; /* pci_vid_CA50[] */ -pci_id_t pci_vid_CACE[] = { +static pci_id_t const pci_vid_CACE[] = { {0xCACE, 0xFFFF, 0xFFFF, 0xFFFF, "CACE Technologies, Inc.(0xCACE)"}, {0xCACE, 0x0001, 0xFFFF, 0xFFFF, "TurboCap Port A(0x0001)"}, {0xCACE, 0x0002, 0xFFFF, 0xFFFF, "TurboCap Port B(0x0002)"}, {0xCACE, 0x0023, 0xFFFF, 0xFFFF, "AirPcap N(0x0023)"}, }; /* pci_vid_CACE[] */ -pci_id_t pci_vid_CAED[] = { +static pci_id_t const pci_vid_CAED[] = { {0xCAED, 0xFFFF, 0xFFFF, 0xFFFF, "Canny Edge(0xCAED)"}, }; /* pci_vid_CAED[] */ -pci_id_t pci_vid_CAFE[] = { +static pci_id_t const pci_vid_CAFE[] = { {0xCAFE, 0xFFFF, 0xFFFF, 0xFFFF, "Chrysalis-ITS(0xCAFE)"}, {0xCAFE, 0x0003, 0xFFFF, 0xFFFF, "Luna K3 Hardware Security Module(0x0003)"}, {0xCAFE, 0x0006, 0xFFFF, 0xFFFF, "Luna PCI-e 3000 Hardware Security Module(0x0006)"}, @@ -43161,47 +43684,47 @@ pci_id_t pci_vid_CAFE[] = { {0xCAFE, 0x0008, 0xFFFF, 0xFFFF, "Luna K7 Hardware Security Module(0x0008)"}, }; /* pci_vid_CAFE[] */ -pci_id_t pci_vid_CC53[] = { +static pci_id_t const pci_vid_CC53[] = { {0xCC53, 0xFFFF, 0xFFFF, 0xFFFF, "ScaleFlux Inc.(0xCC53)"}, {0xCC53, 0x0001, 0xFFFF, 0xFFFF, "CSS 1000(0x0001)"}, {0xCC53, 0x0010, 0xFFFF, 0xFFFF, "CSD 3310(0x0010)"}, }; /* pci_vid_CC53[] */ -pci_id_t pci_vid_CCCC[] = { +static pci_id_t const pci_vid_CCCC[] = { {0xCCCC, 0xFFFF, 0xFFFF, 0xFFFF, "Catapult Communications(0xCCCC)"}, }; /* pci_vid_CCCC[] */ -pci_id_t pci_vid_CCEC[] = { +static pci_id_t const pci_vid_CCEC[] = { {0xCCEC, 0xFFFF, 0xFFFF, 0xFFFF, "Curtiss-Wright Controls Embedded Computing(0xCCEC)"}, }; /* pci_vid_CCEC[] */ -pci_id_t pci_vid_CDDD[] = { +static pci_id_t const pci_vid_CDDD[] = { {0xCDDD, 0xFFFF, 0xFFFF, 0xFFFF, "Tyzx, Inc.(0xCDDD)"}, {0xCDDD, 0x0101, 0xFFFF, 0xFFFF, "DeepSea 1 High Speed Stereo Vision Frame Grabber(0x0101)"}, {0xCDDD, 0x0200, 0xFFFF, 0xFFFF, "DeepSea 2 High Speed Stereo Vision Frame Grabber(0x0200)"}, }; /* pci_vid_CDDD[] */ -pci_id_t pci_vid_CDFA[] = { +static pci_id_t const pci_vid_CDFA[] = { {0xCDFA, 0xFFFF, 0xFFFF, 0xFFFF, "NextSilicon Ltd(0xCDFA)"}, {0xCDFA, 0x0007, 0xFFFF, 0xFFFF, "Maverick(0x0007)"}, }; /* pci_vid_CDFA[] */ -pci_id_t pci_vid_CEBA[] = { +static pci_id_t const pci_vid_CEBA[] = { {0xCEBA, 0xFFFF, 0xFFFF, 0xFFFF, "KEBA AG(0xCEBA)"}, }; /* pci_vid_CEBA[] */ -pci_id_t pci_vid_CF86[] = { +static pci_id_t const pci_vid_CF86[] = { {0xCF86, 0xFFFF, 0xFFFF, 0xFFFF, "Spectrum-4TOR(0xCF86)"}, {0xCF86, 0x0276, 0xFFFF, 0xFFFF, "Spectrum-4TOR in Flash Recovery Mode(0x0276)"}, }; /* pci_vid_CF86[] */ -pci_id_t pci_vid_D063[] = { +static pci_id_t const pci_vid_D063[] = { {0xD063, 0xFFFF, 0xFFFF, 0xFFFF, "SolidRun(0xD063)"}, {0xD063, 0x1000, 0xFFFF, 0xFFFF, "SolidNET DPU(0x1000)"}, {0xD063, 0x1500, 0xFFFF, 0xFFFF, "Emulated NVMe(0x1500)"}, }; /* pci_vid_D063[] */ -pci_id_t pci_vid_D161[] = { +static pci_id_t const pci_vid_D161[] = { {0xD161, 0xFFFF, 0xFFFF, 0xFFFF, "Digium, Inc.(0xD161)"}, {0xD161, 0x0120, 0xFFFF, 0xFFFF, "Wildcard TE120P single-span T1/E1/J1 card(0x0120)"}, {0xD161, 0x0205, 0xFFFF, 0xFFFF, "Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V(0x0205)"}, @@ -43239,14 +43762,14 @@ pci_id_t pci_vid_D161[] = { {0xD161, 0xB410, 0xFFFF, 0xFFFF, "Wildcard B410 quad-BRI card(0xB410)"}, }; /* pci_vid_D161[] */ -pci_id_t pci_vid_D209[] = { +static pci_id_t const pci_vid_D209[] = { {0xD209, 0xFFFF, 0xFFFF, 0xFFFF, "Ultimarc(0xD209)"}, {0xD209, 0x1500, 0xFFFF, 0xFFFF, "PAC Drive(0x1500)"}, {0xD209, 0x15A2, 0xFFFF, 0xFFFF, "SpinTrak(0x15A2)"}, {0xD209, 0x1601, 0xFFFF, 0xFFFF, "AimTrak(0x1601)"}, }; /* pci_vid_D209[] */ -pci_id_t pci_vid_D20C[] = { +static pci_id_t const pci_vid_D20C[] = { {0xD20C, 0xFFFF, 0xFFFF, 0xFFFF, "Chengdu BeiZhongWangXin Technology Co., Ltd.(0xD20C)"}, {0xD20C, 0x5010, 0xFFFF, 0xFFFF, "NE5000 Ethernet Controller(0x5010)"}, {0xD20C, 0x5011, 0xFFFF, 0xFFFF, "NE5000 Ethernet Controller(0x5011)"}, @@ -43269,20 +43792,20 @@ pci_id_t pci_vid_D20C[] = { {0xD20C, 0x6011, 0xD20C, 0xEA2D, "N6S Series 2-port 100GbE Network Adapter for OCP(0xD20C-0xEA2D)"}, }; /* pci_vid_D20C[] */ -pci_id_t pci_vid_D4D4[] = { +static pci_id_t const pci_vid_D4D4[] = { {0xD4D4, 0xFFFF, 0xFFFF, 0xFFFF, "Dy4 Systems Inc(0xD4D4)"}, {0xD4D4, 0x0601, 0xFFFF, 0xFFFF, "PCI Mezzanine Card(0x0601)"}, }; /* pci_vid_D4D4[] */ -pci_id_t pci_vid_D531[] = { +static pci_id_t const pci_vid_D531[] = { {0xD531, 0xFFFF, 0xFFFF, 0xFFFF, "I+ME ACTIA GmbH(0xD531)"}, }; /* pci_vid_D531[] */ -pci_id_t pci_vid_D84D[] = { +static pci_id_t const pci_vid_D84D[] = { {0xD84D, 0xFFFF, 0xFFFF, 0xFFFF, "Exsys(0xD84D)"}, }; /* pci_vid_D84D[] */ -pci_id_t pci_vid_DADA[] = { +static pci_id_t const pci_vid_DADA[] = { {0xDADA, 0xFFFF, 0xFFFF, 0xFFFF, "Datapath Limited(0xDADA)"}, {0xDADA, 0x0133, 0xFFFF, 0xFFFF, "VisionRGB-X2(0x0133)"}, {0xDADA, 0x0139, 0xFFFF, 0xFFFF, "VisionRGB-E1(0x0139)"}, @@ -43301,15 +43824,15 @@ pci_id_t pci_vid_DADA[] = { {0xDADA, 0x1154, 0xFFFF, 0xFFFF, "VisionSDI2(0x1154)"}, }; /* pci_vid_DADA[] */ -pci_id_t pci_vid_DB10[] = { +static pci_id_t const pci_vid_DB10[] = { {0xDB10, 0xFFFF, 0xFFFF, 0xFFFF, "Diablo Technologies(0xDB10)"}, }; /* pci_vid_DB10[] */ -pci_id_t pci_vid_DC93[] = { +static pci_id_t const pci_vid_DC93[] = { {0xDC93, 0xFFFF, 0xFFFF, 0xFFFF, "Dawicontrol GmbH(0xDC93)"}, }; /* pci_vid_DC93[] */ -pci_id_t pci_vid_DCBA[] = { +static pci_id_t const pci_vid_DCBA[] = { {0xDCBA, 0xFFFF, 0xFFFF, 0xFFFF, "Dynamic Engineering(0xDCBA)"}, {0xDCBA, 0x0046, 0xFFFF, 0xFFFF, "PCIe Altera Cyclone IV(0x0046)"}, {0xDCBA, 0x0047, 0xFFFF, 0xFFFF, "VPX-RCB(0x0047)"}, @@ -43320,7 +43843,7 @@ pci_id_t pci_vid_DCBA[] = { {0xDCBA, 0x0066, 0xFFFF, 0xFFFF, "PMC-OctalUART-232(0x0066)"}, }; /* pci_vid_DCBA[] */ -pci_id_t pci_vid_DD01[] = { +static pci_id_t const pci_vid_DD01[] = { {0xDD01, 0xFFFF, 0xFFFF, 0xFFFF, "Digital Devices GmbH(0xDD01)"}, {0xDD01, 0x0003, 0xFFFF, 0xFFFF, "Octopus DVB Adapter(0x0003)"}, {0xDD01, 0x0003, 0xDD01, 0x0001, "Octopus DVB adapter(0xDD01-0x0001)"}, @@ -43342,29 +43865,29 @@ pci_id_t pci_vid_DD01[] = { {0xDD01, 0x0201, 0xDD01, 0x0001, "Resi DVB-C Modulator(0xDD01-0x0001)"}, }; /* pci_vid_DD01[] */ -pci_id_t pci_vid_DEAD[] = { +static pci_id_t const pci_vid_DEAD[] = { {0xDEAD, 0xFFFF, 0xFFFF, 0xFFFF, "Indigita Corporation(0xDEAD)"}, }; /* pci_vid_DEAD[] */ -pci_id_t pci_vid_DEAF[] = { +static pci_id_t const pci_vid_DEAF[] = { {0xDEAF, 0xFFFF, 0xFFFF, 0xFFFF, "Middle Digital Inc.(0xDEAF)"}, {0xDEAF, 0x9050, 0xFFFF, 0xFFFF, "PC Weasel Virtual VGA(0x9050)"}, {0xDEAF, 0x9051, 0xFFFF, 0xFFFF, "PC Weasel Serial Port(0x9051)"}, {0xDEAF, 0x9052, 0xFFFF, 0xFFFF, "PC Weasel Watchdog Timer(0x9052)"}, }; /* pci_vid_DEAF[] */ -pci_id_t pci_vid_DEDA[] = { +static pci_id_t const pci_vid_DEDA[] = { {0xDEDA, 0xFFFF, 0xFFFF, 0xFFFF, "XIMEA(0xDEDA)"}, {0xDEDA, 0x4001, 0xFFFF, 0xFFFF, "CB or MX camera(0x4001)"}, {0xDEDA, 0x4021, 0xFFFF, 0xFFFF, "MT camera(0x4021)"}, }; /* pci_vid_DEDA[] */ -pci_id_t pci_vid_E000[] = { +static pci_id_t const pci_vid_E000[] = { {0xE000, 0xFFFF, 0xFFFF, 0xFFFF, "Winbond(0xE000)"}, {0xE000, 0xE000, 0xFFFF, 0xFFFF, "W89C940(0xE000)"}, }; /* pci_vid_E000[] */ -pci_id_t pci_vid_E159[] = { +static pci_id_t const pci_vid_E159[] = { {0xE159, 0xFFFF, 0xFFFF, 0xFFFF, "Tiger Jet Network Inc. / ICP DAS(0xE159)"}, {0xE159, 0x0001, 0xFFFF, 0xFFFF, "Tiger3XX Modem/ISDN interface(0x0001)"}, {0xE159, 0x0001, 0x0059, 0x0001, "128k ISDN-S/T Adapter(0x0059-0x0001)"}, @@ -43376,11 +43899,11 @@ pci_id_t pci_vid_E159[] = { {0xE159, 0x0002, 0xFFFF, 0xFFFF, "Tiger100APC ISDN chipset(0x0002)"}, }; /* pci_vid_E159[] */ -pci_id_t pci_vid_E1C5[] = { +static pci_id_t const pci_vid_E1C5[] = { {0xE1C5, 0xFFFF, 0xFFFF, 0xFFFF, "Elcus(0xE1C5)"}, }; /* pci_vid_E1C5[] */ -pci_id_t pci_vid_E4BF[] = { +static pci_id_t const pci_vid_E4BF[] = { {0xE4BF, 0xFFFF, 0xFFFF, 0xFFFF, "EKF Elektronik GmbH(0xE4BF)"}, {0xE4BF, 0x0CCD, 0xFFFF, 0xFFFF, "CCD-CALYPSO(0x0CCD)"}, {0xE4BF, 0x0CD1, 0xFFFF, 0xFFFF, "CD1-OPERA(0x0CD1)"}, @@ -43393,15 +43916,15 @@ pci_id_t pci_vid_E4BF[] = { {0xE4BF, 0xCC4D, 0xFFFF, 0xFFFF, "CCM-BOOGIE(0xCC4D)"}, }; /* pci_vid_E4BF[] */ -pci_id_t pci_vid_E4E4[] = { +static pci_id_t const pci_vid_E4E4[] = { {0xE4E4, 0xFFFF, 0xFFFF, 0xFFFF, "Xorcom(0xE4E4)"}, }; /* pci_vid_E4E4[] */ -pci_id_t pci_vid_E55E[] = { +static pci_id_t const pci_vid_E55E[] = { {0xE55E, 0xFFFF, 0xFFFF, 0xFFFF, "Essence Technology, Inc.(0xE55E)"}, }; /* pci_vid_E55E[] */ -pci_id_t pci_vid_EA01[] = { +static pci_id_t const pci_vid_EA01[] = { {0xEA01, 0xFFFF, 0xFFFF, 0xFFFF, "Eagle Technology(0xEA01)"}, {0xEA01, 0x000A, 0xFFFF, 0xFFFF, "PCI-773 Temperature Card(0x000A)"}, {0xEA01, 0x0032, 0xFFFF, 0xFFFF, "PCI-730 & PC104P-30 Card(0x0032)"}, @@ -43413,22 +43936,22 @@ pci_id_t pci_vid_EA01[] = { {0xEA01, 0x0800, 0xFFFF, 0xFFFF, "PCI-800 Digital I/O Card(0x0800)"}, }; /* pci_vid_EA01[] */ -pci_id_t pci_vid_EA50[] = { +static pci_id_t const pci_vid_EA50[] = { {0xEA50, 0xFFFF, 0xFFFF, 0xFFFF, "Emerson Automation Solutions(0xEA50)"}, }; /* pci_vid_EA50[] */ -pci_id_t pci_vid_EA60[] = { +static pci_id_t const pci_vid_EA60[] = { {0xEA60, 0xFFFF, 0xFFFF, 0xFFFF, "RME(0xEA60)"}, {0xEA60, 0x9896, 0xFFFF, 0xFFFF, "Digi32(0x9896)"}, {0xEA60, 0x9897, 0xFFFF, 0xFFFF, "Digi32 Pro(0x9897)"}, {0xEA60, 0x9898, 0xFFFF, 0xFFFF, "Digi32/8(0x9898)"}, }; /* pci_vid_EA60[] */ -pci_id_t pci_vid_EABB[] = { +static pci_id_t const pci_vid_EABB[] = { {0xEABB, 0xFFFF, 0xFFFF, 0xFFFF, "Aashima Technology B.V.(0xEABB)"}, }; /* pci_vid_EABB[] */ -pci_id_t pci_vid_EACE[] = { +static pci_id_t const pci_vid_EACE[] = { {0xEACE, 0xFFFF, 0xFFFF, 0xFFFF, "Endace Measurement Systems, Ltd(0xEACE)"}, {0xEACE, 0x3100, 0xFFFF, 0xFFFF, "DAG 3.10 OC-3/OC-12(0x3100)"}, {0xEACE, 0x3200, 0xFFFF, 0xFFFF, "DAG 3.2x OC-3/OC-12(0x3200)"}, @@ -43489,16 +44012,16 @@ pci_id_t pci_vid_EACE[] = { {0xEACE, 0xEACE, 0xFFFF, 0xFFFF, "vDAG virtual device(0xEACE)"}, }; /* pci_vid_EACE[] */ -pci_id_t pci_vid_EC80[] = { +static pci_id_t const pci_vid_EC80[] = { {0xEC80, 0xFFFF, 0xFFFF, 0xFFFF, "Belkin Corporation(0xEC80)"}, {0xEC80, 0xEC00, 0xFFFF, 0xFFFF, "F5D6000(0xEC00)"}, }; /* pci_vid_EC80[] */ -pci_id_t pci_vid_ECC0[] = { +static pci_id_t const pci_vid_ECC0[] = { {0xECC0, 0xFFFF, 0xFFFF, 0xFFFF, "Echo Digital Audio Corporation(0xECC0)"}, }; /* pci_vid_ECC0[] */ -pci_id_t pci_vid_EDD8[] = { +static pci_id_t const pci_vid_EDD8[] = { {0xEDD8, 0xFFFF, 0xFFFF, 0xFFFF, "ARK Logic Inc(0xEDD8)"}, {0xEDD8, 0xA091, 0xFFFF, 0xFFFF, "1000PV [Stingray](0xA091)"}, {0xEDD8, 0xA099, 0xFFFF, 0xFFFF, "2000PV [Stingray](0xA099)"}, @@ -43506,24 +44029,24 @@ pci_id_t pci_vid_EDD8[] = { {0xEDD8, 0xA0A9, 0xFFFF, 0xFFFF, "2000MI(0xA0A9)"}, }; /* pci_vid_EDD8[] */ -pci_id_t pci_vid_F043[] = { +static pci_id_t const pci_vid_F043[] = { {0xF043, 0xFFFF, 0xFFFF, 0xFFFF, "ASUSTeK Computer Inc. (Wrong ID)(0xF043)"}, }; /* pci_vid_F043[] */ -pci_id_t pci_vid_F05B[] = { +static pci_id_t const pci_vid_F05B[] = { {0xF05B, 0xFFFF, 0xFFFF, 0xFFFF, "Foxconn International, Inc. (Wrong ID)(0xF05B)"}, }; /* pci_vid_F05B[] */ -pci_id_t pci_vid_F111[] = { +static pci_id_t const pci_vid_F111[] = { {0xF111, 0xFFFF, 0xFFFF, 0xFFFF, "Framework Computer Inc.(0xF111)"}, }; /* pci_vid_F111[] */ -pci_id_t pci_vid_F15E[] = { +static pci_id_t const pci_vid_F15E[] = { {0xF15E, 0xFFFF, 0xFFFF, 0xFFFF, "SiFive, Inc.(0xF15E)"}, {0xF15E, 0x0000, 0xFFFF, 0xFFFF, "FU740-C000 RISC-V SoC PCI Express x8 to AXI4 Bridge(0x0000)"}, }; /* pci_vid_F15E[] */ -pci_id_t pci_vid_F1D0[] = { +static pci_id_t const pci_vid_F1D0[] = { {0xF1D0, 0xFFFF, 0xFFFF, 0xFFFF, "AJA Video(0xF1D0)"}, {0xF1D0, 0xC0FE, 0xFFFF, 0xFFFF, "Xena HS/HD-R(0xC0FE)"}, {0xF1D0, 0xC0FF, 0xFFFF, 0xFFFF, "Kona/Xena 2(0xC0FF)"}, @@ -43567,66 +44090,66 @@ pci_id_t pci_vid_F1D0[] = { {0xF1D0, 0xFACD, 0xFFFF, 0xFFFF, "Xena HD-MM(0xFACD)"}, }; /* pci_vid_F1D0[] */ -pci_id_t pci_vid_F5F5[] = { +static pci_id_t const pci_vid_F5F5[] = { {0xF5F5, 0xFFFF, 0xFFFF, 0xFFFF, "F5 Networks, Inc.(0xF5F5)"}, }; /* pci_vid_F5F5[] */ -pci_id_t pci_vid_F849[] = { +static pci_id_t const pci_vid_F849[] = { {0xF849, 0xFFFF, 0xFFFF, 0xFFFF, "ASRock Incorporation (Wrong ID)(0xF849)"}, }; /* pci_vid_F849[] */ -pci_id_t pci_vid_FA57[] = { +static pci_id_t const pci_vid_FA57[] = { {0xFA57, 0xFFFF, 0xFFFF, 0xFFFF, "Interagon AS(0xFA57)"}, {0xFA57, 0x0001, 0xFFFF, 0xFFFF, "PMC [Pattern Matching Chip](0x0001)"}, }; /* pci_vid_FA57[] */ -pci_id_t pci_vid_FAB7[] = { +static pci_id_t const pci_vid_FAB7[] = { {0xFAB7, 0xFFFF, 0xFFFF, 0xFFFF, "Fabric7 Systems, Inc.(0xFAB7)"}, }; /* pci_vid_FAB7[] */ -pci_id_t pci_vid_FE19[] = { +static pci_id_t const pci_vid_FE19[] = { {0xFE19, 0xFFFF, 0xFFFF, 0xFFFF, "TenaFe, Inc.(0xFE19)"}, {0xFE19, 0x0001, 0xFFFF, 0xFFFF, "TC2200/TC2201 NVMe Controller (DRAM-less)(0x0001)"}, }; /* pci_vid_FE19[] */ -pci_id_t pci_vid_FEBD[] = { +static pci_id_t const pci_vid_FEBD[] = { {0xFEBD, 0xFFFF, 0xFFFF, 0xFFFF, "Ultraview Corp.(0xFEBD)"}, }; /* pci_vid_FEBD[] */ -pci_id_t pci_vid_FEDA[] = { +static pci_id_t const pci_vid_FEDA[] = { {0xFEDA, 0xFFFF, 0xFFFF, 0xFFFF, "Broadcom Inc(0xFEDA)"}, {0xFEDA, 0xA0FA, 0xFFFF, 0xFFFF, "BCM4210 iLine10 HomePNA 2.0(0xA0FA)"}, {0xFEDA, 0xA10E, 0xFFFF, 0xFFFF, "BCM4230 iLine10 HomePNA 2.0(0xA10E)"}, }; /* pci_vid_FEDA[] */ -pci_id_t pci_vid_FEDE[] = { +static pci_id_t const pci_vid_FEDE[] = { {0xFEDE, 0xFFFF, 0xFFFF, 0xFFFF, "Fedetec Inc.(0xFEDE)"}, {0xFEDE, 0x0003, 0xFFFF, 0xFFFF, "TABIC PCI v3(0x0003)"}, }; /* pci_vid_FEDE[] */ -pci_id_t pci_vid_FFE1[] = { +static pci_id_t const pci_vid_FFE1[] = { {0xFFE1, 0xFFFF, 0xFFFF, 0xFFFF, "Suzhou XiongLi Technology Inc.(0xFFE1)"}, {0xFFE1, 0xD200, 0xFFFF, 0xFFFF, "XL82101/82102 PCI Express Gigabit Ethernet Controller(0xD200)"}, }; /* pci_vid_FFE1[] */ -pci_id_t pci_vid_FFFD[] = { +static pci_id_t const pci_vid_FFFD[] = { {0xFFFD, 0xFFFF, 0xFFFF, 0xFFFF, "XenSource, Inc.(0xFFFD)"}, {0xFFFD, 0x0101, 0xFFFF, 0xFFFF, "PCI Event Channel Controller(0x0101)"}, }; /* pci_vid_FFFD[] */ -pci_id_t pci_vid_FFFE[] = { +static pci_id_t const pci_vid_FFFE[] = { {0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, "VMWare Inc (temporary ID)(0xFFFE)"}, {0xFFFE, 0x0710, 0xFFFF, 0xFFFF, "Virtual SVGA(0x0710)"}, }; /* pci_vid_FFFE[] */ -pci_id_t pci_vid_FFFF[] = { +static pci_id_t const pci_vid_FFFF[] = { {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, "Illegal Vendor ID(0xFFFF)"}, }; /* pci_vid_FFFF[] */ -pci_vid_index_t pci_vid_index[] = { +static pci_vid_index_t const pci_vid_index[] = { {0x0001, 1, pci_vid_0001 }, {0x0010, 2, pci_vid_0010 }, -{0x0014, 19, pci_vid_0014 }, +{0x0014, 21, pci_vid_0014 }, {0x0018, 2, pci_vid_0018 }, {0x001C, 4, pci_vid_001C }, {0x003D, 1, pci_vid_003D }, @@ -43642,7 +44165,7 @@ pci_vid_index_t pci_vid_index[] = { {0x01DE, 4, pci_vid_01DE }, {0x0200, 1, pci_vid_0200 }, {0x021B, 2, pci_vid_021B }, -{0x025E, 12, pci_vid_025E }, +{0x025E, 22, pci_vid_025E }, {0x0270, 1, pci_vid_0270 }, {0x0291, 1, pci_vid_0291 }, {0x02AC, 2, pci_vid_02AC }, @@ -43665,14 +44188,14 @@ pci_vid_index_t pci_vid_index[] = { {0x0A89, 1, pci_vid_0A89 }, {0x0B0B, 15, pci_vid_0B0B }, {0x0BAE, 1, pci_vid_0BAE }, -{0x0CCD, 1, pci_vid_0CCD }, +{0x0CCD, 7, pci_vid_0CCD }, {0x0E11, 109, pci_vid_0E11 }, {0x0E55, 1, pci_vid_0E55 }, {0x0EAC, 2, pci_vid_0EAC }, {0x0F62, 1, pci_vid_0F62 }, -{0x1000, 785, pci_vid_1000 }, +{0x1000, 797, pci_vid_1000 }, {0x1001, 10, pci_vid_1001 }, -{0x1002, 3236, pci_vid_1002 }, +{0x1002, 3246, pci_vid_1002 }, {0x1003, 2, pci_vid_1003 }, {0x1004, 34, pci_vid_1004 }, {0x1005, 8, pci_vid_1005 }, @@ -43693,7 +44216,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1016, 1, pci_vid_1016 }, {0x1017, 2, pci_vid_1017 }, {0x1018, 1, pci_vid_1018 }, -{0x1019, 1, pci_vid_1019 }, +{0x1019, 2, pci_vid_1019 }, {0x101A, 17, pci_vid_101A }, {0x101B, 2, pci_vid_101B }, {0x101C, 12, pci_vid_101C }, @@ -43702,7 +44225,7 @@ pci_vid_index_t pci_vid_index[] = { {0x101F, 1, pci_vid_101F }, {0x1020, 1, pci_vid_1020 }, {0x1021, 1, pci_vid_1021 }, -{0x1022, 684, pci_vid_1022 }, +{0x1022, 688, pci_vid_1022 }, {0x1023, 56, pci_vid_1023 }, {0x1024, 4, pci_vid_1024 }, {0x1025, 59, pci_vid_1025 }, @@ -43726,13 +44249,13 @@ pci_vid_index_t pci_vid_index[] = { {0x1039, 187, pci_vid_1039 }, {0x103A, 1, pci_vid_103A }, {0x103B, 1, pci_vid_103B }, -{0x103C, 146, pci_vid_103C }, +{0x103C, 147, pci_vid_103C }, {0x103E, 1, pci_vid_103E }, {0x103F, 1, pci_vid_103F }, {0x1040, 1, pci_vid_1040 }, {0x1041, 1, pci_vid_1041 }, {0x1042, 6, pci_vid_1042 }, -{0x1043, 9, pci_vid_1043 }, +{0x1043, 7, pci_vid_1043 }, {0x1044, 44, pci_vid_1044 }, {0x1045, 24, pci_vid_1045 }, {0x1046, 1, pci_vid_1046 }, @@ -43742,7 +44265,7 @@ pci_vid_index_t pci_vid_index[] = { {0x104A, 30, pci_vid_104A }, {0x104B, 4, pci_vid_104B }, {0x104C, 290, pci_vid_104C }, -{0x104D, 46, pci_vid_104D }, +{0x104D, 47, pci_vid_104D }, {0x104E, 7, pci_vid_104E }, {0x104F, 1, pci_vid_104F }, {0x1050, 20, pci_vid_1050 }, @@ -43756,7 +44279,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1058, 1, pci_vid_1058 }, {0x1059, 3, pci_vid_1059 }, {0x105A, 81, pci_vid_105A }, -{0x105B, 2, pci_vid_105B }, +{0x105B, 3, pci_vid_105B }, {0x105C, 1, pci_vid_105C }, {0x105D, 37, pci_vid_105D }, {0x105E, 1, pci_vid_105E }, @@ -43884,7 +44407,7 @@ pci_vid_index_t pci_vid_index[] = { {0x10DB, 1, pci_vid_10DB }, {0x10DC, 6, pci_vid_10DC }, {0x10DD, 3, pci_vid_10DD }, -{0x10DE, 3243, pci_vid_10DE }, +{0x10DE, 3259, pci_vid_10DE }, {0x10DF, 127, pci_vid_10DF }, {0x10E0, 7, pci_vid_10E0 }, {0x10E1, 5, pci_vid_10E1 }, @@ -43898,7 +44421,7 @@ pci_vid_index_t pci_vid_index[] = { {0x10E9, 1, pci_vid_10E9 }, {0x10EA, 10, pci_vid_10EA }, {0x10EB, 3, pci_vid_10EB }, -{0x10EC, 240, pci_vid_10EC }, +{0x10EC, 243, pci_vid_10EC }, {0x10ED, 2, pci_vid_10ED }, {0x10EE, 47, pci_vid_10EE }, {0x10EF, 2, pci_vid_10EF }, @@ -43921,14 +44444,14 @@ pci_vid_index_t pci_vid_index[] = { {0x1100, 1, pci_vid_1100 }, {0x1101, 9, pci_vid_1101 }, {0x1102, 148, pci_vid_1102 }, -{0x1103, 41, pci_vid_1103 }, +{0x1103, 53, pci_vid_1103 }, {0x1104, 1, pci_vid_1104 }, {0x1105, 15, pci_vid_1105 }, -{0x1106, 577, pci_vid_1106 }, +{0x1106, 579, pci_vid_1106 }, {0x1107, 2, pci_vid_1107 }, {0x1108, 9, pci_vid_1108 }, {0x1109, 2, pci_vid_1109 }, -{0x110A, 32, pci_vid_110A }, +{0x110A, 33, pci_vid_110A }, {0x110B, 3, pci_vid_110B }, {0x110C, 1, pci_vid_110C }, {0x110D, 1, pci_vid_110D }, @@ -44038,7 +44561,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1176, 1, pci_vid_1176 }, {0x1177, 1, pci_vid_1177 }, {0x1178, 2, pci_vid_1178 }, -{0x1179, 40, pci_vid_1179 }, +{0x1179, 41, pci_vid_1179 }, {0x117A, 1, pci_vid_117A }, {0x117B, 1, pci_vid_117B }, {0x117C, 66, pci_vid_117C }, @@ -44318,7 +44841,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1294, 1, pci_vid_1294 }, {0x1295, 3, pci_vid_1295 }, {0x1296, 1, pci_vid_1296 }, -{0x1297, 1, pci_vid_1297 }, +{0x1297, 2, pci_vid_1297 }, {0x1298, 1, pci_vid_1298 }, {0x1299, 1, pci_vid_1299 }, {0x129A, 8, pci_vid_129A }, @@ -44377,13 +44900,13 @@ pci_vid_index_t pci_vid_index[] = { {0x12CF, 1, pci_vid_12CF }, {0x12D0, 1, pci_vid_12D0 }, {0x12D1, 1, pci_vid_12D1 }, -{0x12D2, 28, pci_vid_12D2 }, +{0x12D2, 29, pci_vid_12D2 }, {0x12D3, 1, pci_vid_12D3 }, {0x12D4, 2, pci_vid_12D4 }, {0x12D5, 3, pci_vid_12D5 }, {0x12D6, 1, pci_vid_12D6 }, {0x12D7, 1, pci_vid_12D7 }, -{0x12D8, 24, pci_vid_12D8 }, +{0x12D8, 27, pci_vid_12D8 }, {0x12D9, 7, pci_vid_12D9 }, {0x12DA, 1, pci_vid_12DA }, {0x12DB, 1, pci_vid_12DB }, @@ -44482,7 +45005,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1341, 1, pci_vid_1341 }, {0x1342, 1, pci_vid_1342 }, {0x1343, 1, pci_vid_1343 }, -{0x1344, 88, pci_vid_1344 }, +{0x1344, 89, pci_vid_1344 }, {0x1345, 1, pci_vid_1345 }, {0x1347, 1, pci_vid_1347 }, {0x1349, 1, pci_vid_1349 }, @@ -44853,7 +45376,7 @@ pci_vid_index_t pci_vid_index[] = { {0x14C0, 2, pci_vid_14C0 }, {0x14C1, 7, pci_vid_14C1 }, {0x14C2, 1, pci_vid_14C2 }, -{0x14C3, 13, pci_vid_14C3 }, +{0x14C3, 15, pci_vid_14C3 }, {0x14C4, 1, pci_vid_14C4 }, {0x14C5, 1, pci_vid_14C5 }, {0x14C6, 1, pci_vid_14C6 }, @@ -44885,7 +45408,7 @@ pci_vid_index_t pci_vid_index[] = { {0x14E1, 1, pci_vid_14E1 }, {0x14E2, 1, pci_vid_14E2 }, {0x14E3, 1, pci_vid_14E3 }, -{0x14E4, 853, pci_vid_14E4 }, +{0x14E4, 858, pci_vid_14E4 }, {0x14E5, 1, pci_vid_14E5 }, {0x14E6, 1, pci_vid_14E6 }, {0x14E7, 1, pci_vid_14E7 }, @@ -45001,7 +45524,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1555, 1, pci_vid_1555 }, {0x1556, 11, pci_vid_1556 }, {0x1557, 1, pci_vid_1557 }, -{0x1558, 1, pci_vid_1558 }, +{0x1558, 2, pci_vid_1558 }, {0x1559, 1, pci_vid_1559 }, {0x155A, 1, pci_vid_155A }, {0x155B, 1, pci_vid_155B }, @@ -45089,16 +45612,16 @@ pci_vid_index_t pci_vid_index[] = { {0x15B0, 1, pci_vid_15B0 }, {0x15B1, 1, pci_vid_15B1 }, {0x15B2, 1, pci_vid_15B2 }, -{0x15B3, 252, pci_vid_15B3 }, +{0x15B3, 255, pci_vid_15B3 }, {0x15B4, 1, pci_vid_15B4 }, {0x15B5, 1, pci_vid_15B5 }, {0x15B6, 17, pci_vid_15B6 }, -{0x15B7, 30, pci_vid_15B7 }, +{0x15B7, 31, pci_vid_15B7 }, {0x15B8, 11, pci_vid_15B8 }, {0x15B9, 1, pci_vid_15B9 }, {0x15BA, 1, pci_vid_15BA }, {0x15BB, 1, pci_vid_15BB }, -{0x15BC, 15, pci_vid_15BC }, +{0x15BC, 19, pci_vid_15BC }, {0x15BD, 1, pci_vid_15BD }, {0x15BE, 1, pci_vid_15BE }, {0x15BF, 1, pci_vid_15BF }, @@ -45126,7 +45649,7 @@ pci_vid_index_t pci_vid_index[] = { {0x15D6, 1, pci_vid_15D6 }, {0x15D7, 1, pci_vid_15D7 }, {0x15D8, 1, pci_vid_15D8 }, -{0x15D9, 5, pci_vid_15D9 }, +{0x15D9, 4, pci_vid_15D9 }, {0x15DA, 1, pci_vid_15DA }, {0x15DB, 1, pci_vid_15DB }, {0x15DC, 2, pci_vid_15DC }, @@ -45224,7 +45747,7 @@ pci_vid_index_t pci_vid_index[] = { {0x16CA, 2, pci_vid_16CA }, {0x16CD, 12, pci_vid_16CD }, {0x16CE, 1, pci_vid_16CE }, -{0x16D5, 99, pci_vid_16D5 }, +{0x16D5, 102, pci_vid_16D5 }, {0x16DA, 2, pci_vid_16DA }, {0x16DF, 1, pci_vid_16DF }, {0x16E2, 61, pci_vid_16E2 }, @@ -45243,12 +45766,12 @@ pci_vid_index_t pci_vid_index[] = { {0x1719, 2, pci_vid_1719 }, {0x1725, 2, pci_vid_1725 }, {0x172A, 2, pci_vid_172A }, -{0x1734, 1, pci_vid_1734 }, +{0x1734, 2, pci_vid_1734 }, {0x1735, 1, pci_vid_1735 }, {0x1737, 9, pci_vid_1737 }, {0x173B, 7, pci_vid_173B }, {0x1743, 2, pci_vid_1743 }, -{0x1745, 3, pci_vid_1745 }, +{0x1745, 4, pci_vid_1745 }, {0x1749, 1, pci_vid_1749 }, {0x174B, 1, pci_vid_174B }, {0x174D, 1, pci_vid_174D }, @@ -45267,7 +45790,7 @@ pci_vid_index_t pci_vid_index[] = { {0x179A, 2, pci_vid_179A }, {0x179C, 9, pci_vid_179C }, {0x17A0, 7, pci_vid_17A0 }, -{0x17AA, 7, pci_vid_17AA }, +{0x17AA, 8, pci_vid_17AA }, {0x17AB, 1, pci_vid_17AB }, {0x17AF, 1, pci_vid_17AF }, {0x17B3, 2, pci_vid_17B3 }, @@ -45275,7 +45798,7 @@ pci_vid_index_t pci_vid_index[] = { {0x17C0, 1, pci_vid_17C0 }, {0x17C2, 1, pci_vid_17C2 }, {0x17C3, 1, pci_vid_17C3 }, -{0x17CB, 22, pci_vid_17CB }, +{0x17CB, 32, pci_vid_17CB }, {0x17CC, 2, pci_vid_17CC }, {0x17CD, 1, pci_vid_17CD }, {0x17CF, 1, pci_vid_17CF }, @@ -45301,7 +45824,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1809, 1, pci_vid_1809 }, {0x180C, 1, pci_vid_180C }, {0x1813, 5, pci_vid_1813 }, -{0x1814, 83, pci_vid_1814 }, +{0x1814, 84, pci_vid_1814 }, {0x1815, 1, pci_vid_1815 }, {0x1820, 1, pci_vid_1820 }, {0x1822, 2, pci_vid_1822 }, @@ -45311,7 +45834,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1830, 5, pci_vid_1830 }, {0x183B, 5, pci_vid_183B }, {0x1846, 1, pci_vid_1846 }, -{0x1849, 1, pci_vid_1849 }, +{0x1849, 2, pci_vid_1849 }, {0x184A, 2, pci_vid_184A }, {0x1850, 2, pci_vid_1850 }, {0x1851, 1, pci_vid_1851 }, @@ -45379,7 +45902,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1958, 1, pci_vid_1958 }, {0x1959, 15, pci_vid_1959 }, {0x1966, 8, pci_vid_1966 }, -{0x1969, 26, pci_vid_1969 }, +{0x1969, 28, pci_vid_1969 }, {0x196A, 4, pci_vid_196A }, {0x196D, 1, pci_vid_196D }, {0x196E, 1, pci_vid_196E }, @@ -45389,7 +45912,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1977, 1, pci_vid_1977 }, {0x197B, 32, pci_vid_197B }, {0x1982, 3, pci_vid_1982 }, -{0x1987, 11, pci_vid_1987 }, +{0x1987, 12, pci_vid_1987 }, {0x1989, 3, pci_vid_1989 }, {0x198A, 1, pci_vid_198A }, {0x1993, 1, pci_vid_1993 }, @@ -45476,14 +45999,14 @@ pci_vid_index_t pci_vid_index[] = { {0x1AF4, 23, pci_vid_1AF4 }, {0x1AF5, 1, pci_vid_1AF5 }, {0x1AFA, 1, pci_vid_1AFA }, -{0x1B00, 1, pci_vid_1B00 }, +{0x1B00, 4, pci_vid_1B00 }, {0x1B03, 3, pci_vid_1B03 }, {0x1B08, 1, pci_vid_1B08 }, -{0x1B0A, 1, pci_vid_1B0A }, +{0x1B0A, 2, pci_vid_1B0A }, {0x1B13, 1, pci_vid_1B13 }, {0x1B1A, 2, pci_vid_1B1A }, {0x1B1C, 1, pci_vid_1B1C }, -{0x1B21, 27, pci_vid_1B21 }, +{0x1B21, 39, pci_vid_1B21 }, {0x1B26, 11, pci_vid_1B26 }, {0x1B2C, 1, pci_vid_1B2C }, {0x1B36, 23, pci_vid_1B36 }, @@ -45523,12 +46046,12 @@ pci_vid_index_t pci_vid_index[] = { {0x1BF5, 2, pci_vid_1BF5 }, {0x1BFC, 1, pci_vid_1BFC }, {0x1BFD, 1, pci_vid_1BFD }, -{0x1C00, 2, pci_vid_1C00 }, +{0x1C00, 7, pci_vid_1C00 }, {0x1C09, 13, pci_vid_1C09 }, {0x1C1C, 2, pci_vid_1C1C }, -{0x1C1F, 11, pci_vid_1C1F }, +{0x1C1F, 12, pci_vid_1C1F }, {0x1C28, 2, pci_vid_1C28 }, -{0x1C2C, 37, pci_vid_1C2C }, +{0x1C2C, 40, pci_vid_1C2C }, {0x1C32, 1, pci_vid_1C32 }, {0x1C33, 1, pci_vid_1C33 }, {0x1C36, 3, pci_vid_1C36 }, @@ -45546,7 +46069,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1CB1, 1, pci_vid_1CB1 }, {0x1CB5, 2, pci_vid_1CB5 }, {0x1CB8, 1, pci_vid_1CB8 }, -{0x1CC1, 21, pci_vid_1CC1 }, +{0x1CC1, 23, pci_vid_1CC1 }, {0x1CC4, 48, pci_vid_1CC4 }, {0x1CC5, 3, pci_vid_1CC5 }, {0x1CC7, 3, pci_vid_1CC7 }, @@ -45561,8 +46084,8 @@ pci_vid_index_t pci_vid_index[] = { {0x1CFD, 2, pci_vid_1CFD }, {0x1D00, 1, pci_vid_1D00 }, {0x1D05, 1, pci_vid_1D05 }, -{0x1D0F, 11, pci_vid_1D0F }, -{0x1D17, 76, pci_vid_1D17 }, +{0x1D0F, 12, pci_vid_1D0F }, +{0x1D17, 92, pci_vid_1D17 }, {0x1D18, 2, pci_vid_1D18 }, {0x1D1C, 5, pci_vid_1D1C }, {0x1D1D, 3, pci_vid_1D1D }, @@ -45572,15 +46095,15 @@ pci_vid_index_t pci_vid_index[] = { {0x1D37, 5, pci_vid_1D37 }, {0x1D40, 4, pci_vid_1D40 }, {0x1D44, 2, pci_vid_1D44 }, -{0x1D49, 2, pci_vid_1D49 }, +{0x1D49, 1, pci_vid_1D49 }, {0x1D4C, 1, pci_vid_1D4C }, {0x1D5C, 1, pci_vid_1D5C }, {0x1D61, 1, pci_vid_1D61 }, {0x1D62, 1, pci_vid_1D62 }, {0x1D65, 2, pci_vid_1D65 }, {0x1D69, 3, pci_vid_1D69 }, -{0x1D6A, 16, pci_vid_1D6A }, -{0x1D6C, 39, pci_vid_1D6C }, +{0x1D6A, 21, pci_vid_1D6A }, +{0x1D6C, 42, pci_vid_1D6C }, {0x1D72, 1, pci_vid_1D72 }, {0x1D78, 62, pci_vid_1D78 }, {0x1D79, 6, pci_vid_1D79 }, @@ -45593,17 +46116,17 @@ pci_vid_index_t pci_vid_index[] = { {0x1D93, 1, pci_vid_1D93 }, {0x1D94, 30, pci_vid_1D94 }, {0x1D95, 3, pci_vid_1D95 }, -{0x1D97, 9, pci_vid_1D97 }, +{0x1D97, 11, pci_vid_1D97 }, {0x1D9B, 3, pci_vid_1D9B }, {0x1DA1, 1, pci_vid_1DA1 }, {0x1DA2, 3, pci_vid_1DA2 }, {0x1DA3, 6, pci_vid_1DA3 }, {0x1DA8, 3, pci_vid_1DA8 }, -{0x1DAD, 1, pci_vid_1DAD }, +{0x1DAD, 2, pci_vid_1DAD }, {0x1DB2, 1, pci_vid_1DB2 }, {0x1DB7, 23, pci_vid_1DB7 }, {0x1DBB, 1, pci_vid_1DBB }, -{0x1DBE, 22, pci_vid_1DBE }, +{0x1DBE, 24, pci_vid_1DBE }, {0x1DBF, 2, pci_vid_1DBF }, {0x1DC2, 1, pci_vid_1DC2 }, {0x1DC5, 3, pci_vid_1DC5 }, @@ -45615,9 +46138,10 @@ pci_vid_index_t pci_vid_index[] = { {0x1DDD, 1, pci_vid_1DDD }, {0x1DE0, 6, pci_vid_1DE0 }, {0x1DE1, 5, pci_vid_1DE1 }, +{0x1DE4, 2, pci_vid_1DE4 }, {0x1DE5, 4, pci_vid_1DE5 }, {0x1DED, 8, pci_vid_1DED }, -{0x1DEE, 3, pci_vid_1DEE }, +{0x1DEE, 4, pci_vid_1DEE }, {0x1DEF, 27, pci_vid_1DEF }, {0x1DF3, 29, pci_vid_1DF3 }, {0x1DF5, 2, pci_vid_1DF5 }, @@ -45625,7 +46149,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1DF8, 9, pci_vid_1DF8 }, {0x1DFC, 2, pci_vid_1DFC }, {0x1E0D, 1, pci_vid_1E0D }, -{0x1E0F, 92, pci_vid_1E0F }, +{0x1E0F, 101, pci_vid_1E0F }, {0x1E17, 1, pci_vid_1E17 }, {0x1E18, 1, pci_vid_1E18 }, {0x1E24, 8, pci_vid_1E24 }, @@ -45633,13 +46157,13 @@ pci_vid_index_t pci_vid_index[] = { {0x1E36, 16, pci_vid_1E36 }, {0x1E38, 2, pci_vid_1E38 }, {0x1E39, 1, pci_vid_1E39 }, -{0x1E3A, 1, pci_vid_1E3A }, -{0x1E3B, 78, pci_vid_1E3B }, +{0x1E3A, 2, pci_vid_1E3A }, +{0x1E3B, 94, pci_vid_1E3B }, {0x1E3D, 1, pci_vid_1E3D }, {0x1E43, 4, pci_vid_1E43 }, {0x1E44, 1, pci_vid_1E44 }, {0x1E49, 9, pci_vid_1E49 }, -{0x1E4B, 8, pci_vid_1E4B }, +{0x1E4B, 9, pci_vid_1E4B }, {0x1E4C, 3, pci_vid_1E4C }, {0x1E50, 1, pci_vid_1E50 }, {0x1E52, 4, pci_vid_1E52 }, @@ -45660,7 +46184,7 @@ pci_vid_index_t pci_vid_index[] = { {0x1E89, 3, pci_vid_1E89 }, {0x1E93, 1, pci_vid_1E93 }, {0x1E94, 1, pci_vid_1E94 }, -{0x1E95, 7, pci_vid_1E95 }, +{0x1E95, 13, pci_vid_1E95 }, {0x1E96, 1, pci_vid_1E96 }, {0x1E9F, 1, pci_vid_1E9F }, {0x1EA0, 4, pci_vid_1EA0 }, @@ -45670,15 +46194,17 @@ pci_vid_index_t pci_vid_index[] = { {0x1EAE, 1, pci_vid_1EAE }, {0x1EB1, 2, pci_vid_1EB1 }, {0x1EB4, 2, pci_vid_1EB4 }, +{0x1EB9, 2, pci_vid_1EB9 }, {0x1EBD, 2, pci_vid_1EBD }, {0x1EC6, 22, pci_vid_1EC6 }, {0x1EC8, 13, pci_vid_1EC8 }, {0x1EC9, 1, pci_vid_1EC9 }, {0x1ECA, 2, pci_vid_1ECA }, +{0x1ED0, 1, pci_vid_1ED0 }, {0x1ED2, 2, pci_vid_1ED2 }, {0x1ED3, 1, pci_vid_1ED3 }, {0x1ED5, 26, pci_vid_1ED5 }, -{0x1ED8, 2, pci_vid_1ED8 }, +{0x1ED8, 3, pci_vid_1ED8 }, {0x1ED9, 1, pci_vid_1ED9 }, {0x1EE1, 6, pci_vid_1EE1 }, {0x1EE4, 2, pci_vid_1EE4 }, @@ -45699,14 +46225,14 @@ pci_vid_index_t pci_vid_index[] = { {0x1F3F, 38, pci_vid_1F3F }, {0x1F40, 9, pci_vid_1F40 }, {0x1F44, 1, pci_vid_1F44 }, -{0x1F47, 1, pci_vid_1F47 }, +{0x1F47, 3, pci_vid_1F47 }, {0x1F4B, 1, pci_vid_1F4B }, {0x1F52, 1, pci_vid_1F52 }, {0x1F56, 1, pci_vid_1F56 }, {0x1F60, 3, pci_vid_1F60 }, {0x1F67, 10, pci_vid_1F67 }, {0x1FAA, 3, pci_vid_1FAA }, -{0x1FAB, 5, pci_vid_1FAB }, +{0x1FAB, 7, pci_vid_1FAB }, {0x1FB0, 25, pci_vid_1FB0 }, {0x1FC0, 3, pci_vid_1FC0 }, {0x1FC1, 3, pci_vid_1FC1 }, @@ -45718,10 +46244,13 @@ pci_vid_index_t pci_vid_index[] = { {0x1FE0, 4, pci_vid_1FE0 }, {0x1FE4, 6, pci_vid_1FE4 }, {0x1FF4, 4, pci_vid_1FF4 }, +{0x1FF8, 3, pci_vid_1FF8 }, +{0x1FF9, 1, pci_vid_1FF9 }, {0x2000, 2, pci_vid_2000 }, {0x2001, 1, pci_vid_2001 }, {0x2003, 2, pci_vid_2003 }, {0x2004, 1, pci_vid_2004 }, +{0x2046, 1, pci_vid_2046 }, {0x2048, 1, pci_vid_2048 }, {0x20F4, 1, pci_vid_20F4 }, {0x2116, 1, pci_vid_2116 }, @@ -45730,8 +46259,10 @@ pci_vid_index_t pci_vid_index[] = { {0x22B8, 2, pci_vid_22B8 }, {0x22DB, 1, pci_vid_22DB }, {0x2304, 1, pci_vid_2304 }, +{0x2321, 1, pci_vid_2321 }, {0x2348, 2, pci_vid_2348 }, -{0x2646, 24, pci_vid_2646 }, +{0x256C, 2, pci_vid_256C }, +{0x2646, 25, pci_vid_2646 }, {0x270B, 1, pci_vid_270B }, {0x270F, 1, pci_vid_270F }, {0x2711, 1, pci_vid_2711 }, @@ -45746,16 +46277,18 @@ pci_vid_index_t pci_vid_index[] = { {0x3130, 1, pci_vid_3130 }, {0x3142, 1, pci_vid_3142 }, {0x31AB, 2, pci_vid_31AB }, -{0x328F, 2, pci_vid_328F }, +{0x328F, 3, pci_vid_328F }, {0x3388, 28, pci_vid_3388 }, {0x3411, 1, pci_vid_3411 }, {0x3442, 3, pci_vid_3442 }, {0x3475, 1, pci_vid_3475 }, {0x34BA, 1, pci_vid_34BA }, {0x3513, 1, pci_vid_3513 }, +{0x369A, 1, pci_vid_369A }, {0x37D9, 5, pci_vid_37D9 }, {0x3842, 1, pci_vid_3842 }, {0x38EF, 1, pci_vid_38EF }, +{0x393E, 1, pci_vid_393E }, {0x3D3D, 49, pci_vid_3D3D }, {0x4005, 16, pci_vid_4005 }, {0x4033, 2, pci_vid_4033 }, @@ -45784,15 +46317,17 @@ pci_vid_index_t pci_vid_index[] = { {0x4978, 1, pci_vid_4978 }, {0x4A14, 3, pci_vid_4A14 }, {0x4B10, 1, pci_vid_4B10 }, +{0x4B43, 1, pci_vid_4B43 }, {0x4C48, 1, pci_vid_4C48 }, -{0x4C4D, 1, pci_vid_4C4D }, -{0x4C52, 1, pci_vid_4C52 }, +{0x4C4D, 3, pci_vid_4C4D }, +{0x4C52, 9, pci_vid_4C52 }, {0x4C53, 6, pci_vid_4C53 }, {0x4CA1, 1, pci_vid_4CA1 }, {0x4D51, 2, pci_vid_4D51 }, {0x4D54, 1, pci_vid_4D54 }, {0x4D56, 10, pci_vid_4D56 }, {0x4DDC, 27, pci_vid_4DDC }, +{0x4E4C, 1, pci_vid_4E4C }, {0x4E58, 2, pci_vid_4E58 }, {0x5045, 2, pci_vid_5045 }, {0x5046, 2, pci_vid_5046 }, @@ -45813,7 +46348,7 @@ pci_vid_index_t pci_vid_index[] = { {0x5456, 1, pci_vid_5456 }, {0x5519, 1, pci_vid_5519 }, {0x5544, 2, pci_vid_5544 }, -{0x5555, 3, pci_vid_5555 }, +{0x5555, 4, pci_vid_5555 }, {0x5646, 1, pci_vid_5646 }, {0x5654, 1, pci_vid_5654 }, {0x5678, 1, pci_vid_5678 }, @@ -45841,6 +46376,7 @@ pci_vid_index_t pci_vid_index[] = { {0x6903, 1, pci_vid_6903 }, {0x6909, 1, pci_vid_6909 }, {0x6910, 1, pci_vid_6910 }, +{0x6F67, 1, pci_vid_6F67 }, {0x7063, 4, pci_vid_7063 }, {0x7284, 1, pci_vid_7284 }, {0x7357, 2, pci_vid_7357 }, @@ -45854,8 +46390,8 @@ pci_vid_index_t pci_vid_index[] = { {0x7FED, 1, pci_vid_7FED }, {0x8008, 4, pci_vid_8008 }, {0x807D, 1, pci_vid_807D }, -{0x8086, 8561, pci_vid_8086 }, -{0x8088, 60, pci_vid_8088 }, +{0x8086, 8763, pci_vid_8086 }, +{0x8088, 76, pci_vid_8088 }, {0x80EE, 3, pci_vid_80EE }, {0x8322, 1, pci_vid_8322 }, {0x8384, 1, pci_vid_8384 }, @@ -45864,7 +46400,7 @@ pci_vid_index_t pci_vid_index[] = { {0x8686, 3, pci_vid_8686 }, {0x8800, 2, pci_vid_8800 }, {0x8820, 2, pci_vid_8820 }, -{0x8848, 15, pci_vid_8848 }, +{0x8848, 23, pci_vid_8848 }, {0x8866, 1, pci_vid_8866 }, {0x8888, 1, pci_vid_8888 }, {0x8912, 1, pci_vid_8912 }, @@ -45872,7 +46408,7 @@ pci_vid_index_t pci_vid_index[] = { {0x8E0E, 1, pci_vid_8E0E }, {0x8E2E, 2, pci_vid_8E2E }, {0x9004, 110, pci_vid_9004 }, -{0x9005, 386, pci_vid_9005 }, +{0x9005, 393, pci_vid_9005 }, {0x907F, 2, pci_vid_907F }, {0x919A, 1, pci_vid_919A }, {0x9412, 2, pci_vid_9412 }, @@ -45924,7 +46460,7 @@ pci_vid_index_t pci_vid_index[] = { {0xBD11, 1, pci_vid_BD11 }, {0xBDBD, 37, pci_vid_BDBD }, {0xC001, 1, pci_vid_C001 }, -{0xC0A9, 6, pci_vid_C0A9 }, +{0xC0A9, 8, pci_vid_C0A9 }, {0xC0DE, 1, pci_vid_C0DE }, {0xC0FE, 1, pci_vid_C0FE }, {0xCA01, 2, pci_vid_CA01 }, @@ -45987,9 +46523,9 @@ pci_vid_index_t pci_vid_index[] = { {0xFFFD, 2, pci_vid_FFFD }, {0xFFFE, 2, pci_vid_FFFE }, {0xFFFF, 1, pci_vid_FFFF }, -}; /* We have 2363 VIDs */ +}; /* We have 2376 VIDs */ -static pci_vid_index_t *get_vid_index(uint16_t vid) +static pci_vid_index_t const *get_vid_index(uint16_t vid) { uint32_t start_index = 0; uint32_t end_index = 0; @@ -46026,9 +46562,9 @@ static pci_vid_index_t *get_vid_index(uint16_t vid) const char *pci_id_str(uint16_t vid, uint16_t did, uint16_t svid, uint16_t ssid) { unsigned int i; - static char *not_found = "Not found"; - pci_vid_index_t *index_ptr; - pci_id_t *ids_ptr; + static const char *not_found = "Not found"; + pci_vid_index_t const *index_ptr; + pci_id_t const *ids_ptr; index_ptr = get_vid_index(vid); diff --git a/epan/prefs.c b/epan/prefs.c index 4625ec3d..0d3f0532 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -1705,7 +1705,11 @@ range_t* prefs_get_range_value_real(pref_t *pref, pref_source_t source) range_t* prefs_get_range_value(const char *module_name, const char* pref_name) { - return prefs_get_range_value_real(prefs_find_preference(prefs_find_module(module_name), pref_name), pref_current); + pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name); + if (pref == NULL) { + return NULL; + } + return prefs_get_range_value_real(pref, pref_current); } void @@ -2323,17 +2327,6 @@ pref_clean_stash(pref_t *pref, gpointer unused _U_) return 0; } -#if 0 -/* Return the value assigned to the given uint preference. */ -guint -prefs_get_uint_preference(pref_t *pref) -{ - if (pref && pref->type == PREF_UINT) - return *pref->varp.uint; - return 0; -} -#endif - /* * Call a callback function, with a specified argument, for each preference * in a given module. @@ -3369,9 +3362,13 @@ prefs_register_modules(void) "The maximum number of items that can be added to the dissection tree (Increase with caution)", 10, &prefs.gui_max_tree_items); + /* + * Used independently by proto_tree_add_node, call_dissector*, dissector_try_heuristic, + * and increment_dissection_depth. + */ prefs_register_uint_preference(gui_module, "max_tree_depth", - "Maximum tree depth", - "The maximum depth of the dissection tree (Increase with caution)", + "Maximum dissection depth", + "The maximum depth for dissection tree and protocol layer checks. (Increase with caution)", 10, &prefs.gui_max_tree_depth); @@ -4827,7 +4824,11 @@ guint prefs_get_uint_value_real(pref_t *pref, pref_source_t source) guint prefs_get_uint_value(const char *module_name, const char* pref_name) { - return prefs_get_uint_value_real(prefs_find_preference(prefs_find_module(module_name), pref_name), pref_current); + pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name); + if (pref == NULL) { + return 0; + } + return prefs_get_uint_value_real(pref, pref_current); } char* prefs_get_password_value(pref_t *pref, pref_source_t source) diff --git a/epan/print.c b/epan/print.c index fc68b69d..531c9d64 100644 --- a/epan/print.c +++ b/epan/print.c @@ -1635,13 +1635,17 @@ static gchar *csv_massage_str(const gchar *source, const gchar *exceptions) return csv_str; } -static void csv_write_str(const char *str, char sep, FILE *fh) +static void csv_write_str(const char *str, char sep, FILE *fh, gboolean print_separator) { gchar *csv_str; /* Do not escape the UTF-8 right arrow character */ csv_str = csv_massage_str(str, UTF8_RIGHTWARDS_ARROW); - fprintf(fh, "\"%s\"%c", csv_str, sep); + if (print_separator) { + fprintf(fh, "%c\"%s\"", sep, csv_str); + } else { + fprintf(fh, "\"%s\"", csv_str); + } g_free(csv_str); } @@ -1649,26 +1653,36 @@ void write_csv_column_titles(column_info *cinfo, FILE *fh) { gint i; + gboolean print_separator = FALSE; + // Avoid printing separator for first column - for (i = 0; i < cinfo->num_cols - 1; i++) { + for (i = 0; i < cinfo->num_cols; i++) { if (!get_column_visible(i)) continue; - csv_write_str(cinfo->columns[i].col_title, ',', fh); + csv_write_str(cinfo->columns[i].col_title, ',', fh, print_separator); + print_separator = TRUE; + } + if (print_separator) { // Only add line break if anything was output + fprintf(fh, "\n"); } - csv_write_str(cinfo->columns[i].col_title, '\n', fh); } void write_csv_columns(epan_dissect_t *edt, FILE *fh) { gint i; + gboolean print_separator = FALSE; + // Avoid printing separator for first column - for (i = 0; i < edt->pi.cinfo->num_cols - 1; i++) { + for (i = 0; i < edt->pi.cinfo->num_cols; i++) { if (!get_column_visible(i)) continue; - csv_write_str(get_column_text(edt->pi.cinfo, i), ',', fh); + csv_write_str(get_column_text(edt->pi.cinfo, i), ',', fh, print_separator); + print_separator = TRUE; + } + if (print_separator) { // Only add line break if anything was output + fprintf(fh, "\n"); } - csv_write_str(get_column_text(edt->pi.cinfo,i), '\n', fh); } void diff --git a/epan/proto.c b/epan/proto.c index f87ede38..c744485d 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -7104,10 +7104,10 @@ proto_custom_set(proto_tree* tree, GSList *field_ids, gint occurrence, offset_e = (int)strlen(expr); } else if (hfinfo->type == FT_NONE || hfinfo->type == FT_PROTOCOL) { /* Prevent multiple check marks */ - if (strstr(result, UTF8_CHECK_MARK ",") == NULL) { - offset_e += proto_item_fill_display_label(finfo, result+offset_e, size-offset_e); + if (strstr(expr, UTF8_CHECK_MARK ",") == NULL) { + offset_e += proto_item_fill_display_label(finfo, expr+offset_e, size-offset_e); } else { - result[--offset_e] = '\0'; /* Remove the added trailing ',' again */ + expr[--offset_e] = '\0'; /* Remove the added trailing ',' again */ } } else { str = fvalue_to_string_repr(NULL, finfo->value, FTREPR_DISPLAY, finfo->hfinfo->display); diff --git a/epan/protobuf_lang_tree.c b/epan/protobuf_lang_tree.c index 0a27df6c..ba1475fc 100644 --- a/epan/protobuf_lang_tree.c +++ b/epan/protobuf_lang_tree.c @@ -11,12 +11,27 @@ */ #include <string.h> +#include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <limits.h> #include "protobuf_lang_tree.h" #include "protobuf-helper.h" /* only for PROTOBUF_TYPE_XXX enumeration */ +#define MAX_PROTOBUF_NODE_DEPTH 100 +static bool +check_node_depth(const pbl_node_t *node) +{ + int depth = 1; + for (const pbl_node_t *parent = node; parent ; parent = parent->parent) { + depth++; + } + if (depth > MAX_PROTOBUF_NODE_DEPTH) { + return false; + } + return true; +} + extern void pbl_parser_error(protobuf_lang_state_t *state, const char *fmt, ...); @@ -277,6 +292,7 @@ pbl_find_node_in_pool(const pbl_descriptor_pool_t* pool, const char* full_name, /* get the full name of node. if it is NULL, it will be built. */ const char* +// NOLINTNEXTLINE(misc-no-recursion) pbl_get_node_full_name(pbl_node_t* node) { const char* parent_full_name; @@ -292,6 +308,9 @@ pbl_get_node_full_name(pbl_node_t* node) } if (node->nodetype == PBL_ONEOF) { + if (!check_node_depth(node)) { + return NULL; + } return pbl_get_node_full_name(node->parent); } @@ -745,6 +764,7 @@ pbl_enum_value_descriptor_number(const pbl_enum_value_descriptor_t* enumValue) } static void +// NOLINTNEXTLINE(misc-no-recursion) pbl_traverse_sub_tree(const pbl_node_t* node, void (*cb)(const pbl_message_descriptor_t*, void*), void* userdata) { GList* it; @@ -757,6 +777,9 @@ pbl_traverse_sub_tree(const pbl_node_t* node, void (*cb)(const pbl_message_descr } if (node->children) { + if (!check_node_depth(node)) { + return; + } for (it = g_queue_peek_head_link(node->children); it; it = it->next) { pbl_traverse_sub_tree((const pbl_node_t*) it->data, cb, userdata); } @@ -985,6 +1008,7 @@ pbl_node_t* pbl_create_option_node(pbl_file_descriptor_t* file, int lineno, /* add a node as a child of parent node, and return the parent pointer */ pbl_node_t* +// NOLINTNEXTLINE(misc-no-recursion) pbl_add_child(pbl_node_t* parent, pbl_node_t* child) { pbl_node_t* node = NULL; @@ -992,6 +1016,10 @@ pbl_add_child(pbl_node_t* parent, pbl_node_t* child) return parent; } + if (!check_node_depth(parent)) { + return NULL; + } + /* add a message node for mapField first */ if (child->nodetype == PBL_MAP_FIELD) { node = pbl_create_node(child->file, child->lineno, PBL_MESSAGE, ((pbl_field_descriptor_t*)child)->type_name); @@ -1070,6 +1098,7 @@ pbl_add_child(pbl_node_t* parent, pbl_node_t* child) /* merge one('from') node's children to another('to') node, and return the 'to' pointer */ pbl_node_t* +// NOLINTNEXTLINE(misc-no-recursion) pbl_merge_children(pbl_node_t* to, pbl_node_t* from) { GList* it; @@ -1120,6 +1149,7 @@ pbl_merge_children(pbl_node_t* to, pbl_node_t* from) /* free a pbl_node_t and its children. */ void +// NOLINTNEXTLINE(misc-no-recursion) pbl_free_node(gpointer anode) { pbl_method_descriptor_t* method_node; @@ -1158,6 +1188,7 @@ pbl_free_node(gpointer anode) g_free(field_node->default_value.s); } if (field_node->options_node) { + // We recurse here, but we're limited by depth checks at allocation time pbl_free_node(field_node->options_node); } break; diff --git a/epan/services-data.c b/epan/services-data.c index 47766eea..a5f42924 100644 --- a/epan/services-data.c +++ b/epan/services-data.c @@ -2736,7 +2736,7 @@ static ws_services_entry_t global_tcp_udp_services_table[] = { { 3154, "ccmrmi", "ON RMI Registry" }, { 3155, "jpegmpeg", "JpegMpeg Port" }, { 3156, "indura", "Indura Collector" }, - { 3157, "e3consultants", "CCC Listener Port" }, + { 3157, "lsa-comm", "LSA Communicator" }, { 3158, "stvp", "SmashTV Protocol" }, { 3159, "navegaweb-port", "NavegaWeb Tarification" }, { 3160, "tip-app-server", "TIP Application Server" }, @@ -4242,6 +4242,68 @@ static ws_services_entry_t global_tcp_udp_services_table[] = { { 5992, "consul-insight", "Consul InSight Security" }, { 5999, "cvsup", "CVSup" }, { 6000, "x11", "X Window System" }, + { 6001, "x11", "X Window System" }, + { 6002, "x11", "X Window System" }, + { 6003, "x11", "X Window System" }, + { 6004, "x11", "X Window System" }, + { 6005, "x11", "X Window System" }, + { 6006, "x11", "X Window System" }, + { 6007, "x11", "X Window System" }, + { 6008, "x11", "X Window System" }, + { 6009, "x11", "X Window System" }, + { 6010, "x11", "X Window System" }, + { 6011, "x11", "X Window System" }, + { 6012, "x11", "X Window System" }, + { 6013, "x11", "X Window System" }, + { 6014, "x11", "X Window System" }, + { 6015, "x11", "X Window System" }, + { 6016, "x11", "X Window System" }, + { 6017, "x11", "X Window System" }, + { 6018, "x11", "X Window System" }, + { 6019, "x11", "X Window System" }, + { 6020, "x11", "X Window System" }, + { 6021, "x11", "X Window System" }, + { 6022, "x11", "X Window System" }, + { 6023, "x11", "X Window System" }, + { 6024, "x11", "X Window System" }, + { 6025, "x11", "X Window System" }, + { 6026, "x11", "X Window System" }, + { 6027, "x11", "X Window System" }, + { 6028, "x11", "X Window System" }, + { 6029, "x11", "X Window System" }, + { 6030, "x11", "X Window System" }, + { 6031, "x11", "X Window System" }, + { 6032, "x11", "X Window System" }, + { 6033, "x11", "X Window System" }, + { 6034, "x11", "X Window System" }, + { 6035, "x11", "X Window System" }, + { 6036, "x11", "X Window System" }, + { 6037, "x11", "X Window System" }, + { 6038, "x11", "X Window System" }, + { 6039, "x11", "X Window System" }, + { 6040, "x11", "X Window System" }, + { 6041, "x11", "X Window System" }, + { 6042, "x11", "X Window System" }, + { 6043, "x11", "X Window System" }, + { 6044, "x11", "X Window System" }, + { 6045, "x11", "X Window System" }, + { 6046, "x11", "X Window System" }, + { 6047, "x11", "X Window System" }, + { 6048, "x11", "X Window System" }, + { 6049, "x11", "X Window System" }, + { 6050, "x11", "X Window System" }, + { 6051, "x11", "X Window System" }, + { 6052, "x11", "X Window System" }, + { 6053, "x11", "X Window System" }, + { 6054, "x11", "X Window System" }, + { 6055, "x11", "X Window System" }, + { 6056, "x11", "X Window System" }, + { 6057, "x11", "X Window System" }, + { 6058, "x11", "X Window System" }, + { 6059, "x11", "X Window System" }, + { 6060, "x11", "X Window System" }, + { 6061, "x11", "X Window System" }, + { 6062, "x11", "X Window System" }, { 6063, "x11", "X Window System" }, { 6064, "ndl-ahp-svc", "NDL-AHP-SVC" }, { 6065, "winpharaoh", "WinPharaoh" }, @@ -5467,6 +5529,7 @@ static ws_services_entry_t global_tcp_services_table[] = { { 5473, "apsolab-tags", "The Apsolab company's secure dynamic tag protocol" }, { 5475, "apsolab-data", "The Apsolab company's data retrieval protocol" }, { 5507, "psl-management", "PowerSysLab Electrical Management" }, + { 5543, "qftest-licserve", "QF-Test License Server" }, { 5550, "cbus", "Model Railway control using the CBUS message protocol" }, { 5557, "farenet", "Sandlab FARENET" }, { 5565, "dp-bura", "Data Protector BURA" }, @@ -5548,6 +5611,9 @@ static ws_services_entry_t global_tcp_services_table[] = { { 6655, "pcs-sf-ui-man", "PC SOFT - Software factory UI/manager" }, { 6656, "emgmsg", "Emergency Message Control Service" }, { 6665, "ircu", "IRCU" }, + { 6666, "ircu", "IRCU" }, + { 6667, "ircu", "IRCU" }, + { 6668, "ircu", "IRCU" }, { 6669, "ircu", "IRCU" }, { 6678, "vfbp", "Viscount Freedom Bridge Protocol" }, { 6687, "clever-ctrace", "CleverView for cTrace Message Service" }, @@ -5627,7 +5693,6 @@ static ws_services_entry_t global_tcp_services_table[] = { { 8066, "toad-bi-appsrvr", "Toad BI Application Server" }, { 8067, "infi-async", "Infinidat async replication" }, { 8070, "ucs-isc", "Oracle Unified Communication Suite's Indexed Search Converter" }, - { 8077, "mles", "Mles is a client-server data distribution protocol targeted to serve as a lightweight and reliable distributed publish/subscribe database service." }, { 8084, "websnp", "Snarl Network Protocol over HTTP" }, { 8090, "opsmessaging", "Vehicle to station messaging" }, { 8091, "jamlink", "Jam Link Framework" }, @@ -5820,6 +5885,7 @@ static ws_services_entry_t global_tcp_services_table[] = { { 24577, "bilobit", "bilobit Service" }, { 24666, "sdtvwcam", "Service used by SmarDTV to communicate between a CAM and a second screen application" }, { 24754, "cslg", "Citrix StorageLink Gateway" }, + { 25100, "db2c-tls", "IBM Db2 Client Interface - Encrypted" }, { 25576, "sauterdongle", "Sauter Dongle" }, { 25604, "idtp", "Identifier Tracing Protocol" }, { 26257, "cockroach", "CockroachDB" }, @@ -5922,8 +5988,8 @@ static ws_services_entry_t global_udp_services_table[] = { { 775, "acmaint-transd", "" }, { 861, "owamp-test", "OWAMP-Test" }, { 862, "twamp-test", "TWAMP-Test Receiver Port" }, - { 914, "rift-lies", "Routing in Fat Trees Link Information Elements (TEMPORARY - registered 2023-02-17, expires 2024-02-17)" }, - { 915, "rift-ties", "Routing in Fat Trees Topology Information Elements (TEMPORARY - registered 2023-02-17, expires 2024-02-17)" }, + { 914, "rift-lies", "Routing in Fat Trees Link Information Elements (TEMPORARY - registered 2023-02-17, extension registered 2024-01-12, expires 2025-02-17)" }, + { 915, "rift-ties", "Routing in Fat Trees Topology Information Elements (TEMPORARY - registered 2023-02-17, extension registered 2024-01-12, expires 2025-02-17)" }, { 998, "puparp", "" }, { 999, "applix", "Applix ac" }, { 1027, "6a44", "IPv6 Behind NAT44 CPEs" }, diff --git a/epan/show_exception.c b/epan/show_exception.c index 1ab395ce..2b6e29d6 100644 --- a/epan/show_exception.c +++ b/epan/show_exception.c @@ -35,14 +35,17 @@ static expert_field ei_unreassembled = EI_INIT; void register_show_exception(void) { - static ei_register_info ei[] = { + static ei_register_info ei_malformed_set[] = { { &ei_malformed_dissector_bug, { "_ws.malformed.dissector_bug", PI_MALFORMED, PI_ERROR, "Dissector bug", EXPFILL }}, { &ei_malformed_reassembly, { "_ws.malformed.reassembly", PI_MALFORMED, PI_ERROR, "Reassembly error", EXPFILL }}, { &ei_malformed, { "_ws.malformed.expert", PI_MALFORMED, PI_ERROR, "Malformed Packet (Exception occurred)", EXPFILL }}, + }; + static ei_register_info ei_unreassembled_set[] = { { &ei_unreassembled, { "_ws.unreassembled.expert", PI_REASSEMBLE, PI_NOTE, "Unreassembled fragment (change preferences to enable reassembly)", EXPFILL }}, }; expert_module_t* expert_malformed; + expert_module_t* expert_unreassembled; proto_short = proto_register_protocol("Short Frame", "Short frame", "_ws.short"); proto_malformed = proto_register_protocol("Malformed Packet", @@ -52,7 +55,9 @@ register_show_exception(void) "Unreassembled fragmented packet", "_ws.unreassembled"); expert_malformed = expert_register_protocol(proto_malformed); - expert_register_field_array(expert_malformed, ei, array_length(ei)); + expert_register_field_array(expert_malformed, ei_malformed_set, array_length(ei_malformed_set)); + expert_unreassembled = expert_register_protocol(proto_unreassembled); + expert_register_field_array(expert_unreassembled, ei_unreassembled_set, array_length(ei_unreassembled_set)); /* "Short Frame", "Malformed Packet", and "Unreassembled Fragmented Packet" aren't really protocols, they're error indications; diff --git a/epan/strutil.c b/epan/strutil.c index c3546a39..88260ad8 100644 --- a/epan/strutil.c +++ b/epan/strutil.c @@ -131,6 +131,10 @@ is_byte_sep(guint8 c) /* Turn a string of hex digits with optional separators (defined by * is_byte_sep() into a byte array. + * + * XXX - This function is perhaps too generous in what it accepts. + * It allows the separator to change from one character to another, + * or to and from no separator if force_separators is false. */ gboolean hex_str_to_bytes(const char *hex_str, GByteArray *bytes, gboolean force_separators) @@ -152,9 +156,19 @@ hex_str_to_bytes(const char *hex_str, GByteArray *bytes, gboolean force_separato r = p+2; s = p+3; - if (*q && *r && *s + if (*q && *r && g_ascii_isxdigit(*p) && g_ascii_isxdigit(*q) && - g_ascii_isxdigit(*r) && g_ascii_isxdigit(*s)) { + g_ascii_isxdigit(*r)) { + + /* + * Three hex bytes in a row, followed by a non hex byte + * (possibly the end of the string). We don't accept an + * odd number of hex digits except for single digits + * by themselves or after a separator. + */ + if (!g_ascii_isxdigit(*s)) { + return FALSE; + } four_digits_first_half[0] = *p; four_digits_first_half[1] = *q; four_digits_first_half[2] = '\0'; @@ -174,7 +188,7 @@ hex_str_to_bytes(const char *hex_str, GByteArray *bytes, gboolean force_separato if (*punct) { /* * Make sure the character after - * the forth hex digit is a byte + * the fourth hex digit is a byte * separator, i.e. that we don't have * more than four hex digits, or a * bogus character. diff --git a/epan/wslua/init_wslua.c b/epan/wslua/init_wslua.c index 40093265..9217a4ab 100644 --- a/epan/wslua/init_wslua.c +++ b/epan/wslua/init_wslua.c @@ -969,7 +969,7 @@ add_table_symbol(const char *table, const char *name, int value) lua_getglobal(L, table); /* Set symbol in table. */ lua_pushstring(L, name); - lua_pushnumber(L, value); + lua_pushinteger(L, value); lua_settable(L, -3); /* Pop table from stack. */ lua_pop(L, 1); @@ -979,7 +979,7 @@ static void add_global_symbol(const char *name, int value) { /* Set symbol in global environment. */ - lua_pushnumber(L, value); + lua_pushinteger(L, value); lua_setglobal(L, name); } @@ -988,7 +988,7 @@ add_pi_severity_symbol(const char *name, int value) { lua_getglobal(L, WSLUA_EXPERT_TABLE); lua_getfield(L, -1, WSLUA_EXPERT_SEVERITY_TABLE); - lua_pushnumber(L, value); + lua_pushinteger(L, value); lua_setfield(L, -2, name); lua_pop(L, 2); } @@ -998,7 +998,7 @@ add_pi_group_symbol(const char *name, int value) { lua_getglobal(L, WSLUA_EXPERT_TABLE); lua_getfield(L, -1, WSLUA_EXPERT_GROUP_TABLE); - lua_pushnumber(L, value); + lua_pushinteger(L, value); lua_setfield(L, -2, name); lua_pop(L, 2); } @@ -1007,7 +1007,7 @@ static void add_menu_group_symbol(const char *name, int value) { /* Set symbol in global environment. */ - lua_pushnumber(L, value); + lua_pushinteger(L, value); char *str = g_strdup(name); char *s = strstr(str, "_GROUP_"); if (s == NULL) diff --git a/epan/wslua/lrexlib/pcre2/lpcre2.c b/epan/wslua/lrexlib/pcre2/lpcre2.c index f24cbec8..ee1926f8 100644 --- a/epan/wslua/lrexlib/pcre2/lpcre2.c +++ b/epan/wslua/lrexlib/pcre2/lpcre2.c @@ -432,7 +432,7 @@ static int Lpcre2_jit_compile (lua_State *L) { #define SET_INFO_FIELD(L,ud,what,name,valtype) { \ valtype val; \ if (0 == pcre2_pattern_info (ud->pr, what, &val)) { \ - lua_pushnumber (L, val); \ + lua_pushinteger (L, val); \ lua_setfield (L, -2, name); \ } \ } diff --git a/epan/wslua/lua_bitop.c b/epan/wslua/lua_bitop.c index 2f3c3eeb..52be189a 100644 --- a/epan/wslua/lua_bitop.c +++ b/epan/wslua/lua_bitop.c @@ -24,7 +24,7 @@ typedef uint32_t UBits; typedef union { lua_Number n; -#ifdef LUA_NUMBER_DOUBLE +#if defined(LUA_NUMBER_DOUBLE) || defined(LUA_FLOAT_DOUBLE) uint64_t b; #else UBits b; @@ -41,24 +41,25 @@ static UBits barg(lua_State *L, int idx) #else bn.n = luaL_checknumber(L, idx); #endif -#if defined(LUA_NUMBER_DOUBLE) +#if defined(LUA_NUMBER_DOUBLE) || defined(LUA_FLOAT_DOUBLE) bn.n += 6755399441055744.0; /* 2^52+2^51 */ #ifdef SWAPPED_DOUBLE b = (UBits)(bn.b >> 32); #else b = (UBits)bn.b; #endif -#elif defined(LUA_NUMBER_INT) || defined(LUA_NUMBER_LONG) || \ - defined(LUA_NUMBER_LONGLONG) || defined(LUA_NUMBER_LONG_LONG) || \ - defined(LUA_NUMBER_LLONG) +#elif defined(LUA_NUMBER_INT) || defined(LUA_INT_INT) || \ + defined(LUA_NUMBER_LONG) || defined(LUA_INT_LONG) || \ + defined(LUA_NUMBER_LONGLONG) || defined(LUA_INT_LONGLONG) || \ + defined(LUA_NUMBER_LONG_LONG) || defined(LUA_NUMBER_LLONG) if (sizeof(UBits) == sizeof(lua_Number)) b = bn.b; else b = (UBits)(SBits)bn.n; -#elif defined(LUA_NUMBER_FLOAT) +#elif defined(LUA_NUMBER_FLOAT) || defined(LUA_FLOAT_FLOAT) #error "A 'float' lua_Number type is incompatible with this library" #else -#error "Unknown number type, check LUA_NUMBER_* in luaconf.h" +#error "Unknown number type, check LUA_NUMBER_*, LUA_FLOAT_*, LUA_INT_* in luaconf.h" #endif #if LUA_VERSION_NUM < 502 if (b == 0 && !lua_isnumber(L, idx)) { @@ -69,7 +70,11 @@ static UBits barg(lua_State *L, int idx) } /* Return bit type. */ +#if LUA_VERSION_NUM < 503 #define BRET(b) lua_pushnumber(L, (lua_Number)(SBits)(b)); return 1; +#else +#define BRET(b) lua_pushinteger(L, (lua_Integer)(SBits)(b)); return 1; +#endif static int bit_tobit(lua_State *L) { BRET(barg(L, 1)) } static int bit_bnot(lua_State *L) { BRET(~barg(L, 1)) } @@ -141,11 +146,15 @@ static const struct luaL_Reg bit_funcs[] = { LUALIB_API int luaopen_bit(lua_State *L) { UBits b; +#if LUA_VERSION_NUM < 503 lua_pushnumber(L, (lua_Number)1437217655L); +#else + lua_pushinteger(L, (lua_Integer)1437217655L); +#endif b = barg(L, -1); if (b != (UBits)1437217655L || BAD_SAR) { /* Perform a simple self-test. */ const char *msg = "compiled with incompatible luaconf.h"; -#ifdef LUA_NUMBER_DOUBLE +#if defined(LUA_NUMBER_DOUBLE) || defined(LUA_FLOAT_DOUBLE) #ifdef _WIN32 if (b == (UBits)1610612736L) msg = "use D3DCREATE_FPU_PRESERVE with DirectX"; diff --git a/epan/wslua/make-taps.py b/epan/wslua/make-taps.py index 14c5a397..ed677ff5 100755 --- a/epan/wslua/make-taps.py +++ b/epan/wslua/make-taps.py @@ -34,18 +34,18 @@ def get_tap_info(tap_name, header_file, struct_name, enum_types): types = { 'gchar[]': 'lua_pushstring(L,(const char*)v->STR);', 'gchar*': 'lua_pushstring(L,(const char*)v->STR);', - 'guint': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'guint8': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'guint16': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'guint32': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'gint': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'gint8': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'gint16': 'lua_pushnumber(L,(lua_Number)v->STR);', - 'gint32': 'lua_pushnumber(L,(lua_Number)v->STR);', + 'guint': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'guint8': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'guint16': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'guint32': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'gint': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'gint8': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'gint16': 'lua_pushinteger(L,(lua_Integer)v->STR);', + 'gint32': 'lua_pushinteger(L,(lua_Integer)v->STR);', 'gboolean': 'lua_pushboolean(L,(int)v->STR);', 'address': '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, &(v->STR)); pushAddress(L,a); }', 'address*': '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, v->STR); pushAddress(L,a); }', - 'int': 'lua_pushnumber(L,(lua_Number)v->STR);', + 'int': 'lua_pushinteger(L,(lua_Integer)v->STR);', 'nstime_t': 'lua_pushnumber(L,(lua_Number)nstime_to_sec(&(v->STR)));', 'nstime_t*': 'lua_pushnumber(L,(lua_Number)nstime_to_sec(v->STR));', } @@ -79,7 +79,7 @@ def get_tap_info(tap_name, header_file, struct_name, enum_types): for enum in enum_types: m = re.search(fr'typedef\s+enum[^{{]*{{([^}}]*)}}[\s\n]*{enum}[\s\n]*;', buf, flags=re.DOTALL) if m: - types[enum] = f'lua_pushnumber(L,(lua_Number)v->STR); /* {enum} */' + types[enum] = f'lua_pushinteger(L,(lua_Integer)v->STR); /* {enum} */' econsts = m.group(1).splitlines() econsts = [re.sub(r'\s+', '', item) for item in econsts] econsts = [re.sub(',', '', item) for item in econsts] @@ -183,9 +183,9 @@ def main(): c_body += f'\n\t/*\n\t * {enum}\n\t */\n\tlua_newtable(L);\n' for econst in enums[enum]: c_body += f'''\ - lua_pushnumber(L,(lua_Number){econst}); + lua_pushinteger(L,(lua_Integer){econst}); lua_setglobal(L,"{econst}"); - lua_pushnumber(L,(lua_Number){econst}); + lua_pushinteger(L,(lua_Integer){econst}); lua_pushstring(L,"{econst}"); lua_settable(L,-3); ''' diff --git a/epan/wslua/wslua_byte_array.c b/epan/wslua/wslua_byte_array.c index 6e6ae304..b0449912 100644 --- a/epan/wslua/wslua_byte_array.c +++ b/epan/wslua/wslua_byte_array.c @@ -214,7 +214,7 @@ WSLUA_METHOD ByteArray_get_index(lua_State* L) { luaL_argerror(L,2,"index out of range"); return 0; } - lua_pushnumber(L,ba->data[idx]); + lua_pushinteger(L,ba->data[idx]); WSLUA_RETURN(1); /* The value [0-255] of the byte. */ } @@ -255,7 +255,7 @@ WSLUA_METHOD ByteArray_le_int(lua_State* L) { value |= (guint8)ba->data[offset + i]; } - lua_pushnumber(L, value); + lua_pushinteger(L, value); WSLUA_RETURN(1); /* The value of the little endian encoded signed integer beginning at given offset with given length. */ } @@ -337,7 +337,7 @@ WSLUA_METHOD ByteArray_le_uint(lua_State* L) { value |= (guint8)ba->data[offset + i]; } - lua_pushnumber(L, value); + lua_pushinteger(L, value); WSLUA_RETURN(1); /* The value of the little endian encoded unsigned integer beginning at given offset with given length. */ } @@ -419,7 +419,7 @@ WSLUA_METHOD ByteArray_int(lua_State* L) { value |= (guint8)ba->data[offset + i]; } - lua_pushnumber(L, value); + lua_pushinteger(L, value); WSLUA_RETURN(1); /* The value of the big endian encoded 32 bit signed integer beginning at given offset with given length. */ } @@ -501,7 +501,7 @@ WSLUA_METHOD ByteArray_uint(lua_State* L) { value |= (guint8)ba->data[offset + i]; } - lua_pushnumber(L, value); + lua_pushinteger(L, value); WSLUA_RETURN(1); /* The value of the big endian encoded 32 bit unsigned integer beginning at given offset with given length. */ } @@ -551,7 +551,7 @@ WSLUA_METHOD ByteArray_len(lua_State* L) { /* Obtain the length of a <<lua_class_ByteArray,`ByteArray`>>. */ ByteArray ba = checkByteArray(L,1); - lua_pushnumber(L,(lua_Number)ba->len); + lua_pushinteger(L,(lua_Integer)ba->len); WSLUA_RETURN(1); /* The length of the <<lua_class_ByteArray,`ByteArray`>>. */ } diff --git a/epan/wslua/wslua_dissector.c b/epan/wslua/wslua_dissector.c index 5b189308..6181ffbf 100644 --- a/epan/wslua/wslua_dissector.c +++ b/epan/wslua/wslua_dissector.c @@ -107,7 +107,7 @@ WSLUA_METHOD Dissector_call(lua_State* L) { are normal conditions and possibly don't need the Lua traceback. */ if (error) { WSLUA_ERROR(Dissector_call,error); } - lua_pushnumber(L,(lua_Number)len); + lua_pushinteger(L,(lua_Integer)len); WSLUA_RETURN(1); /* Number of bytes dissected. Note that some dissectors always return number of bytes in incoming buffer, so be aware. */ } @@ -618,7 +618,7 @@ WSLUA_METHOD DissectorTable_try (lua_State *L) { if (error) { WSLUA_ERROR(DissectorTable_try,error); } - lua_pushnumber(L,(lua_Number)len); + lua_pushinteger(L,(lua_Integer)len); WSLUA_RETURN(1); /* Number of bytes dissected. Note that some dissectors always return number of bytes in incoming buffer, so be aware. */ } diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c index 17db1974..d7d3e9d7 100644 --- a/epan/wslua/wslua_field.c +++ b/epan/wslua/wslua_field.c @@ -50,7 +50,7 @@ WSLUA_METAMETHOD FieldInfo__len(lua_State* L) { */ FieldInfo fi = checkFieldInfo(L,1); - lua_pushnumber(L,fi->ws_fi->length); + lua_pushinteger(L,fi->ws_fi->length); return 1; } @@ -61,7 +61,7 @@ WSLUA_METAMETHOD FieldInfo__unm(lua_State* L) { */ FieldInfo fi = checkFieldInfo(L,1); - lua_pushnumber(L,fi->ws_fi->start); + lua_pushinteger(L,fi->ws_fi->start); return 1; } @@ -91,13 +91,13 @@ WSLUA_METAMETHOD FieldInfo__call(lua_State* L) { case FT_UINT24: case FT_UINT32: case FT_FRAMENUM: - lua_pushnumber(L,(lua_Number)(fvalue_get_uinteger(fi->ws_fi->value))); + lua_pushinteger(L,(lua_Integer)(fvalue_get_uinteger(fi->ws_fi->value))); return 1; case FT_INT8: case FT_INT16: case FT_INT24: case FT_INT32: - lua_pushnumber(L,(lua_Number)(fvalue_get_sinteger(fi->ws_fi->value))); + lua_pushinteger(L,(lua_Integer)(fvalue_get_sinteger(fi->ws_fi->value))); return 1; case FT_FLOAT: case FT_DOUBLE: @@ -268,7 +268,7 @@ static int FieldInfo_get_type(lua_State* L) { FieldInfo fi = checkFieldInfo(L,1); if (fi->ws_fi->hfinfo) { - lua_pushnumber(L, fi->ws_fi->hfinfo->type); + lua_pushinteger(L, fi->ws_fi->hfinfo->type); } else { lua_pushnil(L); @@ -710,7 +710,7 @@ static int Field_get_type(lua_State* L) { Field f = checkField(L,1); header_field_info* hfinfo = NULL; - GET_HFINFO_MEMBER(lua_pushnumber, type); + GET_HFINFO_MEMBER(lua_pushinteger, type); return 1; } diff --git a/epan/wslua/wslua_file.c b/epan/wslua/wslua_file.c index 2621a997..ff74760f 100644 --- a/epan/wslua/wslua_file.c +++ b/epan/wslua/wslua_file.c @@ -152,7 +152,7 @@ static int File_read_number (lua_State *L, FILE_T ft) { buff[buff_end] = '\0'; if (buff_end > 0 && num_digits > 0 && sscanf(buff, "%lf", &d) == 1) { - lua_pushnumber(L, d); + lua_pushinteger(L, d); return 1; } else { @@ -338,7 +338,11 @@ WSLUA_METHOD File_seek(lua_State* L) { static const char *const modenames[] = {"set", "cur", "end", NULL}; File f = checkFile(L,1); int op = luaL_checkoption(L, 2, "cur", modenames); +#if LUA_VERSION_NUM >= 503 + gint64 offset = (gint64)luaL_optinteger(L, 3, 0); +#else gint64 offset = (gint64) luaL_optlong(L, 3, 0); +#endif int err; @@ -351,7 +355,7 @@ WSLUA_METHOD File_seek(lua_State* L) { return 2; } - lua_pushnumber(L, (lua_Number)(file_tell(f->file))); + lua_pushinteger(L, (lua_Integer)(file_tell(f->file))); } else { offset = wtap_dump_file_seek(f->wdh, offset, mode[op], &err); @@ -370,7 +374,7 @@ WSLUA_METHOD File_seek(lua_State* L) { return 2; } - lua_pushnumber(L, (lua_Number)(offset)); + lua_pushinteger(L, (lua_Integer)(offset)); } WSLUA_RETURN(1); /* The current file cursor position as a number. */ diff --git a/epan/wslua/wslua_file_handler.c b/epan/wslua/wslua_file_handler.c index f0c9ad83..47f72d45 100644 --- a/epan/wslua/wslua_file_handler.c +++ b/epan/wslua/wslua_file_handler.c @@ -326,7 +326,7 @@ wslua_filehandler_seek_read_packet(wtap *wth, gint64 seek_off, wtap_rec *rec, Bu fp = push_File(L, wth->random_fh); fc = push_CaptureInfo(L, wth, FALSE); fi = push_FrameInfo(L, rec, buf); - lua_pushnumber(L, (lua_Number)seek_off); + lua_pushinteger(L, (lua_Integer)seek_off); switch ( lua_pcall(L,4,1,1) ) { case 0: @@ -474,7 +474,7 @@ wslua_filehandler_can_write_encap(int encap, void* data) INIT_FILEHANDLER_ROUTINE(can_write_encap,WTAP_ERR_UNWRITABLE_ENCAP,NULL,NULL); - lua_pushnumber(L, encap); + lua_pushinteger(L, encap); switch ( lua_pcall(L,1,1,1) ) { case 0: @@ -842,7 +842,7 @@ WSLUA_FUNCTION wslua_register_filehandler(lua_State* L) { fh->registered = TRUE; registered_file_handlers = g_slist_prepend(registered_file_handlers, fh); - lua_pushnumber(L, fh->file_type); + lua_pushinteger(L, fh->file_type); WSLUA_RETURN(1); /* the new type number for this file reader/write */ } @@ -1207,7 +1207,7 @@ WSLUA_ATTRIBUTE_GET(FileHandler,supported_comment_types,{ \ break;\ } \ } \ - lua_pushnumber(L, (lua_Number)supported_comment_types); \ + lua_pushinteger(L, (lua_Integer)supported_comment_types); \ }); WSLUA_ATTRIBUTE_SET(FileHandler,supported_comment_types, { \ guint supported_comment_types; \ diff --git a/epan/wslua/wslua_frame_info.c b/epan/wslua/wslua_frame_info.c index 401abd73..72701d6f 100644 --- a/epan/wslua/wslua_frame_info.c +++ b/epan/wslua/wslua_frame_info.c @@ -89,7 +89,7 @@ WSLUA_METHOD FrameInfo_read_data(lua_State* L) { g_free(err_info); /* is this right? */ } else lua_pushnil(L); - lua_pushnumber(L, err); + lua_pushinteger(L, err); return 3; } @@ -120,7 +120,7 @@ static int FrameInfo_get_comment (lua_State* L) { lua_createtable(L, n_comments, 0); for (i = 0; i < n_comments; i++) { comment = NULL; - lua_pushnumber(L, i+1); + lua_pushinteger(L, i+1); if (WTAP_OPTTYPE_SUCCESS == wtap_block_get_nth_string_option_value(block, OPT_COMMENT, i, &comment)) { lua_pushstring(L, comment); @@ -371,7 +371,7 @@ WSLUA_METHOD FrameInfoConst_write_data(lua_State* L) { if (!wtap_dump_file_write(fh->wdh, fi->pd, (size_t)(len), &err)) { lua_pushboolean(L, FALSE); lua_pushfstring(L, "FrameInfoConst write_data() error: %s", g_strerror(err)); - lua_pushnumber(L, err); + lua_pushinteger(L, err); return 3; } @@ -403,7 +403,7 @@ static int FrameInfoConst_get_comment (lua_State* L) { lua_createtable(L, n_comments, 0); for (i = 0; i < n_comments; i++) { comment = NULL; - lua_pushnumber(L, i+1); + lua_pushinteger(L, i+1); if (WTAP_OPTTYPE_SUCCESS == wtap_block_get_nth_string_option_value(block, OPT_COMMENT, i, &comment)) { lua_pushstring(L, comment); diff --git a/epan/wslua/wslua_pinfo.c b/epan/wslua/wslua_pinfo.c index a735d601..3e60715e 100644 --- a/epan/wslua/wslua_pinfo.c +++ b/epan/wslua/wslua_pinfo.c @@ -308,7 +308,7 @@ static int Pinfo_get_match(lua_State *L) { if (pinfo->ws_pinfo->match_string) { lua_pushstring(L,pinfo->ws_pinfo->match_string); } else { - lua_pushnumber(L,(lua_Number)(pinfo->ws_pinfo->match_uint)); + lua_pushinteger(L,(lua_Integer)(pinfo->ws_pinfo->match_uint)); } return 1; diff --git a/epan/wslua/wslua_pref.c b/epan/wslua/wslua_pref.c index 234170d3..3d6ed540 100644 --- a/epan/wslua/wslua_pref.c +++ b/epan/wslua/wslua_pref.c @@ -515,9 +515,9 @@ WSLUA_METAMETHOD Prefs__index(lua_State* L) { if ( g_str_equal(prefs_p->name,name) ) { switch (prefs_p->type) { case PREF_BOOL: lua_pushboolean(L, prefs_p->value.b); break; - case PREF_UINT: lua_pushnumber(L,(lua_Number)prefs_p->value.u); break; + case PREF_UINT: lua_pushinteger(L,(lua_Integer)prefs_p->value.u); break; case PREF_STRING: lua_pushstring(L,prefs_p->value.s); break; - case PREF_ENUM: lua_pushnumber(L,(lua_Number)prefs_p->value.e); break; + case PREF_ENUM: lua_pushinteger(L,(lua_Integer)prefs_p->value.e); break; case PREF_RANGE: { char *push_str = range_convert_range(NULL, prefs_p->value.r); diff --git a/epan/wslua/wslua_proto.c b/epan/wslua/wslua_proto.c index 363975b2..92a1d192 100644 --- a/epan/wslua/wslua_proto.c +++ b/epan/wslua/wslua_proto.c @@ -444,7 +444,33 @@ static int Proto_set_fields(lua_State* L) { if( lua_istable(L,NEW_TABLE)) { for (lua_pushnil(L); lua_next(L, NEW_TABLE); ) { if (isProtoField(L,5)) { - luaL_ref(L,FIELDS_TABLE); + /* luaL_ref returns a reference. lua_next will return not + * just occupied entries in the table, but also references + * used to store unused/deleted entries in the hash table + * so that they can be reused without reallocation. Those + * will have a lua_Number as their value. The values form + * a linked list of available indicies, starting with the + * head at index 3 (LUA_RIDX_LAST + 1) in Lua 5.4 and index + * 0 in earlier versions. (Since arrays are 1-indexed, this + * is mostly invisible in Lua 5.3 and earlier so long as + * nothing has been deleted.) + * + * Perhaps the assumption is that no one wants to use a + * hash table to store numbers anyway? This also means + * that for any table with 2 or more real entries, the + * length operator # *includes* the freelist and cannot + * be trusted. + * + * If we wanted to only check entries we knew were valid, + * we could save this reference. + * + * This also means that our checks below on registration + * and deregistration that the table entries are ProtoFields + * are less useful, because we do now expect some numbers + * in the table. Hopefully the check on insert here obviates + * needing to check there. + */ + /* int ref = */ luaL_ref(L,FIELDS_TABLE); } else if (! lua_isnil(L,5) ) { return luaL_error(L,"only ProtoFields should be in the table"); } @@ -457,6 +483,7 @@ static int Proto_set_fields(lua_State* L) { return luaL_error(L,"either a ProtoField or an array of protofields"); } + /* XXX - I don't think this is necessary. */ lua_pushvalue(L, 3); return 1; @@ -573,6 +600,11 @@ ProtoField wslua_is_field_available(lua_State* L, const char* field_abbr) { lua_pushnil(L); while (lua_next(L, -2)) { + if (lua_type(L, -1) == LUA_TNUMBER) { + /* part of free reference linked list, ignore */ + lua_pop(L, 1); /* table value */ + continue; + } ProtoField f = checkProtoField(L, -1); if (strcmp(field_abbr, f->abbrev) == 0) { /* found! */ @@ -632,6 +664,10 @@ int wslua_deregister_protocols(lua_State* L) { /* for each registered ProtoField do... */ lua_rawgeti(L, LUA_REGISTRYINDEX, proto->fields); for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + if (lua_type(L, -1) == LUA_TNUMBER) { + /* part of free reference linked list, ignore */ + continue; + } ProtoField f = checkProtoField(L, -1); /* Memory ownership was previously transferred to epan in Proto_commit */ @@ -647,6 +683,10 @@ int wslua_deregister_protocols(lua_State* L) { /* for each registered ProtoExpert do... */ lua_rawgeti(L, LUA_REGISTRYINDEX, proto->expert_info_table_ref); for (lua_pushnil(L); lua_next(L, -2); lua_pop(L, 1)) { + if (lua_type(L, -1) == LUA_TNUMBER) { + /* part of free reference linked list, ignore */ + continue; + } ProtoExpert pe = checkProtoExpert(L,-1); /* Memory ownership was previously transferred to epan in Proto_commit */ @@ -708,6 +748,10 @@ int Proto_commit(lua_State* L) { /* for each ProtoField in the Lua table do... */ for (lua_pushnil(L); lua_next(L, 4); lua_pop(L, 1)) { + if (lua_type(L, -1) == LUA_TNUMBER) { + /* part of free reference linked list, ignore */ + continue; + } ProtoField f = checkProtoField(L,6); hf_register_info hfri = { NULL, { NULL, NULL, FT_NONE, 0, NULL, 0, NULL, HFILL } }; ettp = &(f->ett); @@ -744,6 +788,10 @@ int Proto_commit(lua_State* L) { /* for each ProtoExpert in the Lua table do... */ for (lua_pushnil(L); lua_next(L, 4); lua_pop(L, 1)) { + if (lua_type(L, -1) == LUA_TNUMBER) { + /* part of free reference linked list, ignore */ + continue; + } ProtoExpert e = checkProtoExpert(L,6); ei_register_info eiri = { NULL, { NULL, 0, 0, NULL, EXPFILL } }; diff --git a/epan/wslua/wslua_struct.c b/epan/wslua/wslua_struct.c index 7d62dc09..440a0900 100644 --- a/epan/wslua/wslua_struct.c +++ b/epan/wslua/wslua_struct.c @@ -410,7 +410,7 @@ WSLUA_CONSTRUCTOR Struct_pack (lua_State *L) { * given endianness and size. If the integer type is signed, this makes * the Lua number be +/- correctly as well. */ -static lua_Number getinteger (const gchar *buff, int endian, +static lua_Integer getinteger (const gchar *buff, int endian, int issigned, int size) { Uinttype l = 0; int i; @@ -427,12 +427,12 @@ static lua_Number getinteger (const gchar *buff, int endian, } } if (!issigned) - return (lua_Number)l; + return (lua_Integer)l; else { /* signed format */ Uinttype mask = (Uinttype)(~((Uinttype)0)) << (size*8 - 1); if (l & mask) /* negative value? */ l |= mask; /* signal extension */ - return (lua_Number)(Inttype)l; + return (lua_Integer)(Inttype)l; } } @@ -470,8 +470,8 @@ WSLUA_CONSTRUCTOR Struct_unpack (lua_State *L) { case 'b': case 'B': case 'h': case 'H': case 'l': case 'L': case 'T': case 'i': case 'I': { /* integer types */ int issigned = g_ascii_islower(opt); - lua_Number res = getinteger(data+pos, h.endian, issigned, (int)size); - lua_pushnumber(L, res); + lua_Integer res = getinteger(data+pos, h.endian, issigned, (int)size); + lua_pushinteger(L, res); break; } case 'e': { diff --git a/epan/wslua/wslua_tree.c b/epan/wslua/wslua_tree.c index 503b8b7b..5d8dc7c7 100644 --- a/epan/wslua/wslua_tree.c +++ b/epan/wslua/wslua_tree.c @@ -123,7 +123,7 @@ try_add_packet_field(lua_State *L, TreeItem tree_item, TvbRange tvbr, const int item = proto_tree_add_item_ret_int(tree_item->tree, hfid, tvbr->tvb->ws_tvb, tvbr->offset, tvbr->len, encoding, &ret); - lua_pushnumber(L, (lua_Number)ret); + lua_pushinteger(L, (lua_Integer)ret); lua_pushinteger(L, tvbr->offset + tvbr->len); } break; @@ -152,7 +152,7 @@ try_add_packet_field(lua_State *L, TreeItem tree_item, TvbRange tvbr, const int item = proto_tree_add_item_ret_uint(tree_item-> tree, hfid, tvbr->tvb->ws_tvb, tvbr->offset, tvbr->len, encoding, &ret); - lua_pushnumber(L, (lua_Number)ret); + lua_pushinteger(L, (lua_Integer)ret); lua_pushinteger(L, tvbr->offset + tvbr->len); } break; @@ -502,7 +502,7 @@ static int TreeItem_add_item_any(lua_State *L, gboolean little_endian) { switch(type) { case FT_PROTOCOL: item = proto_tree_add_item(tree_item->tree,hfid,tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len,ENC_NA); - lua_pushnumber(L,0); + lua_pushinteger(L,0); lua_insert(L,1); break; case FT_BOOLEAN: diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index 7951c7d9..f315e83e 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -135,7 +135,7 @@ WSLUA_METHOD Tvb_reported_len(lua_State* L) { /* Obtain the reported length (length on the network) of a <<lua_class_Tvb,`Tvb`>>. */ Tvb tvb = checkTvb(L,1); - lua_pushnumber(L,tvb_reported_length(tvb->ws_tvb)); + lua_pushinteger(L,tvb_reported_length(tvb->ws_tvb)); WSLUA_RETURN(1); /* The reported length of the <<lua_class_Tvb,`Tvb`>>. */ } @@ -143,7 +143,7 @@ WSLUA_METHOD Tvb_captured_len(lua_State* L) { /* Obtain the captured length (amount saved in the capture process) of a <<lua_class_Tvb,`Tvb`>>. */ Tvb tvb = checkTvb(L,1); - lua_pushnumber(L,tvb_captured_length(tvb->ws_tvb)); + lua_pushinteger(L,tvb_captured_length(tvb->ws_tvb)); WSLUA_RETURN(1); /* The captured length of the <<lua_class_Tvb,`Tvb`>>. */ } @@ -152,7 +152,7 @@ WSLUA_METHOD Tvb_len(lua_State* L) { Same as captured_len; kept only for backwards compatibility */ Tvb tvb = checkTvb(L,1); - lua_pushnumber(L,tvb_captured_length(tvb->ws_tvb)); + lua_pushinteger(L,tvb_captured_length(tvb->ws_tvb)); WSLUA_RETURN(1); /* The captured length of the <<lua_class_Tvb,`Tvb`>>. */ } @@ -163,7 +163,7 @@ WSLUA_METHOD Tvb_reported_length_remaining(lua_State* L) { Tvb tvb = checkTvb(L,1); int offset = (int) luaL_optinteger(L, Tvb_reported_length_remaining_OFFSET, 0); - lua_pushnumber(L,tvb_reported_length_remaining(tvb->ws_tvb, offset)); + lua_pushinteger(L,tvb_reported_length_remaining(tvb->ws_tvb, offset)); WSLUA_RETURN(1); /* The captured length of the <<lua_class_Tvb,`Tvb`>>. */ } @@ -176,9 +176,13 @@ WSLUA_METHOD Tvb_bytes(lua_State* L) { #define WSLUA_OPTARG_Tvb_bytes_LENGTH 3 /* The length (in octets) of the range. Defaults to until the end of the <<lua_class_Tvb,`Tvb`>>. */ Tvb tvb = checkTvb(L,1); GByteArray* ba; +#if LUA_VERSION_NUM >= 503 + int offset = (int)luaL_optinteger(L, WSLUA_OPTARG_Tvb_bytes_OFFSET, 0); + int len = (int)luaL_optinteger(L, WSLUA_OPTARG_Tvb_bytes_LENGTH, -1); +#else int offset = luaL_optint(L, WSLUA_OPTARG_Tvb_bytes_OFFSET, 0); int len = luaL_optint(L,WSLUA_OPTARG_Tvb_bytes_LENGTH,-1); - +#endif if (tvb->expired) { luaL_error(L,"expired tvb"); return 0; @@ -206,7 +210,7 @@ WSLUA_METHOD Tvb_offset(lua_State* L) { /* Returns the raw offset (from the beginning of the source <<lua_class_Tvb,`Tvb`>>) of a sub <<lua_class_Tvb,`Tvb`>>. */ Tvb tvb = checkTvb(L,1); - lua_pushnumber(L,tvb_raw_offset(tvb->ws_tvb)); + lua_pushinteger(L,tvb_raw_offset(tvb->ws_tvb)); WSLUA_RETURN(1); /* The raw offset of the <<lua_class_Tvb,`Tvb`>>. */ } @@ -437,16 +441,16 @@ WSLUA_METHOD TvbRange_uint(lua_State* L) { switch (tvbr->len) { case 1: - lua_pushnumber(L,tvb_get_guint8(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_guint8(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 2: - lua_pushnumber(L,tvb_get_ntohs(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntohs(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 3: - lua_pushnumber(L,tvb_get_ntoh24(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntoh24(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 4: - lua_pushnumber(L,tvb_get_ntohl(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntohl(tvbr->tvb->ws_tvb,tvbr->offset)); WSLUA_RETURN(1); /* The unsigned integer value. */ default: luaL_error(L,"TvbRange:uint() does not handle %d byte integers",tvbr->len); @@ -470,16 +474,16 @@ WSLUA_METHOD TvbRange_le_uint(lua_State* L) { switch (tvbr->len) { case 1: /* XXX unsigned anyway */ - lua_pushnumber(L,(lua_Number)(guint)tvb_get_guint8(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,(lua_Integer)(guint)tvb_get_guint8(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 2: - lua_pushnumber(L,tvb_get_letohs(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letohs(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 3: - lua_pushnumber(L,tvb_get_letoh24(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letoh24(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 4: - lua_pushnumber(L,tvb_get_letohl(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letohl(tvbr->tvb->ws_tvb,tvbr->offset)); WSLUA_RETURN(1); /* The unsigned integer value */ default: luaL_error(L,"TvbRange:le_uint() does not handle %d byte integers",tvbr->len); @@ -590,16 +594,16 @@ WSLUA_METHOD TvbRange_int(lua_State* L) { switch (tvbr->len) { case 1: - lua_pushnumber(L,tvb_get_gint8(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_gint8(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 2: - lua_pushnumber(L,tvb_get_ntohis(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntohis(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 3: - lua_pushnumber(L,tvb_get_ntohi24(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntohi24(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 4: - lua_pushnumber(L,tvb_get_ntohil(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_ntohil(tvbr->tvb->ws_tvb,tvbr->offset)); WSLUA_RETURN(1); /* The signed integer value. */ /* * XXX: @@ -629,16 +633,16 @@ WSLUA_METHOD TvbRange_le_int(lua_State* L) { switch (tvbr->len) { case 1: - lua_pushnumber(L,tvb_get_gint8(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_gint8(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 2: - lua_pushnumber(L,tvb_get_letohis(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letohis(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 3: - lua_pushnumber(L,tvb_get_letohi24(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letohi24(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 4: - lua_pushnumber(L,tvb_get_letohil(tvbr->tvb->ws_tvb,tvbr->offset)); + lua_pushinteger(L,tvb_get_letohil(tvbr->tvb->ws_tvb,tvbr->offset)); WSLUA_RETURN(1); /* The signed integer value. */ default: luaL_error(L,"TvbRange:le_int() does not handle %d byte integers",tvbr->len); @@ -1233,13 +1237,13 @@ WSLUA_METHOD TvbRange_bitfield(lua_State* L) { } if (len <= 8) { - lua_pushnumber(L,(lua_Number)(guint)tvb_get_bits8(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len)); + lua_pushinteger(L,(lua_Integer)(guint)tvb_get_bits8(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len)); return 1; } else if (len <= 16) { - lua_pushnumber(L,tvb_get_bits16(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len, FALSE)); + lua_pushinteger(L,tvb_get_bits16(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len, FALSE)); return 1; } else if (len <= 32) { - lua_pushnumber(L,tvb_get_bits32(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len, FALSE)); + lua_pushinteger(L,tvb_get_bits32(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len, FALSE)); return 1; } else if (len <= 64) { pushUInt64(L,tvb_get_bits64(tvbr->tvb->ws_tvb,tvbr->offset*8 + pos, len, FALSE)); @@ -1330,7 +1334,7 @@ WSLUA_METHOD TvbRange_len(lua_State* L) { luaL_error(L,"expired tvb"); return 0; } - lua_pushnumber(L,(lua_Number)tvbr->len); + lua_pushinteger(L,(lua_Integer)tvbr->len); return 1; } @@ -1343,7 +1347,7 @@ WSLUA_METHOD TvbRange_offset(lua_State* L) { luaL_error(L,"expired tvb"); return 0; } - lua_pushnumber(L,(lua_Number)tvbr->offset); + lua_pushinteger(L,(lua_Integer)tvbr->offset); return 1; } diff --git a/epan/wslua/wslua_wtap.c b/epan/wslua/wslua_wtap.c index 524ed7c3..9fa27879 100644 --- a/epan/wslua/wslua_wtap.c +++ b/epan/wslua/wslua_wtap.c @@ -85,7 +85,7 @@ WSLUA_FUNCTION wslua_wtap_name_to_file_type_subtype(lua_State* LS) { if (filetype == -1) lua_pushnil(LS); else - lua_pushnumber(LS,filetype); + lua_pushinteger(LS,filetype); WSLUA_RETURN(1); /* The filetype value for the file type with that name, or nil if there is no such file type. */ } @@ -96,7 +96,7 @@ WSLUA_FUNCTION wslua_wtap_pcap_file_type_subtype(lua_State* LS) { @since 3.2.12, 3.4.4 */ lua_Number filetype = wtap_pcap_file_type_subtype(); - lua_pushnumber(LS,filetype); + lua_pushinteger(LS,filetype); WSLUA_RETURN(1); /* The filetype value for pcap files. */ } @@ -107,7 +107,7 @@ WSLUA_FUNCTION wslua_wtap_pcap_nsec_file_type_subtype(lua_State* LS) { @since 3.2.12, 3.4.4 */ lua_Number filetype = wtap_pcap_nsec_file_type_subtype(); - lua_pushnumber(LS,filetype); + lua_pushinteger(LS,filetype); WSLUA_RETURN(1); /* The filetype value for nanosecond-resolution pcap files. */ } @@ -118,7 +118,7 @@ WSLUA_FUNCTION wslua_wtap_pcapng_file_type_subtype(lua_State* LS) { @since 3.2.12, 3.4.4 */ lua_Number filetype = wtap_pcapng_file_type_subtype(); - lua_pushnumber(LS,filetype); + lua_pushinteger(LS,filetype); WSLUA_RETURN(1); /* The filetype value for pcapng files. */ } @@ -148,7 +148,7 @@ extern void wslua_init_wtap_filetypes(lua_State* LS) { * it. */ lua_pushstring(LS, entry->name); - lua_pushnumber(LS, entry->ft); + lua_pushinteger(LS, entry->ft); /* * The -3 is the index, relative to the top of the stack, of * the table; the two elements on top of it are the ft and diff --git a/extcap/ciscodump.c b/extcap/ciscodump.c index 54751ed0..f9a61099 100644 --- a/extcap/ciscodump.c +++ b/extcap/ciscodump.c @@ -103,6 +103,7 @@ enum { OPT_SSHKEY, OPT_SSHKEY_PASSPHRASE, OPT_PROXYCOMMAND, + OPT_SSH_SHA1, OPT_REMOTE_COUNT }; @@ -2259,6 +2260,9 @@ static int list_config(char *interface, unsigned int remote_port) printf("arg {number=%u}{call--sshkey-passphrase}{display=SSH key passphrase}" "{type=password}{tooltip=Passphrase to unlock the SSH private key}" "{group=Authentication\n", inc++); + printf("arg {number=%u}{call=--ssh-sha1}{display=Support SHA-1 keys (deprecated)}" + "{type=boolflag}{tooltip=Support keys and key exchange algorithms using SHA-1 (deprecated)}{group=Authentication}" + "\n", inc++); printf("arg {number=%u}{call=--remote-interface}{display=Remote interface}" "{type=string}{required=true}{tooltip=The remote network interface used for capture" "}{group=Capture}\n", inc++); @@ -2343,6 +2347,7 @@ int main(int argc, char *argv[]) extcap_help_add_option(extcap_conf, "--sshkey <public key path>", "the path of the ssh key"); extcap_help_add_option(extcap_conf, "--sshkey-passphrase <public key passphrase>", "the passphrase to unlock public ssh"); extcap_help_add_option(extcap_conf, "--proxycommand <proxy command>", "the command to use as proxy for the ssh connection"); + extcap_help_add_option(extcap_conf, "--ssh-sha1", "support keys and key exchange using SHA-1 (deprecated)"); extcap_help_add_option(extcap_conf, "--remote-interface <iface>", "the remote capture interface"); extcap_help_add_option(extcap_conf, "--remote-filter <filter>", "a filter for remote capture " "(default: don't capture data for all interfaces IPs)"); @@ -2407,6 +2412,10 @@ int main(int argc, char *argv[]) ssh_params->proxycommand = g_strdup(ws_optarg); break; + case OPT_SSH_SHA1: + ssh_params->ssh_sha1 = true; + break; + case OPT_REMOTE_INTERFACE: g_free(remote_interface); remote_interface = g_strdup(ws_optarg); diff --git a/extcap/ssh-base.c b/extcap/ssh-base.c index 124b825d..be9717c5 100644 --- a/extcap/ssh-base.c +++ b/extcap/ssh-base.c @@ -21,6 +21,45 @@ #include <ws_attributes.h> #include <wsutil/wslog.h> +/* + * The unreleased 0.11.0 version of libssh has the ability to + * add algorithms to the default supported list by prepending + * "+" to the configuration list. For older versions, we have + * to specify all the algorithms we want, but as long as at + * least one succeeds the command won't fail. (That means that + * it's possible that we won't actually add support for SHA-1, + * say if it's running on a system in FIPS mode. We could parse + * the returned list to check.) + */ +#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0,11,0) +#define HOSTKEYS_SHA1 "+ssh-rsa" +#define KEY_EXCHANGE_SHA1 "+diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1" +#define HMAC_SHA1 "+hmac-sha1-etm@openssh.com,hmac-sha1" +#else +#define HOSTKEYS_SHA1 \ + "ssh-ed25519," \ + "ecdsa-sha2-nistp521," \ + "ecdsa-sha2-nistp384," \ + "ecdsa-sha2-nistp256," \ + "sk-ssh-ed25519@openssh.com," \ + "sk-ecdsa-sha2-nistp256@openssh.com," \ + "rsa-sha2-512," \ + "rsa-sha2-256," \ + "ssh-rsa" +#define KEY_EXCHANGE_SHA1 \ + "curve25519-sha256,curve25519-sha256@libssh.org," \ + "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521," \ + "diffie-hellman-group18-sha512,diffie-hellman-group16-sha512," \ + "diffie-hellman-group-exchange-sha256," \ + "diffie-hellman-group14-sha256," \ + "diffie-hellman-group-exchange-sha1," \ + "diffie-hellman-group14-sha1,diffie-hellman-group1-sha1" +#define HMAC_SHA1 \ + "hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com," \ + "hmac-sha2-256,hmac-sha2-512," \ + "hmac-sha1-etm@openssh.com,hmac-sha1" +#endif + static void extcap_log(int priority _U_, const char *function, const char *buffer, void *userdata _U_) { ws_debug("[%s] %s", function, buffer); @@ -68,6 +107,31 @@ ssh_session create_ssh_connection(const ssh_params_t* ssh_params, char** err_inf ssh_set_log_callback(extcap_log); } + if (ssh_params->ssh_sha1) { + if (ssh_options_set(sshs, SSH_OPTIONS_HOSTKEYS, HOSTKEYS_SHA1)) { + *err_info = ws_strdup_printf("Can't set host keys to allow SHA-1."); + goto failure; + } +#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0,8,3) + if (ssh_options_set(sshs, SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, HOSTKEYS_SHA1)) { + *err_info = ws_strdup_printf("Can't set public key algorithms to allow SSH-RSA (SHA-1)."); + goto failure; + } +#endif + if (ssh_options_set(sshs, SSH_OPTIONS_KEY_EXCHANGE, KEY_EXCHANGE_SHA1)) { + *err_info = ws_strdup_printf("Can't set key exchange methods to allow SHA-1."); + goto failure; + } + if (ssh_options_set(sshs, SSH_OPTIONS_HMAC_C_S, HMAC_SHA1)) { + *err_info = ws_strdup_printf("Can't set MAC client to server algorithms to allow SHA-1."); + goto failure; + } + if (ssh_options_set(sshs, SSH_OPTIONS_HMAC_S_C, HMAC_SHA1)) { + *err_info = ws_strdup_printf("Can't set MAC server to client algorithms to allow SHA-1."); + goto failure; + } + } + if (ssh_params->port != 0) { port = ssh_params->port; if (ssh_options_set(sshs, SSH_OPTIONS_PORT, &port)) { diff --git a/extcap/ssh-base.h b/extcap/ssh-base.h index 8283bffc..9ac59230 100644 --- a/extcap/ssh-base.h +++ b/extcap/ssh-base.h @@ -38,7 +38,8 @@ { "remote-count", ws_required_argument, NULL, OPT_REMOTE_COUNT}, \ { "sshkey", ws_required_argument, NULL, OPT_SSHKEY}, \ { "sshkey-passphrase", ws_required_argument, NULL, OPT_SSHKEY_PASSPHRASE}, \ - { "proxycommand", ws_required_argument, NULL, OPT_PROXYCOMMAND} + { "proxycommand", ws_required_argument, NULL, OPT_PROXYCOMMAND}, \ + { "ssh-sha1", ws_no_argument, NULL, OPT_SSH_SHA1} typedef struct _ssh_params { char* host; @@ -48,6 +49,7 @@ typedef struct _ssh_params { char* sshkey_path; char* sshkey_passphrase; char* proxycommand; + bool ssh_sha1; bool debug; } ssh_params_t; diff --git a/extcap/sshdump.c b/extcap/sshdump.c index 12864731..e4cfc793 100644 --- a/extcap/sshdump.c +++ b/extcap/sshdump.c @@ -57,6 +57,7 @@ enum { OPT_SSHKEY, OPT_SSHKEY_PASSPHRASE, OPT_PROXYCOMMAND, + OPT_SSH_SHA1, OPT_REMOTE_COUNT, OPT_REMOTE_SUDO, // Deprecated OPT_REMOTE_PRIV, @@ -346,6 +347,9 @@ static int list_config(char *interface, unsigned int remote_port) printf("arg {number=%u}{call=--proxycommand}{display=ProxyCommand}" "{type=string}{tooltip=The command to use as proxy for the SSH connection}" "{group=Authentication}\n", inc++); + printf("arg {number=%u}{call=--ssh-sha1}{display=Support SHA-1 keys (deprecated)}" + "{type=boolflag}{tooltip=Support keys and key exchange algorithms using SHA-1 (deprecated)}{group=Authentication}" + "\n", inc++); printf("arg {number=%u}{call=--remote-interface}{display=Remote interface}" "{type=string}{tooltip=The remote network interface used for capture" "}{group=Capture}\n", inc++); @@ -475,6 +479,7 @@ int main(int argc, char *argv[]) extcap_help_add_option(extcap_conf, "--sshkey <private key path>", "the path of the SSH key (OpenSSH format)"); extcap_help_add_option(extcap_conf, "--sshkey-passphrase <private key passphrase>", "the passphrase to unlock private SSH key"); extcap_help_add_option(extcap_conf, "--proxycommand <proxy command>", "the command to use as proxy for the SSH connection"); + extcap_help_add_option(extcap_conf, "--ssh-sha1", "support keys and key exchange using SHA-1 (deprecated)"); extcap_help_add_option(extcap_conf, "--remote-interface <iface>", "the remote capture interface"); extcap_help_add_option(extcap_conf, "--remote-capture-command-select <selection>", "dumpcap, tcpdump or other remote capture command"); extcap_help_add_option(extcap_conf, "--remote-capture-command <capture command>", "the remote capture command"); @@ -546,6 +551,10 @@ int main(int argc, char *argv[]) ssh_params->proxycommand = g_strdup(ws_optarg); break; + case OPT_SSH_SHA1: + ssh_params->ssh_sha1 = true; + break; + case OPT_REMOTE_INTERFACE: g_free(remote_interface); remote_interface = g_strdup(ws_optarg); diff --git a/extcap/wifidump.c b/extcap/wifidump.c index 489118eb..ba3a6364 100644 --- a/extcap/wifidump.c +++ b/extcap/wifidump.c @@ -59,6 +59,7 @@ enum { OPT_SSHKEY, OPT_SSHKEY_PASSPHRASE, OPT_PROXYCOMMAND, + OPT_SSH_SHA1, OPT_REMOTE_COUNT }; @@ -456,6 +457,10 @@ static int list_config(char *interface) printf("arg {number=%u}{call=--sshkey-passphrase}{display=SSH key passphrase}" "{type=password}{tooltip=Passphrase to unlock the SSH private key}{group=Authentication}\n", inc++); + printf("arg {number=%u}{call=--ssh-sha1}{display=Support SHA-1 keys (deprecated)}" + "{type=boolflag}{tooltip=Support keys and key exchange algorithms using SHA-1 (deprecated)}{group=Authentication}" + "\n", inc++); + // Capture tab printf("arg {number=%u}{call=--remote-interface}{display=Remote interface}" @@ -579,6 +584,7 @@ int main(int argc, char *argv[]) extcap_help_add_option(extcap_conf, "--remote-password <password>", "the remote SSH password. If not specified, ssh-agent and ssh-key are used"); extcap_help_add_option(extcap_conf, "--sshkey <public key path>", "the path of the ssh key"); extcap_help_add_option(extcap_conf, "--sshkey-passphrase <public key passphrase>", "the passphrase to unlock public ssh"); + extcap_help_add_option(extcap_conf, "--ssh-sha1", "support keys and key exchange using SHA-1 (deprecated)"); extcap_help_add_option(extcap_conf, "--remote-interface <iface>", "the remote capture interface"); extcap_help_add_option(extcap_conf, "--remote-channel-frequency <channel_frequency>", "the remote channel frequency in MHz"); extcap_help_add_option(extcap_conf, "--remote-channel-width <channel_width>", "the remote channel width in MHz"); @@ -641,6 +647,10 @@ int main(int argc, char *argv[]) memset(ws_optarg, 'X', strlen(ws_optarg)); break; + case OPT_SSH_SHA1: + ssh_params->ssh_sha1 = true; + break; + case OPT_REMOTE_INTERFACE: g_free(remote_interface); remote_interface = g_strdup(ws_optarg); diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 3240f8be..0a5e254b 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,4 +1,4 @@ -wireshark (4.2.2) unstable; urgency=low +wireshark (4.2.4) unstable; urgency=low * Self-made package diff --git a/packaging/debian/libwireshark17.symbols b/packaging/debian/libwireshark17.symbols index 035399ca..7f21fc10 100644 --- a/packaging/debian/libwireshark17.symbols +++ b/packaging/debian/libwireshark17.symbols @@ -278,6 +278,7 @@ libwireshark.so.17 libwireshark17 #MINVER# decode_zcl_time_in_100ms@Base 2.5.2 decode_zcl_time_in_minutes@Base 2.5.2 decode_zcl_time_in_seconds@Base 2.5.2 + decrement_dissection_depth@Base 4.2.4 delete_itu_tcap_subdissector@Base 1.9.1 deregister_depend_dissector@Base 2.1.0 destroy_print_stream@Base 1.12.0~rc1 @@ -997,6 +998,7 @@ libwireshark.so.17 libwireshark17 #MINVER# ieee802a_add_oui@Base 1.9.1 in_cksum@Base 1.9.1 in_cksum_ret_partial@Base 4.2.0 + increment_dissection_depth@Base 4.2.4 init_srt_table@Base 1.99.8 init_srt_table_row@Base 1.99.8 ip_checksum@Base 1.99.0 diff --git a/packaging/macosx/ChmodBPF/install-scripts/postinstall b/packaging/macosx/ChmodBPF/install-scripts/postinstall index 1f11eb3e..8f5035de 100755 --- a/packaging/macosx/ChmodBPF/install-scripts/postinstall +++ b/packaging/macosx/ChmodBPF/install-scripts/postinstall @@ -32,4 +32,9 @@ chown root:wheel "$CHMOD_BPF_PLIST" # Clean up our legacy startup item if it's still around. rm -rf /Library/StartupItems/ChmodBPF +# Try to bootout first, otherwise bootstrap will fail with +# "Bootstrap failed: 5: Input/output error" +# if org.wireshark.ChmodBPF is already loaded. +launchctl bootout system "$CHMOD_BPF_PLIST" > /dev/null 2>&1 + launchctl bootstrap system "$CHMOD_BPF_PLIST" diff --git a/packaging/nsis/CMakeLists.txt b/packaging/nsis/CMakeLists.txt index d0c48663..5f9043db 100644 --- a/packaging/nsis/CMakeLists.txt +++ b/packaging/nsis/CMakeLists.txt @@ -22,7 +22,6 @@ set(WIRESHARK_NSIS_GENERATED_FILES ${WIRESHARK_NSIS_GENERATED_FILES} PARENT_SCOP set(WIRESHARK_NSIS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/wireshark.nsi ${CMAKE_CURRENT_SOURCE_DIR}/wireshark-common.nsh - ${CMAKE_CURRENT_SOURCE_DIR}/GetWindowsVersion.nsh ${CMAKE_CURRENT_SOURCE_DIR}/servicelib.nsh ${CMAKE_CURRENT_SOURCE_DIR}/NpcapPage.ini ${CMAKE_CURRENT_SOURCE_DIR}/USBPcapPage.ini @@ -41,7 +40,6 @@ set(LOGRAY_NSIS_FILES logray.nsi uninstall-logray.nsi logray-common.nsh - GetWindowsVersion.nsh servicelib.nsh NpcapPage.ini USBPcapPage.ini diff --git a/packaging/nsis/GetWindowsVersion.nsh b/packaging/nsis/GetWindowsVersion.nsh deleted file mode 100644 index d0201298..00000000 --- a/packaging/nsis/GetWindowsVersion.nsh +++ /dev/null @@ -1,190 +0,0 @@ -; GetWindowsVersion 4.1.1 (2015-06-22) - alternate script with server versions -; -; https://nsis.sourceforge.io/Get_Windows_version -; -; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/ -; Update by Joost Verburg -; Update (Macro, Define, Windows 7 detection) - John T. Haller of PortableApps.com - 2008-01-07 -; Update (Windows 8 detection) - Marek Mizanin (Zanir) - 2013-02-07 -; Update (Windows 8.1 detection) - John T. Haller of PortableApps.com - 2014-04-04 -; Update (Windows 2008, 2008R2, 2012 and 2012R2 detection) - Francisco Simoões Filho franksimoes@gmail.com - 2014-08-25 -; Update (Windows 10 TP detection) - John T. Haller of PortableApps.com - 2014-10-01 -; Update (Windows 10 TP4 and 2016 detection, and added include guards) - Kairu - 2015-06-22 -; -; Usage: ${GetWindowsVersion} $R0 -; -; $R0 contains: 95, 98, ME, NT x.x, 2000, XP, 2003, Vista, 2008, 7, 2008R2, -; 8, 2012, 8.1, 2012R2, 10.0, 2016 or '' (for unknown) - -!ifndef __GET_WINDOWS_VERSION_NSH -!define __GET_WINDOWS_VERSION_NSH - -Function GetWindowsVersion - - Push $R0 - Push $R1 - Push $R2 - - ClearErrors - - ; check if Windows NT family - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - - IfErrors 0 lbl_winnt - - ; we are not NT - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber - - StrCpy $R1 $R0 1 - StrCmp $R1 '4' 0 lbl_error - - StrCpy $R1 $R0 3 - - StrCmp $R1 '4.0' lbl_win32_95 - StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98 - - lbl_win32_95: - StrCpy $R0 '95' - Goto lbl_done - - lbl_win32_98: - StrCpy $R0 '98' - Goto lbl_done - - lbl_win32_ME: - StrCpy $R0 'ME' - Goto lbl_done - - lbl_winnt: - - ; check if Windows is Client or Server. - ReadRegStr $R2 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" InstallationType - - StrCpy $R1 $R0 1 - - StrCmp $R1 '3' lbl_winnt_x - StrCmp $R1 '4' lbl_winnt_x - - StrCpy $R1 $R0 3 - - StrCmp $R1 '5.0' lbl_winnt_2000 - StrCmp $R1 '5.1' lbl_winnt_XP - StrCmp $R1 '5.2' lbl_winnt_2003 - StrCmp $R1 '6.0' lbl_winnt_vista_2008 - StrCmp $R1 '6.1' lbl_winnt_7_2008R2 - StrCmp $R1 '6.2' lbl_winnt_8_2012 - StrCmp $R1 '6.3' lbl_winnt_81_2012R2 - StrCmp $R1 '6.4' lbl_winnt_10_2016 ; the early Windows 10 tech previews used version 6.4 - - StrCpy $R1 $R0 4 - - StrCmp $R1 '10.0' lbl_winnt_10_2016 - Goto lbl_error - - lbl_winnt_x: - StrCpy $R0 "NT $R0" 6 - Goto lbl_done - - lbl_winnt_2000: - Strcpy $R0 '2000' - Goto lbl_done - - lbl_winnt_XP: - Strcpy $R0 'XP' - Goto lbl_done - - lbl_winnt_2003: - Strcpy $R0 '2003' - Goto lbl_done - - ;----------------- Family - Vista / 2008 ------------- - lbl_winnt_vista_2008: - StrCmp $R2 'Client' go_vista - StrCmp $R2 'Server' go_2008 - - go_vista: - Strcpy $R0 'Vista' - Goto lbl_done - - go_2008: - Strcpy $R0 '2008' - Goto lbl_done - ;----------------------------------------------------- - - ;----------------- Family - 7 / 2008R2 ------------- - lbl_winnt_7_2008R2: - StrCmp $R2 'Client' go_7 - StrCmp $R2 'Server' go_2008R2 - - go_7: - Strcpy $R0 '7' - Goto lbl_done - - go_2008R2: - Strcpy $R0 '2008R2' - Goto lbl_done - ;----------------------------------------------------- - - ;----------------- Family - 8 / 2012 ------------- - lbl_winnt_8_2012: - StrCmp $R2 'Client' go_8 - StrCmp $R2 'Server' go_2012 - - go_8: - Strcpy $R0 '8' - Goto lbl_done - - go_2012: - Strcpy $R0 '2012' - Goto lbl_done - ;----------------------------------------------------- - - ;----------------- Family - 8.1 / 2012R2 ------------- - lbl_winnt_81_2012R2: - StrCmp $R2 'Client' go_81 - StrCmp $R2 'Server' go_2012R2 - - go_81: - Strcpy $R0 '8.1' - Goto lbl_done - - go_2012R2: - Strcpy $R0 '2012R2' - Goto lbl_done - ;----------------------------------------------------- - - ;----------------- Family - 10 / 2016 ------------- - lbl_winnt_10_2016: - StrCmp $R2 'Client' go_10 - StrCmp $R2 'Server' go_2016 - - go_10: - Strcpy $R0 '10.0' - Goto lbl_done - - go_2016: - Strcpy $R0 '2016' - Goto lbl_done - ;----------------------------------------------------- - - lbl_error: - Strcpy $R0 '' - lbl_done: - - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -!macro GetWindowsVersion OUTPUT_VALUE - Call GetWindowsVersion - Pop `${OUTPUT_VALUE}` -!macroend - -!define GetWindowsVersion '!insertmacro "GetWindowsVersion"' - -!endif diff --git a/packaging/nsis/logray.nsi b/packaging/nsis/logray.nsi index e87e3ca3..5aed3b28 100644 --- a/packaging/nsis/logray.nsi +++ b/packaging/nsis/logray.nsi @@ -250,11 +250,11 @@ Var WIX_DISPLAYVERSION Var WIX_UNINSTALLSTRING ; ============================================================================ -; 64-bit support +; Platform and OS version checks ; ============================================================================ -!include x64.nsh -!include "GetWindowsVersion.nsh" +!include x64.nsh +!include WinVer.nsh !include WinMessages.nsh Function .onInit @@ -266,9 +266,6 @@ Function .onInit ${EndIf} !endif - ; Get the Windows version - ${GetWindowsVersion} $R0 - ; This should match the following: ; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in ; - The <compatibility><application> section in image\wireshark.exe.manifest.in @@ -277,23 +274,13 @@ Function .onInit ; Uncomment to test. ; MessageBox MB_OK "You're running Windows $R0." - ; Check if we're able to run with this version - StrCmp $R0 '95' lbl_winversion_unsupported - StrCmp $R0 '98' lbl_winversion_unsupported - StrCmp $R0 'ME' lbl_winversion_unsupported - StrCmp $R0 'NT 4.0' lbl_winversion_unsupported - StrCmp $R0 '2000' lbl_winversion_unsupported - StrCmp $R0 'XP' lbl_winversion_unsupported - StrCmp $R0 '2003' lbl_winversion_unsupported - StrCmp $R0 'Vista' lbl_winversion_unsupported - StrCmp $R0 '2008' lbl_winversion_unsupported - Goto lbl_winversion_supported - -lbl_winversion_unsupported: + +${If} ${AtMostWin8.1} +${OrIf} ${AtMostWin2012R2} MessageBox MB_OK \ - "Windows $R0 is not supported." \ - /SD IDOK + "Windows 10, Server 2016, and later are required." /SD IDOK Quit +${EndIf} lbl_winversion_supported: !insertmacro IsLograyRunning diff --git a/packaging/nsis/windeployqt-to-nsis.py b/packaging/nsis/windeployqt-to-nsis.py index 2881f315..f3e3e9a5 100644 --- a/packaging/nsis/windeployqt-to-nsis.py +++ b/packaging/nsis/windeployqt-to-nsis.py @@ -74,6 +74,10 @@ with open(args.outfile, 'w') as f: line = line.strip() if not line or line.startswith('#'): continue + if line.startswith('Adding in plugin'): + # https://bugreports.qt.io/browse/QTBUG-122257 + # Affects 6.6.0 - 6.6.2 + continue path, relative = line.split(" ") rel_path = os.path.split(relative) if len(rel_path) > 1: diff --git a/packaging/nsis/wireshark.nsi b/packaging/nsis/wireshark.nsi index 5271cd33..0f2d55dc 100644 --- a/packaging/nsis/wireshark.nsi +++ b/packaging/nsis/wireshark.nsi @@ -282,11 +282,11 @@ Var WIX_DISPLAYVERSION Var WIX_UNINSTALLSTRING ; ============================================================================ -; 64-bit support +; Platform and OS version checks ; ============================================================================ -!include x64.nsh -!include "GetWindowsVersion.nsh" +!include x64.nsh +!include WinVer.nsh !include WinMessages.nsh Function .onInit @@ -309,9 +309,6 @@ Function .onInit ${EndIf} !endif - ; Get the Windows version - ${GetWindowsVersion} $R0 - ; This should match the following: ; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in ; - The <compatibility><application> section in image\wireshark.exe.manifest.in @@ -320,49 +317,51 @@ Function .onInit ; Uncomment to test. ; MessageBox MB_OK "You're running Windows $R0." - ; Check if we're able to run with this version - StrCmp $R0 '95' lbl_winversion_unsupported - StrCmp $R0 '98' lbl_winversion_unsupported - StrCmp $R0 'ME' lbl_winversion_unsupported - StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4 - StrCmp $R0 '2000' lbl_winversion_unsupported_2000 - StrCmp $R0 'XP' lbl_winversion_unsupported_xp_2003 - StrCmp $R0 '2003' lbl_winversion_unsupported_xp_2003 - StrCmp $R0 'Vista' lbl_winversion_unsupported_vista_2008 - StrCmp $R0 '2008' lbl_winversion_unsupported_vista_2008 - Goto lbl_winversion_supported - -lbl_winversion_unsupported: +${If} ${AtMostWinME} + MessageBox MB_OK \ + "Windows 95, 98, and ME are no longer supported.$\nPlease install Ethereal 0.99.0 instead." \ + /SD IDOK + Quit +${EndIf} + +${If} ${IsWinNT4} MessageBox MB_OK \ - "Windows $R0 is no longer supported.$\nPlease install Ethereal 0.99.0 instead." \ - /SD IDOK + "Windows NT 4.0 is no longer supported.$\nPlease install Wireshark 0.99.4 instead." \ + /SD IDOK Quit +${EndIf} -lbl_winversion_unsupported_nt4: +${If} ${IsWin2000} MessageBox MB_OK \ - "Windows $R0 is no longer supported.$\nPlease install Wireshark 0.99.4 instead." \ - /SD IDOK + "Windows 2000 is no longer supported.$\nPlease install Wireshark 1.2 or 1.0 instead." \ + /SD IDOK Quit +${EndIf} -lbl_winversion_unsupported_2000: +${If} ${IsWinXP} +${OrIf} ${IsWin2003} MessageBox MB_OK \ - "Windows $R0 is no longer supported.$\nPlease install Wireshark 1.2 or 1.0 instead." \ - /SD IDOK + "Windows XP and Server 2003 are no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \ + /SD IDOK Quit +${EndIf} -lbl_winversion_unsupported_xp_2003: +${If} ${IsWinVista} +${OrIf} ${IsWin2008} MessageBox MB_OK \ - "Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \ - /SD IDOK + "Windows Vista and Server 2008 are no longer supported.$\nPlease install ${PROGRAM_NAME} 2.2 instead." \ + /SD IDOK Quit +${EndIf} -lbl_winversion_unsupported_vista_2008: +${If} ${AtMostWin8.1} +${OrIf} ${AtMostWin2012R2} MessageBox MB_OK \ - "Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 2.2 instead." \ - /SD IDOK + "Windows 7, 8, 8.1, Server 2008R2, and Server 2012 are no longer supported.$\nPlease install ${PROGRAM_NAME} 4.0 instead." \ + /SD IDOK Quit +${EndIf} -lbl_winversion_supported: !insertmacro IsWiresharkRunning ; Default control values. diff --git a/packaging/source/git-export-release.sh.in b/packaging/source/git-export-release.sh.in index 854af25e..51adfb73 100755 --- a/packaging/source/git-export-release.sh.in +++ b/packaging/source/git-export-release.sh.in @@ -44,7 +44,7 @@ TARBALL="${DESTDIR}/wireshark-${PROJECT_VERSION}.tar.xz" # A tarball produced by 'git archive' will have the $Format string # substituted due to the use of 'export-subst' in .gitattributes. # shellcheck disable=SC2016 -COMMIT='40459284278611128aac5cef35a563218933f8da' +COMMIT='1fe5bce8d665c0d64e1af63545421c67596db165' if [[ $COMMIT != \$F* ]] ; then # This file was extracted from a tarball produced by git archive diff --git a/packaging/wix/Prerequisites.wxi b/packaging/wix/Prerequisites.wxi index 54e8416a..aa03a45f 100644 --- a/packaging/wix/Prerequisites.wxi +++ b/packaging/wix/Prerequisites.wxi @@ -17,7 +17,7 @@ <!-- This should match the following: - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in - The <compatibility><application> section in image\wireshark.exe.manifest.in - - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi + - The WinVer parts of packaging\nsis\wireshark.nsi --> <Condition Message="Windows 2000 is no longer supported. Please install $(var.WiresharkName) 1.2 or 1.0 instead."> <![CDATA[Installed OR (VersionNT < 500) OR (VersionNT > 500)]]> @@ -35,8 +35,12 @@ <![CDATA[Installed OR (VersionNT < 600) OR (VersionNT > 600)]]> </Condition> - <Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 7, Windows Server 2008R2, or higher."> - <![CDATA[Installed OR (VersionNT >= 601)]]> + <Condition Message="Windows 7, 8, 8.1, Server 2008R2, and Server 2012 are no longer supported. Please install $(var.WiresharkName) 4.0 instead."> + <![CDATA[Installed OR (VersionNT < 601) OR (VersionNT > 602)]]> + </Condition> + + <Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 10, Windows Server 2016, or higher."> + <![CDATA[Installed OR (VersionNT >= 603)]]> </Condition> <!-- diff --git a/plugins/epan/gryphon/packet-gryphon.c b/plugins/epan/gryphon/packet-gryphon.c index 6df68a31..08da00fd 100644 --- a/plugins/epan/gryphon/packet-gryphon.c +++ b/plugins/epan/gryphon/packet-gryphon.c @@ -1118,6 +1118,7 @@ decode_event(tvbuff_t *tvb, int offset, proto_tree *pt) } static int +// NOLINTNEXTLINE(misc-no-recursion) decode_misc (tvbuff_t *tvb, int offset, packet_info* pinfo, proto_tree *pt) { tvbuff_t *next_tvb; @@ -2715,6 +2716,7 @@ resp_restore_session(tvbuff_t *tvb, int offset, proto_tree *pt) } static int +// NOLINTNEXTLINE(misc-no-recursion) cmd_addresp(tvbuff_t *tvb, int offset, packet_info* pinfo, proto_tree *pt) { proto_item *item; @@ -3700,6 +3702,7 @@ get_conversation_data(packet_info* pinfo) } static int +// NOLINTNEXTLINE(misc-no-recursion) decode_command(tvbuff_t *tvb, packet_info* pinfo, int msglen, int offset, int dst, proto_tree *pt) { guint32 cmd; @@ -3751,6 +3754,7 @@ decode_command(tvbuff_t *tvb, packet_info* pinfo, int msglen, int offset, int ds ft = proto_tree_add_subtree_format(pt, tvb, offset, msglen, ett_gryphon_command_data, NULL, "Data: (%d byte%s)", msglen, plurality(msglen, "", "s")); + increment_dissection_depth(pinfo); switch (cmd) { case CMD_INIT: @@ -3958,12 +3962,14 @@ decode_command(tvbuff_t *tvb, packet_info* pinfo, int msglen, int offset, int ds offset += msglen; break; } + decrement_dissection_depth(pinfo); } return offset; } static int +// NOLINTNEXTLINE(misc-no-recursion) decode_response(tvbuff_t *tvb, packet_info* pinfo, int offset, int src, proto_tree *pt) { int msglen; @@ -4042,6 +4048,7 @@ decode_response(tvbuff_t *tvb, packet_info* pinfo, int offset, int src, proto_tr ft = proto_tree_add_subtree_format(pt, tvb, offset, msglen, ett_gryphon_response_data, NULL, "Data: (%d byte%s)", msglen, plurality(msglen, "", "s")); + increment_dissection_depth(pinfo); switch (cmd) { case CMD_GET_CONFIG: @@ -4191,6 +4198,7 @@ decode_response(tvbuff_t *tvb, packet_info* pinfo, int offset, int src, proto_tr proto_tree_add_item(ft, hf_gryphon_data, tvb, offset, msglen, ENC_NA); offset += msglen; } + decrement_dissection_depth(pinfo); } return offset; @@ -4202,6 +4210,7 @@ decode_response(tvbuff_t *tvb, packet_info* pinfo, int offset, int src, proto_tr * So, this function will decode a packet and return the offset. */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_gryphon_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_msgresp_add) { proto_tree *gryphon_tree; @@ -4273,6 +4282,7 @@ dissect_gryphon_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gbo body_tree = proto_tree_add_subtree(gryphon_tree, tvb, offset, msglen, ett_gryphon_body, NULL, "Body"); + increment_dissection_depth(pinfo); switch (frmtyp) { case GY_FT_CMD: offset = decode_command(tvb, pinfo, msglen, offset, dest, body_tree); @@ -4299,6 +4309,7 @@ dissect_gryphon_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gbo proto_tree_add_item(body_tree, hf_gryphon_data, tvb, offset, msglen, ENC_NA); break; } + decrement_dissection_depth(pinfo); /*debug*/ /*i = msgend - offset;*/ diff --git a/plugins/epan/opcua/opcua.c b/plugins/epan/opcua/opcua.c index 7eec5b69..33d966a9 100644 --- a/plugins/epan/opcua/opcua.c +++ b/plugins/epan/opcua/opcua.c @@ -282,7 +282,7 @@ static int dissect_opcua_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree * arbitrary value, so we have to fake the numbers in the stored fragments. this way Wireshark reassembles the message, as it expects the fragment sequence numbers to start at 0 */ - for (frag_i = frag_msg->next; frag_i; frag_i = frag_i->next) {} + for (frag_i = frag_msg->next; frag_i && frag_i->next; frag_i = frag_i->next) {} if (frag_i) { opcua_seqnum = frag_i->offset + 1; } else { diff --git a/plugins/epan/opcua/opcua_simpletypes.c b/plugins/epan/opcua/opcua_simpletypes.c index e913ac69..24bcbbce 100644 --- a/plugins/epan/opcua/opcua_simpletypes.c +++ b/plugins/epan/opcua/opcua_simpletypes.c @@ -793,6 +793,7 @@ proto_item* parseDateTime(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U return item; } +// NOLINTNEXTLINE(misc-no-recursion) void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { static int * const diag_mask[] = {&hf_opcua_diag_mask_symbolicflag, @@ -827,6 +828,7 @@ void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gi proto_tree_add_bitmask(subtree, tvb, iOffset, hf_opcua_diag_mask, ett_opcua_diagnosticinfo_encodingmask, diag_mask, ENC_LITTLE_ENDIAN); iOffset++; + increment_dissection_depth(pinfo); if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_SYMBOLICID_FLAG) { parseInt32(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_symbolicid); @@ -855,6 +857,7 @@ void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gi { parseDiagnosticInfo(subtree, tvb, pinfo, &iOffset, "Inner DiagnosticInfo"); } + decrement_dissection_depth(pinfo); proto_item_set_end(ti, tvb, iOffset); *pOffset = iOffset; @@ -875,6 +878,7 @@ void parseQualifiedName(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gin proto_item_set_end(ti, tvb, *pOffset); } +// NOLINTNEXTLINE(misc-no-recursion) void parseDataValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { static int * const datavalue_mask[] = {&hf_opcua_datavalue_mask_valueflag, @@ -895,6 +899,7 @@ void parseDataValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *p proto_tree_add_bitmask(subtree, tvb, iOffset, hf_opcua_datavalue_mask, ett_opcua_datavalue_encodingmask, datavalue_mask, ENC_LITTLE_ENDIAN); iOffset++; + increment_dissection_depth(pinfo); if (EncodingMask & DATAVALUE_ENCODINGBYTE_VALUE) { parseVariant(subtree, tvb, pinfo, &iOffset, "Value"); @@ -919,11 +924,13 @@ void parseDataValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *p { parseUInt16(subtree, tvb, pinfo, &iOffset, hf_opcua_ServerPicoseconds); } + decrement_dissection_depth(pinfo); proto_item_set_end(ti, tvb, iOffset); *pOffset = iOffset; } +// NOLINTNEXTLINE(misc-no-recursion) void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; @@ -951,6 +958,7 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOf if (EncodingMask & VARIANT_ARRAYMASK) { /* type is encoded in bits 0-5 */ + increment_dissection_depth(pinfo); switch(EncodingMask & 0x3f) { case OpcUaType_Null: break; @@ -980,6 +988,7 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOf case OpcUaType_DataValue: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "DataValue", "DataValue", parseDataValue, ett_opcua_array_DataValue); break; case OpcUaType_Variant: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "Variant", "Variant", parseVariant, ett_opcua_array_Variant); break; } + decrement_dissection_depth(pinfo); if (EncodingMask & VARIANT_ARRAYDIMENSIONS) { @@ -1009,6 +1018,7 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOf else { /* type is encoded in bits 0-5 */ + increment_dissection_depth(pinfo); switch(EncodingMask & 0x3f) { case OpcUaType_Null: break; @@ -1038,6 +1048,7 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOf case OpcUaType_DataValue: parseDataValue(subtree, tvb, pinfo, &iOffset, "Value"); break; case OpcUaType_Variant: parseVariant(subtree, tvb, pinfo, &iOffset, "Value"); break; } + decrement_dissection_depth(pinfo); } proto_item_set_end(ti, tvb, iOffset); diff --git a/plugins/epan/profinet/packet-dcerpc-pn-io.c b/plugins/epan/profinet/packet-dcerpc-pn-io.c index 34e08aee..a5afda86 100644 --- a/plugins/epan/profinet/packet-dcerpc-pn-io.c +++ b/plugins/epan/profinet/packet-dcerpc-pn-io.c @@ -4519,6 +4519,7 @@ dissect_Diagnosis(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_AlarmUserStructure(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint16 *body_length, guint16 u16UserStructureIdentifier) @@ -4580,6 +4581,7 @@ dissect_AlarmUserStructure(tvbuff_t *tvb, int offset, /* dissect the alarm notification block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_AlarmNotification_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 body_length) @@ -4595,6 +4597,8 @@ dissect_AlarmNotification_block(tvbuff_t *tvb, int offset, return offset; } + increment_dissection_depth(pinfo); + offset = dissect_Alarm_header(tvb, offset, pinfo, tree, item, drep); offset = dissect_dcerpc_uint32(tvb, offset, pinfo, tree, drep, @@ -4619,6 +4623,8 @@ dissect_AlarmNotification_block(tvbuff_t *tvb, int offset, offset = dissect_AlarmUserStructure(tvb, offset, pinfo, tree, item, drep, &body_length, u16UserStructureIdentifier); } + decrement_dissection_depth(pinfo); + return offset; } @@ -4788,6 +4794,7 @@ dissect_IandM4_block(tvbuff_t *tvb, int offset, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_IandM5_block(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint8 *drep _U_, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -5299,6 +5306,7 @@ guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) /* dissect the AssetManagementInfo */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_AssetManagementInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 *drep) { @@ -5321,6 +5329,7 @@ packet_info *pinfo _U_, proto_tree *tree, guint8 *drep) /* dissect the AssetManagementData block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_AssetManagementData_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) @@ -5330,7 +5339,9 @@ guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) "Block version %u.%u not implemented yet!", u8BlockVersionHigh, u8BlockVersionLow); return offset; } + increment_dissection_depth(pinfo); offset = dissect_AssetManagementInfo(tvb, offset, pinfo, tree, drep); + decrement_dissection_depth(pinfo); return offset; } @@ -5490,6 +5501,7 @@ dissect_RecordInputDataObjectElement_block(tvbuff_t *tvb, int offset, /* dissect the RecordOutputDataObjectElement block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_RecordOutputDataObjectElement_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -6056,6 +6068,7 @@ dissect_SubmoduleListBlock(tvbuff_t *tvb, int offset, /* dissect the PDevData block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDevData_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -6122,6 +6135,7 @@ dissect_CheckMAUTypeExtension_block(tvbuff_t *tvb, int offset, /* dissect the PDPortDataAdjust block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDPortData_Adjust_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -6162,6 +6176,7 @@ dissect_PDPortData_Adjust_block(tvbuff_t *tvb, int offset, /* dissect the PDPortDataCheck blocks */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDPortData_Check_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -6359,6 +6374,7 @@ dissect_PDPortDataReal_block(tvbuff_t *tvb, int offset, /* dissect the PDPortDataRealExtended blocks */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDPortDataRealExtended_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) { @@ -6395,6 +6411,7 @@ dissect_PDPortDataRealExtended_block(tvbuff_t *tvb, int offset, packet_info *pin } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDInterfaceMrpDataAdjust_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) { @@ -6479,6 +6496,7 @@ dissect_PDInterfaceMrpDataAdjust_block(tvbuff_t *tvb, int offset, static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDInterfaceMrpDataReal_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) { @@ -6556,6 +6574,7 @@ dissect_PDInterfaceMrpDataReal_block(tvbuff_t *tvb, int offset, static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDInterfaceMrpDataCheck_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -7167,6 +7186,7 @@ dissect_CheckPortState_block(tvbuff_t *tvb, int offset, /* dissect the PDPortFODataReal block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDPortFODataReal_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -7440,6 +7460,7 @@ dissect_AdjustDCPBoundary_block(tvbuff_t *tvb, int offset, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_MrpInstanceDataAdjust_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) { @@ -7485,6 +7506,7 @@ dissect_MrpInstanceDataAdjust_block(tvbuff_t *tvb, int offset, } static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_MrpInstanceDataReal_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) { @@ -7595,6 +7617,7 @@ dissect_PDInterfaceAdjust_block(tvbuff_t *tvb, int offset, /* TSNNetworkControlDataReal */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_TSNNetworkControlDataReal_block(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree, proto_item* item _U_, guint8* drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -7707,6 +7730,7 @@ dissect_TSNNetworkControlDataReal_block(tvbuff_t* tvb, int offset, /* TSNNetworkControlDataAdjust */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_TSNNetworkControlDataAdjust_block(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree, proto_item* item _U_, guint8* drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -7906,6 +7930,7 @@ dissect_TSNSyncTreeData_block(tvbuff_t* tvb, int offset, /* TSNDomainPortConfigBlock */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_TSNDomainPortConfig_block(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree, proto_item* item _U_, guint8* drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -8066,6 +8091,7 @@ dissect_TSNTimeData_block(tvbuff_t* tvb, int offset, /* TSNUploadNetworkAttributesBlock */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_TSNUploadNetworkAttributes_block(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree, proto_item* item _U_, guint8* drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -8171,6 +8197,7 @@ dissect_TSNExpectedNeighbor_block(tvbuff_t* tvb, int offset, /* TSNExpectedNetworkAttributesBlock */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_TSNExpectedNetworkAttributes_block(tvbuff_t* tvb, int offset, packet_info* pinfo, proto_tree* tree, proto_item* item _U_, guint8* drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -8805,6 +8832,7 @@ dissect_PDSyncData_block(tvbuff_t *tvb, int offset, /* dissect the PDIRData block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDIRData_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -9209,6 +9237,7 @@ dissect_PDIRBeginEndData_block(tvbuff_t *tvb, int offset, /* dissect the DiagnosisData block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_DiagnosisData_block(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint8 *drep _U_, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 body_length) @@ -9257,6 +9286,7 @@ dissect_DiagnosisData_block(tvbuff_t *tvb, int offset, proto_item_append_text(sub_item, " reserved"); } offset = offset +2; /* Advance behind ChannelNumber */ + increment_dissection_depth(pinfo); /* ChannelProperties */ offset = dissect_ChannelProperties(tvb, offset, pinfo, tree, item, drep); body_length-=8; @@ -9281,6 +9311,7 @@ dissect_DiagnosisData_block(tvbuff_t *tvb, int offset, offset = dissect_AlarmUserStructure(tvb, offset, pinfo, tree, item, drep, &body_length, u16UserStructureIdentifier); } + decrement_dissection_depth(pinfo); return offset; } @@ -9379,6 +9410,7 @@ dissect_IOCRProperties(tvbuff_t *tvb, int offset, /* dissect the ARData block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_ARData_block(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint8 *drep _U_, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BlockLength) { @@ -9419,6 +9451,7 @@ dissect_ARData_block(tvbuff_t *tvb, int offset, i32EndOffset = offset + u16BlockLength; offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep, hf_pn_io_number_of_ars, &u16NumberOfARs); + increment_dissection_depth(pinfo); /* BlockversionLow: 0 */ if (u8BlockVersionLow == 0) { while (u16NumberOfARs--) { @@ -9667,6 +9700,7 @@ dissect_ARData_block(tvbuff_t *tvb, int offset, proto_item_set_len(ar_item, offset - u32ARDataStart); } } + decrement_dissection_depth(pinfo); return offset; } @@ -9849,6 +9883,7 @@ dissect_FSParameter_block(tvbuff_t *tvb, int offset, /* dissect the FSUDataAdjust block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDInterfaceFSUDataAdjust_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -9878,6 +9913,7 @@ dissect_PDInterfaceFSUDataAdjust_block(tvbuff_t *tvb, int offset, /* dissect the ARFSUDataAdjust block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_ARFSUDataAdjust_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -11159,6 +11195,7 @@ dissect_RSInfoBlock_block(tvbuff_t *tvb, int offset, /* dissect the PDIRSubframeData block 0x022a */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_PDIRSubframeData_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow) { @@ -12152,6 +12189,7 @@ dissect_CIMSNMPAdjust_block(tvbuff_t *tvb, int offset, /* dissect the MultipleBlockHeader block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_MultipleBlockHeader_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16BodyLength) @@ -12190,6 +12228,7 @@ dissect_MultipleBlockHeader_block(tvbuff_t *tvb, int offset, /* dissect Combined Object Container Content block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_COContainerContent_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, proto_item *item, guint8 *drep, guint8 u8BlockVersionHigh, guint8 u8BlockVersionLow, guint16 u16Index, guint32 *u32RecDataLen, pnio_ar_t **ar) @@ -12438,6 +12477,7 @@ dissect_RS_AckEvent_block(tvbuff_t *tvb, int offset, /* dissect one PN-IO block (depending on the block type) */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, guint16 *u16Index, guint32 *u32RecDataLen, pnio_ar_t **ar) { @@ -12493,6 +12533,7 @@ dissect_block(tvbuff_t *tvb, int offset, proto_item_append_text(sub_item, " Block_Length: %d greater than remaining Bytes, trying with Blocklen = remaining (%d)", u16BodyLength, remainingBytes); u16BodyLength = remainingBytes; } + increment_dissection_depth(pinfo); switch (u16BlockType) { case(0x0001): case(0x0002): @@ -12928,6 +12969,7 @@ dissect_block(tvbuff_t *tvb, int offset, default: dissect_pn_undecoded(tvb, offset, pinfo, sub_tree, u16BodyLength); } + decrement_dissection_depth(pinfo); offset += u16BodyLength; proto_item_set_len(sub_item, offset - u32SubStart); @@ -12938,6 +12980,7 @@ dissect_block(tvbuff_t *tvb, int offset, /* dissect any PN-IO block */ static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_a_block(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { @@ -12956,6 +12999,7 @@ dissect_a_block(tvbuff_t *tvb, int offset, /* dissect any number of PN-IO blocks */ int +// NOLINTNEXTLINE(misc-no-recursion) dissect_blocks(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { @@ -13909,6 +13953,7 @@ dissect_RecordDataWrite(tvbuff_t *tvb, int offset, #define PN_IO_MAX_RECURSION_DEPTH 100 static int +// NOLINTNEXTLINE(misc-no-recursion) dissect_IODWriteReq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, pnio_ar_t **ar, guint recursion_count) { @@ -13921,6 +13966,8 @@ dissect_IODWriteReq(tvbuff_t *tvb, int offset, return tvb_captured_length(tvb); } + increment_dissection_depth(pinfo); + /* IODWriteHeader */ offset = dissect_block(tvb, offset, pinfo, tree, drep, &u16Index, &u32RecDataLen, ar); @@ -13950,6 +13997,8 @@ dissect_IODWriteReq(tvbuff_t *tvb, int offset, } } + decrement_dissection_depth(pinfo); + return offset; } diff --git a/plugins/epan/wimaxasncp/packet-wimaxasncp.c b/plugins/epan/wimaxasncp/packet-wimaxasncp.c index 082d9eae..4de30ff3 100644 --- a/plugins/epan/wimaxasncp/packet-wimaxasncp.c +++ b/plugins/epan/wimaxasncp/packet-wimaxasncp.c @@ -1789,6 +1789,7 @@ static void wimaxasncp_dissect_tlv_value( /* ========================================================================= */ +// NOLINTNEXTLINE(misc-no-recursion) static guint dissect_wimaxasncp_tlvs( tvbuff_t *tvb, packet_info *pinfo, @@ -1897,8 +1898,9 @@ static guint dissect_wimaxasncp_tlvs( MIN(length, tvb_captured_length_remaining(tvb, offset)), length); - /* N.B. This is a recursive call... */ + increment_dissection_depth(pinfo); dissect_wimaxasncp_tlvs(tlv_tvb, pinfo, tlv_tree); + decrement_dissection_depth(pinfo); } else { diff --git a/resources/logray.exe.manifest.in b/resources/logray.exe.manifest.in index 8488bdff..407861d4 100644 --- a/resources/logray.exe.manifest.in +++ b/resources/logray.exe.manifest.in @@ -33,15 +33,14 @@ <application> <!-- This should match the following: - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in - - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi - - The VersionNT parts of packaging\wix\Prerequisites.wxi + - The WinVer parts of packaging\nsis\logray.nsi --> <!-- Windows 7 --> - <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> + <!-- <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> --> <!-- Windows 8 --> - <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> + <!-- <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> --> <!-- Windows 8.1 --> - <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> + <!-- <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> --> <!-- Windows 10 & 11 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> </application> diff --git a/resources/wireshark.exe.manifest.in b/resources/wireshark.exe.manifest.in index b1d932c8..8f996103 100644 --- a/resources/wireshark.exe.manifest.in +++ b/resources/wireshark.exe.manifest.in @@ -33,15 +33,15 @@ <application> <!-- This should match the following: - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in - - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi + - The WinVer parts of packaging\nsis\wireshark.nsi - The VersionNT parts of packaging\wix\Prerequisites.wxi --> <!-- Windows 7 --> - <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> + <!-- <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> --> <!-- Windows 8 --> - <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> + <!-- <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> --> <!-- Windows 8.1 --> - <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> + <!-- <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> --> <!-- Windows 10 & 11 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> </application> diff --git a/ringbuffer.c b/ringbuffer.c index 9d810d2d..d1433fde 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -272,8 +272,8 @@ ringbuf_init(const char *capfile_name, guint num_files, gboolean group_read_acce gchar *compress_type, gboolean has_nametimenum) { unsigned int i; - char *pfx, *last_pathsep; - gchar *save_file; + char *pfx; + char *dir_name, *base_name; rb_data.files = NULL; rb_data.curr_file_num = 0; @@ -304,32 +304,31 @@ ringbuf_init(const char *capfile_name, guint num_files, gboolean group_read_acce /* set file name prefix/suffix */ - save_file = g_strdup(capfile_name); - last_pathsep = strrchr(save_file, G_DIR_SEPARATOR); - pfx = strrchr(save_file,'.'); - if (pfx != NULL && (last_pathsep == NULL || pfx > last_pathsep)) { - /* The pathname has a "." in it, and it's in the last component - of the pathname (because there is either only one component, - i.e. last_pathsep is null as there are no path separators, - or the "." is after the path separator before the last - component. + base_name = g_path_get_basename(capfile_name); + dir_name = g_path_get_dirname(capfile_name); + pfx = strrchr(base_name, '.'); + if (pfx != NULL) { + /* The basename has a "." in it. Treat it as a separator between the rest of the file name and the file name suffix, and arrange that the names given to the ring buffer files have the specified suffix, i.e. put the - changing part of the name *before* the suffix. */ + changing part of the name *before* the suffix. + + XXX - If we ever handle writing compressed files directly + (#19159) make sure we deal with any compression suffix + appropriately. */ pfx[0] = '\0'; - rb_data.fprefix = g_strdup(save_file); + rb_data.fprefix = g_build_filename(dir_name, base_name, NULL); pfx[0] = '.'; /* restore capfile_name */ rb_data.fsuffix = g_strdup(pfx); } else { - /* Either there's no "." in the pathname, or it's in a directory - component, so the last component has no suffix. */ - rb_data.fprefix = g_strdup(save_file); + /* The last component has no suffix. */ + rb_data.fprefix = g_strdup(capfile_name); rb_data.fsuffix = NULL; } - g_free(save_file); - save_file = NULL; + g_free(dir_name); + g_free(base_name); /* allocate rb_file structures (only one if unlimited since there is no need to save all file names in that case) */ diff --git a/sharkd_session.c b/sharkd_session.c index 18071d77..8c378260 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -1220,11 +1220,16 @@ sharkd_session_process_load(const char *buf, const jsmntok_t *tokens, int count) * Process status request * * Output object with attributes: - * (m) frames - count of currently loaded frames - * (m) duration - time difference between time of first frame, and last loaded frame - * (o) filename - capture filename - * (o) filesize - capture filesize - * (o) columns - array of column titles + * (m) frames - count of currently loaded frames + * (m) duration - time difference between time of first frame, and last loaded frame + * (o) filename - capture filename + * (o) filesize - capture filesize + * (o) columns - array of column titles + * (o) column_info - array of column infos, array of object with attributes: + * 'title' - column title + * 'format' - column format (%x or %Cus:<expr>:<occurrence> if COL_CUSTOM) + * 'visible' - true if column is visible + * 'resolved' - true if column is resolved */ static void sharkd_session_process_status(void) @@ -1258,6 +1263,24 @@ sharkd_session_process_status(void) sharkd_json_value_string(NULL, get_column_title(i)); } sharkd_json_array_close(); + + sharkd_json_array_open("column_info"); + for (int i = 0; i < cfile.cinfo.num_cols; ++i) + { + int fmt = get_column_format(i); + sharkd_json_object_open(NULL); + sharkd_json_value_string("title", get_column_title(i)); + if (fmt != COL_CUSTOM) + { + sharkd_json_value_string("format", col_format_to_string(fmt)); + } else { + sharkd_json_value_stringf("format", "%s:%s:%d", col_format_to_string(fmt), get_column_custom_fields(i), get_column_custom_occurrence(i)); + } + sharkd_json_value_anyf("visible", get_column_visible(i) ? "true" : "false"); + sharkd_json_value_anyf("resolved", get_column_resolved(i) ? "true" : "false"); + sharkd_json_object_close(); + } + sharkd_json_array_close(); } sharkd_json_result_epilogue(); @@ -5836,7 +5859,7 @@ sharkd_session_process(char *buf, const jsmntok_t *tokens, int count) int sharkd_session_main(int mode_setting) { - char buf[2 * 1024]; + char buf[8 * 1024]; jsmntok_t *tokens = NULL; int tokens_max = -1; diff --git a/test/fixtures_ws.py b/test/fixtures_ws.py index ceee4025..0bd4c391 100644 --- a/test/fixtures_ws.py +++ b/test/fixtures_ws.py @@ -182,6 +182,7 @@ def features(cmd_tshark, make_env): have_gnutls='with GnuTLS' in tshark_v, have_pkcs11='and PKCS #11 support' in tshark_v, have_brotli='with brotli' in tshark_v, + have_zstd='with Zstandard' in tshark_v, have_plugins='binary plugins supported' in tshark_v, ) diff --git a/test/lua/acme_file.lua b/test/lua/acme_file.lua index f159ba2d..59c48dc6 100644 --- a/test/lua/acme_file.lua +++ b/test/lua/acme_file.lua @@ -438,7 +438,9 @@ function State:get_timestamp(line, file_position, seeking) self.nstime = NSTime(timet, milli * 1000000) self.packets[file_position][TTIME] = self.nstime - timet = timet + (milli/1000) + -- For Lua 5.3 and later, make sure we have an integer via a method + -- that also works on Lua 5.1. (os.date doesn't handle fractional seconds.) + timet = timet + math.floor(milli/1000) dprint2("found time of ", os.date("%c",timet), " with value=",timet) return self.nstime, line_pos diff --git a/test/lua/inspect.lua b/test/lua/inspect.lua index 6b4aff9c..2d967128 100644 --- a/test/lua/inspect.lua +++ b/test/lua/inspect.lua @@ -416,7 +416,10 @@ function inspect.marshal(inString, options) inString = "return " .. inString end - local t = assert(loadstring(inString))() + -- loadstring was removed after Lua 5.1, load given a string + -- argument does the same thing + local load = (_VERSION == "Lua 5.1") and loadstring or load + local t = assert(load(inString))() removeIndex(t) diff --git a/test/lua/proto.lua b/test/lua/proto.lua index cc038989..b4306c69 100644 --- a/test/lua/proto.lua +++ b/test/lua/proto.lua @@ -9,8 +9,9 @@ local testlib = require("testlib") local OTHER = "other" -- expected number of runs per type +-- # of fields test doesn't work on Lua 5.4 local taptests = { - [OTHER]=48 + [OTHER]=47 } testlib.init(taptests) @@ -156,7 +157,10 @@ local myfields = { pf_trasaction_id, pf_flags, --dns.fields = myfields testlib.test(OTHER,"Proto.fields-set", pcall(setValue,dns,"fields",myfields)) testlib.test(OTHER,"Proto.fields-get", pcall(getValue,dns,"fields")) -testlib.test(OTHER,"Proto.fields-get", #dns.fields == #myfields) +-- This test doesn't work on Lua 5.4 because the # operator includes the +-- reference(s) that are the linked list of allocated and free keys, +-- starting with LUA_RIDX_LAST + 1 == 3. +-- testlib.test(OTHER,"Proto.fields-get", #dns.fields == #myfields) local pf_foo = ProtoField.uint16("myfoo.com", "Fooishly", base.DEC, rcodes, 0x000F) diff --git a/test/lua/verify_globals.lua b/test/lua/verify_globals.lua index dbed8ceb..5e61ffce 100644 --- a/test/lua/verify_globals.lua +++ b/test/lua/verify_globals.lua @@ -35,13 +35,20 @@ local ignore = { "getfenv", "io.gfind", "setfenv", + "loadstring", -- call load with a string argument + "math.log10", -- call math.log with second argument "math.mod", + "module", "newproxy", + "package.loaders", -- renamed package.searchers + "package.seeall", -- used with module "string.gfind", "table.foreach", "table.foreachi", "table.getn", + "table.maxn", "table.setn", + "unpack", -- replaced by table.unpack -- in Lua 5.2+ only "bit32", @@ -55,6 +62,14 @@ local ignore = { "table.pack", "table.unpack", + -- removed in Lua 5.3 + "math.atan2", -- use math.atan with two arguments + "math.cosh", + "math.sinh", + "math.tanh", + "math.pow", -- use x^y + "math.frexp", + "math.ldexp", -- use x * 2.0^exp } diff --git a/test/suite_dfilter/group_function.py b/test/suite_dfilter/group_function.py index 08c9795c..c8a0c522 100644 --- a/test/suite_dfilter/group_function.py +++ b/test/suite_dfilter/group_function.py @@ -85,3 +85,11 @@ class TestFunctionNested: def test_function_nested_1(self, checkDFilterCount): dfilter = 'abs(min(tcp.srcport, tcp.dstport)) == 80' checkDFilterCount(dfilter, 1) + + def test_function_nested_2(self, checkDFilterCount): + dfilter = 'min(tcp.srcport * 10, tcp.dstport * 10, udp.srcport * 10, udp.dstport * 10) == 800' + checkDFilterCount(dfilter, 1) + + def test_function_nested_3(self, checkDFilterCount): + dfilter = 'min(len(tcp.payload), len(udp.payload)) == 153' + checkDFilterCount(dfilter, 1) diff --git a/test/suite_dissection.py b/test/suite_dissection.py index ee90c930..18eb4a2e 100644 --- a/test/suite_dissection.py +++ b/test/suite_dissection.py @@ -919,7 +919,9 @@ class TestDissectCommunityId: self.check_baseline(dirs, stdout, 'communityid-filtered.txt') class TestDecompressMongo: - def test_decompress_zstd(self, cmd_tshark, capture_file, test_env): + def test_decompress_zstd(self, cmd_tshark, features, capture_file, test_env): + if not features.have_zstd: + pytest.skip('Requires zstd.') stdout = subprocess.check_output((cmd_tshark, '-d', 'tcp.port==27017,mongo', '-r', capture_file('mongo-zstd.pcapng'), diff --git a/test/suite_sharkd.py b/test/suite_sharkd.py index db736dcc..d8c1ef2f 100644 --- a/test/suite_sharkd.py +++ b/test/suite_sharkd.py @@ -75,7 +75,23 @@ class TestSharkd: check_sharkd_session(( {"jsonrpc":"2.0", "id":1, "method":"status"}, ), ( - {"jsonrpc":"2.0","id":1,"result":{"frames":0,"duration":0.000000000,"columns":["No.","Time","Source","Destination","Protocol","Length","Info"]}}, + {"jsonrpc":"2.0","id":1,"result":{"frames":0,"duration":0.000000000,"columns":["No.","Time","Source","Destination","Protocol","Length","Info"], + "column_info":[{ + "title":"No.","format": "%m","visible":True, "resolved":True + },{ + "title": "Time", "format": "%t", "visible":True, "resolved":True + },{ + "title": "Source", "format": "%s", "visible":True, "resolved":True + },{ + "title": "Destination", "format": "%d", "visible":True, "resolved":True + },{ + "title": "Protocol", "format": "%p", "visible":True, "resolved":True + },{ + "title": "Length", "format": "%L", "visible":True, "resolved":True + },{ + "title": "Info", "format": "%i", "visible":True, "resolved":True + }] + }}, )) def test_sharkd_req_status(self, check_sharkd_session, capture_file): @@ -88,7 +104,23 @@ class TestSharkd: {"jsonrpc":"2.0","id":1,"result":{"status":"OK"}}, {"jsonrpc":"2.0","id":2,"result":{"frames": 4, "duration": 0.070345000, "filename": "dhcp.pcap", "filesize": 1400, - "columns":["No.","Time","Source","Destination","Protocol","Length","Info"]}}, + "columns":["No.","Time","Source","Destination","Protocol","Length","Info"], + "column_info":[{ + "title":"No.","format": "%m","visible":True, "resolved":True + },{ + "title": "Time", "format": "%t", "visible":True, "resolved":True + },{ + "title": "Source", "format": "%s", "visible":True, "resolved":True + },{ + "title": "Destination", "format": "%d", "visible":True, "resolved":True + },{ + "title": "Protocol", "format": "%p", "visible":True, "resolved":True + },{ + "title": "Length", "format": "%L", "visible":True, "resolved":True + },{ + "title": "Info", "format": "%i", "visible":True, "resolved":True + }] + }}, )) def test_sharkd_req_analyse(self, check_sharkd_session, capture_file): diff --git a/text2pcap.c b/text2pcap.c index aa3a279f..e1df716a 100644 --- a/text2pcap.c +++ b/text2pcap.c @@ -480,6 +480,7 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump case 'P': hdr_export_pdu = TRUE; + wtap_encap_type = WTAP_ENCAP_WIRESHARK_UPPER_PDU; info->payload = ws_optarg; break; diff --git a/tools/asn2wrs.py b/tools/asn2wrs.py index 6669be82..7f72443b 100755 --- a/tools/asn2wrs.py +++ b/tools/asn2wrs.py @@ -1550,21 +1550,19 @@ class EthCtx: if self.conform.check_item('PDU', tname): out += self.output_proto_root() - cycle_size = 0 + cycle_funcs = [] if self.eth_dep_cycle: for cur_cycle in self.eth_dep_cycle: t = self.type[cur_cycle[0]]['ethname'] if t == tname: - cycle_size = len(cur_cycle) + cycle_funcs = cur_cycle break - if cycle_size > 0: + if len(cycle_funcs) > 1: out += f'''\ - const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers))); - const unsigned cycle_size = {cycle_size}; - unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id); - DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH); - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size); + // {' → '.join(cycle_funcs)} + actx->pinfo->dissection_depth += {len(cycle_funcs) - 1}; + increment_dissection_depth(actx->pinfo); ''' if self.conform.get_fn_presence(self.eth_type[tname]['ref'][0]): @@ -1578,17 +1576,18 @@ class EthCtx: # out += self.conform.get_fn_text(tname, 'FN_FTR') #el - add_recursion_check = False + cycle_funcs = [] if self.eth_dep_cycle: for cur_cycle in self.eth_dep_cycle: t = self.type[cur_cycle[0]]['ethname'] if t == tname: - add_recursion_check = True + cycle_funcs = cur_cycle break - if add_recursion_check: - out += '''\ - p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size); + if len(cycle_funcs) > 1: + out += f'''\ + actx->pinfo->dissection_depth -= {len(cycle_funcs) - 1}; + decrement_dissection_depth(actx->pinfo); ''' if self.conform.get_fn_presence(self.eth_type[tname]['ref'][0]): @@ -1875,8 +1874,6 @@ class EthCtx: fx.write('\n') i += 1 fx.write('\n') - if add_depth_define: - fx.write('#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen.\n') for t in self.eth_type_ord1: if self.eth_type[t]['import']: continue diff --git a/tools/check_typed_item_calls.py b/tools/check_typed_item_calls.py index 4800203e..24520c6e 100755 --- a/tools/check_typed_item_calls.py +++ b/tools/check_typed_item_calls.py @@ -305,7 +305,8 @@ class ProtoTreeAddItemCheck(APICheck): 'seq_info->txt_enc | ENC_NA', 'BASE_SHOW_UTF_8_PRINTABLE', 'dhcp_secs_endian', - 'is_mdns ? ENC_UTF_8|ENC_NA : ENC_ASCII|ENC_NA' + 'is_mdns ? ENC_UTF_8|ENC_NA : ENC_ASCII|ENC_NA', + 'xl_encoding' }: global warnings_found diff --git a/tools/macos-setup-brew.sh b/tools/macos-setup-brew.sh index 17c92ced..910f7e86 100755 --- a/tools/macos-setup-brew.sh +++ b/tools/macos-setup-brew.sh @@ -108,7 +108,6 @@ ADDITIONAL_LIST=( libsmi libssh libxml2 - lua@5.1 lz4 minizip opus @@ -140,8 +139,13 @@ fi install_formulae "${ACTUAL_LIST[@]}" +if [ $INSTALL_OPTIONAL -ne 0 ] ; then + brew install lua@5.1 || printf "Lua 5.1 installation failed.\\n" +fi + if [ $INSTALL_DMG_DEPS -ne 0 ] ; then - pip3 install dmgbuild + printf "Sorry, you'll have to install dmgbuild yourself for the time being.\\n" + # pip3 install dmgbuild fi if [ $INSTALL_SPARKLE_DEPS -ne 0 ] ; then @@ -149,7 +153,8 @@ if [ $INSTALL_SPARKLE_DEPS -ne 0 ] ; then fi if [ $INSTALL_TEST_DEPS -ne 0 ] ; then - pip3 install pytest pytest-xdist + printf "Sorry, you'll have to install pytest and pytest-xdist yourself for the time being.\\n" + # pip3 install pytest pytest-xdist fi # Uncomment to add PNG compression utilities used by compress-pngs: diff --git a/tools/make-packet-dcm.py b/tools/make-packet-dcm.py index 028bde4e..51cbcf10 100755 --- a/tools/make-packet-dcm.py +++ b/tools/make-packet-dcm.py @@ -196,7 +196,7 @@ typedef struct dcm_tag { const gboolean add_to_summary; /* Add to parent's item description */ } dcm_tag_t; -static dcm_tag_t dcm_tag_data[] = { +static dcm_tag_t const dcm_tag_data[] = { /* Command Tags */ """ + text_for_rows(cmd_rows) + """ @@ -233,7 +233,7 @@ typedef struct dcm_uid { """ + "\n".join(f'#define {uid_define_name(uid)} "{uid[0]}"' for uid in uid_rows if uid[1] != '(Retired)') + """ -static dcm_uid_t dcm_uid_data[] = { +static dcm_uid_t const dcm_uid_data[] = { """ + "\n".join(f' {{ {uid_define_name(uid)}, "{uid[1]}", "{uid[3]}"}},' for uid in uid_rows)+ """ }; diff --git a/tools/make-pci-ids.py b/tools/make-pci-ids.py index 0a77f766..093637d7 100755 --- a/tools/make-pci-ids.py +++ b/tools/make-pci-ids.py @@ -44,7 +44,7 @@ typedef struct uint16_t did; uint16_t svid; uint16_t ssid; - char *name; + const char *name; } pci_id_t; @@ -52,14 +52,14 @@ typedef struct { uint16_t vid; uint16_t count; - pci_id_t *ids_ptr; + pci_id_t const *ids_ptr; } pci_vid_index_t; """ CODE_POSTFIX = """ -static pci_vid_index_t *get_vid_index(uint16_t vid) +static pci_vid_index_t const *get_vid_index(uint16_t vid) { uint32_t start_index = 0; uint32_t end_index = 0; @@ -96,9 +96,9 @@ static pci_vid_index_t *get_vid_index(uint16_t vid) const char *pci_id_str(uint16_t vid, uint16_t did, uint16_t svid, uint16_t ssid) { unsigned int i; - static char *not_found = \"Not found\"; - pci_vid_index_t *index_ptr; - pci_id_t *ids_ptr; + static const char *not_found = \"Not found\"; + pci_vid_index_t const *index_ptr; + pci_id_t const *ids_ptr; index_ptr = get_vid_index(vid); @@ -184,7 +184,7 @@ def main(): did = -1 svid = -1 ssid = -1 - out_lines += "pci_id_t pci_vid_%04X[] = {\n" % (vid) + out_lines += "static pci_id_t const pci_vid_%04X[] = {\n" % (vid) out_lines += "{0x%04X, 0xFFFF, 0xFFFF, 0xFFFF, \"%s(0x%04X)\"},\n" % (vid, words[1].strip(), vid) id_list.append(vid) continue @@ -227,7 +227,7 @@ def main(): out_lines += "}; /* pci_vid_%04X[] */\n" % (vid) count_list.append(entries) - out_lines += "\npci_vid_index_t pci_vid_index[] = {\n" + out_lines += "\nstatic pci_vid_index_t const pci_vid_index[] = {\n" vendor_count = len(id_list) device_count = 0 @@ -240,10 +240,10 @@ def main(): out_lines += CODE_POSTFIX if vendor_count < MIN_VENDOR_COUNT: - exit_msg(f'Too view vendors. Wanted {MIN_VENDOR_COUNT}, got {vendor_count}.') + exit_msg(f'Too few vendors. Wanted {MIN_VENDOR_COUNT}, got {vendor_count}.') if device_count < MIN_DEVICE_COUNT: - exit_msg(f'Too view devices. Wanted {MIN_DEVICE_COUNT}, got {device_count}.') + exit_msg(f'Too few devices. Wanted {MIN_DEVICE_COUNT}, got {device_count}.') with open(OUTPUT_FILE, "w", encoding="utf-8") as pci_ids_f: pci_ids_f.write(out_lines) diff --git a/tools/make-services.py b/tools/make-services.py index e608af7e..0f832bec 100755 --- a/tools/make-services.py +++ b/tools/make-services.py @@ -43,7 +43,7 @@ def parse_port(port_str): if len(p) == 1: return tuple([int(p[0])]) if len(p) == 2: - return tuple([int(p[0]), int(p[1])]) + return tuple(range(int(p[0]), int(p[1]) + 1)) except ValueError: pass return () diff --git a/tools/make-version.py b/tools/make-version.py index 4adc7b29..69470995 100755 --- a/tools/make-version.py +++ b/tools/make-version.py @@ -44,8 +44,8 @@ GIT_ABBREV_LENGTH = 12 # If the text "$Format" is still present, it means that # git archive did not replace the $Format string, which # means that this not a git archive. -GIT_EXPORT_SUBST_H = '40459284278611128aac5cef35a563218933f8da' -GIT_EXPORT_SUBST_D = 'tag: wireshark-4.2.2, tag: v4.2.2, refs/merge-requests/13920/head, refs/keep-around/40459284278611128aac5cef35a563218933f8da' +GIT_EXPORT_SUBST_H = '1fe5bce8d665c0d64e1af63545421c67596db165' +GIT_EXPORT_SUBST_D = 'tag: wireshark-4.2.4, tag: v4.2.4, refs/merge-requests/15008/head, refs/keep-around/1fe5bce8d665c0d64e1af63545421c67596db165' IS_GIT_ARCHIVE = not GIT_EXPORT_SUBST_H.startswith('$Format') diff --git a/tools/msys2-setup.sh b/tools/msys2-setup.sh index 0ca63299..be78607e 100644 --- a/tools/msys2-setup.sh +++ b/tools/msys2-setup.sh @@ -16,6 +16,7 @@ function print_usage() { printf "The basic usage installs the needed software\\n\\n" printf "Usage: %s [--install-optional] [...other options...]\\n" "$0" printf "\\t--install-optional: install optional software as well\\n" + printf "\\t--install-nsis-deps: install packages required to build NSIS installer\\n" printf "\\t--install-test-deps: install packages required to run all tests\\n" printf "\\t--install-all: install everything\\n" printf "\\t[other]: other options are passed as-is to pacman\\n" @@ -34,11 +35,15 @@ for arg; do --install-optional) ADDITIONAL=1 ;; + --install-nsis-deps) + NSISDEPS=1 + ;; --install-test-deps) TESTDEPS=1 ;; --install-all) ADDITIONAL=1 + NSISDEPS=1 TESTDEPS=1 ;; *) @@ -51,9 +56,11 @@ PACKAGE_PREFIX="${MINGW_PACKAGE_PREFIX:-mingw-w64-x86_64}" # # Lua packaging is kind of a mess. Lua 5.2 is not available. Some packages have -# a hard dependy on LuaJIT and it conflicts with Lua 5.1 and vice-versa. +# a hard dependency on LuaJIT and it conflicts with Lua 5.1 and vice-versa. # This will probably have to be fixed by the MSYS2 maintainers. -# XXX Is this still true? +# XXX Is this still true? We can use Lua 5.3 and 5.4 now, though we still +# might want to package our own version to use our UTF-8 on Windows patch +# (though we don't apply that patch yet.) # BASIC_LIST="base-devel \ git \ @@ -100,6 +107,8 @@ ADDITIONAL_LIST="${PACKAGE_PREFIX}-asciidoctor \ ${PACKAGE_PREFIX}-perl \ ${PACKAGE_PREFIX}-ntldd" +NSISDEPS_LIST="${PACKAGE_PREFIX}-nsis" + TESTDEPS_LIST="${PACKAGE_PREFIX}-python-pytest \ ${PACKAGE_PREFIX}-python-pytest-xdist" @@ -110,6 +119,11 @@ then ACTUAL_LIST="$ACTUAL_LIST $ADDITIONAL_LIST" fi +if [ $NSISDEPS -ne 0 ] +then + ACTUAL_LIST="$ACTUAL_LIST $NSISDEPS_LIST" +fi + if [ $TESTDEPS -ne 0 ] then ACTUAL_LIST="$ACTUAL_LIST $TESTDEPS_LIST" @@ -123,6 +137,11 @@ then printf "\n*** Optional packages not installed. Rerun with --install-optional to have them.\n" fi +if [ $NSISDEPS -eq 0 ] +then + printf "\n*** NSIS installer deps not installed. Rerun with --install-nsis-deps to have them.\n" +fi + if [ $TESTDEPS -eq 0 ] then printf "\n*** Test deps not installed. Rerun with --install-test-deps to have them.\n" diff --git a/tools/win-setup.ps1 b/tools/win-setup.ps1 index 0e2f7507..741c44d5 100644 --- a/tools/win-setup.ps1 +++ b/tools/win-setup.ps1 @@ -74,8 +74,8 @@ $X64Archives = @{ "AirPcap/AirPcap_Devpack_4_1_0_1622.zip" = "09d637f28a79b1d2ecb09f35436271a90c0f69bd0a1ee82b803abaaf63c18a69"; "bcg729/bcg729-1.0.4-win64ws.zip" = "9a095fda4c39860d96f0c568830faa6651cd17635f68e27aa6de46c689aa0ee2"; "brotli/brotli-1.0.9-1-win64ws.zip" = "3f8d24aec8668201994327ff8d8542fe507d1d468a500a1aec50d0415f695aab"; - "c-ares/c-ares-1.19.1-1-x64-windows-ws.zip" = "cecd95f125a34b6f1d5dfc9586792077cb70820764ffc10d43b0617c1861ae85"; - "gnutls/gnutls-3.8.2-1-x64-mingw-dynamic-ws.zip" = "6d8d30724e66fdf5370a78b67dbcbbdd00d2c4209cfb6eb43c0ee5a25fe18f1c"; + "c-ares/c-ares-1.27.0-1-x64-windows-ws.zip" = "c9f1fb4836d55ae3aca0be077d2363678454820f9efad5c09371351a8770b5fc"; + "gnutls/gnutls-3.8.3-1-x64-mingw-dynamic-ws.zip" = "0d8f99029319e1967fd916586eecfd776a9b564614468b233b6eda8bc23ca20d"; "krb5/krb5-1.20.1-1-x64-windows-ws.zip" = "a1e5c582afce6e2f72f0f5bd66df2c0f3cc984532a1da5314fc89d7b7f29cdbf"; "libgcrypt/libgcrypt-1.10.2-2-x64-mingw-dynamic-ws.zip" = "477cfce91d791b34df75a5ad83626f1ac2ee147eff7965e52266a4fc3da0f920"; "libilbc/libilbc-2.0.2-4-x64-windows-ws.zip" = "4f35a1ffa03c89bf473f38249282a7867b203988d2b6d3d2f0924764619fd5f5"; @@ -101,8 +101,8 @@ $X64Archives = @{ $Arm64Archives = @{ "bcg729/bcg729-1.1.1-1-win64armws.zip" = "f4d76b9acf0d0e12e87a020e9805d136a0e8775e061eeec23910a10828153625"; "brotli/brotli-1.0.9-1-win64armws.zip" = "5ba1b62ebc514d55c3eae85a00ff107e587b6e7cb1275e2d33fcddcd49f8e2af"; - "c-ares/c-ares-1.19.1-1-arm64-windows-ws.zip" = "ec13f3ca07c1916872d08d3abaec3eaeac266dc2befdbc15d5a1317f2a1dbe3c"; - "gnutls/gnutls-3.8.2-1-arm64-mingw-dynamic-ws.zip" = "7d47762a46f9d8985deccfbf600b57f7a8076f12bfc722dcd57923ea2812a956"; + "c-ares/c-ares-1.27.0-1-arm64-windows-ws.zip" = "d96bd88aeed45350b2d14f023bd6d9e5dc63aa3bb0b47da85e4e125d6f74bfcf"; + "gnutls/gnutls-3.8.3-1-arm64-mingw-dynamic-ws.zip" = "b9f0ee9cfe5012241aa5b9832212ea31408edf9bfc968762a2cfb091202fcc4b"; "krb5/krb5-1.20.1-1-arm64-windows-ws.zip" = "6afe3185ea7621224544683a89d7c724d32bef6f1b552738dbc713ceb2151437"; "libgcrypt/libgcrypt-1.10.2-2-arm64-mingw-dynamic-ws.zip" = "cd42fa2739a204e129d655e1b0dda83ceb27399812b8b2eccddae4a9ecd8d0ce"; "libilbc/libilbc-2.0.2-4-arm64-windows-ws.zip" = "00a506cc1aac8a2e31856e463a555d899b5a6ccf376485a124104858ccf0be6d"; diff --git a/ui/commandline.c b/ui/commandline.c index 374434e8..43c2fdc1 100644 --- a/ui/commandline.c +++ b/ui/commandline.c @@ -456,9 +456,12 @@ void commandline_override_prefs(int argc, char *argv[], gboolean opt_reset) } break; case PREFS_SET_OBSOLETE: - cmdarg_err("-o flag \"%s\" specifies obsolete preference", - ws_optarg); - exit_application(1); + /* obsolete preference, might be a recent setting */ + if (recent_set_arg(ws_optarg) != PREFS_SET_OK) { + cmdarg_err("-o flag \"%s\" specifies obsolete preference", + ws_optarg); + exit_application(1); + } break; default: ws_assert_not_reached(); diff --git a/ui/qt/extcap_options_dialog.cpp b/ui/qt/extcap_options_dialog.cpp index cbac4db7..52c360c0 100644 --- a/ui/qt/extcap_options_dialog.cpp +++ b/ui/qt/extcap_options_dialog.cpp @@ -59,7 +59,8 @@ ExtcapOptionsDialog::ExtcapOptionsDialog(bool startCaptureOnClose, QWidget *pare ui(new Ui::ExtcapOptionsDialog), device_name(""), device_idx(0), - defaultValueIcon_(StockIcon("x-reset")) + defaultValueIcon_(StockIcon("x-reset")), + start_capture_on_close_(startCaptureOnClose) { ui->setupUi(this); @@ -123,7 +124,14 @@ void ExtcapOptionsDialog::on_buttonBox_accepted() /* Starting a new capture with those values */ prefs.extcap_save_on_start = ui->checkSaveOnStart->checkState() == Qt::Checked; - if (prefs.extcap_save_on_start) + /* If the button says "Save" instead of "Start", unconditionally + * save. XXX - Why not have both buttons? (#19199) + * + * XXX - If extcap_save_on_start is the only preference that has + * changed, or if it changed from true to false, we should write + * out a new preference file with its new value, but don't. + */ + if (prefs.extcap_save_on_start || !start_capture_on_close_) storeValues(); accept(); @@ -453,25 +461,17 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo() continue; if (call.length() <= 0) { - /* BOOLFLAG was cleared, make its value empty */ - if ((*iter)->argument()->arg_type == EXTCAP_ARG_BOOLFLAG) { - *(*iter)->argument()->pref_valptr[0] = 0; - } continue; } if (value.compare((*iter)->defaultValue()) == 0) { - extcap_arg *arg = (*iter)->argument(); - - // If previous value is not default, set it to default value - if (arg->default_complex != NULL && arg->default_complex->_val != NULL) { - g_free(*arg->pref_valptr); - *arg->pref_valptr = g_strdup(arg->default_complex->_val); - } else { - // Set empty value if there is no default value - *arg->pref_valptr[0] = 0; - } - continue; + // What _does_ required and also has a default mean (And how is + // it different, if at all, from has a default and also placeholder + // text)? Will the extcap use the default if we don't pass the + // argument (so it's not really required)? + // To be safe we can pass the default explicitly. + if (!(*iter)->isRequired()) + continue; } gchar * call_string = qstring_strdup(call); @@ -480,14 +480,6 @@ bool ExtcapOptionsDialog::saveOptionToCaptureInfo() value_string = qstring_strdup(value); g_hash_table_insert(ret_args, call_string, value_string); - - // For current value we need strdup even it is empty - value_string = qstring_strdup(prefValue); - // Update current value with new value - // We use prefValue because for bool/boolflag it returns value - // even it is false - g_free(*(*iter)->argument()->pref_valptr); - *(*iter)->argument()->pref_valptr = value_string; } if (device->external_cap_args_settings != NULL) diff --git a/ui/qt/extcap_options_dialog.h b/ui/qt/extcap_options_dialog.h index 230e2d32..bb1d8e89 100644 --- a/ui/qt/extcap_options_dialog.h +++ b/ui/qt/extcap_options_dialog.h @@ -54,6 +54,7 @@ private: QString device_name; guint device_idx; QIcon defaultValueIcon_; + bool start_capture_on_close_; ExtcapArgumentList extcapArguments; diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp index e74f1517..a065eacc 100644 --- a/ui/qt/packet_list.cpp +++ b/ui/qt/packet_list.cpp @@ -204,6 +204,7 @@ PacketList::PacketList(QWidget *parent) : tail_at_end_(0), columns_changed_(false), set_column_visibility_(false), + set_style_sheet_(false), frozen_current_row_(QModelIndex()), frozen_selected_rows_(QModelIndexList()), cur_history_(-1), @@ -358,11 +359,27 @@ void PacketList::colorsChanged() } // Set the style sheet + set_style_sheet_ = true; if(prefs.gui_packet_list_hover_style) { setStyleSheet(active_style + inactive_style + hover_style); } else { setStyleSheet(active_style + inactive_style); } + set_style_sheet_ = false; +#if \ + ( \ + (QT_VERSION >= QT_VERSION_CHECK(6, 5, 4) && QT_VERSION < QT_VERSION_CHECK(6, 6, 0)) \ + || (QT_VERSION >= QT_VERSION_CHECK(6, 6, 1)) \ + ) + // https://bugreports.qt.io/browse/QTBUG-122109 + // Affects Qt 6.5.4 and later, 6.6.1 and later. + // When setting the style sheet, all visible sections are set + // to the new minimum DefaultSectionSize (even if it hasn't + // changed.) So make sure the new widths aren't saved to recent + // and then restore from recent. + applyRecentColumnWidths(); + setColumnVisibility(); +#endif } QString PacketList::joinSummaryRow(QStringList col_parts, int row, SummaryCopyType type) @@ -1786,7 +1803,7 @@ void PacketList::columnVisibilityTriggered() void PacketList::sectionResized(int col, int, int new_width) { - if (isVisible() && !columns_changed_ && !set_column_visibility_ && new_width > 0) { + if (isVisible() && !columns_changed_ && !set_column_visibility_ && !set_style_sheet_ && new_width > 0) { // Column 1 gets an invalid value (32 on macOS) when we're not yet // visible. // diff --git a/ui/qt/packet_list.h b/ui/qt/packet_list.h index 7b3fbe15..2b025e25 100644 --- a/ui/qt/packet_list.h +++ b/ui/qt/packet_list.h @@ -140,6 +140,7 @@ private: bool tail_at_end_; bool columns_changed_; bool set_column_visibility_; + bool set_style_sheet_; QModelIndex frozen_current_row_; QModelIndexList frozen_selected_rows_; QVector<int> selection_history_; diff --git a/ui/qt/tcp_stream_dialog.cpp b/ui/qt/tcp_stream_dialog.cpp index 49980d8d..88f6b757 100644 --- a/ui/qt/tcp_stream_dialog.cpp +++ b/ui/qt/tcp_stream_dialog.cpp @@ -1771,7 +1771,7 @@ void TCPStreamDialog::mouseMoved(QMouseEvent *event) tracer_->setVisible(false); hint += "Hover over the graph for details. " + stream_desc_ + "</i></small>"; ui->hintLabel->setText(hint); - ui->streamPlot->replot(); + ui->streamPlot->replot(QCustomPlot::rpQueuedReplot); return; } @@ -1786,7 +1786,7 @@ void TCPStreamDialog::mouseMoved(QMouseEvent *event) .arg(packet_seg->th_ack) .arg(packet_seg->th_win); tracer_->setGraphKey(ui->streamPlot->xAxis->pixelToCoord(event->pos().x())); - sp->replot(); + sp->replot(QCustomPlot::rpQueuedReplot); } else { if (rubber_band_ && rubber_band_->isVisible() && event) { rubber_band_->setGeometry(QRect(rb_origin_, event->pos()).normalized()); diff --git a/ui/qt/utils/data_printer.cpp b/ui/qt/utils/data_printer.cpp index 36f1abd7..a96e1ed4 100644 --- a/ui/qt/utils/data_printer.cpp +++ b/ui/qt/utils/data_printer.cpp @@ -54,6 +54,14 @@ void DataPrinter::toClipboard(DataPrinter::DumpType type, IDataPrintable * print for (int i = 0; i < printData.length(); i++) clipboard_text += QString("%1").arg((uint8_t) printData[i], 2, 16, QChar('0')); break; + case DP_PrintableText: + for (int i = 0; i < printData.length(); i++) { + QChar ch(printData[i]); + if (ch.isSpace() || ch.isPrint()) { + clipboard_text += ch; + } + } + break; case DP_Base64: #if WS_IS_AT_LEAST_GNUC_VERSION(12,1) DIAG_OFF(stringop-overread) @@ -219,6 +227,11 @@ QActionGroup * DataPrinter::copyActions(QObject * copyClass, QObject * data) action->setProperty("printertype", DataPrinter::DP_HexOnly); connect(action, &QAction::triggered, dpi, &DataPrinter::copyIDataBytes); + action = new QAction(tr("…as Printable Text"), actions); + action->setToolTip(tr("Copy only the printable text in the packet.")); + action->setProperty("printertype", DataPrinter::DP_PrintableText); + connect(action, &QAction::triggered, dpi, &DataPrinter::copyIDataBytes); + action = new QAction(tr("…as a Hex Stream"), actions); action->setToolTip(tr("Copy packet bytes as a stream of hex.")); action->setProperty("printertype", DataPrinter::DP_HexStream); diff --git a/ui/qt/utils/data_printer.h b/ui/qt/utils/data_printer.h index 85f11c36..882b5752 100644 --- a/ui/qt/utils/data_printer.h +++ b/ui/qt/utils/data_printer.h @@ -30,6 +30,7 @@ public: DP_HexDump, DP_HexOnly, DP_HexStream, + DP_PrintableText, DP_CString, DP_MimeData, DP_Base64 diff --git a/ui/qt/widgets/filter_expression_toolbar.cpp b/ui/qt/widgets/filter_expression_toolbar.cpp index caf91cfa..84dabc47 100644 --- a/ui/qt/widgets/filter_expression_toolbar.cpp +++ b/ui/qt/widgets/filter_expression_toolbar.cpp @@ -305,8 +305,10 @@ bool FilterExpressionToolBar::eventFilter(QObject *obj, QEvent *event) QContextMenuEvent *ctx = static_cast<QContextMenuEvent *>(event); QAction * filterAction = qm->actionAt(ctx->pos()); - if (filterAction) - customMenu(this, filterAction, ctx->pos()); + if (filterAction) { + QPoint tb_pos = this->mapFromGlobal(ctx->globalPos()); + customMenu(this, filterAction, tb_pos); + } return true; } else if (event->type() == QEvent::ToolTip) @@ -324,7 +326,7 @@ bool FilterExpressionToolBar::eventFilter(QObject *obj, QEvent *event) } } - return QToolBar::eventFilter(obj, event); + return DragDropToolBar::eventFilter(obj, event); } void FilterExpressionToolBar::closeMenu(QAction * /*sender*/) diff --git a/ui/qt/widgets/syntax_line_edit.cpp b/ui/qt/widgets/syntax_line_edit.cpp index 99ccf7bc..f2c32142 100644 --- a/ui/qt/widgets/syntax_line_edit.cpp +++ b/ui/qt/widgets/syntax_line_edit.cpp @@ -425,17 +425,23 @@ void SyntaxLineEdit::paintEvent(QPaintEvent *event) QRect cr = style()->subElementRect(QStyle::SE_LineEditContents, &opt, this); QPainter painter(this); - // In my (gcc) testing here, if I add "background: yellow;" to the DisplayFilterCombo - // stylesheet, when building with Qt 5.15.2 the combobox background is yellow and the - // text entry area (between the bookmark and apply button) is drawn in the correct - // base color (white for light mode and black for dark mode), and the correct syntax - // color otherwise. When building with Qt 6.2.4 and 6.3.1, the combobox background is - // yellow and the text entry area is always yellow, i.e. QLineEdit isn't painting its - // background for some reason. + // In the attempt to fix https://bugreports.qt.io/browse/QTBUG-81533 + // the following commit was added to Qt 6.0.0 and later 5.15.3: + // https://code.qt.io/cgit/qt/qtbase.git/commit/src/widgets/widgets/qcombobox.cpp?h=5.15&id=6e470764a98434a120eba4fcc6035137cf9c92cf // - // It's not clear if this is a bug or just how things work under Qt6. Either way, it's - // easy to work around. -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + // It causes a similar problem to the one it was trying to fix, viz. if I + // add "background: yellow;" to the DisplayFilterCombo stylesheet, when + // building with Qt 5.15.2 the combobox background is yellow and the text + // entry area (between the bookmark and apply button) is drawn in the correct + // base color (white for light mode and black for dark mode), and the correct + // syntax color otherwise. When building with Qt 5.15.3 and 6.2.4 and 6.3.1, + // the combobox background is yellow and the text entry area is always yellow, + // i.e. QLineEdit isn't painting its background because the palette from + // the combobox is used instead. + // + // It's not clear if this is a bug or just how things work under Qt6. + // Either way, it's easy to work around. +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 3) // Must match CaptureFilterEdit and DisplayFilterEdit stylesheets. int pad = style()->pixelMetric(QStyle::PM_DefaultFrameWidth) + 1; QRect full_cr = cr.adjusted(-pad, 0, -1, 0); diff --git a/ui/qt/wireshark_de.ts b/ui/qt/wireshark_de.ts index 02a47f25..28d3c38b 100644 --- a/ui/qt/wireshark_de.ts +++ b/ui/qt/wireshark_de.ts @@ -2011,6 +2011,14 @@ Um zum Beispiel eine neue Datei zu jeder vollen Stunde zu haben, 1 Stunde angebe <translation>Paketbytes als Hex Dump kopieren</translation> </message> <message> + <source>…as Printable Text</source> + <translation>…als druckbarer Text</translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation>Nur den druckbaren Text im Paket kopieren.</translation> + </message> + <message> <source>…as MIME Data</source> <translation>...als MIME Daten</translation> </message> @@ -7409,11 +7417,11 @@ Um zum Beispiel eine neue Datei zu jeder vollen Stunde zu haben, 1 Stunde angebe </message> <message> <source>Checking this will show only changed preferences.</source> - <translation type="unfinished"></translation> + <translation>Durch Aktivieren dieser Option werden nur geänderte Einstellungen angezeigt</translation> </message> <message> <source>Show changed values</source> - <translation type="unfinished"></translation> + <translation>Zeige geänderte Werte</translation> </message> <message> <source>Preferences</source> @@ -10037,11 +10045,11 @@ Um zum Beispiel eine neue Datei zu jeder vollen Stunde zu haben, 1 Stunde angebe </message> <message> <source>-</source> - <translation type="unfinished">-</translation> + <translation>-</translation> </message> <message> <source><small><i>For complete analysis check SCTP preference Enable Association indexing</i></small></source> - <translation type="unfinished"></translation> + <translation><small><i>Zur vollständigen Analyse Association indexing in den Protokolleinstellungen aktivieren</i></small></translation> </message> <message> <source>Complete List of IP addresses from INIT Chunk:</source> @@ -11740,51 +11748,51 @@ Um zum Beispiel eine neue Datei zu jeder vollen Stunde zu haben, 1 Stunde angebe <name>TLSKeylogDialog</name> <message> <source>Dialog</source> - <translation type="unfinished">Dialog</translation> + <translation>Dialog</translation> </message> <message> <source>Browse…</source> - <translation type="unfinished"></translation> + <translation>Öffnen…</translation> </message> <message> <source>Command line</source> - <translation type="unfinished"></translation> + <translation>Kommandozeile</translation> </message> <message> <source>Run an application with the SSLKEYLOGFILE environment variable set to the file specified by the TLS key log filename preference. This enables TLS decryption in Wireshark. Set the key log file and start the capture before launching the application to ensure that the initial TLS handshakes are captured.</source> - <translation type="unfinished"></translation> + <translation>Eine Applikation mit gesetzter SSLKEYLOGFILE-Umgebungsvariable starten, deren Dateipfad in der TLS-Key-Log-Einstellung festgelegt wurde. Dies ermöglicht die TLS-Entschlüsselung mit Wireshark. Legen Sie den Dateipfad fest und starten Sie den Mitschnitt bevor Sie die Applikation starten, um sicher zu gehen, dass der initiale TLS-Handshake erfasst wird.</translation> </message> <message> <source><span style=" font-size:small;">Firefox and Chrome are known to work. If your desired browser is currently running, close it first before launching it below. Command line options are supported.</span></source> - <translation type="unfinished"></translation> + <translation><span style=" font-size:small;">Funktioniert mit Firefox und Chrome. Falls der Browser bereits läuft, diesen vor dem Starten schließen. Kommandozeilen-Optionen werden unterstützt.</span></translation> </message> <message> <source>TLS (Pre)-Master-Secret log file path (tls.keylog_file)</source> - <translation type="unfinished"></translation> + <translation>TLS (Pre)-Master-Secret Logdatei-Pfad (tls.keylog_file)</translation> </message> <message> <source><span style=" font-size:small;">TLS session secrets will be logged to this file. If you change this field, hit the Save button to update the TLS protocol preferences.</span></source> - <translation type="unfinished"></translation> + <translation><span style=" font-size:small;">TLS-Sitzungsschlüssel werden in diese Datei geschrieben. Wenn das Feld geändert wird, Speichern-Button drücken, um TLS-Protokolleigenschaften zu aktualisieren.</span></translation> </message> <message> <source>Launch application with SSLKEYLOGFILE</source> - <translation type="unfinished"></translation> + <translation>Applikation mit SSLKEYLOGFILE starten</translation> </message> <message> <source>Launch</source> - <translation type="unfinished"></translation> + <translation>Starten</translation> </message> <message> <source>Save</source> - <translation type="unfinished">Speichern</translation> + <translation>Speichern</translation> </message> <message> <source>TLS Keylog file</source> - <translation type="unfinished"></translation> + <translation>TLS Keylog Datei</translation> </message> <message> <source>Program to start with SSLKEYLOGFILE</source> - <translation type="unfinished"></translation> + <translation>Programm mit SSLKEYLOGFILE starten</translation> </message> </context> <context> @@ -13806,11 +13814,11 @@ a:hover { </message> <message> <source>TLS Keylog Launcher</source> - <translation type="unfinished"></translation> + <translation>TLS Keylog Launcher</translation> </message> <message> <source>Release Notes</source> - <translation type="unfinished"></translation> + <translation>Veröffentlichungshinweise</translation> </message> <message> <source>&Options…</source> diff --git a/ui/qt/wireshark_en.ts b/ui/qt/wireshark_en.ts index 7f183d0c..2dab6ca4 100644 --- a/ui/qt/wireshark_en.ts +++ b/ui/qt/wireshark_en.ts @@ -2008,6 +2008,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation type="unfinished"></translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_es.ts b/ui/qt/wireshark_es.ts index f4183d93..3f5a016c 100644 --- a/ui/qt/wireshark_es.ts +++ b/ui/qt/wireshark_es.ts @@ -1986,6 +1986,14 @@ Por ejemplo, use 1 hora para tener creado un nuevo archivo cada hora en punto.</ <translation type="unfinished"></translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_fr.ts b/ui/qt/wireshark_fr.ts index f96a8317..29e8c5ac 100644 --- a/ui/qt/wireshark_fr.ts +++ b/ui/qt/wireshark_fr.ts @@ -1988,6 +1988,14 @@ Pas exemple, inquiquez 1 heure pour avoir un nouveau fichier créé toutes les h <translation>Copier les octets du paquet sous forme de vidage Hex.</translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_it.ts b/ui/qt/wireshark_it.ts index 19227f66..772d32cd 100644 --- a/ui/qt/wireshark_it.ts +++ b/ui/qt/wireshark_it.ts @@ -2011,6 +2011,14 @@ Ad esempio, usa 1 ora per fare in modo che un nuovo file sia creato ogni ora.</t <translation>Copia i byte del pacchetto come un dump esadecimale.</translation> </message> <message> + <source>…as Printable Text</source> + <translation>...come testo stampabile</translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation>Copia solo il testo stampabile nel pacchetto.</translation> + </message> + <message> <source>…as MIME Data</source> <translation>…come dati MIME</translation> </message> @@ -3302,7 +3310,7 @@ Ad esempio, usa 1 ora per fare in modo che un nuovo file sia creato ogni ora.</t <name>FollowStreamAction</name> <message> <source>%1 Stream</source> - <translation>%1 flusso</translation> + <translation>Flusso %1</translation> </message> </context> <context> @@ -9915,7 +9923,7 @@ Ad esempio, usa 1 ora per fare in modo che un nuovo file sia creato ogni ora.</t </message> <message> <source>%1 streams</source> - <translation>flussi %1</translation> + <translation>%1 flussi</translation> </message> <message> <source>, %1 selected, %2 total packets</source> diff --git a/ui/qt/wireshark_ja_JP.ts b/ui/qt/wireshark_ja_JP.ts index a1073f5d..0d1e1f7f 100644 --- a/ui/qt/wireshark_ja_JP.ts +++ b/ui/qt/wireshark_ja_JP.ts @@ -2003,6 +2003,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation>16進数ダンプとしてパケットバイト列をコピー</translation> </message> <message> + <source>…as Printable Text</source> + <translation>印刷可能なテキストとして…</translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation>パケット内の印刷可能なテキストだけをコピー</translation> + </message> + <message> <source>…as MIME Data</source> <translation>MIMEデータとして...</translation> </message> diff --git a/ui/qt/wireshark_ko.ts b/ui/qt/wireshark_ko.ts index 495b3d61..94c1648f 100644 --- a/ui/qt/wireshark_ko.ts +++ b/ui/qt/wireshark_ko.ts @@ -2004,6 +2004,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation>16진수 덤프 형식으로 패킷 바이트를 복사합니다.</translation> </message> <message> + <source>…as Printable Text</source> + <translation>출력 가능한 문자열로 복사</translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation>패킷 내의 출력 가능한 문자열만 복사합니다.</translation> + </message> + <message> <source>…as MIME Data</source> <translation>MIME 데이터로 복사</translation> </message> @@ -7389,11 +7397,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Checking this will show only changed preferences.</source> - <translation type="unfinished"></translation> + <translation>이 옵션을 사용하면 변경된 설정만 표시합니다.</translation> </message> <message> <source>Show changed values</source> - <translation type="unfinished"></translation> + <translation>변경된 값 표시</translation> </message> <message> <source>Preferences</source> diff --git a/ui/qt/wireshark_pl.ts b/ui/qt/wireshark_pl.ts index 7569259b..efd144dc 100644 --- a/ui/qt/wireshark_pl.ts +++ b/ui/qt/wireshark_pl.ts @@ -21,15 +21,15 @@ </message> <message> <source><span size=\"x-large\" weight=\"bold\">Network Protocol Analyzer</span></source> - <translation><span size=\"x-large\" weight=\"bold\">Analizator Protokołów</span></translation> + <translation><span size=\"x-large\" weight=\"bold\">Analizator protokołów sieciowych</span></translation> </message> <message> <source>Copy the version information to the clipboard</source> - <translation type="unfinished"></translation> + <translation>Skopiuj informację o wersji do schowka</translation> </message> <message> <source>Copy to Clipboard</source> - <translation type="unfinished"></translation> + <translation>Skopiuj do schowka</translation> </message> <message> <source>Authors</source> @@ -93,7 +93,7 @@ </message> <message> <source>The directory %1 could not be created.</source> - <translation type="unfinished"></translation> + <translation>Nie można utworzyć katalogu %1!</translation> </message> <message> <source>Show in Finder</source> @@ -109,10 +109,10 @@ </message> <message numerus="yes"> <source>Copy Row(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Kopiuj wiersz</numerusform> + <numerusform>Kopiuj wiersze</numerusform> + <numerusform>Kopiuj wiersze</numerusform> </translation> </message> </context> @@ -137,7 +137,7 @@ </message> <message> <source>Can't assign %1 to %2.</source> - <translation type="unfinished"></translation> + <translation>Nie można przypisać %1 do %2.</translation> </message> </context> <context> @@ -229,7 +229,7 @@ </message> <message> <source>Ctrl-M</source> - <translation type="unfinished"></translation> + <translation>Ctrl-M</translation> </message> <message> <source>Mark/Unmark Cell</source> @@ -272,7 +272,7 @@ </message> <message> <source>LMP Subversion</source> - <translation type="unfinished">Podwersja LMP</translation> + <translation>Podwersja LMP</translation> </message> <message> <source>Manufacturer</source> @@ -324,11 +324,11 @@ </message> <message> <source>LE ISO MTU</source> - <translation type="unfinished"></translation> + <translation>LE ISO MTU</translation> </message> <message> <source>LE ISO Total Packets</source> - <translation type="unfinished"></translation> + <translation>Całkowita liczba pakietów LE ISO</translation> </message> <message> <source>Inquiry Mode</source> @@ -380,7 +380,7 @@ </message> <message> <source>Ctrl+M</source> - <translation type="unfinished">Ctrl+M</translation> + <translation>Ctrl+M</translation> </message> <message> <source>Mark/Unmark Cell</source> @@ -491,7 +491,7 @@ </message> <message> <source>Ctrl-M</source> - <translation type="unfinished"></translation> + <translation>Ctrl-M</translation> </message> <message> <source>Mark/Unmark Cell</source> @@ -724,7 +724,7 @@ <name>ByteViewText</name> <message> <source>Allow hover highlighting</source> - <translation type="unfinished"></translation> + <translation>Zezwalaj na podświetlanie po najechaniu myszką</translation> </message> <message> <source>Show bytes as hexadecimal</source> @@ -732,27 +732,27 @@ </message> <message> <source>…as decimal</source> - <translation type="unfinished"></translation> + <translation>…w postaci dziesiętnej</translation> </message> <message> <source>…as octal</source> - <translation type="unfinished"></translation> + <translation>…w postaci ósemkowej</translation> </message> <message> <source>…as bits</source> - <translation type="unfinished"></translation> + <translation>...jako bity</translation> </message> <message> <source>Show text based on packet</source> - <translation type="unfinished"></translation> + <translation>Pokaż tekst na podstawie pakietu</translation> </message> <message> <source>…as ASCII</source> - <translation type="unfinished"></translation> + <translation>…jako ASCII</translation> </message> <message> <source>…as EBCDIC</source> - <translation type="unfinished"></translation> + <translation>…jako EBCDIC</translation> </message> </context> <context> @@ -812,6 +812,32 @@ <source>Automatically detect file type</source> <translation>Automatycznie wykryj typ pliku</translation> </message> + <message numerus="yes"> + <source>%1, error after %Ln packet(s)</source> + <oldsource>%1, error after %2 packets</oldsource> + <translation type="vanished"> + <numerusform>%1, błąd po wczytaniu %Ln pakiet</numerusform> + <numerusform>%1, błąd po wczytaniu %Ln pakietów</numerusform> + <numerusform>%1, błąd po wczytaniu %Ln pakietów</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%1, timed out at %Ln packet(s)</source> + <oldsource>%1, timed out at %2 packets</oldsource> + <translation type="vanished"> + <numerusform>%1, przekroczenie czasu przy %Ln pakiecie</numerusform> + <numerusform>%1, przekroczenie czasu przy %Ln pakiecie</numerusform> + <numerusform>%1, przekroczenie czasu przy %Ln pakiecie</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%1, %Ln packet(s)</source> + <translation type="vanished"> + <numerusform>%1, %Ln pakiet</numerusform> + <numerusform>%1, %Ln pakiety</numerusform> + <numerusform>%1, %Ln pakietów</numerusform> + </translation> + </message> <message> <source>Prepend packets</source> <translation>Dodaj pakiety na początku</translation> @@ -874,11 +900,11 @@ </message> <message> <source>Unknown file type returned by save as dialog.</source> - <translation type="unfinished"></translation> + <translation>Nieznany typ pliku zwrócony przez okno dialogowe Zapisz jako.</translation> </message> <message> <source>Please report this as a Wireshark issue at https://gitlab.com/wireshark/wireshark/-/issues.</source> - <translation type="unfinished"></translation> + <translation>Zgłoś to jako problem z Wireshark na stronie https://gitlab.com/wireshark/wireshark/-/issues.</translation> </message> <message> <source>directory</source> @@ -895,26 +921,26 @@ <message numerus="yes"> <source>%1, error after %Ln data record(s)</source> <oldsource>%1, error after %Ln record(s)</oldsource> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1, błąd po wczytaniu %Ln pakietu</numerusform> + <numerusform>%1, błąd po wczytaniu %Ln pakietów</numerusform> + <numerusform>%1, błąd po wczytaniu %Ln pakietów</numerusform> </translation> </message> <message numerus="yes"> <source>%1, timed out at %Ln data record(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1, przekroczono limit czasu dla %Ln rekordu danych</numerusform> + <numerusform>%1, przekroczono limit czasu dla %Ln rekordów danych</numerusform> + <numerusform>%1, przekroczono limit czasu dla %Ln rekordów danych</numerusform> </translation> </message> <message numerus="yes"> <source>%1, %Ln data record(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%1, %Ln rekord danych</numerusform> + <numerusform>%1, %Ln rekordy danych</numerusform> + <numerusform>%1, %Ln rekordów danych</numerusform> </translation> </message> <message> @@ -1002,7 +1028,7 @@ </message> <message> <source>Section %1</source> - <translation type="unfinished"></translation> + <translation>Sekcja %1</translation> </message> <message> <source>Capture</source> @@ -1042,7 +1068,7 @@ </message> <message> <source>Packet size limit (snaplen)</source> - <translation type="unfinished"></translation> + <translation>Limit rozmiaru pakietu (snaplen)</translation> </message> <message> <source>none</source> @@ -1102,7 +1128,7 @@ </message> <message> <source>Section Comment</source> - <translation type="unfinished"></translation> + <translation>Komentarz sekcji</translation> </message> <message> <source>Packet Comments</source> @@ -1192,151 +1218,151 @@ <name>CaptureOptionsDialog</name> <message> <source>Input</source> - <translation type="unfinished"></translation> + <translation>Wejście</translation> </message> <message> <source>Interface</source> - <translation type="unfinished">Interfejs</translation> + <translation>Interfejs</translation> </message> <message> <source>Traffic</source> - <translation type="unfinished"></translation> + <translation>Ruch</translation> </message> <message> <source>Link-layer Header</source> - <translation type="unfinished"></translation> + <translation>Nagłówek warstwy łącza</translation> </message> <message> <source>Promiscuous</source> - <translation type="unfinished"></translation> + <translation>Tryb mieszany</translation> </message> <message> <source>Snaplen (B)</source> - <translation type="unfinished"></translation> + <translation>Rozmiar przechwyconej ramki (B)</translation> </message> <message> <source>Buffer (MB)</source> - <translation type="unfinished"></translation> + <translation>Bufor (MB)</translation> </message> <message> <source>Monitor Mode</source> - <translation type="unfinished"></translation> + <translation>Tryb monitora</translation> </message> <message> <source>Capture Filter</source> - <translation type="unfinished"></translation> + <translation>Filtr przechwytywania</translation> </message> <message> <source><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source> - <translation type="unfinished"><html><head/><body><p>Prawdopodobnie chcesz włączyć to. Zwykle karta sieciowa może przechwytywać tylko ruch wysyłany na jej adres sieciowy. Jeśli chcesz przechwytywać cały ruch sieciowy zaznacz tą opcję. Zobacz FAQ by uzyskać więcej informacji na temat przechwytywania pakietów w sieci przełączalnej.</p></body></html></translation> + <translation><html><head/><body><p>Prawdopodobnie chcesz włączyć to. Zwykle karta sieciowa może przechwytywać tylko ruch wysyłany na jej adres sieciowy. Jeśli chcesz przechwytywać cały ruch sieciowy zaznacz tą opcję. Zobacz FAQ by uzyskać więcej informacji na temat przechwytywania pakietów w sieci przełączalnej.</p></body></html></translation> </message> <message> <source>Enable promiscuous mode on all interfaces</source> - <translation type="unfinished"></translation> + <translation>Włącz tryb mieszany dla wszystkich interfejsów</translation> </message> <message> <source>Show and hide interfaces, add comments, and manage pipes and remote interfaces.</source> - <translation type="unfinished"></translation> + <translation>Pokaż lub ukryj interfejsy, dodaj komentarze i zarządzaj interfejsami pipe oraz zdalnymi.</translation> </message> <message> <source>Manage Interfaces…</source> - <translation type="unfinished"></translation> + <translation>Zarządzaj interfejsami…</translation> </message> <message> <source>Capture filter for selected interfaces:</source> - <translation type="unfinished"></translation> + <translation>Filtr przechwytywania dla wybranych interfejsów:</translation> </message> <message> <source>Compile BPFs</source> - <translation type="unfinished"></translation> + <translation>Kompiluj BPF</translation> </message> <message> <source>Output</source> - <translation type="unfinished"></translation> + <translation>Wyjście</translation> </message> <message> <source><html><head/><body><p>Enter the file name to which captured data will be written. By default, a temporary file will be used.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Wprowadź nazwę pliku do którego przechwycone dane będą zapisane. Domyślnie będzie użyty plik tymczasowy.</p></body></html></translation> </message> <message> <source>Capture to a permanent file</source> - <translation type="unfinished"></translation> + <translation>Przechwytuj do pliku</translation> </message> <message> <source>File:</source> - <translation type="unfinished">Plik:</translation> + <translation>Plik:</translation> </message> <message> <source>Browse…</source> - <translation type="unfinished">Przeglądaj…</translation> + <translation>Przeglądaj…</translation> </message> <message> <source>Output format:</source> - <translation type="unfinished"></translation> + <translation>Format wyjściowy:</translation> </message> <message> <source>pcapng</source> - <translation type="unfinished"></translation> + <translation>pcapng</translation> </message> <message> <source>pcap</source> - <translation type="unfinished"></translation> + <translation>pcap</translation> </message> <message> <source><html><head/><body><p>Instead of using a single capture file, multiple files will be created.</p><p>The generated file names will contain an incrementing number and the start time of the capture.</p><p>NOTE: If enabled, at least one of the new-file criteria MUST be selected.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Zamiast używać pojedyńczego pliku przechwytywania, wiele plików będzie tworzonych.</p><p>Użyte nazwy plików będą zawierać zwiększający się liczbę i czas rozpoczęcia przechwytywania.</p><p>UWAGA: Jeśli ta opcja jest włączona, MUSI zostać wybrane co najmniej jedno z kryteriów nowego pliku.</p></body></html></translation> </message> <message> <source>Create a new file automatically…</source> - <translation type="unfinished"></translation> + <translation>Stwórz nowy plik automatycznie…</translation> </message> <message> <source>after</source> - <translation type="unfinished"></translation> + <translation>po</translation> </message> <message> <source>Switch to the next file after the specified number of packets have been captured.</source> - <translation type="unfinished"></translation> + <translation>Przełącz do następnego pliku po przechwyceniu określonej liczby pakietów.</translation> </message> <message> <source>packets</source> - <translation type="unfinished">pakietów</translation> + <translation>pakiety</translation> </message> <message> <source>Switch to the next file after the file size exceeds the specified file size.</source> - <translation type="unfinished"></translation> + <translation>Przełącz do następnego pliku, gdy rozmiar pliku przekroczy określony rozmiar pliku.</translation> </message> <message> <source>kilobytes</source> - <translation type="unfinished"></translation> + <translation>kilobajty</translation> </message> <message> <source>megabytes</source> - <translation type="unfinished"></translation> + <translation>megabajty</translation> </message> <message> <source>gigabytes</source> - <translation type="unfinished"></translation> + <translation>gigabajty</translation> </message> <message> <source>Switch to the next file when the time capturing to the current file exceeds the specified time.</source> - <translation type="unfinished"></translation> + <translation>Przełącz do następnego pliku, gdy czas przechwytywania do bieżącego pliku przekroczy określony czas.</translation> </message> <message> <source>seconds</source> - <translation type="unfinished"></translation> + <translation>sekundach</translation> </message> <message> <source>minutes</source> - <translation type="unfinished"></translation> + <translation>minutach</translation> </message> <message> <source>hours</source> - <translation type="unfinished"></translation> + <translation>godzinach</translation> </message> <message> <source>when time is a multiple of</source> - <translation type="unfinished"></translation> + <translation>gdy czas jest wielokrotnością</translation> </message> <message> <source>Switch to the next file when the (wall clock) time is an even multiple of the specified interval. @@ -1345,19 +1371,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>compression</source> - <translation type="unfinished"></translation> + <translation>kompresja</translation> </message> <message> <source>None</source> - <translation type="unfinished">Brak</translation> + <translation>Brak</translation> </message> <message> <source>gzip</source> - <translation type="unfinished"></translation> + <translation>gzip</translation> </message> <message> <source><html><head/><body><p>After capturing has switched to the next file and the given number of files has exceeded, the oldest file will be removed.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Kiedy przechwytywanie jest przekierowywane do nowego pliku i liczba plików zostanie przekroczona to skasuj najstarszy plik.</p></body></html></translation> </message> <message> <source>Use a ring buffer with </source> @@ -1365,155 +1391,155 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>files</source> - <translation type="unfinished"></translation> + <translation>pliki</translation> </message> <message> <source>Options</source> - <translation type="unfinished">Opcje</translation> + <translation>Opcje</translation> </message> <message> <source>Display Options</source> - <translation type="unfinished"></translation> + <translation>Opcje wyświetlania</translation> </message> <message> <source><html><head/><body><p>Using this option will show the captured packets immediately on the main screen. Please note: this will slow down capturing, so increased packet drops might appear.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Wybierając tą opcję przechwytywane pakiety będą bezpośrednio wyświetlane na ekranie. Uwaga: to może spowalniać przechwytywanie, co może skutkować możliwością zgubienia pakietów.</p></body></html></translation> </message> <message> <source>Update list of packets in real-time</source> - <translation type="unfinished"></translation> + <translation>Aktualizuj listę pakietów czasie rzeczywistym</translation> </message> <message> <source><html><head/><body><p>This will scroll the &quot;Packet List&quot; automatically to the latest captured packet, when the &quot;Update list of packets in real-time&quot; option is used.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Ta opcja będzie powodowała automatyczne przewijanie &quot;Listy Pakietów&quot;, gdy opcja &quot;Aktualizowania Listy Pakietów w czasie rzeczywistym&quot; jest używana.</p></body></html></translation> </message> <message> <source>Automatically scroll during live capture</source> - <translation type="unfinished"></translation> + <translation>Automatyczne przewijanie podczas przechwytywania</translation> </message> <message> <source><html><head/><body><p>Show the capture info dialog while capturing.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Pokazuj okno z informacjami przechwytywania podczas przechwytywania.</p></body></html></translation> </message> <message> <source>Show capture information during live capture</source> - <translation type="unfinished"></translation> + <translation>Pokaż informacje o przechwytywaniu podczas trwającego przechwytywania</translation> </message> <message> <source>Name Resolution</source> - <translation type="unfinished"></translation> + <translation>Rozwiązywanie nazw</translation> </message> <message> <source>Perform MAC layer name resolution while capturing.</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj nazwy MAC podczas przechwytywania.</translation> </message> <message> <source>Resolve MAC addresses</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj adresy MAC</translation> </message> <message> <source><html><head/><body><p>Perform network layer name resolution while capturing.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Rozwiązuj nazwy sieciowe podczas przechwytywanie.</p></body></html></translation> </message> <message> <source>Resolve network names</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj nazwy sieciowe</translation> </message> <message> <source>Perform transport layer name resolution while capturing.</source> - <translation type="unfinished"></translation> + <translation>Podczas przechwytywania wykonuj rozwiązywanie nazw warstwy transportowej.</translation> </message> <message> <source>Resolve transport names</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj nazwy warstwy transportowej</translation> </message> <message> <source>Stop capture automatically after…</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj przechwytywanie automatycznie po…</translation> </message> <message> <source><html><head/><body><p>Stop capturing after the specified number of packets have been captured.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Zatrzymaj przechwytywanie po przekroczeniu ustalonej liczby pakietów do przechwycenia.</p></body></html></translation> </message> <message> <source>Stop capturing after the specified number of packets have been captured.</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj przechwytywanie po przekroczeniu ustalonej liczby pakietów do przechwycenia.</translation> </message> <message> <source><html><head/><body><p>Stop capturing after the specified number of files have been created.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Zatrzymaj przechwytywanie po stworzeniu określonej liczby plików.</p></body></html></translation> </message> <message> <source><html><head/><body><p>Stop capturing after the specified amount of data has been captured.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Zatrzymaj przechwytywanie po przekroczeniu ustalonego rozmiaru danych.</p></body></html></translation> </message> <message> <source>Stop capturing after the specified amount of data has been captured.</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj przechwytywanie po przekroczeniu ustalonego rozmiaru danych.</translation> </message> <message> <source>Stop capturing after the specified amount of time has passed.</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj przechwytywanie po upływie ustalonego czasu.</translation> </message> <message> <source><html><head/><body><p>Optionally specify a temporary directory for unnamed capture files.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Opcjonalnie, wybierz katalog tymczasowy dla nienazwanych plików przechwytywania.</p></body></html></translation> </message> <message> <source>Directory for temporary files</source> - <translation type="unfinished"></translation> + <translation>Katalog plików tymczasowych</translation> </message> <message> <source>Capture Options</source> - <translation type="unfinished">Opcje przechytywania</translation> + <translation>Opcje przechwytywania</translation> </message> <message> <source>Start</source> - <translation type="unfinished">Start</translation> + <translation>Rozpocznij</translation> </message> <message> <source>Leave blank to use a temporary file</source> - <translation type="unfinished"></translation> + <translation>Pozostaw puste by użyć pliku tymczasowego</translation> </message> <message> <source>Specify a Capture File</source> - <translation type="unfinished"></translation> + <translation>Wybierz plik przechwytywania</translation> </message> <message> <source>Specify temporary directory</source> - <translation type="unfinished"></translation> + <translation>Wybierz katalog tymczasowy</translation> </message> <message> <source>%1: %2</source> - <translation type="unfinished">%1: %2</translation> + <translation>%1: %2</translation> </message> <message> <source>Addresses</source> - <translation type="unfinished"></translation> + <translation>Adresy</translation> </message> <message> <source>Address</source> - <translation type="unfinished">Adres</translation> + <translation>Adres</translation> </message> <message> <source>no addresses</source> - <translation type="unfinished"></translation> + <translation>brak adresu</translation> </message> <message> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Błąd</translation> </message> <message> <source>Multiple files: Requested filesize too large. The filesize cannot be greater than 2 GiB.</source> - <translation type="unfinished"></translation> + <translation>Wiele plików: Żądana wielkość pliku jest zbyt duża. Wielkość pliku nie może być większa niż 2 GiB.</translation> </message> <message> <source>Multiple files: No capture file name given. You must specify a filename if you want to use multiple files.</source> - <translation type="unfinished"></translation> + <translation>Wiele plików: Nie wprowadzono nazwy pliku. Musisz wprowadzić nazwę pliku jeśli zamierzasz używać wielu plików.</translation> </message> <message> <source>Multiple files: No file limit given. You must specify a file size, interval, or number of packets for each file.</source> - <translation type="unfinished"></translation> + <translation>Wiele plików: bez limitu plików. Dla każdego pliku należy określić rozmiar pliku, interwał lub liczbę pakietów.</translation> </message> </context> <context> @@ -1552,7 +1578,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Interval between updates (ms)</source> - <translation type="unfinished"></translation> + <translation>Odstęp między aktualizacjami (ms)</translation> </message> <message> <source><html><head/><body><p>How often the capture notifies the GUI of new packets. Affects how often the GUI updates and the granularity of timers.</p></body></html></source> @@ -1642,11 +1668,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Import…</source> - <translation type="unfinished"></translation> + <translation>Importuj...</translation> </message> <message> <source>Export…</source> - <translation type="unfinished"></translation> + <translation>Eksportuj...</translation> </message> <message> <source>Copy coloring rules from another profile.</source> @@ -1673,7 +1699,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ColoringRulesModel</name> <message> <source>New coloring rule</source> - <translation type="unfinished"></translation> + <translation>Nowa reguła kolorowania</translation> </message> <message> <source>Unable to save coloring rules: %1</source> @@ -1716,7 +1742,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Resolve Names:</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj nazwy:</translation> </message> <message> <source><html><head/><p>Show human-readable strings instead of raw values for fields. Only applicable to custom columns with fields that have value strings.</p></body></html></source> @@ -1739,27 +1765,27 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ColumnListModel</name> <message> <source>Displayed</source> - <translation type="unfinished">Wyświetlane</translation> + <translation>Wyświetlane</translation> </message> <message> <source>Title</source> - <translation type="unfinished"></translation> + <translation>Tytuł</translation> </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <source>Fields</source> - <translation type="unfinished"></translation> + <translation>Pola</translation> </message> <message> <source>Field Occurrence</source> - <translation type="unfinished"></translation> + <translation>Wystąpienie pola</translation> </message> <message> <source>Resolved</source> - <translation type="unfinished"></translation> + <translation>Rozwiązane</translation> </message> <message> <source><html>Show human-readable strings instead of raw values for fields. Only applicable to custom columns with fields that have value strings.</html></source> @@ -1767,7 +1793,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>New Column</source> - <translation type="unfinished"></translation> + <translation>Nowa kolumna</translation> </message> </context> <context> @@ -1778,19 +1804,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Add a new column</source> - <translation type="unfinished"></translation> + <translation>Dodaj nową kolumnę</translation> </message> <message> <source>Delete selected column</source> - <translation type="unfinished"></translation> + <translation>Usuń wybraną kolumnę</translation> </message> <message> <source>Show displayed columns only</source> - <translation type="unfinished"></translation> + <translation>Pokaż tylko wyświetlane kolumny</translation> </message> <message> <source>Reset all changes</source> - <translation type="unfinished"></translation> + <translation>Zresetuj wszystkie zmiany</translation> </message> </context> <context> @@ -1812,47 +1838,47 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ConversationDataModel</name> <message> <source>Address A</source> - <translation type="unfinished"></translation> + <translation>Adres A</translation> </message> <message> <source>Port A</source> - <translation type="unfinished"></translation> + <translation>Port A</translation> </message> <message> <source>Address B</source> - <translation type="unfinished"></translation> + <translation>Adres B</translation> </message> <message> <source>Port B</source> - <translation type="unfinished"></translation> + <translation>Port B</translation> </message> <message> <source>Packets</source> - <translation type="unfinished">Pakiety</translation> + <translation>Pakiety</translation> </message> <message> <source>Bytes</source> - <translation type="unfinished"></translation> + <translation>Bajty</translation> </message> <message> <source>Stream ID</source> - <translation type="unfinished"></translation> + <translation>Identyfikator strumienia</translation> </message> <message> <source>Packets A </source> - <translation type="unfinished"></translation> + <translation>Pakiety A</translation> </message> <message> <source>Bytes A </source> - <translation type="unfinished"></translation> + <translation>Bajty A</translation> </message> <message> <source>Packets B </source> - <translation type="unfinished"></translation> + <translation>Pakiety B</translation> </message> <message> <source>Bytes B </source> - <translation type="unfinished"></translation> + <translation>Bajty B</translation> </message> <message> <source>Abs Start</source> @@ -1864,30 +1890,30 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Duration</source> - <translation type="unfinished">Czas trwania</translation> + <translation>Czas trwania</translation> </message> <message> <source>Bits/s A </source> - <translation type="unfinished"></translation> + <translation>Bitów/sek. A</translation> </message> <message> <source>Bits/s B </source> - <translation type="unfinished"></translation> + <translation>Bitów/sek. B</translation> </message> <message> <source>Total Packets</source> - <translation type="unfinished"></translation> + <translation>Całkowita liczba pakietów</translation> </message> <message> <source>Percent Filtered</source> - <translation type="unfinished"></translation> + <translation>Filtrowane procentowo</translation> </message> </context> <context> <name>ConversationDialog</name> <message> <source>Follow Stream…</source> - <translation type="unfinished"></translation> + <translation>Podążaj za strumieniem...</translation> </message> <message> <source>Follow a TCP or UDP stream.</source> @@ -1895,7 +1921,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Graph…</source> - <translation type="unfinished"></translation> + <translation>Wykres</translation> </message> <message> <source>Graph a TCP conversation.</source> @@ -1917,15 +1943,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>CopyFromProfileButton</name> <message> <source>Copy from</source> - <translation type="unfinished">Kopiuj z</translation> + <translation>Kopiuj z</translation> </message> <message> <source>Copy entries from another profile.</source> - <translation type="unfinished">Kopiuj z innego profilu.</translation> + <translation>Kopiuj z innego profilu.</translation> </message> <message> <source>System default</source> - <translation type="unfinished"></translation> + <translation>Domyślne ustawienie systemowe</translation> </message> </context> <context> @@ -1943,15 +1969,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>CredentialsModel</name> <message> <source>Click to select the packet</source> - <translation type="unfinished"></translation> + <translation>Kliknij by wybrać pakiet</translation> </message> <message> <source>Click to select the packet with username</source> - <translation type="unfinished"></translation> + <translation>Kliknij, aby wybrać pakiet z nazwą użytkownika</translation> </message> <message> <source>Username not available</source> - <translation type="unfinished"></translation> + <translation>Nazwa użytkownika jest nie dostępna</translation> </message> <message> <source>Packet No.</source> @@ -1959,15 +1985,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Protocol</source> - <translation type="unfinished">Protokół</translation> + <translation>Protokół</translation> </message> <message> <source>Username</source> - <translation type="unfinished"></translation> + <translation>Nazwa użytkownika</translation> </message> <message> <source>Additional Info</source> - <translation type="unfinished"></translation> + <translation>Dodatkowe informacje</translation> </message> </context> <context> @@ -1982,15 +2008,23 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>…as Hex Dump</source> - <translation type="unfinished"></translation> + <translation>…jako Hex Dump</translation> </message> <message> <source>Copy packet bytes as a hex dump.</source> <translation>Kopiuj bajty pakietu jako Hex.</translation> </message> <message> + <source>…as Printable Text</source> + <translation>…drukowalny tekst</translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation>Kopiuj tylko drukowalny tekst z pakietu.</translation> + </message> + <message> <source>…as MIME Data</source> - <translation type="unfinished"></translation> + <translation>…jako dane MIME</translation> </message> <message> <source>…as C String</source> @@ -2002,7 +2036,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>…as a Hex Stream</source> - <translation type="unfinished"></translation> + <translation>…jako strumień Hex</translation> </message> <message> <source>Copy packet bytes as a stream of hex.</source> @@ -2041,7 +2075,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Decode As…</source> - <translation type="unfinished"></translation> + <translation>Dekoduj jako...</translation> </message> <message> <source>Open </source> @@ -2115,11 +2149,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>DisplayFilterCombo</name> <message> <source>Display filter selector</source> - <translation type="unfinished"></translation> + <translation>Wyświetl selektor filtrów</translation> </message> <message> <source>Select from previously used filters.</source> - <translation type="unfinished"></translation> + <translation>Wybierz z uprzednio używanych filtrów.</translation> </message> </context> <context> @@ -2134,7 +2168,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Display Filter Expression…</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Wyrażenie filtru wyświetlania...</translation> </message> <message> <source>Apply a display filter %1 <%2/></source> @@ -2146,11 +2180,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Clear display filter</source> - <translation type="unfinished"></translation> + <translation>Wyczyść filtr wyświetlania</translation> </message> <message> <source>Apply display filter</source> - <translation type="unfinished"></translation> + <translation>Zastosuj filtr wyświetlania</translation> </message> <message> <source>Left align buttons</source> @@ -2162,11 +2196,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Current filter: %1</source> - <translation type="unfinished"></translation> + <translation>Bieżący filtr: %1</translation> </message> <message> <source>Invalid filter: </source> - <translation type="unfinished">Błędny filtr: </translation> + <translation>Błędny filtr: </translation> </message> <message> <source>Save this filter</source> @@ -2229,11 +2263,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Any</source> - <translation type="unfinished">Każdy</translation> + <translation>Każdy</translation> </message> <message> <source>All</source> - <translation type="unfinished"></translation> + <translation>Wszystkie</translation> </message> <message> <source>Match against this value.</source> @@ -2310,7 +2344,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>DissectorTablesProxyModel</name> <message> <source>Table Type</source> - <translation type="unfinished"></translation> + <translation>Typ Tabeli</translation> </message> <message> <source>String</source> @@ -2357,7 +2391,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>in</source> - <translation type="unfinished"></translation> + <translation>w</translation> </message> <message> <source>Enable All</source> @@ -2377,27 +2411,27 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Everywhere</source> - <translation type="unfinished"></translation> + <translation>Wszędzie</translation> </message> <message> <source>Only Protocols</source> - <translation type="unfinished"></translation> + <translation>Tylko protokoły</translation> </message> <message> <source>Only Description</source> - <translation type="unfinished"></translation> + <translation>Tylko opis</translation> </message> <message> <source>Only enabled protocols</source> - <translation type="unfinished"></translation> + <translation>Tylko włączone protokoły</translation> </message> <message> <source>Only disabled protocols</source> - <translation type="unfinished"></translation> + <translation>Tylko wyłączone protokoły</translation> </message> <message> <source>any protocol</source> - <translation type="unfinished"></translation> + <translation>dowolny protokół</translation> </message> <message> <source>non-heuristic protocols</source> @@ -2423,67 +2457,67 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>EndpointDataModel</name> <message> <source>Address</source> - <translation type="unfinished">Adres</translation> + <translation>Adres</translation> </message> <message> <source>Port</source> - <translation type="unfinished"></translation> + <translation>Port</translation> </message> <message> <source>Packets</source> - <translation type="unfinished">Pakiety</translation> + <translation>Pakiety</translation> </message> <message> <source>Bytes</source> - <translation type="unfinished"></translation> + <translation>Bajty</translation> </message> <message> <source>Tx Packets</source> - <translation type="unfinished"></translation> + <translation>Wysłane pakiety</translation> </message> <message> <source>Tx Bytes</source> - <translation type="unfinished"></translation> + <translation>Bajty Tx</translation> </message> <message> <source>Rx Packets</source> - <translation type="unfinished"></translation> + <translation>Pakiety Rx</translation> </message> <message> <source>Rx Bytes</source> - <translation type="unfinished"></translation> + <translation>Bajty Rx</translation> </message> <message> <source>Country</source> - <translation type="unfinished"></translation> + <translation>Kraj</translation> </message> <message> <source>City</source> - <translation type="unfinished"></translation> + <translation>Miasto</translation> </message> <message> <source>Latitude</source> - <translation type="unfinished"></translation> + <translation>Szerokość geograficzna</translation> </message> <message> <source>Longitude</source> - <translation type="unfinished"></translation> + <translation>Długość geograficzna</translation> </message> <message> <source>AS Number</source> - <translation type="unfinished"></translation> + <translation>Numer AS</translation> </message> <message> <source>AS Organization</source> - <translation type="unfinished"></translation> + <translation>Organizacja AS</translation> </message> <message> <source>Total Packets</source> - <translation type="unfinished"></translation> + <translation>Całkowita liczba pakietów</translation> </message> <message> <source>Percent Filtered</source> - <translation type="unfinished"></translation> + <translation>Filtrowane procentowo</translation> </message> </context> <context> @@ -2498,11 +2532,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Open in browser</source> - <translation type="unfinished"></translation> + <translation>Otwórz w przeglądarce</translation> </message> <message> <source>Save As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz jako…</translation> </message> <message> <source>Map file error</source> @@ -2521,35 +2555,35 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>EthernetAddressModel</name> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <source>Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa</translation> </message> <message> <source>Address</source> - <translation type="unfinished">Adres</translation> + <translation>Adres</translation> </message> <message> <source>All entries</source> - <translation type="unfinished"></translation> + <translation>Wszystkie wpisy</translation> </message> <message> <source>Hosts</source> - <translation type="unfinished"></translation> + <translation>Hosty</translation> </message> <message> <source>Ethernet Addresses</source> - <translation type="unfinished">Adresy Ethernet</translation> + <translation>Adresy Ethernet</translation> </message> <message> <source>Ethernet Manufacturers</source> - <translation type="unfinished">Producenci Ethernet</translation> + <translation>Producenci Ethernet</translation> </message> <message> <source>Ethernet Well-Known Addresses</source> - <translation type="unfinished">Dobrze znane adresy Ethernet</translation> + <translation>Powszechnie znane adresy Ethernet</translation> </message> </context> <context> @@ -2728,7 +2762,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Content Type:</source> - <translation type="unfinished"></translation> + <translation>Typ zawartości</translation> </message> <message> <source>Searching for objects</source> @@ -2744,7 +2778,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Preview</source> - <translation type="unfinished"></translation> + <translation>Podgląd</translation> </message> <message> <source>All Content-Types</source> @@ -2760,11 +2794,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Object As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz obiekt jako...</translation> </message> <message> <source>Save All Objects In…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wszystkie obiekty w...</translation> </message> </context> <context> @@ -2805,14 +2839,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ExtArgSelector</name> <message> <source>Reload data</source> - <translation type="unfinished"></translation> + <translation>Załaduj ponownie dane</translation> </message> </context> <context> <name>ExtcapArgumentFileSelection</name> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Wyczyść</translation> </message> <message> <source>All Files (</source> @@ -2824,7 +2858,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Select File</source> - <translation type="unfinished"></translation> + <translation>Wybierz plik</translation> </message> </context> <context> @@ -2840,15 +2874,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save</source> - <translation type="unfinished"></translation> + <translation>Zapisz</translation> </message> <message> <source>Default</source> - <translation type="unfinished">Domyślnie</translation> + <translation>Domyślnie</translation> </message> <message> <source>Restore default value of the item</source> - <translation type="unfinished"></translation> + <translation>Przywróć domyślną wartość elementu</translation> </message> <message> <source>Extcap Help cannot be found</source> @@ -2860,7 +2894,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save parameter(s) on capture start</source> - <translation type="unfinished"></translation> + <translation>Zapisz parametry przy starcie przechwytywania</translation> </message> </context> <context> @@ -2899,10 +2933,10 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <message numerus="yes"> <source>%Ln File(s) in Set</source> <oldsource>%1 File%2 in Set</oldsource> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln plik w zbiorze</numerusform> + <numerusform>%Ln pliki w zbiorze</numerusform> + <numerusform>%Ln plików w zbiorze</numerusform> </translation> </message> </context> @@ -2933,27 +2967,27 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>FilterAction</name> <message> <source>Selected</source> - <translation type="unfinished">Wybrany</translation> + <translation>Wybrane</translation> </message> <message> <source>Not Selected</source> - <translation type="unfinished">Nie wybrany</translation> + <translation>Nie wybrane</translation> </message> <message> <source>…and Selected</source> - <translation type="unfinished"></translation> + <translation>…i wybrane</translation> </message> <message> <source>…or Selected</source> - <translation type="unfinished"></translation> + <translation>…lub wybrane</translation> </message> <message> <source>…and not Selected</source> - <translation type="unfinished"></translation> + <translation>…i nie wybrane</translation> </message> <message> <source>…or not Selected</source> - <translation type="unfinished"></translation> + <translation>…lub nie wybrane</translation> </message> </context> <context> @@ -2986,7 +3020,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Open </source> - <translation type="unfinished">Otwórz</translation> + <translation>Otwórz</translation> </message> <message> <source>New capture filter</source> @@ -3027,7 +3061,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Comment:</source> - <translation type="unfinished"></translation> + <translation>Komentarz</translation> </message> <message> <source>Enter a comment for the filter button</source> @@ -3035,15 +3069,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Missing label.</source> - <translation type="unfinished"></translation> + <translation>Brak etykiety.</translation> </message> <message> <source>Missing filter expression.</source> - <translation type="unfinished"></translation> + <translation>Brak wyrażenia filtru.</translation> </message> <message> <source>Invalid filter expression.</source> - <translation type="unfinished"></translation> + <translation>Błędne wyrażenie filtru.</translation> </message> </context> <context> @@ -3054,26 +3088,26 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Edit</source> - <translation type="unfinished"></translation> + <translation>Edytuj</translation> </message> <message> <source>Disable</source> - <translation type="unfinished"></translation> + <translation>Wyłącz</translation> </message> <message> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Usuń</translation> </message> </context> <context> <name>FilterListModel</name> <message> <source>Filter Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa filtra</translation> </message> <message> <source>Filter Expression</source> - <translation type="unfinished"></translation> + <translation>Wyrażenie filtru</translation> </message> </context> <context> @@ -3178,7 +3212,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Global configuration</source> - <translation type="unfinished"></translation> + <translation>Konfiguracja globalna</translation> </message> <message> <source>dfilters, preferences, ethers, …</source> @@ -3206,7 +3240,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Personal Plugins</source> - <translation type="unfinished"></translation> + <translation>Wtyczki osobiste</translation> </message> <message> <source>binary plugins</source> @@ -3214,19 +3248,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Global Plugins</source> - <translation type="unfinished"></translation> + <translation>Globalne wtyczki</translation> </message> <message> <source>Personal Lua Plugins</source> - <translation type="unfinished"></translation> + <translation>Osobiste wtyczki Lua</translation> </message> <message> <source>Global Lua Plugins</source> - <translation type="unfinished"></translation> + <translation>Globalne wtyczki Lua</translation> </message> <message> <source>Lua scripts</source> - <translation type="unfinished"></translation> + <translation>Skrypty Lua</translation> </message> <message> <source>Personal Extcap path</source> @@ -3250,7 +3284,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>MIB/PIB path</source> - <translation type="unfinished"></translation> + <translation>ścieżka MIB/PIB</translation> </message> <message> <source>SMI MIB/PIB search path</source> @@ -3258,19 +3292,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>macOS Extras</source> - <translation type="unfinished"></translation> + <translation>Dodatki do macOS</translation> </message> <message> <source>Extra macOS packages</source> - <translation type="unfinished"></translation> + <translation>Dodatkowe pakiety macOS</translation> </message> <message> <source>Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa</translation> </message> <message> <source>Location</source> - <translation type="unfinished"></translation> + <translation>Lokalizacja</translation> </message> <message> <source>Typical Files</source> @@ -3281,7 +3315,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>FollowStreamAction</name> <message> <source>%1 Stream</source> - <translation type="unfinished"></translation> + <translation>%1 Strumień</translation> </message> </context> <context> @@ -3295,6 +3329,22 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <source>Print</source> <translation>Drukuj</translation> </message> + <message numerus="yes"> + <source>%Ln client pkt(s), </source> + <translation type="vanished"> + <numerusform>%Ln pakiet klienta,</numerusform> + <numerusform>%Ln pakiety klienta,</numerusform> + <numerusform>%Ln pakietów klienta,</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%Ln server pkt(s), </source> + <translation type="vanished"> + <numerusform>%Ln pakiet serwera,</numerusform> + <numerusform>%Ln pakiety serwera,</numerusform> + <numerusform>%Ln pakietów serwera,</numerusform> + </translation> + </message> <message> <source>ASCII</source> <translation>ASCII</translation> @@ -3325,7 +3375,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save as…</source> - <translation type="unfinished">Zapisz jako…</translation> + <translation>Zapisz jako…</translation> </message> <message> <source>Back</source> @@ -3337,26 +3387,26 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message numerus="yes"> <source>%Ln <span style="color: %1; background-color:%2">client</span> pkt(s), </source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln pakiet <span style="color: %1; background-color:%2">klienta</span>, </numerusform> + <numerusform>%Ln pakiety <span style="color: %1; background-color:%2">klienta</span>, </numerusform> + <numerusform>%Ln pakietów <span style="color: %1; background-color:%2">klienta</span>, </numerusform> </translation> </message> <message numerus="yes"> <source>%Ln <span style="color: %1; background-color:%2">server</span> pkt(s), </source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln pakiet <span style="color: %1; background-color:%2">serwera</span>,</numerusform> + <numerusform>%Ln pakiety <span style="color: %1; background-color:%2">serwera</span>, </numerusform> + <numerusform>%Ln pakietów <span style="color: %1; background-color:%2">serwera</span>, </numerusform> </translation> </message> <message numerus="yes"> <source>%Ln turn(s).</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln próba.</numerusform> + <numerusform>%Ln próby.</numerusform> + <numerusform>%Ln prób.</numerusform> </translation> </message> <message> @@ -3389,7 +3439,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>%1 stream not found on the selected packet.</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono strumienia %1 w wybranym pakiecie.</translation> </message> <message> <source>Entire conversation (%1)</source> @@ -3405,7 +3455,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Stream Content As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz zawartość strumienia jako...</translation> </message> <message> <source>[Stream output truncated]</source> @@ -3413,10 +3463,10 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message numerus="yes"> <source>%Ln total stream(s).</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln strumień.</numerusform> + <numerusform>%Ln strumienie.</numerusform> + <numerusform>%Ln strumieni.</numerusform> </translation> </message> <message numerus="yes"> @@ -3442,7 +3492,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <message> <source>Show data as</source> <oldsource>Show and save data as</oldsource> - <translation type="unfinished"></translation> + <translation>Pokazuj dane jako</translation> </message> <message> <source>Stream</source> @@ -3481,7 +3531,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>System Default</source> - <translation type="unfinished"></translation> + <translation>Domyślne ustawienie systemowe</translation> </message> <message> <source>Solid</source> @@ -3501,11 +3551,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Style:</source> - <translation type="unfinished"></translation> + <translation>Styl:</translation> </message> <message> <source>Gradient</source> - <translation type="unfinished"></translation> + <translation>Gradient</translation> </message> <message> <source>Sample inactive selected item</source> @@ -3530,7 +3580,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <message> <source>Sample warning filter</source> <oldsource>Sample deprecated filter</oldsource> - <translation type="unfinished"></translation> + <translation>Przykładowy filtr z ostrzeżeniem</translation> </message> <message> <source>Example GIF query packets have jumbo window sizes</source> @@ -3687,7 +3737,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Enter code</source> - <translation type="unfinished"></translation> + <translation>Wprowadź kod</translation> </message> <message> <source>Evaluate</source> @@ -3695,7 +3745,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Wyczyść</translation> </message> <message> <source>Use %1 to evaluate.</source> @@ -3804,15 +3854,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Clear all graphs.</source> - <translation type="unfinished"></translation> + <translation>Wyczyść wszystkie wykresy.</translation> </message> <message> <source>Move this graph upwards.</source> - <translation type="unfinished"></translation> + <translation>Przesuń ten wykres w górę.</translation> </message> <message> <source>Move this graph downwards.</source> - <translation type="unfinished"></translation> + <translation>Przesuń ten wykres w dół.</translation> </message> <message> <source>Mouse</source> @@ -3848,11 +3898,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Automatic update</source> - <translation type="unfinished"></translation> + <translation>Automatyczna aktualizacja</translation> </message> <message> <source>Enable legend</source> - <translation type="unfinished"></translation> + <translation>Włącz legendę</translation> </message> <message> <source>Reset</source> @@ -4057,11 +4107,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>I/O Graphs</source> - <translation type="unfinished"></translation> + <translation>Wykresy I/O</translation> </message> <message> <source>Save As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz jako...</translation> </message> <message> <source>Copy</source> @@ -4069,7 +4119,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Copy graphs from another profile.</source> - <translation type="unfinished"></translation> + <translation>Skopiuj wykresy z innego profilu.</translation> </message> <message> <source>1 ms</source> @@ -4077,11 +4127,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>2 ms</source> - <translation type="unfinished">100 ms {2 ?}</translation> + <translation>2 ms</translation> </message> <message> <source>5 ms</source> - <translation type="unfinished">100 ms {5 ?}</translation> + <translation>5 ms</translation> </message> <message> <source>10 ms</source> @@ -4089,11 +4139,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>20 ms</source> - <translation type="unfinished">100 ms {20 ?}</translation> + <translation>20 ms</translation> </message> <message> <source>50 ms</source> - <translation type="unfinished">100 ms {50 ?}</translation> + <translation>50 ms</translation> </message> <message> <source>100 ms</source> @@ -4101,47 +4151,47 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>200 ms</source> - <translation type="unfinished">100 ms {200 ?}</translation> + <translation>200 ms</translation> </message> <message> <source>500 ms</source> - <translation type="unfinished">100 ms {500 ?}</translation> + <translation>500 ms</translation> </message> <message> <source>2 sec</source> - <translation type="unfinished">10 s {2 ?}</translation> + <translation>2 sek.</translation> </message> <message> <source>5 sec</source> - <translation type="unfinished">10 s {5 ?}</translation> + <translation>5 sek.</translation> </message> <message> <source>Wireshark I/O Graphs: %1</source> - <translation type="unfinished"></translation> + <translation>Wireshark wykres we./wy.: %1</translation> </message> <message> <source>Filtered packets</source> - <translation type="unfinished"></translation> + <translation>Filtrowane pakiety</translation> </message> <message> <source>Filtered events</source> - <translation type="unfinished"></translation> + <translation>Filtrowane zdarzenia</translation> </message> <message> <source>All Packets</source> - <translation type="unfinished"></translation> + <translation>Wszystkie pakiety</translation> </message> <message> <source>TCP Errors</source> - <translation type="unfinished"></translation> + <translation>Błędy TCP</translation> </message> <message> <source>All Events</source> - <translation type="unfinished"></translation> + <translation>Wszystkie zdarzenia</translation> </message> <message> <source>Access Denied</source> - <translation type="unfinished"></translation> + <translation>Brak dostępu</translation> </message> <message> <source>Hover over the graph for details.</source> @@ -4153,7 +4203,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>No events in interval</source> - <translation type="unfinished"></translation> + <translation>Brak zdarzeń w danym czasie</translation> </message> <message> <source>Click to select packet</source> @@ -4165,11 +4215,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Click to select event</source> - <translation type="unfinished"></translation> + <translation>Kliknij, aby wybrać zdarzenie</translation> </message> <message> <source>Event</source> - <translation type="unfinished">Event</translation> + <translation>Zdarzenie</translation> </message> <message> <source>%1 (%2s%3).</source> @@ -4209,7 +4259,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> </context> <context> @@ -4384,7 +4434,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Please select an IAX2 packet.</source> - <translation type="unfinished"></translation> + <translation>Wybierz pakiet IAX2.</translation> </message> <message> <source> G: Go to packet, N: Next problem packet</source> @@ -4408,7 +4458,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> <message> <source>Can't save in a file: Wrong length of captured packets.</source> @@ -4452,11 +4502,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Saving %1…</source> - <translation type="unfinished"></translation> + <translation>Zapisywanie %1...</translation> </message> <message> <source>Analyzing IAX2</source> - <translation type="unfinished"></translation> + <translation>Analizowanie IAX2</translation> </message> <message> <source>Save forward stream CSV</source> @@ -4540,7 +4590,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Regular Expression</source> - <translation type="unfinished">Wyrażenie regularne</translation> + <translation>Wyrażenie regularne</translation> </message> <message> <source>Import a file formatted according to a custom regular expression</source> @@ -4564,7 +4614,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>How data is encoded</source> - <translation type="unfinished"></translation> + <translation>Jak dane są kodowane</translation> </message> <message> <source>encodingRegexExample</source> @@ -4576,7 +4626,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>iI<</source> - <translation type="unfinished"></translation> + <translation>iI<</translation> </message> <message> <source>List of characters indicating outgoing packets</source> @@ -4584,7 +4634,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>oO></source> - <translation type="unfinished"></translation> + <translation>oO></translation> </message> <message> <source>Timestamp format:</source> @@ -4604,11 +4654,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>IP version:</source> - <translation type="unfinished"></translation> + <translation>Wersja protokołu IP:</translation> </message> <message> <source>Interface name:</source> - <translation type="unfinished"></translation> + <translation>Nazwa interfejsu:</translation> </message> <message> <source>The name of the interface to write to the import capture file</source> @@ -4648,7 +4698,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>%H:%M:%S.%f</source> - <translation type="unfinished"></translation> + <translation>%H:%M:%S.%f</translation> </message> <message> <source>timestampExampleLabel</source> @@ -4664,35 +4714,35 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prefix each frame with an Ethernet and IP header</source> - <translation type="unfinished"></translation> + <translation>Poprzedź każdą ramkę nagłówkami Ethernet i IPv4</translation> </message> <message> <source>IP</source> - <translation type="unfinished"></translation> + <translation>IP</translation> </message> <message> <source>Prefix each frame with an Ethernet, IP and UDP header</source> - <translation type="unfinished"></translation> + <translation>Poprzedź każdą ramkę nagłówkami Ethernet, IPv4 i UDP</translation> </message> <message> <source>Prefix each frame with an Ethernet, IP and TCP header</source> - <translation type="unfinished"></translation> + <translation>Poprzedź każdą ramkę nagłówkami Ethernet, IPv4 i TCP</translation> </message> <message> <source>Prefix each frame with an Ethernet, IP and SCTP header</source> - <translation type="unfinished"></translation> + <translation>Poprzedź każdą ramkę nagłówkami Ethernet, IPv4 i SCTP</translation> </message> <message> <source>Prefix each frame with an Ethernet, IP and SCTP (DATA) header</source> - <translation type="unfinished"></translation> + <translation>Poprzedź każdą ramkę nagłówkami Ethernet, IPv4 i SCTP (dane)</translation> </message> <message> <source>Source address:</source> - <translation type="unfinished"></translation> + <translation>Adres źródłowy:</translation> </message> <message> <source>Destination address:</source> - <translation type="unfinished"></translation> + <translation>Adres docelowy:</translation> </message> <message> <source>Dissector</source> @@ -4700,15 +4750,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>The IP protocol ID for each frame</source> - <translation type="unfinished"></translation> + <translation>Identyfikator protokołu IP dla każdej ramki</translation> </message> <message> <source>The IP source address for each frame</source> - <translation type="unfinished"></translation> + <translation>Źródłowy adres IP dla każdej ramki</translation> </message> <message> <source>The IP destination address for each frame</source> - <translation type="unfinished"></translation> + <translation>Docelowy adres IP dla każdej ramki</translation> </message> <message> <source>The UDP, TCP or SCTP source port for each frame</source> @@ -4792,15 +4842,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>The IP Version to use for the dummy IP header</source> - <translation type="unfinished"></translation> + <translation>Wersja protokołu IP, która ma być używana dla pustego nagłówka IP</translation> </message> <message> <source>The maximum size of the frames to write to the import capture file (max 256kiB)</source> - <translation type="unfinished"></translation> + <translation>Maksymalny rozmiar ramek do zapisu w importowanym pliku (maks. 256kiB)</translation> </message> <message> <source>Supported fields are data, dir, time, seqno</source> - <translation type="unfinished"></translation> + <translation>Obsługiwane pola to data, dir, time, seqno</translation> </message> <message> <source>Missing capturing group data (use (?</source> @@ -4823,15 +4873,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>InterfaceFrame</name> <message> <source>Frame</source> - <translation type="unfinished">Ramka</translation> + <translation>Ramka</translation> </message> <message> <source>Wired</source> - <translation type="unfinished"></translation> + <translation>Przewodowy</translation> </message> <message> <source>AirPCAP</source> - <translation type="unfinished"></translation> + <translation>AirPCAP</translation> </message> <message> <source>Pipe</source> @@ -4843,11 +4893,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Bluetooth</source> - <translation type="unfinished"></translation> + <translation>Bluetooth</translation> </message> <message> <source>Wireless</source> - <translation type="unfinished"></translation> + <translation>Bezprzewodowy</translation> </message> <message> <source>Dial-Up</source> @@ -4855,111 +4905,111 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>USB</source> - <translation type="unfinished"></translation> + <translation>USB</translation> </message> <message> <source>External Capture</source> - <translation type="unfinished"></translation> + <translation>Zewnętrznie przechwytywany</translation> </message> <message> <source>Virtual</source> - <translation type="unfinished"></translation> + <translation>Wirtualny</translation> </message> <message> <source>Remote interfaces</source> - <translation type="unfinished"></translation> + <translation>Zdalne interfejsy</translation> </message> <message> <source>Show hidden interfaces</source> - <translation type="unfinished"></translation> + <translation>Pokaż ukryte interfejsy</translation> </message> <message> <source>External capture interfaces disabled.</source> - <translation type="unfinished"></translation> + <translation>Zewnętrzne interfejsy przechwytywania wyłączone.</translation> </message> <message> <source><p>Local interfaces are unavailable because no packet capture driver is installed.</p><p>You can fix this by installing <a href="https://npcap.com/">Npcap</a>.</p></source> - <translation type="unfinished"></translation> + <translation><p>Interfejsy lokalne są niedostępne, ponieważ nie zainstalowano sterownika przechwytywania pakietów.</p><p>Możesz to naprawić, instalując <a href="https://npcap.com/">Npcap</a>.</p></translation> </message> <message> <source><p>Local interfaces are unavailable because the packet capture driver isn't loaded.</p><p>You can fix this by running <pre>net start npcap</pre> if you have Npcap installed or <pre>net start npf</pre> if you have WinPcap installed. Both commands must be run as Administrator.</p></source> - <translation type="unfinished"></translation> + <translation><p>Interfejsy lokalne są niedostępne, ponieważ sterownik przechwytywania pakietów nie jest załadowany.</p><p>Możesz to naprawić, uruchamiając<pre>net start npcap</pre> jeśli masz zainstalowany Npcap lub <pre>net start npf</pre> jeśli masz zainstalowany WinPcap. Obydwa polecenia należy uruchomić jako Administrator.</p></translation> </message> <message> <source><p>You don't have permission to capture on local interfaces.</p><p>You can fix this by <a href="file://%1">installing ChmodBPF</a>.</p></source> - <translation type="unfinished"></translation> + <translation><p>Nie masz uprawnień do przechwytywania na interfejsach lokalnych. </p><p>Możesz to naprawić <a href="file://%1">instalując ChmodBPF</a>.</p></translation> </message> <message> <source>You don't have permission to capture on local interfaces.</source> - <translation type="unfinished"></translation> + <translation>Nie masz uprawnień do przechwytywania na interfejsach lokalnych.</translation> </message> <message> <source>No interfaces found.</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono interfejsów.</translation> </message> <message> <source>Interfaces not loaded (due to preference). Go to Capture </source> - <translation type="unfinished"></translation> + <translation>Interfejsy nie zostały załadowane (ze względu na preferencje). Przejdź do Przechwytywania</translation> </message> <message> <source>Start capture</source> - <translation type="unfinished"></translation> + <translation>Rozpocznij przechwytywanie</translation> </message> <message> <source>Hide Interface</source> - <translation type="unfinished"></translation> + <translation>Ukryj interfejs</translation> </message> </context> <context> <name>InterfaceSortFilterModel</name> <message> <source>No interfaces to be displayed. %1 interfaces hidden.</source> - <translation type="unfinished"></translation> + <translation>Brak interfejsów do wyświetlenia. %1 interfejsów ukrytych.</translation> </message> </context> <context> <name>InterfaceToolbar</name> <message> <source>Frame</source> - <translation type="unfinished">Ramka</translation> + <translation>Ramka</translation> </message> <message> <source>Select interface</source> - <translation type="unfinished"></translation> + <translation>Wybrany interfejs</translation> </message> <message> <source>Interface</source> - <translation type="unfinished">Interfejs</translation> + <translation>Interfejs</translation> </message> </context> <context> <name>InterfaceToolbarLineEdit</name> <message> <source>Apply changes</source> - <translation type="unfinished">Zastosuj zmiany</translation> + <translation>Zastosuj zmiany</translation> </message> </context> <context> <name>InterfaceTreeModel</name> <message> <source>Show</source> - <translation type="unfinished"></translation> + <translation>Pokaż</translation> </message> <message> <source>Friendly Name</source> - <translation type="unfinished"></translation> + <translation>Przyjazna nazwa</translation> </message> <message> <source>Interface Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa interfejsu</translation> </message> <message> <source>No interfaces found.</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono interfejsów.</translation> </message> <message> <source>This version of Wireshark was built without packet capture support.</source> - <translation type="unfinished"></translation> + <translation>Ta wersja programu Wireshark została zbudowana bez obsługi przechwytywania pakietów.</translation> </message> <message> <source>Local Pipe Path</source> @@ -4967,39 +5017,39 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Comment</source> - <translation type="unfinished"></translation> + <translation>Komentarz</translation> </message> <message> <source>Link-Layer Header</source> - <translation type="unfinished"></translation> + <translation>Nagłówek warstwy łącza</translation> </message> <message> <source>Promiscuous</source> - <translation type="unfinished"></translation> + <translation>Tryb mieszany</translation> </message> <message> <source>Snaplen (B)</source> - <translation type="unfinished"></translation> + <translation>Rozmiar przechwyconej ramki (B)</translation> </message> <message> <source>Buffer (MB)</source> - <translation type="unfinished"></translation> + <translation>Bufor (MB)</translation> </message> <message> <source>Monitor Mode</source> - <translation type="unfinished"></translation> + <translation>Tryb monitora</translation> </message> <message> <source>Capture Filter</source> - <translation type="unfinished"></translation> + <translation>Filtr przechwytywania</translation> </message> <message> <source>Addresses</source> - <translation type="unfinished"></translation> + <translation>Adresy</translation> </message> <message> <source>Address</source> - <translation type="unfinished">Adres</translation> + <translation>Adres</translation> </message> <message> <source>Extcap interface: %1</source> @@ -5007,22 +5057,22 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>No addresses</source> - <translation type="unfinished"></translation> + <translation>Brak adresów</translation> </message> <message> <source>No capture filter</source> - <translation type="unfinished"></translation> + <translation>Brak filtru przechwytywania</translation> </message> <message> <source>Capture filter</source> - <translation type="unfinished">Filtr przechwytywania</translation> + <translation>Filtr przechwytywania</translation> </message> </context> <context> <name>LBMLBTRMTransportDialog</name> <message> <source>LBT-RM Transport Statistics</source> - <translation type="unfinished"></translation> + <translation>Statystyki transportu LBT-RM</translation> </message> <message> <source>Sources</source> @@ -5307,7 +5357,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>LBMLBTRUTransportDialog</name> <message> <source>LBT-RU Transport Statistics</source> - <translation type="unfinished"></translation> + <translation>Statystyki transportu LBT-RU</translation> </message> <message> <source>Sources</source> @@ -5860,7 +5910,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Packet Diagram</source> - <translation type="unfinished"></translation> + <translation>Diagram pakietu</translation> </message> <message> <source>None</source> @@ -5876,23 +5926,23 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Packet List settings:</source> - <translation type="unfinished"></translation> + <translation>Ustawienia listy pakietów:</translation> </message> <message> <source>Show packet separator</source> - <translation type="unfinished"></translation> + <translation>Pokaż separator pakietów</translation> </message> <message> <source>Show column definition in column context menu</source> - <translation type="unfinished"></translation> + <translation>Pokaż definicję kolumny w menu kontekstowym kolumny</translation> </message> <message> <source>Allow the list to be sorted</source> - <translation type="unfinished"></translation> + <translation>Pozwól na sortowanie listy</translation> </message> <message> <source>Maximum number of cached rows (affects sorting)</source> - <translation type="unfinished"></translation> + <translation>Maksymalna liczba wierszy w pamięci podręcznej (wpływa na sortowanie)</translation> </message> <message> <source><html><head/><body><p>If more than this many rows are displayed, then sorting by columns that require packet dissection will be disabled. Increasing this number increases memory consumption by caching column values.</p></body></html></source> @@ -5900,19 +5950,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Enable mouse-over colorization</source> - <translation type="unfinished"></translation> + <translation>Włącz kolorowanie po najechaniu myszką</translation> </message> <message> <source>Status Bar settings:</source> - <translation type="unfinished"></translation> + <translation>Ustawienia paska stanu:</translation> </message> <message> <source>Show selected packet number</source> - <translation type="unfinished"></translation> + <translation>Pokaż numer wybranego pakietu</translation> </message> <message> <source>Show file load time</source> - <translation type="unfinished"></translation> + <translation>Pokaż czas ładowania pliku</translation> </message> </context> <context> @@ -5931,7 +5981,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>MAC Statistics</source> - <translation type="unfinished">Statystyki MAC</translation> + <translation>Statystyki MAC</translation> </message> </context> <context> @@ -6024,11 +6074,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source><html><head/><body><p>Switch the direction of the connection (view the opposite flow).</p></body></html></source> - <translation type="unfinished"><html><head/><body><p>Zmień kierunek przepływu w połączeniu.</p></body></html></translation> + <translation><html><head/><body><p>Zmień kierunek przepływu w połączeniu (przepływ w przeciwnym kierunku).</p></body></html></translation> </message> <message> <source>Switch Direction</source> - <translation type="unfinished">Odwróć kierunek</translation> + <translation>Odwróć kierunek</translation> </message> <message> <source>Reset Graph</source> @@ -6232,7 +6282,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz jako...</translation> </message> <message> <source>%1 %2 (%3s seq %4 len %5)</source> @@ -6276,7 +6326,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> </context> <context> @@ -6347,7 +6397,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>RLC Statistics</source> - <translation type="unfinished">Statystyki RLC</translation> + <translation>Statystyki RLC</translation> </message> </context> <context> @@ -6370,23 +6420,23 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Manage Profiles…</source> - <translation type="unfinished"></translation> + <translation>Zarządzaj profilami...</translation> </message> <message> <source>New…</source> - <translation type="unfinished"></translation> + <translation>Nowy...</translation> </message> <message> <source>Edit…</source> - <translation type="unfinished"></translation> + <translation>Edytuj...</translation> </message> <message> <source>Import</source> - <translation type="unfinished">Importuj</translation> + <translation>Importuj</translation> </message> <message> <source>Export</source> - <translation type="unfinished">Eksportuj</translation> + <translation>Eksportuj</translation> </message> <message> <source>Delete</source> @@ -6425,10 +6475,10 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <message numerus="yes"> <source>%Ln byte(s)</source> <oldsource>, %1 bytes</oldsource> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln bajt</numerusform> + <numerusform>%Ln bajty</numerusform> + <numerusform>%Ln bajtów</numerusform> </translation> </message> <message> @@ -6450,7 +6500,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source> %1 Selected: %2 (%3%)</source> - <translation type="unfinished"></translation> + <translation> %1 Wybranych: %2 (%3%)</translation> </message> <message> <source> %1 Marked: %2 (%3%)</source> @@ -6467,7 +6517,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source> %1 Comments: %2</source> - <translation type="unfinished"></translation> + <translation> %1 Komentarzy: %2</translation> </message> <message> <source> %1 Load time: %2:%3.%4</source> @@ -6479,19 +6529,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>From Zip File...</source> - <translation type="unfinished"></translation> + <translation>Z pliku ZIP....</translation> </message> <message> <source>From Directory...</source> - <translation type="unfinished"></translation> + <translation>Z katalogu...</translation> </message> <message> <source>Selected Personal Profile...</source> - <translation type="unfinished"></translation> + <translation>Wybrany profil osobisty...</translation> </message> <message> <source>All Personal Profiles...</source> - <translation type="unfinished"></translation> + <translation>Wszystkie profile osobiste...</translation> </message> <message> <source>Packets: %1</source> @@ -6559,7 +6609,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Display autocompletion for filter text</source> - <translation type="unfinished"></translation> + <translation>Wyświetl autouzupełnianie tekstu filtra</translation> </message> <message> <source>Main toolbar style:</source> @@ -6579,7 +6629,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Window title</source> - <translation type="unfinished"></translation> + <translation>Nazwa okna</translation> </message> <message> <source><html><head/><body><p>Custom window title to be appended to the existing title<br/>%F = file path of the capture file<br/>%P = profile name<br/>%S = a conditional separator (&quot; - &quot;) that only shows when surrounded by variables with values or static text<br/>%V = version info</p></body></html></source> @@ -6685,62 +6735,62 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ManufDialog</name> <message> <source>MAC Address Blocks</source> - <translation type="unfinished"></translation> + <translation>Bloki adresów MAC</translation> </message> <message> <source>Search MAC address or address prefix. Special purpose bits are masked.</source> - <translation type="unfinished"></translation> + <translation>Wyszukaj adres MAC lub prefiks adresu. Bity specjalnego przeznaczenia są maskowane.</translation> </message> <message> <source>MAC Address</source> - <translation type="unfinished"></translation> + <translation>Adres MAC</translation> </message> <message> <source>Search vendor name using a case-insentitive regular expression.</source> - <translation type="unfinished"></translation> + <translation>Wyszukaj nazwę producenta, używając wyrażenia regularnego nieuwzględniającego wielkości liter.</translation> </message> <message> <source>Vendor Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa producenta</translation> </message> <message> <source>Show short name column.</source> - <translation type="unfinished"></translation> + <translation>Pokaż kolumnę krótkiej nazwy.</translation> </message> <message> <source>Short name</source> - <translation type="unfinished"></translation> + <translation>Krótka nazwa</translation> </message> <message> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Zaznacz wszystkie</translation> </message> <message> <source>Copy</source> - <translation type="unfinished">Kopiuj</translation> + <translation>Kopiuj</translation> </message> <message> <source>Find</source> - <translation type="unfinished">Znajdź</translation> + <translation>Znajdź</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Wyczyść</translation> </message> </context> <context> <name>ManufTableModel</name> <message> <source>Address Block</source> - <translation type="unfinished"></translation> + <translation>Blok adresowy</translation> </message> <message> <source>Short Name</source> - <translation type="unfinished">Krótka Nazwa</translation> + <translation>Krótka Nazwa</translation> </message> <message> <source>Vendor Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa producenta</translation> </message> </context> <context> @@ -6954,54 +7004,54 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>PacketCommentDialog</name> <message> <source>Edit Packet Comment</source> - <translation type="unfinished"></translation> + <translation>Edytuj komentarz pakietu</translation> </message> <message> <source>Add Packet Comment</source> - <translation type="unfinished"></translation> + <translation>Dodaj komentarz pakietu</translation> </message> </context> <context> <name>PacketDiagram</name> <message> <source>Packet diagram</source> - <translation type="unfinished"></translation> + <translation>Diagram pakietu</translation> </message> <message> <source>Show Field Values</source> - <translation type="unfinished"></translation> + <translation>Pokaż wartości pól</translation> </message> <message> <source>Save Diagram As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz diagram jako…</translation> </message> <message> <source>Copy as Raster Image</source> - <translation type="unfinished"></translation> + <translation>Skopiuj jako obraz rastrowy</translation> </message> <message> <source>…as SVG</source> - <translation type="unfinished"></translation> + <translation>...jako SVG</translation> </message> <message> <source>Portable Network Graphics (*.png)</source> - <translation type="unfinished">Obraz PNG (*.png)</translation> + <translation>Obraz PNG (*.png)</translation> </message> <message> <source>Windows Bitmap (*.bmp)</source> - <translation type="unfinished">Bitmapa Windows (*.bmp)</translation> + <translation>Bitmapa Windows (*.bmp)</translation> </message> <message> <source>JPEG File Interchange Format (*.jpeg *.jpg)</source> - <translation type="unfinished">Obraz JPEG (*.jpeg *.jpg)</translation> + <translation>Obraz JPEG (*.jpeg *.jpg)</translation> </message> <message> <source>Scalable Vector Graphics (*.svg)</source> - <translation type="unfinished"></translation> + <translation>Obraz PNG (*.png)</translation> </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> </context> <context> @@ -7016,7 +7066,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Show packet bytes</source> - <translation type="unfinished"></translation> + <translation>Pokaż bajty pakietu</translation> </message> <message> <source>Packet %1</source> @@ -7036,10 +7086,10 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message numerus="yes"> <source>%Ln byte(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln bajt</numerusform> + <numerusform>%Ln bajty</numerusform> + <numerusform>%Ln bajtów</numerusform> </translation> </message> </context> @@ -7118,7 +7168,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>PacketList</name> <message> <source>Protocol Preferences</source> - <translation type="unfinished">Ustawienia protokołów</translation> + <translation>Ustawienia protokołów</translation> </message> <message> <source>Summary as Text</source> @@ -7126,15 +7176,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>…as CSV</source> - <translation type="unfinished"></translation> + <translation>...jako CSV</translation> </message> <message> <source>…as YAML</source> - <translation type="unfinished"></translation> + <translation>...jako YAML</translation> </message> <message> <source>Decode As…</source> - <translation type="unfinished"></translation> + <translation>Dekoduj jako...</translation> </message> <message> <source>Frame %1: %2 @@ -7152,54 +7202,54 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>PacketListHeader</name> <message> <source>Align Left</source> - <translation type="unfinished"></translation> + <translation>Wyrównaj do lewej</translation> </message> <message> <source>Align Center</source> - <translation type="unfinished"></translation> + <translation>Wyrównaj do środka</translation> </message> <message> <source>Align Right</source> - <translation type="unfinished"></translation> + <translation>Wyrównaj do prawej</translation> </message> <message> <source>Edit Column</source> - <translation type="unfinished"></translation> + <translation>Edytuj kolumnę</translation> </message> <message> <source>Resize to Contents</source> - <translation type="unfinished"></translation> + <translation>Dopasuj szerokość do zawartości</translation> </message> <message> <source>Column Preferences…</source> - <translation type="unfinished"></translation> + <translation>Ustawienia kolumny</translation> </message> <message> <source>Resize Column to Width…</source> - <translation type="unfinished"></translation> + <translation>Zmień rozmiar kolumny do szerokości…</translation> </message> <message> <source>Resolve Names</source> - <translation type="unfinished"></translation> + <translation>Rozwiązuj nazwy</translation> </message> <message> <source>Remove this Column</source> - <translation type="unfinished"></translation> + <translation>Usuń tę kolumnę</translation> </message> <message> <source>Column %1</source> - <translation type="unfinished"></translation> + <translation>Kolumna %1</translation> </message> <message> <source>Width:</source> - <translation type="unfinished"></translation> + <translation>Szerokość:</translation> </message> </context> <context> <name>PacketListModel</name> <message> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Kolumna</translation> </message> <message> <source>%1 can only be sorted with %2 or fewer visible rows; increase cache size in Layout preferences</source> @@ -7207,11 +7257,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Sorting "%1"…</source> - <translation type="unfinished"></translation> + <translation>Sortowanie "%1"...</translation> </message> <message> <source>Sorting …</source> - <translation type="unfinished"></translation> + <translation>Sortowanie ...</translation> </message> </context> <context> @@ -7280,11 +7330,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>PathSelectionEdit</name> <message> <source>Browse</source> - <translation type="unfinished"></translation> + <translation>Przeglądaj</translation> </message> <message> <source>Select a path</source> - <translation type="unfinished"></translation> + <translation>Wybierz ścieżkę</translation> </message> </context> <context> @@ -7310,35 +7360,35 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>PortsModel</name> <message> <source>All entries</source> - <translation type="unfinished"></translation> + <translation>Wszystkie wpisy</translation> </message> <message> <source>tcp</source> - <translation type="unfinished"></translation> + <translation>tcp</translation> </message> <message> <source>udp</source> - <translation type="unfinished"></translation> + <translation>udp</translation> </message> <message> <source>sctp</source> - <translation type="unfinished"></translation> + <translation>sctp</translation> </message> <message> <source>dccp</source> - <translation type="unfinished"></translation> + <translation>dccp</translation> </message> <message> <source>Name</source> - <translation type="unfinished"></translation> + <translation>Nazwa</translation> </message> <message> <source>Port</source> - <translation type="unfinished"></translation> + <translation>Port</translation> </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> </context> <context> @@ -7357,11 +7407,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Browse…</source> - <translation type="unfinished">Przeglądaj…</translation> + <translation>Przeglądaj…</translation> </message> <message> <source>Open %1 preferences…</source> - <translation type="unfinished"></translation> + <translation>Otwórz ustawienia %1…</translation> </message> <message> <source>Invalid value.</source> @@ -7380,7 +7430,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Show changed values</source> - <translation type="unfinished"></translation> + <translation>Pokaż zmienione wartości</translation> </message> <message> <source>Preferences</source> @@ -7423,7 +7473,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>RSA Keys</source> - <translation type="unfinished"></translation> + <translation>Klucze RSA</translation> </message> </context> <context> @@ -7462,11 +7512,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Print…</source> - <translation type="unfinished">Drukuj…</translation> + <translation>&Drukuj…</translation> </message> <message> <source>Page &Setup…</source> - <translation type="unfinished"></translation> + <translation>Ustawienia &strony</translation> </message> <message> <source>%1 %2 total packets, %3 shown</source> @@ -7485,7 +7535,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ProfileDialog</name> <message> <source>Search for profile …</source> - <translation type="unfinished"></translation> + <translation>Wyszukaj profil…</translation> </message> <message> <source>Create a new profile using default settings.</source> @@ -7493,7 +7543,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source><html><head/><body><p>Remove this profile. System provided profiles cannot be removed. The default profile will be reset upon deletion.</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Usuń ten profil. Profili dostarczonych przez system nie można usunąć. Domyślny profil zostanie zresetowany po usunięciu.</p></body></html></translation> </message> <message> <source>Copy this profile.</source> @@ -7506,36 +7556,36 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <message> <source>Import</source> <comment>noun</comment> - <translation type="unfinished">Importuj</translation> + <translation>Importuj</translation> </message> <message> <source>Export</source> <comment>noun</comment> - <translation type="unfinished">Eksportuj</translation> + <translation>Eksportuj</translation> </message> <message> <source>From Zip File...</source> - <translation type="unfinished"></translation> + <translation>Z pliku ZIP....</translation> </message> <message> <source>From Directory...</source> - <translation type="unfinished"></translation> + <translation>Z katalogu...</translation> </message> <message numerus="yes"> <source>%Ln Selected Personal Profile(s)...</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln wybrany profil osobisty...</numerusform> + <numerusform>%Ln wybrane profile osobiste...</numerusform> + <numerusform>%Ln wybranych profili osobistych...</numerusform> </translation> </message> <message> <source>All Personal Profiles...</source> - <translation type="unfinished"></translation> + <translation>Wszystkie profile osobiste...</translation> </message> <message> <source>New profile</source> - <translation type="unfinished"></translation> + <translation>Nowy profil</translation> </message> <message> <source>Profile Error</source> @@ -7543,83 +7593,99 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Exporting profiles</source> - <translation type="unfinished"></translation> + <translation>Eksportowanie profili</translation> </message> <message> <source>No profiles found for export</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono profili do eksportu</translation> </message> <message> <source>Select zip file for export</source> - <translation type="unfinished"></translation> + <translation>Wybierz plik ZIP do wyeksportowania</translation> + </message> + <message numerus="yes"> + <source>… %Ln selected personal profile(s)</source> + <translation type="vanished"> + <numerusform>... %Ln wybrany profil osobisty</numerusform> + <numerusform>... %Ln wybrane profile osobiste</numerusform> + <numerusform>... %Ln wybranych profili osobistych</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>%Ln selected personal profile(s)</source> + <translation type="vanished"> + <numerusform>%Ln wybrany profil osobisty</numerusform> + <numerusform>%Ln wybrane profile osobiste</numerusform> + <numerusform>%Ln wybranych profili osobistych</numerusform> + </translation> </message> <message> <source>An import of profiles is not allowed, while changes are pending</source> - <translation type="unfinished"></translation> + <translation>Import profili nie jest dozwolony, dopóki oczekujące zmiany nie zostaną wprowadzone</translation> </message> <message> <source>An import is pending to be saved. Additional imports are not allowed</source> - <translation type="unfinished"></translation> + <translation>Import oczekuje na zapisanie. Kolejny import nie jest dozwolony</translation> </message> <message> <source>An export of profiles is only allowed for personal profiles</source> - <translation type="unfinished"></translation> + <translation>Eksport profili jest dozwolony tylko w przypadku profili osobistych</translation> </message> <message> <source>An export of profiles is not allowed, while changes are pending</source> - <translation type="unfinished"></translation> + <translation>Eksport profili nie jest dozwolony, dopóki oczekujące zmiany nie zostaną wprowadzone</translation> </message> <message numerus="yes"> <source>%Ln profile(s) exported</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln profil wyeksportowany</numerusform> + <numerusform>%Ln profile wyeksportowane</numerusform> + <numerusform>%Ln profili wyeksportowanych</numerusform> </translation> </message> <message> <source>Select zip file for import</source> - <translation type="unfinished"></translation> + <translation>Wybierz plik ZIP do zaimportowania</translation> </message> <message> <source>Select directory for import</source> - <translation type="unfinished"></translation> + <translation>Wybierz katalog do zaimportowania</translation> </message> <message> <source>Zip File (*.zip)</source> - <translation type="unfinished"></translation> + <translation>Plik ZIP (*.zip)</translation> </message> <message> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Błąd</translation> </message> <message> <source>An error has occurred while exporting profiles</source> - <translation type="unfinished"></translation> + <translation>Wystąpił błąd podczas eksportowania profili</translation> </message> <message> <source>No profiles found for import in %1</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono profili do zaimportowania w %1</translation> </message> <message numerus="yes"> <source>%Ln profile(s) imported</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln profil zaimportowany</numerusform> + <numerusform>%Ln profile zaimportowane</numerusform> + <numerusform>%Ln profili zaimportowanych</numerusform> </translation> </message> <message numerus="yes"> <source>, %Ln profile(s) skipped</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>, %Ln profil pominięto</numerusform> + <numerusform>, %Ln profile pominięto</numerusform> + <numerusform>, %Ln profili pominięto</numerusform> </translation> </message> <message> <source>Importing profiles</source> - <translation type="unfinished"></translation> + <translation>Importowanie profili</translation> </message> <message numerus="yes"> <source>%Ln profile(s) selected</source> @@ -7634,123 +7700,123 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>ProfileModel</name> <message> <source>Resetting to default</source> - <translation type="unfinished"></translation> + <translation>Resetowanie do ustawień domyślnych</translation> </message> <message> <source>Imported profile</source> - <translation type="unfinished"></translation> + <translation>Zaimportowany profil</translation> </message> <message> <source>This is a system provided profile</source> - <translation type="unfinished"></translation> + <translation>To jest profil dostarczony z tym oprogramowaniem.</translation> </message> <message> <source>A profile change for this name is pending</source> - <translation type="unfinished"></translation> + <translation>Zmiana nazwy dla tego profilu oczekuje</translation> </message> <message> <source> (See: %1)</source> - <translation type="unfinished"></translation> + <translation> (Zobacz: %1)</translation> </message> <message> <source>This is an invalid profile definition</source> - <translation type="unfinished"></translation> + <translation>To jest nieprawidłowa definicja profilu</translation> </message> <message> <source>A profile already exists with this name</source> - <translation type="unfinished"></translation> + <translation>Profil o tej nazwie już istnieje</translation> </message> <message> <source>A profile with this name is being deleted</source> - <translation type="unfinished"></translation> + <translation>Profil o tej nazwie jest usuwany</translation> </message> <message> <source>Created from default settings</source> - <translation type="unfinished"></translation> + <translation>Utworzono z domyślnych ustawień</translation> </message> <message> <source>system provided</source> - <translation type="unfinished"></translation> + <translation>dostarczone przez system</translation> </message> <message> <source>deleted</source> - <translation type="unfinished"></translation> + <translation>usunięte</translation> </message> <message> <source>copy</source> <comment>noun</comment> - <translation type="unfinished"></translation> + <translation>kopiuj</translation> </message> <message> <source>Exporting profiles while changes are pending is not allowed</source> - <translation type="unfinished"></translation> + <translation>Eksportowanie profili w czasie, gdy zmiany oczekują, jest niedozwolone</translation> </message> <message> <source>No profiles found to export</source> - <translation type="unfinished"></translation> + <translation>Nie znaleziono profili do eksportu</translation> </message> <message> <source>Can't delete profile directory</source> - <translation type="unfinished"></translation> + <translation>Nie można usunąć katalogu profilu</translation> </message> <message> <source>A profile name cannot contain the following characters: %1</source> - <translation type="unfinished"></translation> + <translation>Nazwa profilu nie może zawierać następujących znaków: %1</translation> </message> <message> <source>A profile name cannot contain the '/' character</source> - <translation type="unfinished"></translation> + <translation>Nazwa profilu nie może zawierać znaku '/'</translation> </message> <message> <source>A profile cannot start or end with a period (.)</source> - <translation type="unfinished"></translation> + <translation>Profil nie może zaczynać się ani kończyć kropką (.)</translation> </message> <message> <source>Default</source> - <translation type="unfinished">Domyślnie</translation> + <translation>Domyślnie</translation> </message> <message> <source>Global</source> - <translation type="unfinished"></translation> + <translation>Globalne</translation> </message> <message> <source>Personal</source> - <translation type="unfinished"></translation> + <translation>Osobiste</translation> </message> <message> <source>Renamed from: %1</source> - <translation type="unfinished"></translation> + <translation>Przemianowano z %1</translation> </message> <message> <source>Copied from: %1</source> - <translation type="unfinished"></translation> + <translation>Skopiowano z: %1</translation> </message> <message> <source>renamed to %1</source> - <translation type="unfinished"></translation> + <translation>przemianowano do %1</translation> </message> <message> <source>Profile</source> - <translation type="unfinished"></translation> + <translation>Profil</translation> </message> <message> <source>Type</source> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> </context> <context> <name>ProfileSortModel</name> <message> <source>All profiles</source> - <translation type="unfinished"></translation> + <translation>Wszystkie profile</translation> </message> <message> <source>Personal profiles</source> - <translation type="unfinished"></translation> + <translation>Profile osobiste</translation> </message> <message> <source>Global profiles</source> - <translation type="unfinished"></translation> + <translation>Profile globalne</translation> </message> </context> <context> @@ -7761,7 +7827,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Loading</source> - <translation type="unfinished">Wczytywanie</translation> + <translation>Wczytywanie</translation> </message> </context> <context> @@ -7780,67 +7846,67 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Expand Subtrees</source> - <translation type="unfinished"></translation> + <translation>Rozwiń poddrzewa</translation> </message> <message> <source>Collapse Subtrees</source> - <translation type="unfinished"></translation> + <translation>Zwiń poddrzewa</translation> </message> <message> <source>Expand All</source> - <translation type="unfinished">Rozwiń wszystko</translation> + <translation>Rozwiń wszystko</translation> </message> <message> <source>Collapse All</source> - <translation type="unfinished">Zwiń wszystko</translation> + <translation>Zwiń wszystko</translation> </message> <message> <source>Copy</source> - <translation type="unfinished">Kopiuj</translation> + <translation>Kopiuj</translation> </message> <message> <source>All Visible Items</source> - <translation type="unfinished">Wszystkie widoczne pozycje</translation> + <translation>Wszystkie widoczne pozycje</translation> </message> <message> <source>All Visible Selected Tree Items</source> - <translation type="unfinished">Wszystkie widoczne pozycje wybranego poddrzewa</translation> + <translation>Wszystkie widoczne pozycje wybranego poddrzewa</translation> </message> <message> <source>Description</source> - <translation type="unfinished">Opis</translation> + <translation>Opis</translation> </message> <message> <source>Field Name</source> - <translation type="unfinished">Nazwa pola</translation> + <translation>Nazwa pola</translation> </message> <message> <source>Value</source> - <translation type="unfinished">Wartość</translation> + <translation>Wartość</translation> </message> <message> <source>As Filter</source> - <translation type="unfinished">Jako filtr</translation> + <translation>Jako filtr</translation> </message> <message> <source>Wiki Protocol Page</source> - <translation type="unfinished">Strona Wiki Protokołów</translation> + <translation>Strona Wiki Protokołów</translation> </message> <message> <source>Filter Field Reference</source> - <translation type="unfinished">Odwołania filtru pola</translation> + <translation>Odwołania filtru pola</translation> </message> <message> <source>Copied </source> - <translation type="unfinished"></translation> + <translation>Skopiowano</translation> </message> <message> <source>Wiki Page for %1</source> - <translation type="unfinished">Strona Wiki dla %1</translation> + <translation>Strona Wiki dla %1</translation> </message> <message> <source><p>The Wireshark Wiki is maintained by the community.</p><p>The page you are about to load might be wonderful, incomplete, wrong, or nonexistent.</p><p>Proceed to the wiki?</p></source> - <translation type="unfinished"><p>Strona Wiki Wiresharka jest zarządzania przez społeczność.</p><p>Strona którą chcesz wczytać może być wspaniała, niekompletna, błędna lub nie istnieć.</p><p>Kontynuować wczytywanie strony Wiki?</p></translation> + <translation><p>Strona Wiki Wiresharka jest zarządzania przez społeczność.</p><p>Strona którą chcesz wczytać może być wspaniała, niekompletna, błędna lub nie istnieć.</p><p>Kontynuować wczytywanie strony Wiki?</p></translation> </message> <message> <source>Colorize with Filter</source> @@ -7915,7 +7981,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Copy short names</source> - <translation type="unfinished"></translation> + <translation>Skopiuj krótkie nazwy</translation> </message> <message> <source>Copy short protocol names in use.</source> @@ -7923,19 +7989,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Disable unused protocols</source> - <translation type="unfinished"></translation> + <translation>Wyłącz nieużywane protokoły</translation> </message> <message> <source>Disable all protocols but those listed.</source> - <translation type="unfinished"></translation> + <translation>Wyłącz wszystkie protokoły oprócz tych wymienionych.</translation> </message> <message> <source>Re-enable unused protocols</source> - <translation type="unfinished"></translation> + <translation>Włącz ponownie nieużywane protokoły</translation> </message> <message> <source>Re-enable protocols that were disabled in this dialog.</source> - <translation type="unfinished"></translation> + <translation>Włącz ponownie protokoły, które zostały wyłączone w tym oknie dialogowym.</translation> </message> <message> <source>Protocol Hierarchy Statistics</source> @@ -7955,19 +8021,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>protocol short names</source> - <translation type="unfinished"></translation> + <translation>krótkie nazwy protokołu</translation> </message> <message> <source>Protocols</source> - <translation type="unfinished"></translation> + <translation>Protokoły</translation> </message> <message> <source>Disable unused</source> - <translation type="unfinished"></translation> + <translation>Wyłącz nieużywane</translation> </message> <message> <source>Revert changes</source> - <translation type="unfinished"></translation> + <translation>Wycofaj zmiany</translation> </message> <message> <source>No display filter.</source> @@ -7979,11 +8045,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Unused protocols have been disabled.</source> - <translation type="unfinished"></translation> + <translation>Nieużywane protokoły zostały wyłączone.</translation> </message> <message> <source>Protocol changes have been reverted.</source> - <translation type="unfinished"></translation> + <translation>Zmiany dotyczące protokołu zostały cofnięte.</translation> </message> </context> <context> @@ -8006,7 +8072,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Open %1 preferences…</source> - <translation type="unfinished"></translation> + <translation>Otwórz ustawienia %1…</translation> </message> </context> <context> @@ -8057,7 +8123,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prepare as Filter</source> - <translation type="unfinished"></translation> + <translation>Przygotuj jako filtr</translation> </message> <message> <source>Find</source> @@ -8089,19 +8155,19 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>…and Selected</source> - <translation type="unfinished"></translation> + <translation>…i wybrane</translation> </message> <message> <source>…or Selected</source> - <translation type="unfinished"></translation> + <translation>…lub wybrane</translation> </message> <message> <source>…and not Selected</source> - <translation type="unfinished"></translation> + <translation>…i nie wybrane</translation> </message> <message> <source>…or not Selected</source> - <translation type="unfinished"></translation> + <translation>…lub nie wybrane</translation> </message> <message> <source>A </source> @@ -8301,31 +8367,31 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>LCID 32</source> - <translation type="unfinished">LCID 32</translation> + <translation>LCID 32</translation> </message> <message> <source>LCID 33</source> - <translation type="unfinished">LCID 33</translation> + <translation>LCID 33</translation> </message> <message> <source>LCID 34</source> - <translation type="unfinished">LCID 34</translation> + <translation>LCID 34</translation> </message> <message> <source>LCID 35</source> - <translation type="unfinished">LCID 35</translation> + <translation>LCID 35</translation> </message> <message> <source>LCID 36</source> - <translation type="unfinished">LCID 36</translation> + <translation>LCID 36</translation> </message> <message> <source>LCID 37</source> - <translation type="unfinished">LCID 37</translation> + <translation>LCID 37</translation> </message> <message> <source>LCID 38</source> - <translation type="unfinished">LCID 38</translation> + <translation>LCID 38</translation> </message> <message> <source>TM</source> @@ -8433,11 +8499,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Edit…</source> - <translation type="unfinished"></translation> + <translation>Edytuj...</translation> </message> <message> <source>Browse…</source> - <translation type="unfinished">Przeglądaj…</translation> + <translation>Przeglądaj…</translation> </message> </context> <context> @@ -8549,23 +8615,23 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Hosts</source> - <translation type="unfinished"></translation> + <translation>Hosty</translation> </message> <message> <source>Search for entry (min 3 characters)</source> - <translation type="unfinished"></translation> + <translation>Wyszukaj wpis (min. 3 znaki)</translation> </message> <message> <source>Ports</source> - <translation type="unfinished"></translation> + <translation>Porty</translation> </message> <message> <source>Search for port or name</source> - <translation type="unfinished"></translation> + <translation>Wyszukaj port lub nazwę</translation> </message> <message> <source>Capture File Comments</source> - <translation type="unfinished"></translation> + <translation>Komentarze pliku przechwytywania</translation> </message> <message> <source>Comment</source> @@ -8747,7 +8813,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>RsaKeysFrame</name> <message> <source>RSA Keys</source> - <translation type="unfinished"></translation> + <translation>Klucze RSA</translation> </message> <message> <source>RSA private keys are loaded from a file or PKCS #11 token.</source> @@ -8759,11 +8825,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Add new token…</source> - <translation type="unfinished"></translation> + <translation>Dodaj nowy token…</translation> </message> <message> <source>Remove key</source> - <translation type="unfinished"></translation> + <translation>Usuń klucz</translation> </message> <message> <source>PKCS #11 provider libraries.</source> @@ -8771,11 +8837,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Add new provider…</source> - <translation type="unfinished"></translation> + <translation>Dodaj nowego dostawcę…</translation> </message> <message> <source>Remove provider</source> - <translation type="unfinished"></translation> + <translation>Usuń dostawcę</translation> </message> <message> <source>Add PKCS #11 token or key</source> @@ -8795,31 +8861,31 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Enter PIN or password for %1 (it will be stored unencrypted)</source> - <translation type="unfinished"></translation> + <translation>Wprowadź PIN lub hasło dla %1 (będzie przechowywane w postaci niezaszyfrowanej)</translation> </message> <message> <source>Enter PIN or password for key</source> - <translation type="unfinished"></translation> + <translation>Wprowadź PIN lub hasło do klucza</translation> </message> <message> <source>Key could not be added: %1</source> - <translation type="unfinished"></translation> + <translation>Nie można dodać klucza: %1</translation> </message> <message> <source>RSA private key (*.pem *.p12 *.pfx *.key);;All Files (</source> - <translation type="unfinished"></translation> + <translation>Klucz prywatny RSA (*.pem *.p12 *.pfx *.key);;Wszystkie pliki (</translation> </message> <message> <source>Select RSA private key file</source> - <translation type="unfinished"></translation> + <translation>Wybierz plik klucza prywatnego RSA</translation> </message> <message> <source>Libraries (*.dll)</source> - <translation type="unfinished"></translation> + <translation>Biblioteki (*.dll)</translation> </message> <message> <source>Libraries (*.so)</source> - <translation type="unfinished"></translation> + <translation>Biblioteki (*.so)</translation> </message> <message> <source>Select PKCS #11 Provider Library</source> @@ -8827,7 +8893,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Changes will apply after a restart</source> - <translation type="unfinished"></translation> + <translation>Zmiany zostaną zastosowane po ponownym uruchomieniu</translation> </message> <message> <source>PKCS #11 provider %1 will be removed after the next restart.</source> @@ -8875,7 +8941,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Stream %1</source> - <translation type="unfinished"></translation> + <translation>Strumień %1</translation> </message> <message> <source>Stream %1 Jitter</source> @@ -8891,7 +8957,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source> %1 streams, </source> - <translation type="unfinished"></translation> + <translation>%1 strumieni,</translation> </message> <message> <source>Save one stream CSV</source> @@ -8903,7 +8969,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Analyze</source> - <translation type="unfinished">Analizuj</translation> + <translation>&Analizuj</translation> </message> <message> <source>Open the analysis window for the selected stream(s)</source> @@ -8915,11 +8981,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Add to List</source> - <translation type="unfinished"></translation> + <translation>&Dodaj do listy</translation> </message> <message> <source>&Remove from List</source> - <translation type="unfinished"></translation> + <translation>&Usuń z listy</translation> </message> <message> <source>Replace existing list in RTP Analysis Dialog with new one</source> @@ -8943,11 +9009,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Export</source> - <translation type="unfinished"></translation> + <translation>&Eksportuj</translation> </message> <message> <source>Open export menu</source> - <translation type="unfinished"></translation> + <translation>Otwórz menu eksportowania</translation> </message> <message> <source>CSV</source> @@ -8955,7 +9021,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save tables as CSV.</source> - <translation type="unfinished"></translation> + <translation>Zapisz tabele jako CSV.</translation> </message> <message> <source>Current Tab Stream CSV</source> @@ -9007,15 +9073,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prepare &Filter</source> - <translation type="unfinished"></translation> + <translation>Przygotuj &filtr</translation> </message> <message> <source>Prepare a filter matching the selected stream(s).</source> - <translation type="unfinished">Przygotuj filtr dla zaznaczonych strumieni.</translation> + <translation>Przygotuj filtr pasujący do wybranego(ych) strumieni.</translation> </message> <message> <source>&Current Tab</source> - <translation type="unfinished"></translation> + <translation>&Bieżąca karta</translation> </message> <message> <source>Prepare a filter matching current tab.</source> @@ -9023,7 +9089,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&All Tabs</source> - <translation type="unfinished"></translation> + <translation>&Wszystkie karty</translation> </message> <message> <source>Prepare a filter matching all tabs.</source> @@ -9035,7 +9101,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> <message> <source> G: Go to packet, N: Next problem packet</source> @@ -9077,7 +9143,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Play</source> - <translation type="unfinished"></translation> + <translation>Odtwórz</translation> </message> <message> <source>Source Address</source> @@ -9125,11 +9191,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Pause/unpause playback</source> - <translation type="unfinished"></translation> + <translation>Wstrzymaj/wznów odtwarzanie</translation> </message> <message> <source>Stop playback</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj odtwarzanie</translation> </message> <message> <source>Enable/disable skipping of silence during playback</source> @@ -9202,7 +9268,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Export</source> - <translation type="unfinished"></translation> + <translation>&Eksportuj</translation> </message> <message> <source>Export audio of all unmuted selected channels or export payload of one channel.</source> @@ -9258,7 +9324,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Mute</source> - <translation type="unfinished"></translation> + <translation>Wycisz</translation> </message> <message> <source>Mute selected streams</source> @@ -9266,7 +9332,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Unmute</source> - <translation type="unfinished"></translation> + <translation>Wyłącz wyciszenie</translation> </message> <message> <source>Unmute selected streams</source> @@ -9290,51 +9356,51 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Remove Streams</source> - <translation type="unfinished"></translation> + <translation>Usuń strumienie</translation> </message> <message> <source>Remove selected streams from the list</source> - <translation type="unfinished"></translation> + <translation>Usuń wybrane strumienie z listy</translation> </message> <message> <source>All</source> - <translation type="unfinished"></translation> + <translation>Wszystkie</translation> </message> <message> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Zaznacz wszystkie</translation> </message> <message> <source>None</source> - <translation type="unfinished">Brak</translation> + <translation>Brak</translation> </message> <message> <source>Clear selection</source> - <translation type="unfinished"></translation> + <translation>Wyczyść wybór</translation> </message> <message> <source>Invert</source> - <translation type="unfinished">Przełącz</translation> + <translation>Przełącz</translation> </message> <message> <source>Invert selection</source> - <translation type="unfinished"></translation> + <translation>Odwróć wybór</translation> </message> <message> <source>Play/Pause</source> - <translation type="unfinished"></translation> + <translation>Odtwórz/Wstrzymaj</translation> </message> <message> <source>Start playing or pause playing</source> - <translation type="unfinished"></translation> + <translation>Rozpocznij odtwarzanie lub wstrzymaj odtwarzanie</translation> </message> <message> <source>Stop</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj</translation> </message> <message> <source>Stop playing</source> - <translation type="unfinished"></translation> + <translation>Zatrzymaj odtwarzanie</translation> </message> <message> <source>I&naudible streams</source> @@ -9350,7 +9416,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Select</source> - <translation type="unfinished"></translation> + <translation>&Wybrane</translation> </message> <message> <source>Select inaudible streams</source> @@ -9358,7 +9424,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Deselect</source> - <translation type="unfinished"></translation> + <translation>&Odznacz</translation> </message> <message> <source>Deselect inaudible streams</source> @@ -9366,15 +9432,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prepare &Filter</source> - <translation type="unfinished"></translation> + <translation>Przygotuj &filtr</translation> </message> <message> <source>Prepare a filter matching the selected stream(s).</source> - <translation type="unfinished">Przygotuj filtr dla zaznaczonych strumieni.</translation> + <translation type="unfinished"></translation> </message> <message> <source>R&efresh streams</source> - <translation type="unfinished"></translation> + <translation>&Odśwież strumienie</translation> </message> <message> <source>Read captured packets from capture in progress to player</source> @@ -9434,7 +9500,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>To Left</source> - <translation type="unfinished"></translation> + <translation>Do lewej</translation> </message> <message> <source>Left + Right</source> @@ -9442,7 +9508,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>To Right</source> - <translation type="unfinished"></translation> + <translation>W prawo</translation> </message> <message> <source>Invert Muting</source> @@ -9454,7 +9520,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Select</source> - <translation type="unfinished"></translation> + <translation>Wybrane</translation> </message> <message> <source>Audio Routing</source> @@ -9462,7 +9528,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Play Streams</source> - <translation type="unfinished"></translation> + <translation>&Odtwarzaj strumienie</translation> </message> <message> <source>Open RTP player dialog</source> @@ -9478,7 +9544,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Add to playlist</source> - <translation type="unfinished"></translation> + <translation>&Dodaj do listy odtwarzania</translation> </message> <message> <source>Add new set to existing playlist in RTP Player</source> @@ -9486,7 +9552,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Remove from playlist</source> - <translation type="unfinished"></translation> + <translation>&Usuń z listy odtwarzania</translation> </message> <message> <source>Remove selected streams from playlist in RTP Player</source> @@ -9494,11 +9560,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>No Audio</source> - <translation type="unfinished"></translation> + <translation>Brak audio</translation> </message> <message> <source>Decoding streams...</source> - <translation type="unfinished"></translation> + <translation>Dekodowanie strumieni...</translation> </message> <message> <source>Out of Sequence</source> @@ -9522,11 +9588,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>%1 streams</source> - <translation type="unfinished">%1 strumieni</translation> + <translation>%1 strumieni</translation> </message> <message> <source>, %1 selected</source> - <translation type="unfinished"></translation> + <translation>, wybrano %1</translation> </message> <message> <source>, %1 not muted</source> @@ -9542,15 +9608,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Playback of stream %1 failed!</source> - <translation type="unfinished"></translation> + <translation>Odtwarzanie strumienia %1 nie powiodło się!</translation> </message> <message> <source>Automatic</source> - <translation type="unfinished"></translation> + <translation>Automatycznie</translation> </message> <message> <source>WAV (*.wav)</source> - <translation type="unfinished"></translation> + <translation>WAV (*.wav)</translation> </message> <message> <source>Sun Audio (*.au)</source> @@ -9558,11 +9624,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save audio</source> - <translation type="unfinished">Zapisz audio</translation> + <translation>Zapisz audio</translation> </message> <message> <source>Raw (*.raw)</source> - <translation type="unfinished"></translation> + <translation>Raw (*.raw)</translation> </message> <message> <source>Save payload</source> @@ -9570,7 +9636,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Ostrzeżenie</translation> </message> <message> <source>No stream selected or none of selected streams provide audio</source> @@ -9578,7 +9644,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Błąd</translation> </message> <message> <source>All selected streams must use same play rate. Manual set of Output Audio Rate might help.</source> @@ -9590,7 +9656,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save failed!</source> - <translation type="unfinished"></translation> + <translation>Zapisywanie nie powiodło się!</translation> </message> <message> <source>Can't write header of AU file</source> @@ -9645,11 +9711,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Start Time</source> - <translation type="unfinished">Czas startu</translation> + <translation>Czas startu</translation> </message> <message> <source>Duration</source> - <translation type="unfinished">Czas trwania</translation> + <translation>Czas trwania</translation> </message> <message> <source>Payload</source> @@ -9693,7 +9759,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Time of Day</source> - <translation type="unfinished">Czas dnia</translation> + <translation>Czas dnia</translation> </message> <message> <source>Find &Reverse</source> @@ -9701,15 +9767,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prepare &Filter</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Przygotuj &filtr</translation> </message> <message> <source>&Export</source> - <translation type="unfinished"></translation> + <translation>&Eksportuj</translation> </message> <message> <source>&Analyze</source> - <translation type="unfinished">Analizuj</translation> + <translation>&Analizuj</translation> </message> <message> <source>Open the analysis window for the selected stream(s) and add it to it</source> @@ -9749,7 +9815,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Shift+R</source> - <translation type="unfinished"></translation> + <translation>Shift+R</translation> </message> <message> <source>Find Only &Singles</source> @@ -9761,7 +9827,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Ctrl+R</source> - <translation type="unfinished"></translation> + <translation>Ctrl+R</translation> </message> <message> <source>Mark Packets</source> @@ -9777,27 +9843,27 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>All</source> - <translation type="unfinished"></translation> + <translation>Wszystkie</translation> </message> <message> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Zaznacz wszystkie</translation> </message> <message> <source>None</source> - <translation type="unfinished">Brak</translation> + <translation>Brak</translation> </message> <message> <source>Clear selection</source> - <translation type="unfinished"></translation> + <translation>Wyczyść wybór</translation> </message> <message> <source>Invert</source> - <translation type="unfinished">Przełącz</translation> + <translation>Przełącz</translation> </message> <message> <source>Invert selection</source> - <translation type="unfinished"></translation> + <translation>Odwróć wybór</translation> </message> <message> <source>Go To Setup</source> @@ -9833,11 +9899,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Cop&y</source> - <translation type="unfinished"></translation> + <translation>&Kopiuj</translation> </message> <message> <source>Open copy menu</source> - <translation type="unfinished"></translation> + <translation>Otwórz menu kopiowania</translation> </message> <message> <source>Copy as CSV</source> @@ -9861,7 +9927,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Select</source> - <translation type="unfinished"></translation> + <translation>Wybrane</translation> </message> <message> <source>as CSV</source> @@ -9995,7 +10061,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>-</source> - <translation type="unfinished">-</translation> + <translation>-</translation> </message> <message> <source><small><i>For complete analysis check SCTP preference Enable Association indexing</i></small></source> @@ -10035,7 +10101,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Ostrzeżenie</translation> </message> <message> <source>Could not find SCTP Association with id: %1</source> @@ -10303,7 +10369,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> </context> <context> @@ -10422,7 +10488,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Searching for %1…</source> - <translation type="unfinished"></translation> + <translation>Wyszukiwanie %1…</translation> </message> <message> <source>No packet contained those bytes.</source> @@ -10465,18 +10531,18 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message numerus="yes"> <source>%Ln node(s)</source> - <translation type="unfinished"> - <numerusform>%Ln node</numerusform> - <numerusform>%Ln nodes</numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln węzeł</numerusform> + <numerusform>%Ln węzły</numerusform> + <numerusform>%Ln węzłów</numerusform> </translation> </message> <message numerus="yes"> <source>%Ln item(s)</source> - <translation type="unfinished"> - <numerusform>%Ln item</numerusform> - <numerusform>%Ln items</numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%Ln obiekt</numerusform> + <numerusform>%Ln obiekty</numerusform> + <numerusform>%Ln obiektów</numerusform> </translation> </message> <message> @@ -10501,7 +10567,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> <message> <source>Flow</source> @@ -10613,7 +10679,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Reset &Diagram</source> - <translation type="unfinished"></translation> + <translation>Resetuj &diagram</translation> </message> <message> <source>Reset the diagram to its initial state.</source> @@ -10625,15 +10691,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>&Reset Diagram</source> - <translation type="unfinished"></translation> + <translation>&Resetuj diagram</translation> </message> <message> <source>Reset the diagram to its initial state</source> - <translation type="unfinished"></translation> + <translation>Resetuj diagram do stanu początkowego.</translation> </message> <message> <source>&Export</source> - <translation type="unfinished"></translation> + <translation>&Eksportuj</translation> </message> <message> <source>Export diagram</source> @@ -10851,10 +10917,10 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message numerus="yes"> <source>Frame %1, %2, %Ln byte(s).</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Ramka %1, %2, %Ln bajt.</numerusform> + <numerusform>Ramka %1, %2, %Ln bajty.</numerusform> + <numerusform>Ramka %1, %2, %Ln bajtów.</numerusform> </translation> </message> <message> @@ -10939,23 +11005,23 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save as…</source> - <translation type="unfinished">Zapisz jako…</translation> + <translation>Zapisz jako…</translation> </message> <message> <source>Save Selected Packet Bytes As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz zaznaczone bajty pakietu jako</translation> </message> <message numerus="yes"> <source>Displaying %Ln byte(s).</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Wyświetlanych %Ln bajt.</numerusform> + <numerusform>Wyświetlane bajty: %Ln.</numerusform> + <numerusform>Wyświetlanych bajtów: %Ln.</numerusform> </translation> </message> <message> <source>JSON</source> - <translation type="unfinished"></translation> + <translation>JSON</translation> </message> <message> <source>Regex Find:</source> @@ -11022,7 +11088,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Applying changed preferences</source> - <translation type="unfinished"></translation> + <translation>Stosowanie zmienionych preferencji</translation> </message> <message> <source>(Unknown action)</source> @@ -11048,7 +11114,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Display filter:</source> - <translation type="unfinished"></translation> + <translation>Filtr wyświetlania:</translation> </message> </context> <context> @@ -11101,15 +11167,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>SyntaxLineEdit</name> <message> <source>Invalid filter: %1</source> - <translation type="unfinished"></translation> + <translation>Błędny filtr: %1</translation> </message> <message> <source>"%1" is deprecated in favour of "%2". See Help section 6.4.8 for details.</source> - <translation type="unfinished"></translation> + <translation>"%1" jest przestarzałe na rzecz "%2".. Aby uzyskać szczegółowe informacje, zobacz sekcję Pomocy 6.4.8.</translation> </message> <message> <source>%1</source> - <translation type="unfinished"></translation> + <translation>%1</translation> </message> </context> <context> @@ -11298,7 +11364,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Segment Length</source> - <translation type="unfinished"></translation> + <translation>Długość segmentu</translation> </message> <message> <source>Display graph of Mean Transmitted Bytes vs Time</source> @@ -11614,7 +11680,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz jako...</translation> </message> <message> <source>No Capture Data</source> @@ -11690,7 +11756,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Save Graph As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz wykres jako...</translation> </message> </context> <context> @@ -11701,11 +11767,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Browse…</source> - <translation type="unfinished">Przeglądaj…</translation> + <translation>Przeglądaj…</translation> </message> <message> <source>Command line</source> - <translation type="unfinished"></translation> + <translation>Wiersz poleceń</translation> </message> <message> <source>Run an application with the SSLKEYLOGFILE environment variable set to the file specified by the TLS key log filename preference. This enables TLS decryption in Wireshark. Set the key log file and start the capture before launching the application to ensure that the initial TLS handshakes are captured.</source> @@ -11729,11 +11795,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Launch</source> - <translation type="unfinished"></translation> + <translation>Uruchom</translation> </message> <message> <source>Save</source> - <translation type="unfinished"></translation> + <translation>Zapisz</translation> </message> <message> <source>TLS Keylog file</source> @@ -11789,15 +11855,15 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Collapse All</source> - <translation type="unfinished">Zwiń wszystko</translation> + <translation>Zwiń wszystko</translation> </message> <message> <source>Expand All</source> - <translation type="unfinished">Rozwiń wszystko</translation> + <translation>Rozwiń wszystko</translation> </message> <message> <source>Save Statistics As…</source> - <translation type="unfinished"></translation> + <translation>Zapisz statystyki jako...</translation> </message> <message> <source>Plain text file (*.txt);;Comma separated values (*.csv);;XML document (*.xml);;YAML document (*.yaml)</source> @@ -11880,7 +11946,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Unable to create temporary file</source> - <translation type="unfinished"></translation> + <translation>Nie można utworzyć pliku tymczasowego</translation> </message> </context> <context> @@ -11934,7 +12000,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>TrafficTree</name> <message> <source>Resize all columns to content</source> - <translation type="unfinished"></translation> + <translation>Dopasuj szerokość kolumn do zawartości</translation> </message> <message> <source>Filter on stream id</source> @@ -11946,27 +12012,27 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>as CSV</source> - <translation type="unfinished">jako CSV</translation> + <translation>jako CSV</translation> </message> <message> <source>Copy all values of this page to the clipboard in CSV (Comma Separated Values) format.</source> - <translation type="unfinished"></translation> + <translation>Kopiuj wszystkie wartości z tej strony w CSV (Comma Separated Values) do schowka.</translation> </message> <message> <source>as YAML</source> - <translation type="unfinished">jako YAML</translation> + <translation>jako YAML</translation> </message> <message> <source>Copy all values of this page to the clipboard in the YAML data serialization format.</source> - <translation type="unfinished"></translation> + <translation>Kopiuj wszystkie wartości z tej strony w formacie YAML do schowka.</translation> </message> <message> <source>as JSON</source> - <translation type="unfinished"></translation> + <translation>jako JSON</translation> </message> <message> <source>Copy all values of this page to the clipboard in the JSON data serialization format.</source> - <translation type="unfinished"></translation> + <translation>Kopiuj wszystkie wartości z tej strony w formacie JSON do schowka.</translation> </message> <message> <source>Save data as raw</source> @@ -11981,34 +12047,34 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <name>TrafficTreeHeaderView</name> <message> <source>Less than</source> - <translation type="unfinished"></translation> + <translation>Mniej niż</translation> </message> <message> <source>Greater than</source> - <translation type="unfinished"></translation> + <translation>Większy niż</translation> </message> <message> <source>Equal</source> - <translation type="unfinished"></translation> + <translation>Równy</translation> </message> <message> <source>Columns to display</source> - <translation type="unfinished"></translation> + <translation>Kolumny do wyświetlenia</translation> </message> <message> <source>Filter %1 by</source> - <translation type="unfinished"></translation> + <translation>Filtruj %1 według</translation> </message> <message> <source>Enter filter value</source> - <translation type="unfinished"></translation> + <translation>Wprowadź wartość filtra</translation> </message> </context> <context> <name>TrafficTypesModel</name> <message> <source>Protocol</source> - <translation type="unfinished">Protokół</translation> + <translation>Protokół</translation> </message> </context> <context> @@ -12107,7 +12173,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Limit to display filter</source> - <translation type="unfinished"></translation> + <translation>Ogranicz do filtru wyświetlania</translation> </message> <message> <source>Time of Day</source> @@ -12123,7 +12189,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Prepare &Filter</source> - <translation type="unfinished"></translation> + <translation>Przygotuj &filtr</translation> </message> <message> <source>Prepare a filter matching the selected calls(s).</source> @@ -12131,31 +12197,31 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Cop&y</source> - <translation type="unfinished"></translation> + <translation>&Kopiuj</translation> </message> <message> <source>Open copy menu</source> - <translation type="unfinished"></translation> + <translation>Otwórz menu kopiowania</translation> </message> <message> <source>All</source> - <translation type="unfinished"></translation> + <translation>Wszystkie</translation> </message> <message> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Zaznacz wszystkie</translation> </message> <message> <source>None</source> - <translation type="unfinished">Brak</translation> + <translation>Brak</translation> </message> <message> <source>Invert</source> - <translation type="unfinished">Przełącz</translation> + <translation>Przełącz</translation> </message> <message> <source>Invert selection</source> - <translation type="unfinished"></translation> + <translation>Odwróć wybór</translation> </message> <message> <source>Select related RTP streams</source> @@ -12179,11 +12245,11 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Clear selection</source> - <translation type="unfinished"></translation> + <translation>Wyczyść wybór</translation> </message> <message> <source>Display time as time of day</source> - <translation type="unfinished"></translation> + <translation>Wyświetlaj czas jako porę dnia</translation> </message> <message> <source>Copy as CSV</source> @@ -12219,7 +12285,7 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour </message> <message> <source>Select</source> - <translation type="unfinished"></translation> + <translation>&Wybrane</translation> </message> </context> <context> @@ -12371,7 +12437,49 @@ a:hover { </tr></table> </body></html></source> - <translation type="unfinished"></translation> + <translation><html><head> +<style> +a:link { + color: palette(text); + text-decoration: none; +} +a:hover { + color: palette(text); + text-decoration: underline; +} +</style> +</head> +<body> + +<table><tr> +<th><a href="https://www.wireshark.org/docs/wsug_html_chunked/">Podręcznik użytkownika</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://gitlab.com/wireshark/wireshark/-/wikis/">Wiki</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://ask.wireshark.org/">Q&A - Pytania i odpowiedzi</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://www.wireshark.org/lists/">Listy mailingowe</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://sharkfest.wireshark.org/">SharkFest</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://discord.com/invite/ts9GZCjGj5">Wireshark na Discord</a></th> + +<td style="padding-left: 8px; padding-right: 8px;">·</td> + +<th><a href="https://wiresharkfoundation.org/donate/">Donacja</a></th> + +</tr></table> +</body></html></translation> </message> <message> <source>Show in Finder</source> @@ -12383,7 +12491,7 @@ a:hover { </message> <message> <source>Welcome to %1</source> - <translation type="unfinished"></translation> + <translation>Witamy w %1</translation> </message> <message> <source>All interfaces shown</source> @@ -12391,10 +12499,10 @@ a:hover { </message> <message numerus="yes"> <source>%n interface(s) shown, %1 hidden</source> - <translation type="unfinished"> - <numerusform>%n interface shown, %1 hidden</numerusform> - <numerusform>%n interfaces shown, %1 hidden</numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%n wyświetlany interfejs, %1 ukrytych</numerusform> + <numerusform>%n wyświetlane interfejsy, %1 ukrytych</numerusform> + <numerusform>%n wyświetlanych interfejsów, %1 ukrytych</numerusform> </translation> </message> <message> @@ -12403,7 +12511,7 @@ a:hover { </message> <message> <source>You are running Wireshark </source> - <translation>Wireshark uruchomiony </translation> + <translation>Używasz Wireshark </translation> </message> <message> <source> You receive automatic updates.</source> @@ -12423,7 +12531,7 @@ a:hover { </message> <message> <source>Remove from list</source> - <translation type="unfinished"></translation> + <translation>Usuń z listy</translation> </message> </context> <context> @@ -12563,7 +12671,7 @@ a:hover { </message> <message> <source>Prepare as Filter</source> - <translation type="unfinished"></translation> + <translation>Przygotuj jako filtr</translation> </message> <message> <source>SCTP</source> @@ -12587,7 +12695,7 @@ a:hover { </message> <message> <source>&Capture</source> - <translation>Prze&chwytuj</translation> + <translation>Prze&chwytywanie</translation> </message> <message> <source>&Help</source> @@ -12595,15 +12703,15 @@ a:hover { </message> <message> <source>&Go</source> - <translation>Idź</translation> + <translation>&Idź</translation> </message> <message> <source>&View</source> - <translation>Widok</translation> + <translation>&Widok</translation> </message> <message> <source>&Analyze</source> - <translation>Analizuj</translation> + <translation>&Analiza</translation> </message> <message> <source>Follow</source> @@ -12643,7 +12751,7 @@ a:hover { </message> <message> <source>Packet Comments</source> - <translation type="unfinished">Komentarze pakietu</translation> + <translation>Komentarze pakietu</translation> </message> <message> <source>Main Toolbar</source> @@ -12663,7 +12771,7 @@ a:hover { </message> <message> <source>&Start</source> - <translation>&Start</translation> + <translation>&Rozpocznij</translation> </message> <message> <source>Start capturing packets</source> @@ -12671,7 +12779,7 @@ a:hover { </message> <message> <source>S&top</source> - <translation>S&top</translation> + <translation>Za&trzymaj</translation> </message> <message> <source>Stop capturing packets</source> @@ -12695,7 +12803,7 @@ a:hover { </message> <message> <source>Rawshark</source> - <translation type="unfinished"></translation> + <translation>RawShark</translation> </message> <message> <source>Dumpcap</source> @@ -12711,7 +12819,7 @@ a:hover { </message> <message> <source>Text2pcap</source> - <translation type="unfinished"></translation> + <translation>Text2pcap</translation> </message> <message> <source>Website</source> @@ -12819,7 +12927,7 @@ a:hover { </message> <message> <source>Export TLS Session Keys…</source> - <translation type="unfinished"></translation> + <translation>Eksportuj klucze sesji TLS...</translation> </message> <message> <source>List Files</source> @@ -12859,7 +12967,7 @@ a:hover { </message> <message> <source>&Restart</source> - <translation>&Restart</translation> + <translation>Z&restartuj</translation> </message> <message> <source>Restart current capture</source> @@ -12867,23 +12975,23 @@ a:hover { </message> <message> <source>As &CSV…</source> - <translation type="unfinished"></translation> + <translation>Jako &CSV...</translation> </message> <message> <source>As "C" &Arrays…</source> - <translation type="unfinished"></translation> + <translation>Jako tablica w języku C…</translation> </message> <message> <source>As P&SML XML…</source> - <translation type="unfinished"></translation> + <translation>Jako P&SML XML…</translation> </message> <message> <source>As P&DML XML…</source> - <translation type="unfinished"></translation> + <translation>Jako P&DML XML…</translation> </message> <message> <source>As &JSON…</source> - <translation type="unfinished"></translation> + <translation>Jako &JSON…</translation> </message> <message> <source>Description</source> @@ -12939,7 +13047,7 @@ a:hover { </message> <message> <source>&DTN</source> - <translation type="unfinished"></translation> + <translation>&DTN</translation> </message> <message> <source>Osmux</source> @@ -12960,7 +13068,7 @@ a:hover { </message> <message> <source>FAQs</source> - <translation type="unfinished"></translation> + <translation>FAQ</translation> </message> <message> <source>Next Packet in Conversation</source> @@ -12988,19 +13096,19 @@ a:hover { </message> <message> <source>Previous Packet In History</source> - <translation type="unfinished"></translation> + <translation>Poprzedni pakiet w historii</translation> </message> <message> <source>Go to the previous packet in your selection history</source> - <translation type="unfinished"></translation> + <translation>Idź do poprzedniego pakietu w wybranej historii</translation> </message> <message> <source>Collapse Subtrees</source> - <translation type="unfinished"></translation> + <translation>Zwiń poddrzewa</translation> </message> <message> <source>Collapse the current packet detail</source> - <translation type="unfinished"></translation> + <translation>Zwiń szczegóły bieżącego pakietu</translation> </message> <message> <source>Go to Packet…</source> @@ -13081,7 +13189,7 @@ a:hover { <message> <source>&Mark/Unmark Packet(s)</source> <oldsource>&Mark/Unmark Packet</oldsource> - <translation type="unfinished"></translation> + <translation>&Zaznacz/odznacz pakiet</translation> </message> <message> <source>Mark All Displayed</source> @@ -13114,7 +13222,7 @@ a:hover { <message> <source>&Ignore/Unignore Packet(s)</source> <oldsource>&Ignore/Unignore Packet</oldsource> - <translation type="unfinished"></translation> + <translation>&Ignoruj/odignoruj pakiet</translation> </message> <message> <source>Ignore All Displayed</source> @@ -13162,15 +13270,15 @@ a:hover { </message> <message> <source>Delete All Packet Comments</source> - <translation type="unfinished"></translation> + <translation>Usuń komentarze pakietów</translation> </message> <message> <source>Remove all packet comments in the capture file</source> - <translation type="unfinished"></translation> + <translation>Usuń wszystkie komentarze do pakietów z pliku przechwytywania</translation> </message> <message> <source>&Configuration Profiles…</source> - <translation type="unfinished"></translation> + <translation>&Konfiguracja profili…</translation> </message> <message> <source>Configuration profiles</source> @@ -13238,7 +13346,7 @@ a:hover { </message> <message> <source>HTTP/2 Stream</source> - <translation type="unfinished"></translation> + <translation>Strumienie HTTP/2</translation> </message> <message> <source>SIP Call</source> @@ -13406,7 +13514,7 @@ a:hover { </message> <message> <source>&LTP</source> - <translation type="unfinished"></translation> + <translation>&LTP</translation> </message> <message> <source>LTP segment and block statistics</source> @@ -13422,7 +13530,7 @@ a:hover { </message> <message> <source>Osmux packet counts</source> - <translation type="unfinished"></translation> + <translation>Liczba pakietów Osmux</translation> </message> <message> <source>RTSP packet counts</source> @@ -13446,7 +13554,7 @@ a:hover { </message> <message> <source>F1AP</source> - <translation type="unfinished"></translation> + <translation>F1AP</translation> </message> <message> <source>F1AP Messages</source> @@ -13454,7 +13562,7 @@ a:hover { </message> <message> <source>NGAP</source> - <translation type="unfinished"></translation> + <translation>NGAP</translation> </message> <message> <source>NGAP Messages</source> @@ -13526,7 +13634,7 @@ a:hover { </message> <message> <source>Strip Headers…</source> - <translation type="unfinished"></translation> + <translation>Usuń nagłówki…</translation> </message> <message> <source>Strip headers and export higher level encapsulations to file</source> @@ -13534,7 +13642,7 @@ a:hover { </message> <message> <source>&I/O Graphs</source> - <translation type="unfinished"></translation> + <translation>&Wykresy wej./wyj.</translation> </message> <message> <source>&Conversations</source> @@ -13542,7 +13650,7 @@ a:hover { </message> <message> <source>&Endpoints</source> - <translation type="unfinished"></translation> + <translation>Punkty krańcowe</translation> </message> <message> <source>Shrink the main window text</source> @@ -13558,7 +13666,7 @@ a:hover { </message> <message> <source>Reset appearance layout to default size</source> - <translation type="unfinished"></translation> + <translation>Resetuje układ do rozmiarów domyślnych</translation> </message> <message> <source>Seconds Since First Captured Packet</source> @@ -13570,27 +13678,27 @@ a:hover { </message> <message> <source>Tenths of a millisecond</source> - <translation type="unfinished"></translation> + <translation>Dziesiętne milisekundy</translation> </message> <message> <source>Hundredths of a millisecond</source> - <translation type="unfinished"></translation> + <translation>Setne milisekundy</translation> </message> <message> <source>Tenths of a microsecond</source> - <translation type="unfinished"></translation> + <translation>Dziesiętne mikrosekundy</translation> </message> <message> <source>Hundredths of a microsecond</source> - <translation type="unfinished"></translation> + <translation>Setne mikrosekundy</translation> </message> <message> <source>Packet &Diagram</source> - <translation type="unfinished"></translation> + <translation>&Diagram pakietu</translation> </message> <message> <source>Show or hide the packet diagram</source> - <translation type="unfinished"></translation> + <translation>Pokaż lub ukryj diagram pakietów</translation> </message> <message> <source>Show each conversation hash table</source> @@ -13646,11 +13754,11 @@ a:hover { </message> <message> <source>Display Filter Expression…</source> - <translation type="unfinished"></translation> + <translation>Wyrażenie filtru wyświetlania...</translation> </message> <message> <source>REGISTER_STAT_GROUP_RSERPOOL</source> - <translation type="unfinished"></translation> + <translation>REGISTER_STAT_GROUP_RSERPOOL</translation> </message> <message> <source>Start of "REGISTER_STAT_GROUP_RSERPOOL"</source> @@ -13678,7 +13786,7 @@ a:hover { </message> <message> <source>Go to &Linked Packet</source> - <translation type="unfinished"></translation> + <translation>Idź do podlinkowanego pakietu</translation> </message> <message> <source>UDP Multicast Streams</source> @@ -13718,7 +13826,7 @@ a:hover { </message> <message> <source>MAC Address Blocks</source> - <translation type="unfinished"></translation> + <translation>Bloki adresów MAC</translation> </message> <message> <source>TLS Keylog Launcher</source> @@ -13726,7 +13834,7 @@ a:hover { </message> <message> <source>Release Notes</source> - <translation type="unfinished"></translation> + <translation>Informacje o wydaniu</translation> </message> <message> <source>&Options…</source> @@ -13746,15 +13854,15 @@ a:hover { </message> <message> <source>As Plain &Text</source> - <translation type="unfinished"></translation> + <translation>Jako &tekst</translation> </message> <message> <source>As &CSV</source> - <translation type="unfinished"></translation> + <translation>Jako &CSV</translation> </message> <message> <source>As &YAML</source> - <translation type="unfinished"></translation> + <translation>Jako &YAML</translation> </message> <message> <source>All Visible Items</source> @@ -14082,7 +14190,7 @@ a:hover { </message> <message> <source>&Supported Protocols</source> - <translation type="unfinished"></translation> + <translation>&Obsługiwane Protokoły</translation> </message> <message> <source>MAP Summary</source> @@ -14094,7 +14202,7 @@ a:hover { </message> <message> <source>RLC &Graph</source> - <translation type="unfinished"></translation> + <translation>&Wykres RLC</translation> </message> <message> <source>&Coloring Rules…</source> @@ -14115,7 +14223,7 @@ a:hover { </message> <message> <source>RTP Player</source> - <translation type="unfinished">Odtwarzacz RTP</translation> + <translation>Odtwarzacz RTP</translation> </message> <message> <source>Play selected stream. Press CTRL key for playing reverse stream too.</source> @@ -14156,59 +14264,59 @@ a:hover { </message> <message> <source>Open &Recent</source> - <translation type="unfinished"></translation> + <translation>Ostatnio otwarte</translation> </message> <message> <source>Name Resol&ution</source> - <translation type="unfinished"></translation> + <translation>Ro&związywanie nazw</translation> </message> <message> <source>Service &Response Time</source> - <translation type="unfinished"></translation> + <translation>Czas odpowiedzi serwisu</translation> </message> <message> <source>&RTP</source> - <translation type="unfinished"></translation> + <translation>&RTP</translation> </message> <message> <source>S&CTP</source> - <translation type="unfinished"></translation> + <translation>S&CTP</translation> </message> <message> <source>&ANSI</source> - <translation type="unfinished"></translation> + <translation>&ANSI</translation> </message> <message> <source>&GSM</source> - <translation type="unfinished"></translation> + <translation>&GSM</translation> </message> <message> <source>&LTE</source> - <translation type="unfinished"></translation> + <translation>&LTE</translation> </message> <message> <source>&MTP3</source> - <translation type="unfinished"></translation> + <translation>&MTP3</translation> </message> <message> <source>&Open</source> - <translation type="unfinished"></translation> + <translation>&Otwórz</translation> </message> <message> <source>&Quit</source> - <translation type="unfinished"></translation> + <translation>&Zamknij</translation> </message> <message> <source>&Close</source> - <translation type="unfinished"></translation> + <translation>&Zamknij</translation> </message> <message> <source>Display &Filters…</source> - <translation type="unfinished"></translation> + <translation>&Filtry wyświetlania…</translation> </message> <message> <source>&Unmark All Displayed</source> - <translation type="unfinished"></translation> + <translation>Odzaznacz wszystkie wyświetlane</translation> </message> <message> <source>All VoIP Calls</source> @@ -14426,23 +14534,23 @@ a:hover { </message> <message> <source>Check for Updates…</source> - <translation type="unfinished"></translation> + <translation>Sprawdź aktualizacje...</translation> </message> <message> <source>Unable to drop files during capture.</source> - <translation type="unfinished"></translation> + <translation>Nie można porzucić pliku podczas przechwytywania.</translation> </message> <message> <source>Unknown file type returned by merge dialog.</source> - <translation type="unfinished"></translation> + <translation>Nieznany typ pliku zwrócony przez okno dialogowe łączenia plików.</translation> </message> <message> <source>Please report this as a Wireshark issue at https://gitlab.com/wireshark/wireshark/-/issues.</source> - <translation type="unfinished"></translation> + <translation>Zgłoś to jako problem z Wireshark na stronie https://gitlab.com/wireshark/wireshark/-/issues.</translation> </message> <message> <source>Unknown file type returned by export dialog.</source> - <translation type="unfinished"></translation> + <translation>Nieznany typ pliku zwrócony przez okno dialogowe eksportu.</translation> </message> <message> <source>Do you want to stop the capture and save the captured packets%1?</source> @@ -14472,7 +14580,7 @@ a:hover { </message> <message> <source>There is no "rtp.ssrc" field in this version of Wireshark.</source> - <translation type="unfinished"></translation> + <translation>Brak pola "rtp.ssrc" w tej wersji programu Wireshark.</translation> </message> <message> <source>Please select an RTPv2 packet with an SSRC value</source> @@ -14484,7 +14592,7 @@ a:hover { </message> <message> <source>Show or hide the toolbar</source> - <translation type="unfinished"></translation> + <translation>Pokaż lub ukryj pasek narzędziowy</translation> </message> <message> <source>Continue &without Saving</source> @@ -14510,7 +14618,7 @@ a:hover { </message> <message> <source>Merging files.</source> - <translation type="unfinished"></translation> + <translation>Łączenie plików.</translation> </message> <message> <source>%1: %2</source> @@ -14532,6 +14640,15 @@ a:hover { <source>No Keys</source> <translation>Brak kluczy</translation> </message> + <message numerus="yes"> + <source>Export SSL Session Keys (%Ln key(s))</source> + <oldsource>Export SSL Session Keys (%1 key%2</oldsource> + <translation type="vanished"> + <numerusform>Eksportuj klucze sesji SSL (%Ln klucz)</numerusform> + <numerusform>Eksportuj klucze sesji SSL (%Ln klucze)</numerusform> + <numerusform>Eksportuj klucze sesji SSL (%Ln kluczy)</numerusform> + </translation> + </message> <message> <source>Raw data (*.bin *.dat *.raw);;All Files (</source> <translation>Surowe dane (*.bin *.dat *.raw);;Dowolny plik (</translation> @@ -14542,7 +14659,7 @@ a:hover { </message> <message> <source>Are you sure you want to remove all packet comments?</source> - <translation type="unfinished"></translation> + <translation>Czy na pewno chcesz usunąć wszystkie komentarze do pakietów?</translation> </message> <message> <source>Unable to build conversation filter.</source> @@ -14562,11 +14679,11 @@ a:hover { </message> <message> <source>No interface selected.</source> - <translation type="unfinished"></translation> + <translation>Nie wybrano interfejsu.</translation> </message> <message> <source>Saving %1…</source> - <translation type="unfinished"></translation> + <translation>Zapisywanie %1...</translation> </message> <message> <source>Configure all extcaps before start of capture.</source> @@ -14574,37 +14691,37 @@ a:hover { </message> <message> <source>Invalid capture filter.</source> - <translation type="unfinished"></translation> + <translation>Niepoprawny filtr przechwytywania</translation> </message> <message> <source>(empty comment)</source> <comment>placeholder for empty comment</comment> - <translation type="unfinished"></translation> + <translation>(pusty komentarz)</translation> </message> <message> <source>Add New Comment…</source> - <translation type="unfinished"></translation> + <translation>Dodaj nowy komentarz...</translation> </message> <message> <source>Edit "%1"</source> <comment>edit packet comment</comment> - <translation type="unfinished"></translation> + <translation>Edytuj "%1"</translation> </message> <message> <source>Delete "%1"</source> <comment>delete packet comment</comment> - <translation type="unfinished"></translation> + <translation>Usuń "%1"</translation> </message> <message> <source>Delete packet comments</source> - <translation type="unfinished"></translation> + <translation>Usuń komentarze pakietów</translation> </message> <message numerus="yes"> <source>Delete comments from %n packet(s)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Usuń komentarze z %n pakietu</numerusform> + <numerusform>Usuń komentarze z %n pakietów</numerusform> + <numerusform>Usuń komentarze z %n pakietów</numerusform> </translation> </message> <message> @@ -14613,31 +14730,31 @@ a:hover { </message> <message> <source> before reloading Lua plugins</source> - <translation type="unfinished"></translation> + <translation>przed ponownym załadowaniem wtyczek Lua</translation> </message> <message> <source>Please wait while Wireshark is initializing…</source> - <translation type="unfinished"></translation> + <translation>Proszę czekać, trwa uruchamianie programu Wireshark</translation> </message> <message> <source> before updating</source> - <translation type="unfinished"></translation> + <translation>przed aktualizacją</translation> </message> <message> <source>There are no TLS Session Keys to save.</source> - <translation type="unfinished"></translation> + <translation>Nie ma żadnych kluczy sesji SSL do zapisu.</translation> </message> <message numerus="yes"> <source>Export TLS Session Keys (%Ln key(s))</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Eksportuj klucze sesji TLS (%Ln klucz)</numerusform> + <numerusform>Eksportuj klucze sesji TLS (%Ln klucze)</numerusform> + <numerusform>Eksportuj klucze sesji TLS (%Ln kluczy)</numerusform> </translation> </message> <message> <source>TLS Session Keys (*.keys *.txt);;All Files (</source> - <translation type="unfinished"></translation> + <translation>Klucze sesji SSL (*.keys *.txt);; Dowolny plik (</translation> </message> <message> <source>No TLS Secrets</source> @@ -14653,31 +14770,31 @@ a:hover { </message> <message> <source>No filter available. Try another %1.</source> - <translation type="unfinished"></translation> + <translation>Brak dostępnego filtra. Spróbuj innego %1.</translation> </message> <message> <source>column</source> - <translation type="unfinished"></translation> + <translation>kolumna</translation> </message> <message> <source>item</source> - <translation type="unfinished"></translation> + <translation>pozycja</translation> </message> <message> <source>The "%1" column already exists.</source> - <translation type="unfinished"></translation> + <translation>Kolumna "%1" już istnieje.</translation> </message> <message> <source>The "%1" column already exists as "%2".</source> - <translation type="unfinished"></translation> + <translation>Kolumna "%1" już istnieje jako "%2".</translation> </message> <message> <source>RTP packet search failed</source> - <translation type="unfinished"></translation> + <translation>Wyszukiwanie pakietu RTP nie powiodło się</translation> </message> <message> <source>No Interface Selected.</source> - <translation type="unfinished"></translation> + <translation>Nie wybrano interfejsu.</translation> </message> <message> <source> before restarting the capture</source> diff --git a/ui/qt/wireshark_ru.ts b/ui/qt/wireshark_ru.ts index d37b3054..20dc0e3a 100644 --- a/ui/qt/wireshark_ru.ts +++ b/ui/qt/wireshark_ru.ts @@ -1992,6 +1992,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation>Копировать байты пакета в виде шестнадцатеричного дампа.</translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_sv.ts b/ui/qt/wireshark_sv.ts index e9e52f66..abe7fef8 100644 --- a/ui/qt/wireshark_sv.ts +++ b/ui/qt/wireshark_sv.ts @@ -1988,6 +1988,14 @@ Till exempel, använd 1 timma för att en ny fil skall skapas varje timma vid he <translation>Kopiera paketbyte som en hex-dump.</translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_tr_TR.ts b/ui/qt/wireshark_tr_TR.ts index e0885634..06f0cafa 100644 --- a/ui/qt/wireshark_tr_TR.ts +++ b/ui/qt/wireshark_tr_TR.ts @@ -1984,6 +1984,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation>Paket baytlarını hex dökümü olarak kopyalayın.</translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_uk.ts b/ui/qt/wireshark_uk.ts index 54831f2c..12517ff4 100644 --- a/ui/qt/wireshark_uk.ts +++ b/ui/qt/wireshark_uk.ts @@ -1991,6 +1991,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation type="unfinished"></translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/qt/wireshark_zh_CN.ts b/ui/qt/wireshark_zh_CN.ts index cd0cdd37..38dfcbbd 100644 --- a/ui/qt/wireshark_zh_CN.ts +++ b/ui/qt/wireshark_zh_CN.ts @@ -1982,6 +1982,14 @@ For example, use 1 hour to have a new file created every hour on the hour.</sour <translation>将分组字节复制为十六进制转储。</translation> </message> <message> + <source>…as Printable Text</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy only the printable text in the packet.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>…as MIME Data</source> <translation type="unfinished"></translation> </message> diff --git a/ui/recent.c b/ui/recent.c index bc1f34ee..1906bfba 100644 --- a/ui/recent.c +++ b/ui/recent.c @@ -1361,6 +1361,8 @@ read_set_recent_pair_static(gchar *key, const gchar *value, recent.gui_additional_toolbars = prefs_get_string_list(value); } else if (strcmp(key, RECENT_GUI_INTERFACE_TOOLBAR_SHOW) == 0) { recent.interface_toolbars = prefs_get_string_list(value); + } else { + return PREFS_SET_NO_SUCH_PREF; } return PREFS_SET_OK; diff --git a/ui/ssl_key_export.c b/ui/ssl_key_export.c index fe72a75d..f077ef06 100644 --- a/ui/ssl_key_export.c +++ b/ui/ssl_key_export.c @@ -26,7 +26,7 @@ ssl_session_key_count(void) { int count = 0; ssl_master_key_map_t *mk_map = tls_get_master_key_map(FALSE); - if (!mk_map) + if (!mk_map || !mk_map->used_crandom) return count; GHashTableIter iter; diff --git a/ui/tap-rtp-analysis.c b/ui/tap-rtp-analysis.c index bd2438fa..92c5a796 100644 --- a/ui/tap-rtp-analysis.c +++ b/ui/tap-rtp-analysis.c @@ -129,6 +129,7 @@ static const mimetype_and_clock mimetype_and_clock_map[] = { {"MP2P", 90000}, /* [RFC2250],[RFC3555] */ {"MP4V-ES", 90000}, /* [RFC3016] */ {"mpa-robust", 90000}, /* [RFC3119] */ + {"opus", 48000}, /* [RFC7587] */ {"pointer", 90000}, /* [RFC2862] */ {"raw", 90000}, /* [RFC4175] */ {"red", 1000}, /* [RFC4102] */ diff --git a/wiretap/CMakeLists.txt b/wiretap/CMakeLists.txt index 7a7b51e1..f267c647 100644 --- a/wiretap/CMakeLists.txt +++ b/wiretap/CMakeLists.txt @@ -175,7 +175,7 @@ set_target_properties(wiretap PROPERTIES PREFIX "lib" COMPILE_DEFINITIONS "WS_BUILD_DLL" LINK_FLAGS "${WS_LINK_FLAGS}" - VERSION "14.1.0" SOVERSION 14 + VERSION "14.1.4" SOVERSION 14 FOLDER "DLLs" INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}" ) diff --git a/wiretap/pcap-common.c b/wiretap/pcap-common.c index 3a607940..a4b02cb4 100644 --- a/wiretap/pcap-common.c +++ b/wiretap/pcap-common.c @@ -1931,13 +1931,26 @@ struct usb_device_setup_hdr { PBSWAP64((guint8 *)fieldp); \ } -struct can_socketcan_hdr { - guint32 can_id; /* CAN ID and flags */ - guint8 payload_length; /* Frame payload length */ - guint8 padding; - guint8 reserved1; - guint8 reserved2; -}; +/* + * Offset and length of the CAN ID field in the CAN classic/CAN FD + * SocketCAN header. + */ +#define CAN_CANFD_CAN_ID_OFFSET 0 +#define CAN_CANFD_CAN_ID_LEN 4 + +/* + * Offsets and lengths of fields in the CAN XL SocketCAN header. + */ +#define CANXL_PRIORITY_VCID_OFFSET 0 +#define CANXL_PRIORITY_VCID_LEN 4 +#define CANXL_FLAGS_OFFSET (CANXL_PRIORITY_VCID_OFFSET + CANXL_PRIORITY_VCID_LEN) +#define CANXL_FLAGS_LEN 1 +#define CANXL_SDU_TYPE_OFFSET (CANXL_FLAGS_OFFSET + CANXL_FLAGS_LEN) +#define CANXL_SDU_TYPE_LEN 1 +#define CANXL_PAYLOAD_LENGTH_OFFSET (CANXL_SDU_TYPE_OFFSET + CANXL_SDU_TYPE_LEN) +#define CANXL_PAYLOAD_LENGTH_LEN 2 +#define CANXL_ACCEPTANCE_FIELD_OFFSET (CANXL_PAYLOAD_LENGTH_OFFSET + CANXL_PAYLOAD_LENGTH_LEN) +#define CANXL_ACCEPTANCE_FIELD_LEN 4 /* * CAN fake link-layer headers in Linux cooked packets. @@ -1951,15 +1964,65 @@ struct can_socketcan_hdr { /* * The protocols we have to check for. */ -#define LINUX_SLL_P_CAN 0x000C /* Controller Area Network */ +#define LINUX_SLL_P_CAN 0x000C /* Controller Area Network classic */ #define LINUX_SLL_P_CANFD 0x000D /* Controller Area Network flexible data rate */ +#define LINUX_SLL_P_CANXL 0x000E /* Controller Area Network extended length */ + +static void +pcap_byteswap_can_socketcan_pseudoheader(guint packet_size, guint16 protocol, + guint8 *pd) +{ + switch (protocol) { + + case LINUX_SLL_P_CAN: + case LINUX_SLL_P_CANFD: + /* + * CAN classic or CAN FD; byte-swap the ID/flags field + * into our host byte order. + * + * Make sure we have the entire field. + */ + if (packet_size < (CAN_CANFD_CAN_ID_OFFSET + CAN_CANFD_CAN_ID_LEN)) { + /* Not enough data to have the full CAN ID */ + return; + } + PBSWAP32(&pd[CAN_CANFD_CAN_ID_OFFSET]); + break; + + case LINUX_SLL_P_CANXL: + /* + * CAN classic or CAN FD; byte-swap the priority-and-VCID + * field, the payload length, ad the acceptance field + * into our host byte order. + */ + if (packet_size < (CANXL_PRIORITY_VCID_OFFSET + CANXL_PRIORITY_VCID_LEN)) { + /* Not enough data to have the full priority/VCID field */ + return; + } + PBSWAP32(&pd[CANXL_PRIORITY_VCID_OFFSET]); + if (packet_size < (CANXL_PAYLOAD_LENGTH_OFFSET + CANXL_PAYLOAD_LENGTH_LEN)) { + /* Not enough data to have the full payload length field */ + return; + } + PBSWAP16(&pd[CANXL_PAYLOAD_LENGTH_OFFSET]); + if (packet_size < (CANXL_ACCEPTANCE_FIELD_OFFSET + CANXL_ACCEPTANCE_FIELD_LEN)) { + /* Not enough data to have the full payload length field */ + return; + } + PBSWAP32(&pd[CANXL_ACCEPTANCE_FIELD_OFFSET]); + break; + + default: + /* Not a CAN packet; nothing to fix */ + return; + } +} static void pcap_byteswap_linux_sll_pseudoheader(wtap_rec *rec, guint8 *pd) { guint packet_size; guint16 protocol; - struct can_socketcan_hdr *can_socketcan_phdr; /* * Minimum of captured and actual length (just in case the @@ -1975,26 +2038,12 @@ pcap_byteswap_linux_sll_pseudoheader(wtap_rec *rec, guint8 *pd) return; } - protocol = pntoh16(&pd[LINUX_SLL_PROTOCOL_OFFSET]); - if (protocol != LINUX_SLL_P_CAN && protocol != LINUX_SLL_P_CANFD) { - /* Not a CAN packet; nothing to fix */ - return; - } - /* - * Greasy hack, but we never directly dereference any of - * the fields in *can_socketcan_phdr, we just get offsets - * of and addresses of its members and byte-swap it with a - * byte-at-a-time macro, so it's alignment-safe. + * Byte-swap the SocketCAN pseudoheader, if we have one. */ - can_socketcan_phdr = (struct can_socketcan_hdr *)(void *)(pd + LINUX_SLL_LEN); - - if (packet_size < LINUX_SLL_LEN + sizeof(can_socketcan_phdr->can_id)) { - /* Not enough data to have the full CAN ID */ - return; - } - - PBSWAP32((guint8 *)&can_socketcan_phdr->can_id); + protocol = pntoh16(&pd[LINUX_SLL_PROTOCOL_OFFSET]); + pcap_byteswap_can_socketcan_pseudoheader(packet_size - LINUX_SLL_LEN, + protocol, pd + LINUX_SLL_LEN); } static void @@ -2002,7 +2051,6 @@ pcap_byteswap_linux_sll2_pseudoheader(wtap_rec *rec, guint8 *pd) { guint packet_size; guint16 protocol; - struct can_socketcan_hdr *can_socketcan_phdr; /* * Minimum of captured and actual length (just in case the @@ -2018,26 +2066,12 @@ pcap_byteswap_linux_sll2_pseudoheader(wtap_rec *rec, guint8 *pd) return; } - protocol = pntoh16(&pd[LINUX_SLL2_PROTOCOL_OFFSET]); - if (protocol != LINUX_SLL_P_CAN && protocol != LINUX_SLL_P_CANFD) { - /* Not a CAN packet; nothing to fix */ - return; - } - /* - * Greasy hack, but we never directly dereference any of - * the fields in *can_socketcan_phdr, we just get offsets - * of and addresses of its members and byte-swap it with a - * byte-at-a-time macro, so it's alignment-safe. + * Byte-swap the SocketCAN pseudoheader, if we have one. */ - can_socketcan_phdr = (struct can_socketcan_hdr *)(void *)(pd + LINUX_SLL2_LEN); - - if (packet_size < LINUX_SLL2_LEN + sizeof(can_socketcan_phdr->can_id)) { - /* Not enough data to have the full CAN ID */ - return; - } - - PBSWAP32((guint8 *)&can_socketcan_phdr->can_id); + protocol = pntoh16(&pd[LINUX_SLL2_PROTOCOL_OFFSET]); + pcap_byteswap_can_socketcan_pseudoheader(packet_size - LINUX_SLL2_LEN, + protocol, pd + LINUX_SLL2_LEN); } static void diff --git a/wsutil/to_str.c b/wsutil/to_str.c index d15576d4..d3e41538 100644 --- a/wsutil/to_str.c +++ b/wsutil/to_str.c @@ -225,7 +225,10 @@ bytes_to_str_punct_maxlen(wmem_allocator_t *scope, int truncated = 0; ws_return_str_if(!src, scope); - ws_return_str_if(!src_size, scope); + + if (!src_size) { + return wmem_strdup(scope, ""); + } if (!punct) return bytes_to_str_maxlen(scope, src, src_size, max_bytes_len); @@ -264,7 +267,10 @@ bytes_to_str_maxlen(wmem_allocator_t *scope, int truncated = 0; ws_return_str_if(!src, scope); - ws_return_str_if(!src_size, scope); + + if (!src_size) { + return wmem_strdup(scope, ""); + } if (max_bytes_len == 0 || max_bytes_len > src_size) { max_bytes_len = src_size; diff --git a/wsutil/wmem/wmem_map.c b/wsutil/wmem/wmem_map.c index ea76f455..047b8457 100644 --- a/wsutil/wmem/wmem_map.c +++ b/wsutil/wmem/wmem_map.c @@ -231,8 +231,8 @@ wmem_map_contains(wmem_map_t *map, const void *key) { wmem_map_item_t *item; - /* Make sure we have a table */ - if (map->table == NULL) { + /* Make sure we have map and a table */ + if (map == NULL || map->table == NULL) { return false; } @@ -255,8 +255,8 @@ wmem_map_lookup(wmem_map_t *map, const void *key) { wmem_map_item_t *item; - /* Make sure we have a table */ - if (map->table == NULL) { + /* Make sure we have map and a table */ + if (map == NULL || map->table == NULL) { return NULL; } @@ -279,8 +279,8 @@ wmem_map_lookup_extended(wmem_map_t *map, const void *key, const void **orig_key { wmem_map_item_t *item; - /* Make sure we have a table */ - if (map->table == NULL) { + /* Make sure we have map and a table */ + if (map == NULL || map->table == NULL) { return false; } @@ -310,8 +310,8 @@ wmem_map_remove(wmem_map_t *map, const void *key) wmem_map_item_t **item, *tmp; void *value; - /* Make sure we have a table */ - if (map->table == NULL) { + /* Make sure we have map and a table */ + if (map == NULL || map->table == NULL) { return NULL; } @@ -341,8 +341,8 @@ wmem_map_steal(wmem_map_t *map, const void *key) { wmem_map_item_t **item, *tmp; - /* Make sure we have a table */ - if (map->table == NULL) { + /* Make sure we have map and a table */ + if (map == NULL || map->table == NULL) { return false; } @@ -395,7 +395,7 @@ wmem_map_foreach(wmem_map_t *map, GHFunc foreach_func, void * user_data) unsigned i; /* Make sure we have a table */ - if (map->table == NULL) { + if (map == NULL || map->table == NULL) { return; } @@ -415,7 +415,7 @@ wmem_map_foreach_remove(wmem_map_t *map, GHRFunc foreach_func, void * user_data) unsigned i, deleted = 0; /* Make sure we have a table */ - if (map->table == NULL) { + if (map == NULL || map->table == NULL) { return 0; } diff --git a/wsutil/wmem/wmem_map.h b/wsutil/wmem/wmem_map.h index a6886dd4..cb296fb4 100644 --- a/wsutil/wmem/wmem_map.h +++ b/wsutil/wmem/wmem_map.h @@ -79,7 +79,7 @@ G_GNUC_MALLOC; /** Inserts a value into the map. * - * @param map The map to insert into. + * @param map The map to insert into. Must not be NULL. * @param key The key to insert by. * @param value The value to insert. * @return The previous value stored at this key if any, or NULL. @@ -90,7 +90,7 @@ wmem_map_insert(wmem_map_t *map, const void *key, void *value); /** Check if a value is in the map. * - * @param map The map to search in. + * @param map The map to search in. May be NULL. * @param key The key to lookup. * @return true if the key is in the map, otherwise false. */ @@ -100,7 +100,7 @@ wmem_map_contains(wmem_map_t *map, const void *key); /** Lookup a value in the map. * - * @param map The map to search in. + * @param map The map to search in. May be NULL. * @param key The key to lookup. * @return The value stored at the key if any, or NULL. */ @@ -111,7 +111,7 @@ wmem_map_lookup(wmem_map_t *map, const void *key); /** Lookup a value in the map, returning the key, value, and a boolean which * is true if the key is found. * - * @param map The map to search in. + * @param map The map to search in. May be NULL. * @param key The key to lookup. * @param orig_key (optional) The key that was determined to be a match, if any. * @param value (optional) The value stored at the key, if any. @@ -124,7 +124,7 @@ wmem_map_lookup_extended(wmem_map_t *map, const void *key, const void **orig_key /** Remove a value from the map. If no value is stored at that key, nothing * happens. * - * @param map The map to remove from. + * @param map The map to remove from. May be NULL. * @param key The key of the value to remove. * @return The (removed) value stored at the key if any, or NULL. */ @@ -135,7 +135,7 @@ wmem_map_remove(wmem_map_t *map, const void *key); /** Remove a key and value from the map but does not destroy (free) them. If no * value is stored at that key, nothing happens. * - * @param map The map to remove from. + * @param map The map to remove from. May be NULL. * @param key The key of the value to remove. * @return true if key is found false if not. */ @@ -157,7 +157,7 @@ wmem_map_get_keys(wmem_allocator_t *list_allocator, wmem_map_t *map); * of the calls is unpredictable, since it is based on the internal * storage of data. * - * @param map The map to use + * @param map The map to use. May be NULL. * @param foreach_func the function to call for each key/value pair * @param user_data user data to pass to the function */ @@ -170,7 +170,7 @@ wmem_map_foreach(wmem_map_t *map, GHFunc foreach_func, void * user_data); * the map. The order of the calls is unpredictable, since it is * based on the internal storage of data. * - * @param map The map to use + * @param map The map to use. May be NULL. * @param foreach_func the function to call for each key/value pair * @param user_data user data to pass to the function * @return The number of items removed |