Compare commits

...

101 Commits

Author SHA1 Message Date
Harald Welte 1ba3d0f25c WIP: dissector for vsmartcard protocol
Change-Id: Iba8cbe09b14fcd0644cc3d09303eab1ef71fbca3
2023-03-11 14:36:51 +01:00
Harald Welte 88782ea431 rspro: re-order ASN1 choice members to work around wireshark asn.1 bug
It seems that for some reason the asn2wrs.py code generator cannot deal
with ASN.1 choices being defined with their numeric values defined in
non-ascending order.  Other ASN.1 code genreation tools work perfectly
fine under such conditions.

The decode error happens in the COL_INFO:  The numeric value of the
choice is mapped to a wrong entry in the string table, resulting in
the wrong message type being shown in the INFO column.

We apply this patch to the ASN.1 source of the RSPRO protocol definition
to  fix the decode.
2023-03-11 14:36:51 +01:00
Harald Welte 8fddbe2c16 WIP: Osmocom RSPRO dissector support
The Osmocom RSPRO protocol is a protocol for remote SIM card access,
i.e. extending the SIM card interface between phone/mdoem (UE) and
a remote SIM card reader.   The primary user of this protocol is
osmo-remsim software suite, which can be found at
https://osmocom.org/projects/osmo-remsim/wiki

RSPRO is specified in ASN.1 using BER and runs on top of the IPA
multiplex (protocol-gsm_ipa.c).

Change-Id: Ibcdb2c92281d05c36e3973de4d7ec4aa0cd9b207
2023-03-11 14:36:51 +01:00
John Thacker a329db7dd2 TLS: Fail without exception when decrypting truncated records
On truncated TLS records, just fail when attempting to decrypt or
calculate the handshake hash instead of raising an BoundsError.
The appropriate exception will be raised later when fields are
actually added to the tree.

This only makes a difference on the first pass, especially with
unencrypted initial handshake messages, as we don't try to decrypt
or calculate the hash on the second pass.

Fix #18896
2023-03-11 02:03:16 +00:00
Dr. Lars Völker 5f7122828c UDS: make code more readable by reformatting HFs 2023-03-10 21:53:13 +01:00
Harald Welte ae38e9b092 New dissector for GSM L2RCOP (3GPP TS 27.002)
This is a dissector for the GSM "Layer 2 Relay Character Oriented
Protocol" as used in non-transparent CSD (Circuit Switched Data)
calls in GSM and UMTS cellular networks.
2023-03-10 19:55:19 +00:00
Harald Welte f64e8f0796 Add new dissector for GSM RLP protocol (3GPP TS 24.022)
This protocol is used in the user plane of non-transparent CSD (Circuit
Switched Data) calls in GSM networks. RLP frames are sent over the Um
air interface, and are sent as modified V.110 frames over 64k TDM
channels in the back-haul/core network.  For modern implementations,
this means in RFC4040  RTP CLEARMODE.

As there's no V.110 decoder in wireshark, we cannot connect the RLP
decoder to that.  However, we hook it up to the GSMTAP dissector to
enable other software to pass the decoded RLP frames into wireshark.
2023-03-10 19:55:19 +00:00
Dr. Lars Völker 5c32f5bbd1 UDS: Cleanup and rework 2023-03-10 18:59:59 +00:00
Gerald Combs 0a558f9143 GitLab CI: Adjust our fuzz run time
[skip ci]
2023-03-10 10:07:10 -08:00
Mathis Marion c8e2cc7552 Add Silicon Labs copyright to packet-wisun.c 2023-03-10 17:26:22 +00:00
Mathis Marion 26c691c8cd Use Wi-SUN PHY mode ID dissector for MDR command 2023-03-10 17:26:22 +00:00
Mathis Marion ab06f6de7a Add Wi-SUN MDR command dissector 2023-03-10 17:26:22 +00:00
Mathis Marion 9f4947609e Always dissect IEEE 802.15.4 vendor command OUI
This changes the tree received by registered vendor dissectors (the
OUI isn't part of the dissected tree anymore). Thankfully there are
currently no dissector registered.
2023-03-10 17:26:22 +00:00
Zoran Bošnjak 3cbb560102 specs conversion minor update
Update for structure change introduced in revision #007b214 of asterix-specs.
2023-03-10 17:03:45 +00:00
hidd3ncod3s 1e5514061d Fix build warnings 2023-03-10 06:44:14 +00:00
hidd3ncod3s 2452c537e3 Generate SRVSVC parser using PIDL 2023-03-10 06:44:14 +00:00
hidd3ncod3s c1c9040952 Update SRVSVC IDL and CNF 2023-03-10 06:44:14 +00:00
Preben Guldberg b50ed1dc80 GUI: Colorize with filter could use an old filter
When right-clicking an item in the packet details and using "Colorize
with Filter", the colour may be applied using the wrong filter.

The code currently only updates the filter used for "Colorize with
Filter" if the packet details are visible and has focus. This is not
the case when you switch from one packet to another (at least by
clicking the other frame in the packet list).

The patch moves the emit of fieldFilterChanged() up to where the
filed_filter is identified. This seems the least intrusive.
2023-03-09 22:40:35 +00:00
Gerald Combs 3b7f810f36 Docs: Fix the Developer's Guide chapter order
The build intro should be the first chapter in part II.
2023-03-09 10:40:47 -08:00
Jiří Engelthaler 45274a7b9a IEC104: Unifying filter names 2023-03-09 17:53:11 +00:00
Martin Mathieson 32541d81c9 ORAN FH CUS: Expert malformed info if > 3 bytes in frame after PDU 2023-03-09 15:42:16 +00:00
Jaap Keuter cc04dad6d0 Qt: Put p->show() before p->setVisible to allow later to take effect
Closes #18882
2023-03-09 13:35:34 +00:00
Mathis Marion d574cd2c24 Add support for Wi-SUN JM-IE and JM-PFL 2023-03-09 10:33:48 +00:00
Mathis Marion 0355477618 Add support for Wi-SUN LBATS-IE 2023-03-09 10:33:48 +00:00
Mathis Marion bf53ea5080 Drop support for Wi-SUN NR-IE Listening Type
This feature was dropped between versions 1.1v00 and 1.1v01 of the
Wi-SUN FAN specification.
2023-03-09 10:33:48 +00:00
Dr. Lars Völker 321932d310 TECMP: Cleanup and fix units
- The Voltage was not showing the unit V.
- The temperatures now use directly the base unit degree Celsius.
2023-03-09 09:54:15 +00:00
Gerald Combs 9a63e4cf79 ORAN FH CUS: Add an array length check
Fixes #18895.
2023-03-09 09:40:31 +00:00
John Thacker 2a7e4982a5 dumpcap: Make debugging compile again
Commit e921b804d0 removed the
user data parameter from logging, so remove it here.

Explain how the debugging defines work.

If DEBUG_DUMPCAP is defined and dumpcap is a capture child, don't send
logs to stderr with normal formatting, because that will be connected to
the sync pipe.  Don't send them to stdout either, because that can be
connected to a data pipe (e.g., for retrieving interface information.)
Instead, send it to stderr with the special formatting so that the
parent recognizes it.

Use va_copy if both DEBUG_DUMPCAP and DEBUG_CHILD_DUMPCAP are defined,
avoiding undefined behavior that can lead to segfaults.

Set the log level to DEBUG when running as a capture child if the
DEBUG defines are set, because sync_pipe_start doesn't pass along
log level information. If you turned on the extra #define, you
presumably want to debug.

If logging to a file, open the file before any log messages.

Get rid of a check for the log level being below the default level.
It's either redundant of a check already done in ws_log_full, or it
prevents logs from being shown when dumpcap is run standalone with
logging options.
2023-03-08 21:22:51 -05:00
Jaap Keuter 92fb895241 netlink: Add netfilter conntrack status flag hw_offload 2023-03-08 20:08:04 +00:00
Jaap Keuter 4c7d2a771f netlink: Add netlinkrt handling of RTM_SETLINK
References #18697
2023-03-08 18:04:26 +01:00
Jaap Keuter 0e63c25f66 netlink: implement new identifiers from Linux 6.2 kernel 2023-03-08 13:58:48 +00:00
Guy Harris ff9e2494a1 json_dumper: rework the error checking to improve error messages.
Fix the file name in the introductory comment.

Update a comment to note that a base64 value is handled, in some ways,
like a nested element, even though it's not nested in the way that an
object or array is.

Have json_dumper_bad() write current stack depth and the current and
previous types in, if possible, symbolic or numeric form; don't dump
other information.  Also have it set JSON_DUMPER_FLAGS_ERROR, so no
other routine needs to do so.

Add routines to check for dumper stack overflow *and* underflow and
report them with appropriate messages, and use them in routines that
push onto or pop off of that stack, respectively.

This means that the stack depth won't overflow or underflow, so we can
make it unsigned (as it will never underflow below 0) and don't need to
check for negative or bigger-than-the-stack values.

Pull check out of json_dumper_check_state() into various existing or new
routines (for common code to call in those existing routines), and have
the error messages passed to json_dumper_bad() give a more detailed
explanation of the particular problem detected.
2023-03-08 05:06:25 -08:00
Igor Dmitriev 212cec9f7b TRDP: Fixed typo and indentation in packet-trdp.c 2023-03-08 09:58:43 +00:00
Igor Dmitriev 649b20cb44 TRDP: Updated release notes 2023-03-08 09:58:43 +00:00
Igor Dmitriev c11cffda3c TRDP: Add dissector for TRDP protocol 2023-03-08 09:58:43 +00:00
Dr. Lars Völker 17273f2258 UDS: Remove unneeded functions to clean up code
Removed the following functions as they are not needed anymore:
- masked_guint8_value
- tvb_get_guintX
2023-03-08 09:03:06 +00:00
Stig Bjørlykke 6fc17a1303 ieee80211: Add a field for WLAN Flags
Add the frame control flags string to a new field. This can be
used in a custom column, similar to TCP Flags.
2023-03-08 07:28:28 +00:00
Michal Ruprich 34d3f122d3 Converting QByteArray to const char * 2023-03-07 19:31:50 +00:00
Martin Mathieson e6eca89501 ORAN FH CUS: Misc usability changes 2023-03-07 17:03:08 +00:00
Dr. Lars Völker 921a9a0ea2 SOME/IP: UDP Heur should not always return TRUE (BUGFIX)
The old SOME/IP Heur always returned true, even for non SOME/IP. This is
fixed now.
2023-03-07 16:54:36 +00:00
David Perry 808fcd3c2b SMPP: Add command/response field 2023-03-07 13:34:34 +00:00
Tomasz Moń 248ee51e36
USBLL: Remove unnecessary packet ends transfer check
Check whether last received packet ended transfer on STALL only if there
was active transfer key set. This fixes failed transfer type assertion
for control transfers without data stage that were STALLed by device
(during status stage).
2023-03-07 07:57:21 +01:00
John Thacker a93c775849 Qt: Fix copying from System Default profile
Set the "profile_filename" property on the special System Default
QAction in the CopyFromProfileButton so that the action will actually
do something when triggered.

Fix #13373
2023-03-07 01:22:10 +00:00
Guy Harris d17b9baec3 sharkd: allow nameless base64 items and objects.
Elements of an array don't have names.
2023-03-06 10:37:12 -08:00
Martin Mathieson d91b2448c9 ORAN FH CUS: Also configure ext11 using ext12 settings 2023-03-06 16:44:51 +00:00
Mathis Marion 2ae0c1eadc Add Wi-SUN IEEE 802.11 KDE dissector
This adds the following KDEs defined by the Wi-SUN FAN specification:
- Pairwise Transient Key KDE           (PTKID)
- Group Transient Key Liveness KDE     (GTKL)
- Node Role KDE                        (NR)
- LFN Group Transient Key KDE          (LGTK)
- LFN Group Transient Key Liveness KDE (LGTKL)
2023-03-06 15:36:58 +00:00
Mathis Marion 54abe7f328 Support Wi-SUN EAPOL Key Data dissection
The Wi-SUN FAN specification describes the format of the EAPOL-Key frame
in section 6.5.2.2 (Authentication and PMK Installation Flow):

  Descriptor Type = 2
  Key Information:
    1. Key Descriptor Version = 2
    2. Key Type = 0
    3. Install = 0
    4. Key Ack = 0
    5. Key MIC = 0
    6. Secure = 0
    7. Error = 0
    8. Request = 1
    9. Encrypted Key Data = 0
    10. SMK Message = 0
    11. Reserved = 0
  Key Length = 0
  Key Replay Counter = see [IEEE802.11] section 11.6.2.
  Key Nonce = 0
  EAPOL-Key IV = 0
  Key RSC = 0
  Key MIC = 0
  Key Data Length = length of Key Data field in octets.
  Key Data = PMKID KDE if the PMK is live, PTKID KDE if the PTK is live, GTKL
  KDE, Node Role KDE, and LGTKL KDE.

The current dissector will try do decrypt if the Key Type is 0 while the
Encrypted Key Data is unset, which appears to be for supporting
non-standard WPA implementations. The Key Data is not encrypted in
Wi-SUN, so a workaround is made to dissect the Key Data if the Key
Length is 0.
2023-03-06 15:36:58 +00:00
Mathis Marion 0fdf91e1ec Add id-kp-wisun-fan-device object identifier
Defined in the Wi-SUN FAN specification as:

    id-kp-wisun-fan-device ::= {
        iso(1)
        identified-organization(3)
        dod(6)
        internet(1)
        private(4)
        enterprise(1)
        Wi-SUN (45605)
        FieldAreaNetwork(1)
    }
2023-03-06 15:36:58 +00:00
John Thacker 33ed5200a2 docs: Grammar
Fix a couple cases of using "it's" instead of "its" for the possessive
2023-03-06 08:47:09 -05:00
Andreas Schultz 6a7d6bbee6 PFCP: add BBF TR-459.2 and TR-459.3 IEs 2023-03-06 13:03:13 +00:00
Andreas Schultz b044959e34 PFCP: readd TP Created NAT Binding
Was dropped in error in ccbc0d5fe9
2023-03-06 13:03:13 +00:00
John Thacker 53914b0447 colors: Improve handling of errors
Pop up a dialog about bad coloring rules when reading the file
(e.g., when first starting Wireshark), rather than waiting until
you try to edit them.

Have that dialog have details of the problem with the filter
instead of a generic message. The report_warning code will
consolidate multiple warnings into one if more than one filter
has an error, rather than have lots of pop-ups.

Since the dialog (or console message, in the unlikely event that
somehow the colorfilters are read in a CLI tool) is called from
the color filters code, get rid of the separate non-specific
pop-up in ColoringRulesDialog and the special preference for
having a bogus filter.

Now, if the user has a bogus filter in the current profile's
colorfilter, they'll get a useful pop-up warning at startup,
when that filter is disabled. For filters imported / copied from
other profiles through the coloring rules dialog, they'll get the
same useful pop-up.

For trying to enable a disabled coloring rules with an error, or
inserting a *new* coloring rule with invalid filter expression (despite
the editor's Red background warning about an invalid expression),
there's already both the hint at the bottom of the screen and the
OK button becomes disabled. (Maybe the hint could be larger or
bold or something when there's an error.)

Fix #14906. Fix #15034
2023-03-06 12:17:02 +00:00
Martin Mathieson c682f53222 ORAN FH CUS: Section ext11 configured by ext13 2023-03-06 10:14:55 +00:00
Stig Bjørlykke 7af40c9971 ieee80211: Save AKM_KEY for tag number 221
Tag number 221 (Microsoft WPA Information Element) contains an AKM type.
Save this to fix wlan decryption when this tag is used by Access Point.
2023-03-06 08:59:15 +00:00
Guy Harris d5a2f6fe2c sharkd: clean up the JSON marshalling.
Add routines to open and close an object, and use them.  The open
routine takes a member name as an argument, sets it, and begins an
object; the close routine ends the object.

Have sharkd_json_response_close() end the object, just as
sharkd_json_response_open() begins it.

Have sharkd_session_process_tap_stats_node_cb() take a key and use that
when opening the array.

Have sharkd_session_process_frame_cb_tree() take a key and use that when
opening the array.

This makes the structure of the code better mirror the structure of the
JSON objects it marshals.

If there's a key for a string value, but there's no string value or no
format for a string value, crash with a null-pointer dereference rather
than putting out the key and then, on the next operation, getting a
"json_dumper_bad(): Bad json_dumper state: illegal transition" error as
in, for example, issue #18886. This way, it will be a bit more obvious
what the true error is.

If thre's no key for a base-64 value, crash rather than not setting the
key, for the same reason.
2023-03-06 00:00:27 -08:00
Gerald Combs ffbfc1d454 Resources: Remove absolute paths from SVGs
Fixes #17429.
2023-03-05 14:17:42 -08:00
John Thacker a5bdae177e docs: Update Windows temporary directory location in manpages
Update the example typical location for the temporary directory
on Windows in the manpages to something newer than where Windows NT
or Windows 98 might put it.

Fix #18463
2023-03-05 17:52:08 +00:00
Gerald Combs f6703b9b36 [Automatic update for 2023-03-05]
Update manuf, services enterprise numbers, translations, and other items.

services failed.
2023-03-05 16:42:23 +00:00
Dr. Lars Völker 375fa02c98 UDS: Show unparsed bytes
This patch cleans up the offset and length handling to allow showing
unparsed bytes.
2023-03-05 14:44:43 +00:00
Martin Mathieson 1377421925 ORAN FH CUS: ext11 bundles can be configured using ext6 2023-03-05 12:53:52 +00:00
Guy Harris 3854770f15 sharkd: don't report an error if there is no error.
If dfilter_compile() succeeds, but the filter contains deprecated
tokens, don't report an error from dfilter_compile() as a warning, as
there *is* no error from dfilter_compile().  Instead, report "Filter
contains deprecated tokens".  (Feel free to improve the error text.)

Fixes the crash, at least, in #18886.
2023-03-05 00:05:26 -08:00
John Thacker 736ed83000 docs: Document wmem in Developer's Guide
Add information from the Wiki Development/Tips page and from
README.wmem to the Developer's Guide.

Also fix a small typo in README.wmem

Fix #17126
2023-03-05 02:23:32 +00:00
Dr. Lars Völker f92d0ded8f TECMP: cleanup endianness for 1 Byte fields 2023-03-05 02:22:13 +00:00
Zach Chadwick ac28130c76 Sharkd: show RTP ssrc as hex and improve errors
The token format used by rtp-analyse and rtp-download expect the SSRC
field to be a hex string parsable by `ws_hexstrtou32()` as seen in
sharkd_session.c:760. The output from tap:rtp-streams was displaying
it as an unsigned integer.

For consistency, this field is now displayed as a hex string in the
output.

If the call to download an RTP stream did not match any payloads, Sharkd
would not return any information at all.

This now returns an error message indicating that there is no RTP data
available.

Adds three new selftests and sample pcap.
2023-03-04 22:54:55 +00:00
John Thacker c7823a14ec VNC: Fix accidental offset increment in RRE
This was accidentally added in f424256889
and is clearly incorrect: https://www.rfc-editor.org/rfc/rfc6143#section-7.7.3

Fix #18883
2023-03-04 08:38:28 -05:00
John Thacker 69d82b44ef Follow: Remove some unused code 2023-03-04 02:27:08 +00:00
John Thacker c9c5617aed UDS: Use wmem to create a string
Related to #18878
2023-03-03 22:58:12 +00:00
Gerald Combs ccf01edf04 macOS: Update the ChmodBPF postinstall script
`launchctl load` and `launchctl unload` are deprecated. Use `launchctl
bootstrap system` and `launchctl bootout system` instead.
2023-03-03 14:07:51 -08:00
Dr. Lars Völker 5bbaf9ef35 UDS: fixing typos indification and sub-function 2023-03-03 15:15:47 +00:00
John Thacker e1b85eacd4 epan: Do not try to add a bits item with negative bit length
A negative number of bits in a bit item isn't allowed. Treat it
as a very large number (i.e., as unsigned), and throw a
ReportedBoundsError. This was already happening in most cases,
but not in the edge case of a number of bits between -1 and -7
(which was being rounded up to 0 octets and passed our length checks.)

Fix #18877
2023-03-03 01:52:31 +00:00
Alexis La Goutte fc15fe3b4a DRDA: Add SQL Statement Length
Add missing length to SQL Statement

Close: 18876
2023-03-02 23:47:05 +00:00
Gerald Combs ceb5a2d55b Tools: Fix the docinfo paths in make-version.py
[skip ci]
2023-03-02 14:26:48 -08:00
John Thacker 224d8dba97 Qt: Sequence diagram comments are not numbers
The comments in the flow diagrams are conceptually an extra y Axis
ticker label on the right. Tell QCustomPlot that we don't want to
render things that look like sufficiently large numbers in scientific
notation.

Fix #18879
2023-03-02 17:40:17 +00:00
John Thacker 36395517d3 Qt: Don't double escape sequence diagram comments
In the flow diagram, the hint is an ElidedLabel, which now
escapes HTML: d9adb6f712

So don't escape the comment before passing it to ElidedLabel, or
the double-escaping will cause quotes, angle brackets, etc. to
look like HTML entities.
2023-03-02 14:48:23 +00:00
John Thacker 0b6e641d3c help: WLANTraffic section moved WSUG chapters
The documentation for WLAN Traffic menu item in the Wireless menu
was moved from the Statistics Chapter to the Wireless Chapter of
the WSUG. Update the URL in its help button accordingly.

Part of #17982
2023-03-02 14:43:07 +00:00
John Thacker c6c9aae152 Qt: rtpstream_id memleak
Free fwd_id and rev_id, not just their members, if they aren't used.
Coverity CID 1512428
2023-03-02 08:55:28 -05:00
John Thacker 4c94673401 docs: WSUG Change name of Manage Interfaces Section to match help
The WSUG has ChManageInterfacesSection, but the help button in
ui/help_url.c tries to open ChCapManageInterfacesSection.

The latter appears to be correct, as every other section and other
anchor in the Capture Chapter beings with "ChCap".

Part of #17982
2023-03-01 21:40:17 -05:00
John Thacker 0d23b6692f Qt: RtpStreamDialog leak
In tapReset, the select rtpstread_id is copied member by member
by QList append(), so don't allocate pointers on the heap that
will be leaked. (Coverity 1477952)
2023-03-01 21:10:42 -05:00
John Thacker 44a38f0ad4 Qt: RTP Analysis Dialog leaks
Delete the tab name. Free the rtpstream_info_calc data after use.
2023-03-01 07:25:24 -05:00
John Thacker c9fee454e9 Qt: More RTP Leaks
Parent RtpAudioGraph with its QCustomPlot
2023-03-01 07:15:36 -05:00
Zach Chadwick d98f6b16ef Sharkd: Return error message on load if err!=0
Fixes a bug when the return value from load_cap_file() is nonzero.
No response is currently returned causing the client to hang. A non-zero
error code can happen for a variety of reasons, one of which is when the
PCAP is truncated.

An error message from cfile_read_failure_message() is displayed on the
console, but no data was returned to the RPC client.

This adds a call to wtap_strerrror() to look up a human consumable error
message for the specific error code returned during wtap_read().

Adds new self-test to suite_sharkd.py
2023-03-01 11:33:02 +00:00
Alexis La Goutte 1236c07a03 file-pcapng-darwin: fix Dead Store found by Clang Analyzer 2023-03-01 09:45:10 +00:00
John Thacker e51fea444a RTP: Fix some memleaks
In the tap, the stream ID allocated on the stack just needs a shallow
copy of the addresses. It only needs a deep copy when being added as a
new entry to the list.

Restore the memleak fix from e76ca2d3cb
that was accidentally removed by 1b4b5e59e9
2023-02-28 20:22:11 -05:00
John Thacker 82da7faee6 epan: Expand on comment regarding g_atomic_pointer
Related to #17753
2023-02-28 18:15:22 -05:00
John Thacker 18572b4336 Revert "Reset the "current conversation elements" after each dissector call"
We do want to reset these (and probably most other elements of the
packet_info struct) when starting to process a new PDU at the same
protocol level as the most recently processed dissector. However,
find_conversation_pinfo() is used in the GUI and elsewhere to get
the final value of conversation and address information, so we don't
want to reset the values after the last PDU.

Revert this until we can find a better general way of handling this.
(!8013 handles the specific PPP case for #18278.) Perhaps eventually
there should be some separation between addresses and conversation
information used for the next dissector called, and the value for
the packet used after the packet is fully dissected (by the GUI, etc.)

This reverts commit 80e287f82c.

Fix #18781.
2023-02-28 13:17:15 +00:00
Stig Bjørlykke d64114f48e icmpv6: Show ND lifetime as time string
Show Neighbor Discovery option lifetime values as time string.
2023-02-28 08:56:32 +01:00
Martin Mathieson 02f5fe0fe1 RTPS: make a function static 2023-02-28 06:38:05 +00:00
Dr. Lars Völker ef0a07520e UDS: cleanup structure
Remove ETTs that do not match the standard.
2023-02-28 03:55:43 +00:00
John Thacker 4196076418 dfilter: Use ws_debug
Use ws_debug instead of ws_log(WS_LOG_DOMAIN, LOG_LEVEL_DEBUG)
in dfilter_compile_real, so that the logging is optimized away in a
Release build.
2023-02-28 02:36:38 +00:00
Joris Peeraer 31bb4ff135 enterprises: recognize "previously" as synonym for "formerly"
Enterprise-names containing "formerly" are handled differently, removing the former
name and only keeping the current one.

Some enterprise-names have changed their names using the synonym "previously",
which is currently not parsed in the same way. This commit modifies the script
to recognize both.
2023-02-27 17:51:24 +00:00
Gerald Combs eb03246c6b [Automatic update for 2023-02-26]
Update manuf, services enterprise numbers, translations, and other items.
2023-02-27 17:07:14 +00:00
John Thacker c998afd041 ppp: Reset conversation elements between each frame in raw HDLC stream
When breaking up a raw HDLC byte stream into frames, each frame
should be treated separately, much like it were a new frame in
an ordinary capture file. That means that many of the elements
in the big packet_info struct should be reset for each new frame.

In particular, the "most recent conversation" information stored
in conv_elements and conv_addr_port_endpoints should be reset.

This is not that different to how multiple PDUs should be handled
in some other protocols (DVB-S2, TCP, etc.). When a frame contains
protocol layers A, B, then C, we should distinguish between "C is
contained within B within A" and "C and B are consecutive PDUs both
contained within A."

Unfotunately, it's difficult to handle this in a general way, as we
don't know when calling the dissector for a PDU whether another PDU
will follow or not. If something is the last PDU, we don't want to
reset the last addresses/ports/conversation, so that we can access
them for display purposes, conversation filters, the related packets
line, follow stream, etc., many of which use find_conversation_pinfo

Fix #18278.
2023-02-27 12:13:16 +00:00
John Thacker 4fa5e0f3c9 Qt: Fix some leaks in RTP Analysis windows
Parent the QActions that are created for Analyze and Play
buttons for each RTP window, so that they are deleted when
the button is deleted.
2023-02-27 01:56:30 +00:00
Dr. Lars Völker 6f8eef82b4 UDS: fix WDBI assert 2023-02-26 17:08:37 +01:00
John Thacker e7ed03d74f Qt: Remove unused member
This _GStringChunk is not initialized or used anywhere in
PacketListModel (and has not been for quite some time, since
62ca0a609b)
2023-02-26 08:39:16 -05:00
Dr. Lars Völker 406c8e8afd UDS: Fixing dissector bugs (tvb_bytes_to_str_punct with 0 length)
This patch fixes 3 bugs where tvb_bytes_to_str_punct length was not
checked.

Fixes: #18865
2023-02-26 10:37:42 +00:00
Gerald Combs 90f0814046 [Automatic update for 2023-02-19]
Update manuf, services enterprise numbers, translations, and other items.

services failed.
2023-02-26 09:54:36 +00:00
Martin Mathieson 29a39c1e6e ORAN FH CUS: Add section extension type 2 2023-02-26 09:21:13 +00:00
John Thacker 8834c8e9de epan: Determine if an active color filter has a hfid/proto
Add functions to test if a compiled dfilter considers an hfid
or a protocol id interesting. Use those to define functions to
test if any enabled color filter considers an hfid or a protocol
interesting.
2023-02-26 02:41:19 +00:00
John Thacker 641434ff81 Qt: Fix leak in Coloring Rules Dialog
We don't need the cloned color_filter_t after the ColoringRuleItem
has been created (the char* strings are copied into QStrings), so
free it.
2023-02-25 18:50:56 +00:00
John Thacker b1460bff69 NR-RRC: Fix assign instead of comparison
This is mean to use the value to select the correct field length.
Fix Coverity CID 1517107, 1517124, 1517136, 1517164, 1517184, 1517195.
2023-02-25 17:52:01 +00:00
134 changed files with 14374 additions and 5612 deletions

View File

@ -886,7 +886,7 @@ ASan Menagerie Fuzz:
extends: .fuzz-ubuntu
stage: fuzz-asan
script:
- MAX_SECONDS=$(( 4 * 60 * 60 ))
- MAX_SECONDS=$(( 6 * 60 * 60 ))
- printf "\e[0Ksection_start:%s:cmake_section[collapsed=true]\r\e[0KRunning CMake" "$( date +%s)"
- cmake -G Ninja -DBUILD_wireshark=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX -DENABLE_CCACHE=ON -DENABLE_WERROR=Off ..
- printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)"

View File

@ -3021,6 +3021,7 @@ Don Chirieleison <donc[AT]mitre.org> {
Harald Welte <laforge[AT]gnumonks.org> {
GSM A-bis over IP dissector
GSM A-bis OML dissector
GSM RLP dissector
GSMTAP dissector
GSM SIM/USIM dissector
Ericsson extensions to L2TP
@ -4155,6 +4156,7 @@ Bharath Ravindranath <bravindranath[AT]arista.com>
Bin Peng <binpengsmail[AT]gmail.com>
Binh Trinh <beango[AT]gmail.com>
Birol Capa <birol.capa[AT]siemens.com>
Biswapriyo Nath <nathbappai[AT]gmail.com>
Bjoern Riemer <bjoern.riemer[AT]fokus.fraunhofer.de>
Björn Ruytenberg <bjorn[AT]bjornweb.nl>
Bob Hinden <bob.hinden[AT]gmail.com>
@ -4416,6 +4418,7 @@ Grzegorz Niemirowski <grzegorz[AT]grzegorz.net>
Gtker <git[AT]gtker.com>
Gtker <wireshark[AT]gtker.com>
Guillaume Autran <gautran[AT]clearpathrobotics.com>
Gulshan Singh <gsingh2011[AT]gmail.com>
Gustavo Garcia <gustavogb[AT]gmail.com>
Guvenc Gulce <guvenc[AT]linux.ibm.com>
Guy Davies <aguydavies[AT]gmail.com>
@ -4611,6 +4614,7 @@ Lars Christensen <larsch[AT]belunktum.dk>
Lars Sundström <lars.x.sundstrom[AT]ericsson.com>
Lasse Luttermann Poulsen <lasse.luttermann[AT]gmail.com>
Laszlo Papp <laszlo.papp[AT]hubersuhner.com>
Laurent Fasnacht <laurent.fasnacht[AT]proton.ch>
Laurenz Kamp <laurenz.kamp[AT]gmx.de>
Lee Mitchell <lee[AT]indigopepper.com>
Lee Serin <serinee95[AT]gmail.com>
@ -4684,6 +4688,7 @@ Martin Mathieson <martin.mathieson[AT]keysight.com>
Martin Nyhus <martin.nyhus[AT]gmx.com>
Martin Sehnoutka <msehnout[AT]redhat.com>
Martin Stigge <martin[AT]stigge.org>
Martin Stigge <mstigge[AT]arista.com>
Martin Tibenský <martin.tibensky[AT]alcatel-lucent.com>
Martin Tschoepe <martin.tschoepe[AT]web.de>
Martin Vit <martin[AT]voipmonitor.org>
@ -4693,6 +4698,7 @@ Matan Perelman <matan1008[AT]gmail.com>
Matej Košík <5764c029b688c1c0d24a2e97cd764f[AT]gmail.com>
Matej Tkac <matej.tkac.mt[AT]gmail.com>
Mathias Kurth <mathias.kurth[AT]commsolid.com>
Mathis MARION <mathis.marion1[AT]gmail.com>
Mathis Marion <mathis.marion[AT]silabs.com>
Mathy Vanhoef <Mathy.Vanhoef[AT]nyu.edu>
Matias Karhumaa <matias.karhumaa[AT]gmail.com>
@ -5155,6 +5161,7 @@ Yury Gargay <yury.gargay[AT]gmail.com>
Yuya Kawakami <github[AT]yuyarin.net>
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>
Zdeněk Žamberský <zzdevel[AT]seznam.cz>
Zhao Lin <zlbinghamton[AT]gmail.com>

3
NEWS
View File

@ -30,6 +30,9 @@ Wireshark 4.1.0 Release Notes
default. That must be done explicitly using `cmake --install
<builddir> --component Development`.
The Wireshark installation is relocatable on Linux (and other ELF
platforms with support for relative RPATHs).
Many other improvements have been made. See the “New and Updated
Features” section below for more details.

View File

@ -3459,7 +3459,7 @@ The arguments to udp_dissect_pdus are:
2.9 PINOs (Protocols in name only)
For the typical dissector there is a 1-1 relationship between it and it's
For the typical dissector there is a 1-1 relationship between it and its
protocol. However, there are times when a protocol needs multiple "names"
because it has multiple dissection functions going into the same dissector
table. The multiple names removes confusion when picking dissection through

View File

@ -321,7 +321,7 @@ pointer is stored internally with the data structure, and subsequent calls
The primary debugging control for wmem is the WIRESHARK_DEBUG_WMEM_OVERRIDE
environment variable. If set, this value forces all calls to
wmem_allocator_new() to return the same type of allocator, regardless of which
type is requested normally by the code. It currently has three valid values:
type is requested normally by the code. It currently has four valid values:
- The value "simple" forces the use of WMEM_ALLOCATOR_SIMPLE. The valgrind
script currently sets this value, since the simple allocator is the only

View File

@ -454,9 +454,11 @@ Use a separate thread per interface.
+
--
Specifies the directory into which temporary files (including capture
files) are to be written. The default behaviour is to use your system's
temporary directory (typically __/tmp__ on UNIX-compatible systems, such
as Linux, macOS, \*BSD, Solaris, and AIX, and __C:\\Temp__ on Windows).
files) are to be written. The default behavior on UNIX-compatible sytems,
such as Linux, macOS, \*BSD, Solaris, and AIX, is to use the environment
variable __$TMPDIR__ if set, and the system default, typically __/tmp__, if it
is not. On Windows, the __%TEMP%__ environment variable is used, which
typically defaults to __%USERPROFILE%\AppData\Local\Temp__.
--
-v|--version::

View File

@ -79,7 +79,7 @@ class ArgumentParser(argparse.ArgumentParser):
def _get_action_from_name(self, name):
"""Given a name, get the Action instance registered with this parser.
If only it were made available in the ArgumentError object. It is
passed as it's first arg...
passed as its first arg...
"""
container = self._actions
if name is None:

View File

@ -963,9 +963,11 @@ whether the *-V* option was specified. This is the default.
+
--
Specifies the directory into which temporary files (including capture
files) are to be written. The default behaviour is to use your system's
temporary directory (typically __/tmp__ on UNIX-compatible systems, such
as Linux, macOS, \*BSD, Solaris, and AIX, and __C:\\Temp__ on Windows).
files) are to be written. The default behavior on UNIX-compatible sytems,
such as Linux, macOS, \*BSD, Solaris, and AIX, is to use the environment
variable __$TMPDIR__ if set, and the system default, typically __/tmp__, if it
is not. On Windows, the __%TEMP%__ environment variable is used, which
typically defaults to __%USERPROFILE%\AppData\Local\Temp__.
--
-u <seconds type>::

View File

@ -664,9 +664,11 @@ The default format is relative.
+
--
Specifies the directory into which temporary files (including capture
files) are to be written. The default behaviour is to use your system's
temporary directory (typically __/tmp__ on UNIX-compatible systems, such
as Linux, macOS, \*BSD, Solaris, and AIX, and __C:\\Temp__ on Windows).
files) are to be written. The default behavior on UNIX-compatible sytems,
such as Linux, macOS, \*BSD, Solaris, and AIX, is to use the environment
variable __$TMPDIR__ if set, and the system default, typically __/tmp__, if it
is not. On Windows, the __%TEMP%__ environment variable is used, which
typically defaults to __%USERPROFILE%\AppData\Local\Temp__.
--
--time-stamp-type <type>::
@ -1415,10 +1417,11 @@ menu:Capture[Options]::
--
Initiate a live packet capture (see /"Capture Options Dialog"
below). If no filename is specified, a temporary file will be created
to hold the capture. The location of the file can be chosen by setting your
TMPDIR environment variable before starting *Wireshark*. Otherwise, the
default TMPDIR location is system-dependent, but is likely either __/var/tmp__
or __/tmp__.
to hold the capture. Temporary files are written in the directory listed
in menu:Help[About Wireshark > Folders]. This location can be chosen with the
command line option *--temp-dir*, or by setting the environment variable
TMPDIR (on UNIX-compatible systems, such as Linux, macOS, \*BSD, Solaris,
and AIX) or TEMP (on Windows) before starting **Wireshark**.
--
menu:Capture[Start]::
@ -2583,7 +2586,7 @@ menu:About[Folders]::
+
--
The __Folders__ page lets you view the directory names where Wireshark is
searching it's various configuration and other files.
searching its various configuration and other files.
--
menu:About[Plugins]::

View File

@ -109,6 +109,7 @@ DECT proprietary Mitel OMM/RFP Protocol (also named AaMiDe)
DECT DLC protocol layer (DECT-DLC)
DECT NWK protocol layer (DECT-NWK)
Low Level Signalling (ATSC3 LLS)
Train Real-Time Data Protocol (TRDP)
--
=== Updated Protocol Support

View File

@ -53,10 +53,10 @@ The second part describes how the Wireshark sources are structured and how to
change the sources such as adding a new dissector.
--
include::wsdg_works.adoc[]
include::wsdg_build_intro.adoc[]
include::wsdg_works.adoc[]
include::wsdg_capture.adoc[]
include::wsdg_dissection.adoc[]

View File

@ -223,6 +223,49 @@ Follow the build procedure in <<ChSetupWindows>> to build Wireshark.
After the build process has successfully finished, you should find a
`Wireshark.exe` and some other files in the `run\RelWithDebInfo` directory.
[#ChSrcBuildType]
==== Build Type
CMake can compile Wireshark for several different build types:
.Build Types
|===
|Type |Compiler Flags |Description
|`RelWithDebInfo`
|`-O2 -g`
|Default, mix of optimization and debug capabilities
|`Debug`
|`-O0 -g`
|For debugging, no optimization
|`Release`
|`-O3 -DNDEBUG`
|Optimized for speed, no debug symbols or debug level logs
|`MinSizeRel`
|`-Os -DNDEBUG`
|Optimized for size, no debug symbols or debug level logs
|===
The default is `RelWithDebInfo`, which provides a good compromise of
some optimization (`-O2`) along with including debug symbols (`-g`)
and enabling full <<ChSrcLogging,logging capabilities>>.
To change the build type, set the CMake variable `CMAKE_BUILD_TYPE`, e.g.:
[source,sh]
----
$ cmake .. -DCMAKE_BUILD_TYPE=Debug
----
or on Windows,
[source,cmd]
----
> msbuild /m /p:Configuration=Debug Wireshark.sln
----
[#ChSrcRunFirstTime]
=== Run Your Version Of Wireshark
@ -267,6 +310,16 @@ As with the Unix-like build described above, you can run Wireshark from the buil
[#ChSrcDebug]
=== Debug Your Version Of Wireshark
Optimization can make debugging a bit more difficult, e.g. by changing the
execution order of statements. To disable optimization, set the
<<ChSrcBuildType,build type>> to `Debug`.
Conversely, the `Release` or `MinSizeRel` build types can be used to optimize
further for speed or size, but do not include debug symbols for use with
debuggers, and completely disable <<ChSrcLoggingLevels,lower level logging>>
and asserts, optimizing away the code path. Ensure that you have not built with
one of those types before attempting debugging.
[#ChSrcLogging]
==== Wireshark Logging
@ -289,7 +342,7 @@ define their own logging domain. Any string can be used as ID for a logging doma
[#ChSrcLoggingLevels]
===== Logging Levels
The following logging levels are defined:
The following logging levels are defined from highest to lowest:
* error
* critical
@ -300,8 +353,12 @@ The following logging levels are defined:
* noisy
By default logging output is generated for logging level "message" and above. If the logging level is lowered or raised
all log output generated at or above this level is sent to the log output. Note that release builds by default do not
generate log output for the logging levels debug and noisy.
all log output generated at or above this level is sent to the log output.
Note that if the <<ChSrcBuildType,build type>> is set to `Release` or
`MinSizeRel`, then by default all log output for the logging levels "debug" and
"noisy" will be optimized away by the compiler and cannot be sent to the log
output, regardless of the logging setings. To enable debugging for all build
types, set the CMake variable `-DENABLE_DEBUG=ON`.
There is also a special "echo" logging level used exclusively for temporary debugging print outs (usually
via the `WS_DEBUG_HERE` macro).
@ -385,16 +442,89 @@ such as Qt Creator, CLion, or Eclipse.
Additional traps can be set on Wireshark, see <<ChSrcTrapsLogging>>
[#ChSrcMemorySafety]
===== Memory Safety and Leaks
Wireshark's wmem memory management framework makes it easy to allocate
memory in pools with a certain scope that is freed automatically at
a certain point (such as the end of dissecting a packet or when closing
a file), even if a dissector raises an exception after allocating the
memory. Memory in a pool is also freed collectively, which can be
considerably faster than calling `free()` individually on each individual
allocation. Proper use of wmem makes a dissector faster and less prone
to memory leaks with unexpected data, which happens frequently with
capture files.
However, wmem's block allocation can obscure issues that memory checkers
might otherwise catch. Fortunately, the `WIRESHARK_DEBUG_WMEM_OVERRIDE`
environment variable can be set at runtime to instruct wmem to use a specific
memory allocator for all allocations, some of which are more compatible with
memory checkers:
* `simple` - Uses `malloc()` only, no block allocation, compatible with Valgrind
* `strict` - Finds invalid memory via canaries and scrubbing freed memory
* `block` - Standard block allocator for file and epan scopes
* `block_fast` - Block allocator for short-lived scope, e.g. packet, (`free()` is a no-op)
The `simple` allocator produces the most accurate results with tools like
https://valgrind.org[Valgrind] and can be enabled as follows:
[source,sh]
----
$ export WIRESHARK_DEBUG_WMEM_OVERRIDE=simple
----
For memory allocated without wmem but with GLib's GSlice memory allocator,
there is a similar `G_SLICE` environment variable that can be set to
`always-malloc` (similar to `simple`) or `debug-blocks` (similar to `strict`).
See https://developer-old.gnome.org/glib/stable/glib-running.html for details.
If you're encountering memory safety bugs, you might want to build with
https://en.wikipedia.org/wiki/AddressSanitizer[Address Sanitizer] so that
Wireshark will immediately alert you to any detected issues.
https://github.com/google/sanitizers/wiki/AddressSanitizer[Address Sanitizer]
(ASAN) so that Wireshark will immediately alert you to any detected issues.
It works with GCC or Clang, provided that the appropriate libraries are installed.
[source,sh]
----
$ cmake .. -G Ninja -DENABLE_ASAN=1
----
See https://developer-old.gnome.org/glib/stable/glib-running.html
TIP: ASAN slows things down by a factor of 2 (or more), so having a different
build directory for an ASAN build can be useful.
ASAN will catch more errors when run with either the `simple` or `strict`
wmem allocator than with the defaults. (It is more compatible with the
`strict` allocator and the analogous GSlice `debug-blocks` option than
Valgrind is.)
For additional instrumentation, ASAN supports a number of
https://github.com/google/sanitizers/wiki/AddressSanitizerFlags[options].
For further investigating memory leaks, the following can be useful:
[source,sh]
----
# This slows things down a lot more but results in more precise backtraces,
# especially when calling third party libraries (such as the C++ standard
# library):
$ export ASAN_OPTIONS=fast_unwind_on_malloc=0
# This causes LeakSanitizer to print the addresses of leaked objects for
# inspection in a debugger:
$ export LSAN_OPTIONS=report_objects=1
----
LeakSanitizer and AddressSanitizer can detect issues in third-party libraries
that you cannot do anything about. For example, internal Qt library calls to
the fontconfig library can produce leaks. To ignore them, create a
https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer#suppressions[suppressions file] with an appropriate entry, e.g. `leak:libfontconfig`.
If you are just interested in memory safety checking, but not memory
leak debugging, disable the included https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer[LeakSanitizer] with:
[source,sh]
----
$ export ASAN_OPTIONS=detect_leaks=0
----
[#ChSrcWindowsDebug]
==== Windows Native

View File

@ -67,8 +67,8 @@ the present time, so its recommended that you use it on macOS or Linux.
To edit and build Wireshark using Qt Creator, open the top-level
_CMakeLists.txt_ within Qt Creator. It should ask you to choose a build
location. Do so. It should then ask you to run CMake. Fill in any
desired build arguments (e.g. `-D CMAKE_BUILD_TYPE=Debug` or `-D
ENABLE_CCACHE=ON`) and click the btn:[Run CMake] button. When that
desired build arguments (e.g. <<ChSrcBuildType,`-D CMAKE_BUILD_TYPE=Debug`>> or
`-D ENABLE_CCACHE=ON`) and click the btn:[Run CMake] button. When that
completes select menu:Build[Open Build and Run Kit Selector...] and make
sure _wireshark_ is selected.

View File

@ -99,7 +99,7 @@ Clicking on the icon will show the configuration dialog for that interface.
Hovering over an interface will show any associated IPv4 and IPv6 addresses and its capture filter.
Wireshark isn't limited to just network interfaces -- on most systems you can also capture USB, Bluetooth, and other types of packets.
Note also that an interface might be hidden if its inaccessible to Wireshark or if it has been hidden as described in <<ChManageInterfacesSection>>.
Note also that an interface might be hidden if its inaccessible to Wireshark or if it has been hidden as described in <<ChCapManageInterfacesSection>>.
[#ChCapCaptureOptions]
@ -258,7 +258,7 @@ Capturing can be stopped based on the following conditions:
You can double click on an interface row in the “Input“ tab or click btn:[Start] from any tab to commence the capture. You can click btn:[Cancel] to apply your changes and close the dialog.
[#ChManageInterfacesSection]
[#ChCapManageInterfacesSection]
=== The “Manage Interfaces” Dialog Box

View File

@ -93,8 +93,13 @@
#include "wiretap/pcapng_module.h"
#include "wiretap/pcapng.h"
/**#define DEBUG_DUMPCAP**/
/**#define DEBUG_CHILD_DUMPCAP**/
/*
* Define these for extra logging messages at INFO and below. Note
* that when dumpcap is spawned as a child process, logs are sent
* to the parent via the sync pipe.
*/
/**#define DEBUG_DUMPCAP**/ /* Logs INFO and below messages normally */
/**#define DEBUG_CHILD_DUMPCAP**/ /* Writes INFO and below logs to file */
#ifdef _WIN32
#include "wsutil/win32-utils.h"
@ -107,6 +112,9 @@
FILE *debug_log; /* for logging debug messages to */
/* a file if DEBUG_CHILD_DUMPCAP */
/* is defined */
#ifdef DEBUG_DUMPCAP
#include <stdarg.h> /* va_copy */
#endif
#endif
static GAsyncQueue *pcap_queue;
@ -4910,6 +4918,23 @@ main(int argc, char *argv[])
/* Early logging command-line initialization. */
ws_log_parse_args(&argc, argv, vcmdarg_err, 1);
#if defined(DEBUG_DUMPCAP) || defined(DEBUG_CHILD_DUMPCAP)
/* sync_pipe_start does not pass along log level information from
* the parent (XXX: it probably should.) Assume that if we're
* specially compiled with dumpcap debugging then we want it on.
*/
if (capture_child) {
ws_log_set_level(LOG_LEVEL_DEBUG);
}
#endif
#ifdef DEBUG_CHILD_DUMPCAP
if ((debug_log = ws_fopen("dumpcap_debug_log.tmp","w")) == NULL) {
fprintf (stderr, "Unable to open debug log file .\n");
exit (1);
}
#endif
ws_noisy("Finished log init and parsing command line log arguments");
#ifdef _WIN32
@ -4945,13 +4970,6 @@ main(int argc, char *argv[])
#define OPTSTRING OPTSTRING_CAPTURE_COMMON "C:dghk:" OPTSTRING_m "MN:nPq" OPTSTRING_r "St" OPTSTRING_u "vw:Z:"
#ifdef DEBUG_CHILD_DUMPCAP
if ((debug_log = ws_fopen("dumpcap_debug_log.tmp","w")) == NULL) {
fprintf (stderr, "Unable to open debug log file .\n");
exit (1);
}
#endif
#if defined(__APPLE__) && defined(__LP64__)
/*
* Is this Mac OS X 10.6.0, 10.6.1, 10.6.3, or 10.6.4? If so, we need
@ -5597,21 +5615,27 @@ dumpcap_log_writer(const char *domain, enum ws_log_level level,
const char *user_format, va_list user_ap,
void *user_data _U_)
{
/* ignore log message, if log_level isn't interesting */
if (level <= LOG_LEVEL_INFO) {
#if !defined(DEBUG_DUMPCAP) && !defined(DEBUG_CHILD_DUMPCAP)
return;
#endif
}
/* DEBUG & INFO msgs (if we're debugging today) */
#if defined(DEBUG_DUMPCAP) || defined(DEBUG_CHILD_DUMPCAP)
if (level <= LOG_LEVEL_INFO && ws_log_msg_is_active(domain, level)) {
#ifdef DEBUG_DUMPCAP
ws_log_console_writer(domain, level, timestamp, file, line, func, user_format, user_ap, NULL);
#endif
#ifdef DEBUG_CHILD_DUMPCAP
ws_log_file_writer(debug_log, domain, level, timestamp, file, line, func, user_format, user_ap, NULL);
va_list user_ap_copy;
va_copy(user_ap_copy, user_ap);
#endif
if (capture_child) {
gchar *msg = ws_strdup_vprintf(user_format, user_ap);
sync_pipe_errmsg_to_parent(2, msg, "");
g_free(msg);
} else {
ws_log_console_writer(domain, level, timestamp, file, line, func, user_format, user_ap);
}
#ifdef DEBUG_CHILD_DUMPCAP
ws_log_file_writer(debug_log, domain, level, timestamp, file, line, func, user_format, user_ap_copy);
va_end(user_ap_copy);
#endif
#elif DEBUG_CHILD_DUMPCAP
ws_log_file_writer(debug_log, domain, level, timestamp, file, line, func, user_format, user_ap);
#endif
return;
}

View File

@ -5,7 +5,7 @@
# The format used here is: <NUMERICAL_ID><SPACE><NAME>
# Where SPACE can be any sequence of spaces and tabs.
#
# (last updated 2023-02-07)
# (last updated 2023-03-02)
0 Reserved
1 NxNetworks
@ -3563,7 +3563,7 @@
3558 BGS Systemplanung AG
3559 The Digital Schoolhouse
3560 Sphere Logic Corporation
3561 Broadband Forum (previously 'DSL Forum')
3561 Broadband Forum # previously 'DSL Forum'
3562 Jim Marsden Development # formerly 'Selway Moore Limited'
3563 National Network Data Services
3564 Ciphernet
@ -6793,7 +6793,7 @@
6790 Finjan Software
6791 EXE Technologies, Inc.
6792 Active+ Software
6793 TUIASI (previously 'UTIasi')
6793 TUIASI # previously 'UTIasi'
6794 Adhesive Software Incorporated
6795 Pocono Pet Sitters
6796 TekVision Communications
@ -13019,7 +13019,7 @@
13028 Kuokoa Networks, Inc.
13029 Managed Service Partners International
13030 Monitor724 Services Limited
13031 NextGen Business Solution, Inc. (previously 'neix,Inc.')
13031 NextGen Business Solution, Inc. # previously 'neix,Inc.'
13032 Reach Technologies
13033 shockunit productions
13034 SoftNet Systems, Inc.
@ -13852,7 +13852,7 @@
13864 MAMINOS, Inc.
13865 Université Charles de Gaulle - Lille 3
13866 ACE TIMING
13867 Adfinis SyGroup AG
13867 Adfinis AG
13868 Bahrain Credit
13869 Blum Capital Partners, LP
13870 Corporate Oxygen
@ -17839,7 +17839,7 @@
17853 Heilpraktikerschule Luzern Ltd.
17854 Twenty First Century Communications (TFCC)
17855 zipRealty, Inc.
17856 NetNumber, Inc.
17856 Titan.ium Platform, LLC
17857 Tiscali France
17858 sonik.org
17859 Septier Communications Ltd.
@ -20026,7 +20026,6 @@
20048 Internet Broadcasting Systems
20049 GnuArch
20050 Western United Insurance
20051 GlobalSkyVault
20052 Intesa Sanpaolo S.p.A.
20053 I.NET2 S.r.l.
20054 Statistisches Bundesamt
@ -22158,7 +22157,6 @@
22181 Avision Inc.
22182 Cascadia BHC
22183 Cylant, Inc.
22184 21st Century Software Inc.
22185 eScholar LLC
22186 Marketing Resource Consultants, Inc.
22187 Symphoniq
@ -22584,7 +22582,7 @@
22607 ChiliTech Internet Solutions, Inc.
22608 Cmed Ltd
22609 CJ Microware and Associates
22610 A10 Networks (previously 'Raksha Networks Inc.')
22610 A10 Networks # previously 'Raksha Networks Inc.'
22611 Tele Lorca
22612 Envirocare of Utah, LLC
22613 City Animal Hospital Ltd.
@ -24963,7 +24961,7 @@
24988 Singh Travels
24989 Synalogic e.K.
24990 Bluestem Ltd.
24991 CardContact Software & System Consulting
24991 CardContact Systems GmbH
24992 Toko University
24993 MySQL, Inc.
24994 nabios GmbH
@ -31500,7 +31498,7 @@
31531 Immutify Limited
31532 Ensynch, Inc
31533 ScanSafe Ltd
31534 Adfinis SyGroup AG # formerly 'SyGroup GmbH'
31534 Adfinis AG
31535 Parkeon
31536 OpenNHRP project
31537 Gossamer Threads Inc.
@ -45128,7 +45126,7 @@
45177 Sapientier Development
45178 Direktion der Justiz und des Innern des Kantons Zuerich
45179 Jablotron Alarms a.s.
45180 Rolls-Royce Marine
45180 Kongsberg Maritime
45181 AVSystem
45182 bkaiser GmbH
45183 Access Control Services Ltd
@ -55256,7 +55254,7 @@
55321 Loralab
55322 Núcleo de Comunicaciones y Control, S.L.
55323 Y20 Works
55324 Anapaya Systems
55324 SCION Association
55325 Komprise
55326 State University of New York College of Technology at Delhi
55327 SOS International LLC
@ -56717,7 +56715,7 @@
56789 Hengyang Rich Power Co.,Ltd
56790 Bradley-Bourbonnais Community High School
56791 RES PUBLICA Consulting Group
56792 101 Systems
56792 Xyberdata
56793 Ferdinand Kittinger GmbH
56794 Research Data and Communication Technologies
56795 cre.ative IT
@ -57094,7 +57092,7 @@
57166 MECAFOR
57167 Matrix AI
57168 Telecard
57169 Kotoi-Xie Consultancy
57169 Kotoi-Xie Consultancy, Inc.
57170 OKB Alpha, LTD
57171 DataNet Services UG
57172 Alaska USA Federal Credit Union
@ -59951,3 +59949,121 @@
60027 LEEGOOD AUTOMATIC SYSTEMS. INC.
60028 Neil Farr
60029 Digital Check Corp
60030 NonpareilTech
60031 Jeff Lunsford
60032 Sikorsky Financial Credit Union
60033 Whiterabbit AI Inc
60034 ZTD Training
60035 Wolfspyre Labs
60036 FoamyCastle
60037 bonprix Handelsgesellschaft mbH
60038 Hitachi Energy Automation & Communication
60039 Andrews Property Group
60040 Nine Consulting
60041 Procontrol Electronics Ltd.
60042 Tems Security Services GmbH
60043 Admiral Sportwetten GmbH
60044 Chris Dauksza
60045 GSB Sonderabfall-Entsorgung Bayern GmbH
60046 Anger Clan
60047 GENERAL BROADCAST
60048 NSLComm
60049 European Union Agency for the Space Programme, Rodrigo Da Costa
60050 WyreStorm Technologies Corp.
60051 Cirrus Link Solutions
60052 Matt Melling
60053 APP SOLUTIONS
60054 Tecnosul
60055 Pert Telecom Solutions Pvt Ltd
60056 Amensolar Ess Co., Ltd.
60057 Thales UK Ltd
60058 Assumption College Kilmore
60059 Lapplands
60060 Consometers
60061 Bayerische Versorgungskammer
60062 Francis Augusto Medeiros-Logeay
60063 Mosaic Primary Care Network
60064 Goldilocks Tech Solution Pvt. Ltd.
60065 Hone Group, Inc
60066 Capella Controls
60067 Sudipto Kumar barmon
60068 Karlborgs Elkontroll AB
60069 LeXtudio Inc.
60070 Mälby Gård AB, 556499-7525
60071 Wiregrass Electric Cooperative
60072 Hologic
60073 Accu-Precision Tool and Gauge
60074 Caddell Construction
60075 Morpheus Space GmbH
60076 Teleproject Srl
60077 Stadt Kassel - Amt für Schule und Bildung
60078 BEYOND THE SCOPE
60079 Pathagility
60080 Nice Threads, LLC
60081 Jonno Sanderson-Smith
60082 Square Enix
60083 Spt Arrow Net
60084 Alteryx Extensibility
60085 PGUM Srl
60086 Northwest Hills Surgical Hospital
60087 Grifon
60088 Opelousas General Health System
60089 Stiftung Auffangeinrichtung BVG
60090 Lopi elektronika sp. z o.o.
60091 EntryPoint Networks, Inc
60092 Treasure Valley Hospital
60093 PAYAM KHOSHBAKHT
60094 La France insoumise
60095 CEC Huada Electronic Design Co., Ltd.
60096 Wealden District Council
60097 OESSE
60098 strudelline.net
60099 Amazon Web Services Inc
60100 UNpkl
60101 Synapse Product Development
60102 Luogu
60103 AustroControl
60104 Western Sydney Airport
60105 Xinjiang Yingsheng Information Technology Co., Ltd
60106 Beijing Dayu Technology Co.,Ltd
60107 Select Medical
60108 Rocky Enterprise Software Foundation
60109 Arising Technology Systems Pty Limited
60110 Junnikkala Oy
60111 Brickdoc HK Holding LTD
60112 ASTELCO Systems GmbH
60113 Aires LLC
60114 Beijing YiShengChuangQi Technology Co., Ltd
60115 eCert
60116 eCert Corp.
60117 Nane OON GlobalCom Corporation
60118 INSERCOMHAI
60119 Tiuxo
60120 Konvekta AG
60121 Surgical Hospital of Oklahoma, LLC
60122 INFOGRID d.o.o.
60123 hefraTEC GmbH
60124 Larraby Electrónica y Comunicación, S.L.
60125 RL Online Media
60126 AMAG Group AG
60127 AMAG Corporate Services AG
60128 Astelcom
60129 NCube Hosting Consultants
60130 Plutometry Corporation
60131 AGL Energy Limited
60132 Surahammars Bruks AB
60133 Septimiu Fabian Mare
60134 Nexim Security Solutions
60135 Briggs & Stratton
60136 Agima
60137 Proba
60138 Granby Consulting LLC
60139 IETHCOM Information Technology Co., Ltd.
60140 NIFT (Pvt) ltd.
60141 Scott Corio
60142 3A Systems, LLC
60143 Forney ISD
60144 Swift Navigation Incorporated
60145 P1 Security
60146 Vladimir Kleusov
60147 logturm

Can't render this file because it is too large.

View File

@ -22,6 +22,7 @@
#include <wsutil/filesystem.h>
#include <wsutil/file_util.h>
#include <wsutil/report_message.h>
#include <wsutil/wslog.h>
#include <wsutil/ws_assert.h>
@ -442,6 +443,10 @@ color_filter_validate_cb(gpointer filter_arg, gpointer err)
/* Disable the color filter in the list of color filters. */
colorf->disabled = TRUE;
}
/* XXX: What if the color filter tests "frame.coloring_rule.name" or
* "frame.coloring_rule.string"?
*/
}
/* apply changes from the edit list */
@ -513,6 +518,52 @@ color_filters_prime_edt(epan_dissect_t *edt)
g_slist_foreach(color_filter_list, prime_edt, edt);
}
static gint
find_hfid(gconstpointer data, gconstpointer user_data)
{
color_filter_t *colorf = (color_filter_t *)data;
int hfid = GPOINTER_TO_INT(user_data);
if ((!colorf->disabled) && colorf->c_colorfilter != NULL) {
if (dfilter_interested_in_field(colorf->c_colorfilter, hfid)) {
return 0;
}
}
return -1;
}
gboolean
color_filters_use_hfid(int hfid)
{
GSList *item = NULL;
if (color_filters_used())
item = g_slist_find_custom(color_filter_list, GINT_TO_POINTER(hfid), find_hfid);
return (item != NULL);
}
static gint
find_proto(gconstpointer data, gconstpointer user_data)
{
color_filter_t *colorf = (color_filter_t *)data;
int proto_id = GPOINTER_TO_INT(user_data);
if ((!colorf->disabled) && colorf->c_colorfilter != NULL) {
if (dfilter_interested_in_proto(colorf->c_colorfilter, proto_id)) {
return 0;
}
}
return -1;
}
gboolean
color_filters_use_proto(int proto_id)
{
GSList *item = NULL;
if (color_filters_used())
item = g_slist_find_custom(color_filter_list, GINT_TO_POINTER(proto_id), find_proto);
return (item != NULL);
}
/* * Return the color_t for later use */
const color_filter_t *
color_filters_colorize_packet(epan_dissect_t *edt)
@ -559,8 +610,6 @@ read_filters_file(const gchar *path, FILE *f, gpointer user_data, color_filter_a
name = (gchar *)g_malloc(name_len + 1);
filter_exp = (gchar *)g_malloc(filter_exp_len + 1);
prefs.unknown_colorfilters = FALSE;
while (1) {
if (skip_end_of_line) {
@ -654,10 +703,8 @@ read_filters_file(const gchar *path, FILE *f, gpointer user_data, color_filter_a
df_error_t *df_err = NULL;
if (!disabled && !dfilter_compile(filter_exp, &temp_dfilter, &df_err)) {
ws_warning("Could not compile \"%s\" in colorfilters file \"%s\".\n%s",
name, path, df_err->msg);
report_warning("Disabling color filter: Could not compile \"%s\" in colorfilters file \"%s\".\n%s", name, path, df_err->msg);
dfilter_error_free(df_err);
prefs.unknown_colorfilters = TRUE;
/* skip_end_of_line = TRUE; */
disabled = TRUE;

View File

@ -102,13 +102,31 @@ color_filters_tmp_color(guint8 filter_num);
WS_DLL_PUBLIC gboolean
color_filters_reset_tmp(gchar **err_msg);
/* Prime the epan_dissect_t with all the compiler
/* Prime the epan_dissect_t with all the compiled
* color filters of the current filter list.
*
* @param the epan dissector details
*/
WS_DLL_PUBLIC void color_filters_prime_edt(struct epan_dissect *edt);
/** Check if any of the enabled compiled color filters of the current
* filter list depend on a given header field.
*
* @param hfid The header field ID to check
* @return TRUE if the color filter contains the header field.
*/
WS_DLL_PUBLIC gboolean
color_filters_use_hfid(int hfid);
/** Check if any of the enabled compiled color filters of the current
* filter list depend on any field in a given protocol.
*
* @param proto_id The protocol ID to check
* @return TRUE if the color filter contains a field from the protocol
*/
WS_DLL_PUBLIC gboolean
color_filters_use_proto(int proto_id);
/** Colorize a specific packet.
*
* @param edt the dissected packet

View File

@ -379,8 +379,7 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
*dfp = NULL;
if (text == NULL) {
ws_log(WS_LOG_DOMAIN, LOG_LEVEL_DEBUG,
"%s() called from %s() with null filter",
ws_debug("%s() called from %s() with null filter",
__func__, caller);
/* XXX This BUG happens often. Some callers are ignoring these errors. */
dfw_error_set_msg(errpp, "BUG: NULL text pointer passed to dfilter_compile");
@ -388,13 +387,11 @@ dfilter_compile_real(const gchar *text, dfilter_t **dfp,
}
else if (*text == '\0') {
/* An empty filter is considered a valid input. */
ws_log(WS_LOG_DOMAIN, LOG_LEVEL_DEBUG,
"%s() called from %s() with empty filter",
ws_debug("%s() called from %s() with empty filter",
__func__, caller);
}
else {
ws_log(WS_LOG_DOMAIN, LOG_LEVEL_DEBUG,
"%s() called from %s(), compiling filter: %s",
ws_debug("%s() called from %s(), compiling filter: %s",
__func__, caller, text);
}
@ -613,6 +610,43 @@ dfilter_has_interesting_fields(const dfilter_t *df)
return (df->num_interesting_fields > 0);
}
gboolean
dfilter_interested_in_field(const dfilter_t *df, int hfid)
{
int i;
for (i = 0; i < df->num_interesting_fields; i++) {
if (df->interesting_fields[i] == hfid) {
return TRUE;
}
}
return FALSE;
}
gboolean
dfilter_interested_in_proto(const dfilter_t *df, int proto_id)
{
int i;
for (i = 0; i < df->num_interesting_fields; i++) {
int df_hfid = df->interesting_fields[i];
if (proto_registrar_is_protocol(df_hfid)) {
/* XXX: Should we go up to the parent of a pino?
* We can tell if df_hfid is a PINO, but there's
* no function to return the parent proto ID yet.
*/
if (df_hfid == proto_id) {
return TRUE;
}
} else {
if (proto_registrar_get_parent(df_hfid) == proto_id) {
return TRUE;
}
}
}
return FALSE;
}
GPtrArray *
dfilter_deprecated_tokens(dfilter_t *df) {
if (df->deprecated && df->deprecated->len > 0) {

View File

@ -117,6 +117,25 @@ dfilter_load_field_references(const dfilter_t *df, proto_tree *tree);
gboolean
dfilter_has_interesting_fields(const dfilter_t *df);
/* Check if dfilter is interested in a given field
*
* @param df The dfilter
* @param hfid The header field info ID to check
* @return TRUE if the field is interesting to the dfilter
*/
gboolean
dfilter_interested_in_field(const dfilter_t *df, int hfid);
/* Check if dfilter is interested in a given protocol
*
* @param df The dfilter
* @param hfid The protocol ID to check
* @return TRUE if the dfilter is interested in a field whose
* parent is proto_id
*/
gboolean
dfilter_interested_in_proto(const dfilter_t *df, int proto_id);
WS_DLL_PUBLIC
GPtrArray *
dfilter_deprecated_tokens(dfilter_t *df);

View File

@ -172,6 +172,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-ros.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-rrc.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-rrlp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-rspro.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-rtse.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-rua.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-s1ap.c
@ -554,6 +555,7 @@ set(DISSECTOR_PUBLIC_HEADERS
packet-rpcrdma.h
packet-rrc.h
packet-rsvp.h
packet-rspro.h
packet-rtcp.h
packet-rtp.h
packet-rtp-events.h
@ -1191,9 +1193,11 @@ set(DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_cbsp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_gsup.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_ipa.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_l2rcop.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_osmux.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_r_uus1.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_rlcmac.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_rlp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_sim.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_sms.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_sms_ud.c
@ -1931,6 +1935,7 @@ set(DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-tpm20.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-tpncp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-tr.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-trdp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-trill.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-trmac.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-tsp.c
@ -2002,6 +2007,7 @@ set(DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-vrrp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vrt.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vsip.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vsmartcard.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vsock.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vssmonitoring.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-vtp.c

View File

@ -109,6 +109,7 @@ set(ASN1_SRC_DIRS
ros
rrc
rrlp
rspro
rtse
rua
s1ap

View File

@ -2015,11 +2015,11 @@ VisitedPSCellInfo-r17/timeSpent-r17 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&u
nr_drb_mac_rlc_mapping_t *mapping = &nr_rrc_get_private_data(actx)->drb_rlc_mapping;
if (mapping->tempDirection == DIRECTION_UPLINK) {
mapping->rlcUlSnLength_present = TRUE;
mapping->rlcUlSnLength = (value=0) ? 6 : 12;
mapping->rlcUlSnLength = (value==0) ? 6 : 12;
}
else {
mapping->rlcDlSnLength_present = TRUE;
mapping->rlcDlSnLength = (value=0) ? 6 : 12;
mapping->rlcDlSnLength = (value==0) ? 6 : 12;
}
#.FN_BODY SN-FieldLengthAM VAL_PTR=&value
@ -2028,11 +2028,11 @@ VisitedPSCellInfo-r17/timeSpent-r17 DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&u
nr_drb_mac_rlc_mapping_t *mapping = &nr_rrc_get_private_data(actx)->drb_rlc_mapping;
if (mapping->tempDirection == DIRECTION_UPLINK) {
mapping->rlcUlSnLength_present = TRUE;
mapping->rlcUlSnLength = (value=0) ? 12 : 18;
mapping->rlcUlSnLength = (value==0) ? 12 : 18;
}
else {
mapping->rlcDlSnLength_present = TRUE;
mapping->rlcDlSnLength = (value=0) ? 12 : 18;
mapping->rlcDlSnLength = (value==0) ? 12 : 18;
}

View File

@ -0,0 +1,31 @@
# CMakeLists.txt
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
set( PROTOCOL_NAME rspro )
set( PROTO_OPT )
set( ASN_FILE_LIST
RSPRO.asn
)
set( EXTRA_DIST
${ASN_FILE_LIST}
packet-${PROTOCOL_NAME}-template.c
${PROTOCOL_NAME}.cnf
)
set( SRC_FILES
${EXTRA_DIST}
${EXT_ASN_FILE_LIST}
)
set( A2W_FLAGS )
ASN2WRS()

View File

@ -0,0 +1,347 @@
----------------------------------------------------------------------
-- RSPRO - Remote SIM Protocol, part of Osmocom Remote SIM Suite
-- (C) 2018 by Harald Welte <laforge@gnumonks.org>
-- All Rights Reserved
--
-- SPDX-License-Identifier: GPL-2.0+
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--
----------------------------------------------------------------------
RSPRO DEFINITIONS
IMPLICIT TAGS
::=
BEGIN
EXPORTS
RsproPDU
;
----------------------------------------------------------------------
-- Elementary Data Types
----------------------------------------------------------------------
-- Some random ID the requestor can chose and which the client echos back in a response.
-- This allows multiple outstanding commands in flight and matching of responses to requests.
OperationTag ::= INTEGER(0..2147483647)
-- Unique identifier of a given SIM bank
BankId ::= INTEGER(0..1023)
-- Unique identifier of a given client (modem)
ClientId ::= INTEGER(0..1023)
ComponentType ::= ENUMERATED {
-- client: Modems / Phones
remsimClient (0),
-- server: Coordination
remsimServer (1),
-- bank daemon: SIM cards
remsimBankd (2)
}
ComponentName ::= IA5String (SIZE (1..32))
ComponentIdentity ::= SEQUENCE {
type ComponentType,
name ComponentName,
software [0] ComponentName,
swVersion [1] ComponentName,
hwManufacturer [2] ComponentName OPTIONAL,
hwModel [3] ComponentName OPTIONAL,
hwSerialNr [4] ComponentName OPTIONAL,
hwVersion [5] ComponentName OPTIONAL,
fwVersion [6] ComponentName OPTIONAL,
...
}
-- IP address / port details
Ipv4Address ::= OCTET STRING (SIZE (4))
Ipv6Address ::= OCTET STRING (SIZE (16))
IpAddress ::= CHOICE {
ipv4 [0] Ipv4Address,
ipv6 [1] Ipv6Address
}
PortNumber ::= INTEGER (0..65535)
IpPort ::= SEQUENCE {
ip IpAddress,
port PortNumber
}
-- Result of a given operation
ResultCode ::= ENUMERATED {
ok (0),
-- client / bank / slot ID not accepted
illegalClientId (1),
illegalBankId (2),
illegalSlotId (3),
unsupportedProtocolVersion (4),
unknownSlotmap (5),
-- no card is present in given slot
cardNotPresent (100),
-- card is present but unresponsive in given slot
cardUnresponsive (101),
-- unrecoverable transmission errors detected
cardTransmissionError (102),
...
}
ErrorCode ::= ENUMERATED {
-- Bankd or Server has received connection form unknown client (no mapping)
unknownClientConnected (1),
-- unexpected disconnect (typically bankd reports client disconnect)
unexpectedDisconnect (2),
unexpectedProtocolVersion (3),
...
}
ErrorString ::= IA5String (SIZE (1..255))
ErrorSeverity ::= ENUMERATED {
minor (1),
major (2),
fatal (3),
...
}
-- Slot number within a SIM bank or a client.
SlotNumber ::= INTEGER(0..1023)
-- Slot identity on client (modem) side
ClientSlot ::= SEQUENCE {
clientId ClientId,
slotNr SlotNumber,
...
}
-- Slot identity on SIM bank side
BankSlot ::= SEQUENCE {
bankId BankId,
slotNr SlotNumber,
...
}
ATR ::= OCTET STRING (SIZE (1..55))
-- flags related to a TPDU in either of the two directions
TpduFlags ::= SEQUENCE {
-- indicates a TPDU header is present in this message
tpduHeaderPresent BOOLEAN,
-- indicates last part of transmission in this direction
finalPart BOOLEAN,
-- indicates a PB is present and we should continue with TX
procByteContinueTx BOOLEAN,
-- indicates a PB is present and we should continue with RX
procByteContinueRx BOOLEAN,
...
}
--- physical state of a given slot
SlotPhysStatus ::= SEQUENCE {
-- is RST activated by the modem?
resetActive [0] BOOLEAN,
-- is VCC applied by the modem?
vccPresent [1] BOOLEAN OPTIONAL,
-- is CLK applied by the modem?
clkActive [2] BOOLEAN OPTIONAL, -- not all hardware supports this
-- is card presence signalled to the modem?
cardPresent [3] BOOLEAN OPTIONAL,
...
}
----------------------------------------------------------------------
-- Messages
----------------------------------------------------------------------
-- BANKD->SERVER: SIM Bank connects to central server
ConnectBankReq ::= SEQUENCE {
-- identity of the bank that is connecting to the server
identity ComponentIdentity,
-- bank number, pre-configured on bank side
bankId BankId,
numberOfSlots SlotNumber,
...
}
ConnectBankRes ::= SEQUENCE {
-- identity of the server to which the bank is connecting
identity ComponentIdentity,
result ResultCode,
...
}
-- CLIENT->SERVER or CLIENT->BANKD
ConnectClientReq ::= SEQUENCE {
-- identity of the client that is connecting to the server/bankd
identity ComponentIdentity,
clientSlot ClientSlot OPTIONAL, -- mandatory for CL->BANKD; CL->SERVER: old identity, if any
...
}
ConnectClientRes ::= SEQUENCE {
-- identity of the bankd/server to which the client is connecting
identity ComponentIdentity,
result ResultCode,
...
}
-- SERVER->BANKD: create a mapping between a given Bank:Slot <-> Client:Slot
CreateMappingReq ::= SEQUENCE {
client ClientSlot,
bank BankSlot,
...
}
CreateMappingRes ::= SEQUENCE {
result ResultCode,
...
}
-- SERVER->BANKD: remove a mapping between a given Bank:Slot <-> Client:Slot
RemoveMappingReq ::= SEQUENCE {
client ClientSlot,
bank BankSlot,
...
}
RemoveMappingRes ::= SEQUENCE {
result ResultCode,
...
}
-- SERVER->CLIENT: set Client ID
ConfigClientIdReq ::= SEQUENCE {
-- server-allocated assignment of a client ID
clientSlot ClientSlot,
...
}
ConfigClientIdRes ::= SEQUENCE {
result ResultCode,
...
}
-- SERVER->CLIENT: set BankId/Slot and IP/Port
ConfigClientBankReq ::= SEQUENCE {
-- server-allocated assignment of a client ID
bankSlot BankSlot,
-- bank to which the client shall connect
bankd IpPort,
...
}
ConfigClientBankRes ::= SEQUENCE {
result ResultCode,
...
}
-- BANKD->CLIENT: configure the ATR which the card emulator (client) shall send to the modem
SetAtrReq ::= SEQUENCE {
slot ClientSlot,
atr ATR,
...
}
SetAtrRes ::= SEQUENCE {
result ResultCode,
...
}
-- CLIENT->BANKD: TPDU in Modem -> Card direction
TpduModemToCard ::= SEQUENCE {
-- we include fully-qualified bank and client slots for easier debugging
fromClientSlot ClientSlot,
toBankSlot BankSlot,
flags TpduFlags,
data OCTET STRING,
...
}
-- BANKD->CLIENT: TPDU in Card -> Modem direction
TpduCardToModem ::= SEQUENCE {
-- we include fully-qualified bank and client slots for easier debugging
fromBankSlot BankSlot,
toClientSlot ClientSlot,
flags TpduFlags,
data OCTET STRING,
...
}
-- CLIENT->BANKD: indciation about the current status of a client (modem side)
ClientSlotStatusInd ::= SEQUENCE {
fromClientSlot ClientSlot,
toBankSlot BankSlot,
slotPhysStatus SlotPhysStatus,
...
}
-- BANKD->CLIENT: indciation about the current status of a bank (modem side)
BankSlotStatusInd ::= SEQUENCE {
fromBankSlot BankSlot,
toClientSlot ClientSlot,
slotPhysStatus SlotPhysStatus,
...
}
-- *->SERVER: indication about some kind of error
ErrorInd ::= SEQUENCE {
-- whoever is detecting + sending us the error
sender ComponentType,
severity ErrorSeverity,
code ErrorCode,
-- any bank-side slot that's affected
bankSlot [0] BankSlot OPTIONAL,
-- any client-side slot that's affected
clientSlot [1] ClientSlot OPTIONAL,
-- any additional textual information
errorString [2] ErrorString OPTIONAL,
...
}
----------------------------------------------------------------------
-- PDU
----------------------------------------------------------------------
RsproPDUchoice ::= CHOICE {
-- configuration + management
connectBankReq [0] ConnectBankReq,
connectBankRes [1] ConnectBankRes,
connectClientReq [2] ConnectClientReq,
connectClientRes [3] ConnectClientRes,
createMappingReq [4] CreateMappingReq,
createMappingRes [5] CreateMappingRes,
removeMappingReq [6] RemoveMappingReq,
removeMappingRes [7] RemoveMappingRes,
configClientIdReq [8] ConfigClientIdReq,
configClientIdRes [9] ConfigClientIdRes,
-- APDUs etc.
setAtrReq [10] SetAtrReq,
setAtrRes [11] SetAtrRes,
tpduModemToCard [12] TpduModemToCard,
tpduCardToModem [13] TpduCardToModem,
clientSlotStatusInd [14] ClientSlotStatusInd,
bankSlotStatusInd [15] BankSlotStatusInd,
configClientBankReq [17] ConfigClientBankReq,
configClientBankRes [18] ConfigClientBankRes,
errorInd [16] ErrorInd,
...
}
RsproPDU ::= SEQUENCE {
version [0] INTEGER(0..32),
tag [1] OperationTag,
msg [2] RsproPDUchoice
}
END

View File

@ -0,0 +1,95 @@
/* packet-rspro.c
* Routines for RSPRO (Remote SIM Protocol) packet dissection
* (C) 2019 by Harald Welte <laforge@gnumonks.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
#include "packet-ber.h"
#include "packet-rspro.h"
#define PNAME "Remote SIM Protocol"
#define PSNAME "RSPRO"
#define PFNAME "rspro"
#define IPAC_PROTO_EXT_RSPRO 0x07
static dissector_handle_t rspro_handle=NULL;
void proto_reg_handoff_rspro(void);
void proto_register_rspro(void);
/* Initialize the protocol and registered fields */
static int proto_rspro = -1;
#include "packet-rspro-hf.c"
/* Initialize the subtree pointers */
static int ett_rspro = -1;
#include "packet-rspro-ett.c"
#include "packet-rspro-fn.c"
static int
dissect_rspro(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
proto_item *rspro_item = NULL;
proto_tree *rspro_tree = NULL;
/* make entry in the Protocol column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
/* create the rspro protocol tree */
if (tree) {
rspro_item = proto_tree_add_item(tree, proto_rspro, tvb, 0, -1, FALSE);
rspro_tree = proto_item_add_subtree(rspro_item, ett_rspro);
dissect_RsproPDU_PDU(tvb, pinfo, rspro_tree, data);
}
return tvb_captured_length(tvb);
}
/*--- proto_register_rspro -------------------------------------------*/
void proto_register_rspro(void) {
/* List of fields */
static hf_register_info hf[] = {
#include "packet-rspro-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_rspro,
#include "packet-rspro-ettarr.c"
};
/* Register protocol */
proto_rspro = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_rspro, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
/*--- proto_reg_handoff_rspro ---------------------------------------*/
void
proto_reg_handoff_rspro(void)
{
rspro_handle = create_dissector_handle(dissect_rspro, proto_rspro);
dissector_add_uint_with_preference("ipa.osmo.protocol", IPAC_PROTO_EXT_RSPRO, rspro_handle);
}

View File

@ -0,0 +1,16 @@
/* packet-rspro.h
* Routines for RSPRO (remote SIM protocol) packet dissection
* (C) 2019 by Harald Welte <laforge@gnumonks.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PACKET_RSPRO_H
#define PACKET_RSPRO_H
#endif /* PACKET_RSPRO_H */

View File

@ -0,0 +1,28 @@
# rspro.cnf
# rspro conformation file
# Copyright 2019 Harald Welte
#.OPT
BER
#.END
#.MODULE_IMPORT
#.EXPORTS
#.PDU
RsproPDU
#.NO_EMIT
#.TYPE_RENAME
#.FIELD_RENAME
#.FN_HDR RsproPDUchoice
gint choice_index;
#.FN_BODY RsproPDUchoice VAL_PTR = &choice_index
%(DEFAULT_BODY)s
col_append_str(actx->pinfo->cinfo, COL_INFO, val_to_str(choice_index, rspro_RsproPDUchoice_vals, "Unknown (%%u)"));
#.END

View File

@ -156,7 +156,6 @@ void dissect_darwin_process_info_option(proto_tree *option_tree, proto_item *opt
case 4: /* Darwin Process UUID */
proto_tree_add_item(option_tree, hf_pcapng_option_darwin_process_uuid, tvb, offset, option_length, ENC_BIG_ENDIAN);
tvb_get_guid(tvb, offset, &uuid, ENC_BIG_ENDIAN);
offset += option_length;
proto_item_append_text(option_item, " = %s",
guid_to_str(pinfo->pool, &uuid));
@ -164,7 +163,6 @@ void dissect_darwin_process_info_option(proto_tree *option_tree, proto_item *opt
break;
default:
proto_tree_add_item(option_tree, unknown_option_hf, tvb, offset, option_length, ENC_NA);
offset += option_length;
break;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,13 @@
/* autogenerated by pidl */
/* DO NOT EDIT
This filter was automatically generated
This file was automatically generated by Pidl
from srvsvc.idl and srvsvc.cnf.
Pidl is a perl based IDL compiler for DCE/RPC idl files.
Pidl is a perl based IDL compiler for DCE/RPC idl files.
It is maintained by the Samba team, not the Wireshark team.
Instructions on how to download and install Pidl can be
Instructions on how to download and install Pidl can be
found at https://gitlab.com/wireshark/wireshark/-/wikis/Pidl
*/
#ifndef __PACKET_DCERPC_SRVSVC_H
#define __PACKET_DCERPC_SRVSVC_H
@ -18,27 +15,34 @@
#define STYPE_HIDDEN ( 0x80000000 )
#define SHARE_1005_CSC_CACHE_MANUAL_REINT ( 0x00000000 )
#define SHARE_1005_CSC_POLICY_MASK ( 0x00000030 )
#define SHARE_1005_CSC_POLICY_SHIFT ( 4 )
int srvsvc_dissect_bitmap_svcctl_ServerType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_bitmap_security_secinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevInfo0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevQInfo0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevQCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevQInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevQCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetCharDevQInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetConnInfo0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetConnCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetConnInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetConnCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetConnInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetFileInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetFileCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetFileInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetFileCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_bitmap_SessionUserFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetFileInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessInfo0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
@ -49,6 +53,7 @@ int srvsvc_dissect_struct_NetSessInfo10(tvbuff_t *tvb _U_, int offset _U_, packe
int srvsvc_dissect_struct_NetSessCtr10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessInfo502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessCtr502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetSessInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#define STYPE_DISKTREE (0)
#define STYPE_DISKTREE_TEMPORARY (STYPE_DISKTREE|STYPE_TEMPORARY)
#define STYPE_DISKTREE_HIDDEN (STYPE_DISKTREE|STYPE_HIDDEN)
@ -61,28 +66,38 @@ int srvsvc_dissect_struct_NetSessCtr502(tvbuff_t *tvb _U_, int offset _U_, packe
#define STYPE_IPC (3)
#define STYPE_IPC_TEMPORARY (STYPE_IPC|STYPE_TEMPORARY)
#define STYPE_IPC_HIDDEN (STYPE_IPC|STYPE_HIDDEN)
#define STYPE_CLUSTER_FS (0x02000000)
#define STYPE_CLUSTER_FS_TEMPORARY (STYPE_CLUSTER_FS|STYPE_TEMPORARY)
#define STYPE_CLUSTER_FS_HIDDEN (STYPE_CLUSTER_FS|STYPE_HIDDEN)
#define STYPE_CLUSTER_SOFS (0x04000000)
#define STYPE_CLUSTER_SOFS_TEMPORARY (STYPE_CLUSTER_SOFS|STYPE_TEMPORARY)
#define STYPE_CLUSTER_SOFS_HIDDEN (STYPE_CLUSTER_SOFS|STYPE_HIDDEN)
#define STYPE_CLUSTER_DFS (0x08000000)
#define STYPE_CLUSTER_DFS_TEMPORARY (STYPE_CLUSTER_DFS|STYPE_TEMPORARY)
#define STYPE_CLUSTER_DFS_HIDDEN (STYPE_CLUSTER_DFS|STYPE_HIDDEN)
extern const value_string srvsvc_srvsvc_ShareType_vals[];
int srvsvc_dissect_enum_ShareType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
int srvsvc_dissect_struct_NetShareInfo0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo501(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1004(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1006(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_bitmap_DFSFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo501(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr501(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr502(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1004(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1004(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_bitmap_NetShareInfo1005Flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1005(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1005(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1006(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1006(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfo1007(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1007(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareCtr1501(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetShareInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#define PLATFORM_ID_DOS (300)
#define PLATFORM_ID_OS2 (400)
#define PLATFORM_ID_NT (500)
@ -156,10 +171,10 @@ int srvsvc_dissect_struct_NetTransportInfo0(tvbuff_t *tvb _U_, int offset _U_, p
int srvsvc_dissect_struct_NetTransportCtr0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportCtr1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_bitmap_TransportFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportCtr2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportCtr3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetTransportInfoCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int srvsvc_dissect_struct_NetRemoteTODInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#endif /* __PACKET_DCERPC_SRVSVC_H */

View File

@ -59,6 +59,7 @@ static int hf_drda_param_length = -1;
static int hf_drda_param_codepoint = -1;
static int hf_drda_param_data = -1;
static int hf_drda_param_data_ebcdic = -1;
static int hf_drda_sqlstatement_length = -1;
static int hf_drda_sqlstatement = -1;
static int hf_drda_sqlstatement_ebcdic = -1;
@ -716,7 +717,8 @@ dissect_drda_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
tvbuff_t* next_tvb = NULL;
next_tvb = tvb_new_subset_length(tvb, offset + 4, iLengthParam - 4);
add_new_data_source(pinfo, next_tvb, "SQL statement");
proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement, next_tvb, 0, iLengthParam - 5, ENC_UTF_8);
proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement_length, next_tvb, 0, 1, ENC_NA);
proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement, next_tvb, 1, iLengthParam - 6, ENC_UTF_8);
proto_tree_add_item(drdaroot_tree, hf_drda_sqlstatement_ebcdic, next_tvb, 0, iLengthParam - 4, ENC_EBCDIC);
}
}
@ -847,6 +849,11 @@ proto_register_drda(void)
FT_STRING, BASE_NONE, NULL, 0x0,
"Param data converted from EBCDIC to ASCII for display", HFILL }},
{ &hf_drda_sqlstatement_length,
{ "SQL statement Length", "drda.sqlstatement.length",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_drda_sqlstatement,
{ "SQL statement (ASCII)", "drda.sqlstatement",
FT_STRING, BASE_NONE, NULL, 0x0,

View File

@ -114,6 +114,7 @@ static dissector_table_t osmo_dissector_table;
#define IPAC_PROTO_EXT_ORC 0x04
#define IPAC_PROTO_EXT_GSUP 0x05
#define IPAC_PROTO_EXT_OAP 0x06
#define IPAC_PROTO_EXT_RSPRO 0x07
static const value_string ipa_protocol_vals[] = {
{ 0x00, "RSL" },
@ -165,6 +166,7 @@ static const value_string ipa_osmo_proto_vals[] = {
{ 0x04, "ORC" },
{ 0x05, "GSUP" },
{ 0x06, "OAP" },
{ 0x07, "RSPRO" },
{ 0, NULL }
};

View File

@ -0,0 +1,167 @@
/* packet-gsm_l2rcop.c
* Routines for GSM L2RCOP (3GPP TS 27.002) dissection
* (C) 2023 Harald Welte <laforge@osmocom.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/xdlc.h>
#include <epan/reassemble.h>
#include <epan/conversation.h>
void proto_register_gsm_l2rcop(void);
static int proto_l2rcop = -1;
static int hf_l2rcop_sa = -1;
static int hf_l2rcop_sb = -1;
static int hf_l2rcop_x = -1;
static int hf_l2rcop_addr = -1;
static int hf_l2rcop_break = -1;
static int hf_l2rcop_break_ack = -1;
static int ett_l2rcop = -1;
static const value_string addr_vals[] = {
{ 31, "last status change, remainder empty" },
{ 30, "last status change, remainder full of characters" },
{ 29, "destructive break signal, remainder empty" },
{ 28, "destructive break acknowledge, remainder empty" },
{ 27, "extended address in ext octet" },
{ 0, NULL }
};
static void
add_characters(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, guint offset, guint len)
{
tvbuff_t *next_tvb = tvb_new_subset_length(tvb, offset, len);
call_data_dissector(next_tvb, pinfo, tree);
}
/* Dissect a L2RCOP message as described in 3GPP TS 27.002 */
static int
dissect_l2rcop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
int reported_len = tvb_reported_length(tvb);
guint cur;
/* we currently support RLP v0 + v1 (first octet is always status octet) */
for (cur = 0; cur < (guint)reported_len; ) {
guint8 oct = tvb_get_guint8(tvb, cur);
guint8 addr = oct & 0x1f;
proto_tree *l2rcop_tree;
proto_item *ti;
const gchar *addr_str = val_to_str(addr, addr_vals, "%u characters");
ti = proto_tree_add_protocol_format(tree, proto_l2rcop, tvb, 0, reported_len,
"GSM L2RCOP Chunk Status=0x%02x (Addr: %s)", oct, addr_str);
l2rcop_tree = proto_item_add_subtree(ti, ett_l2rcop);
proto_tree_add_item(l2rcop_tree, hf_l2rcop_sa, tvb, cur, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(l2rcop_tree, hf_l2rcop_sb, tvb, cur, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(l2rcop_tree, hf_l2rcop_x, tvb, cur, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(l2rcop_tree, hf_l2rcop_addr, tvb, cur, 1, ENC_BIG_ENDIAN);
switch (addr) {
case 31: /* last status change, remainder empty */
return reported_len;
case 30: /* last status change, remainder full of characters */
add_characters(l2rcop_tree, pinfo, tvb, cur+1, reported_len-cur-1);
return reported_len;
case 29: /* destructive break signal, remainder empty */
proto_tree_add_item(l2rcop_tree, hf_l2rcop_break, tvb, cur, 1, ENC_BIG_ENDIAN);
return reported_len;
case 28: /* destructive break acknowledge, remainder empty */
proto_tree_add_item(l2rcop_tree, hf_l2rcop_break_ack, tvb, cur, 1, ENC_BIG_ENDIAN);
return reported_len;
case 27: /* extended address in ext octet */
cur++;
addr = tvb_get_guint8(tvb, cur) & 0x3f;
/* This "cannot happen"; let's abort processing right now. */
if (addr == 0)
return reported_len;
proto_tree_add_uint(l2rcop_tree, hf_l2rcop_addr, tvb, cur, 1, addr);
add_characters(l2rcop_tree, pinfo, tvb, cur+1, addr);
cur += 1 + addr;
break;
case 0:
/* This "cannot happen"; let's abort processing right now. */
return reported_len;
default:
/* This "cannot happen"; let's abort processing right now. */
if (addr == 0)
return reported_len;
add_characters(l2rcop_tree, pinfo, tvb, cur+1, addr);
cur += 1 + addr;
break;
}
}
return reported_len;
}
static const true_false_string x_vals = {
"flow control ACTIVE", "flow control inactive"
};
static const true_false_string sab_vals = {
"OFF", "ON"
};
void
proto_register_gsm_l2rcop(void)
{
static hf_register_info hf[] = {
{ &hf_l2rcop_sa,
{ "SA", "gsm_l2rcop.sa", FT_BOOLEAN, 8, TFS(&sab_vals), 0x80,
NULL, HFILL }},
{ &hf_l2rcop_sb,
{ "SB", "gsm_l2rcop.sb", FT_BOOLEAN, 8, TFS(&sab_vals), 0x40,
NULL, HFILL }},
{ &hf_l2rcop_x,
{ "X", "gsm_l2rcop.x", FT_BOOLEAN, 8, TFS(&x_vals), 0x20,
NULL, HFILL }},
{ &hf_l2rcop_addr,
{ "Address", "gsm_l2rcop.addr", FT_UINT8, BASE_DEC|BASE_SPECIAL_VALS, VALS(addr_vals), 0x1f,
NULL, HFILL }},
{ &hf_l2rcop_break,
{ "Break", "gsm_l2rcop.break", FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }},
{ &hf_l2rcop_break_ack,
{ "Break Ack", "gsm_l2rcop.break_ack", FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }},
};
static gint *ett[] = {
&ett_l2rcop,
};
proto_l2rcop = proto_register_protocol("GSM L2R Character Oriented Protocol (L2RCOP)", "GSM-L2RCOP",
"gsm_l2rcop");
proto_register_field_array(proto_l2rcop, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_dissector("gsm_l2rcop", dissect_l2rcop, proto_l2rcop);
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/

View File

@ -0,0 +1,348 @@
/* packet-gsm_rlp.c
* Routines for GSM RLP (3GPP TS 24.022) frame dissection
* (C) 2023 Harald Welte <laforge@osmocom.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/expert.h>
#include <epan/reassemble.h>
#include <epan/conversation.h>
void proto_register_gsmrlp(void);
static int proto_gsmrlp = -1;
static int hf_gsmrlp_cr = -1;
static int hf_gsmrlp_pf = -1;
static int hf_gsmrlp_n_r = -1;
static int hf_gsmrlp_n_s = -1;
static int hf_gsmrlp_ftype = -1;
static int hf_gsmrlp_s_ftype = -1;
static int hf_gsmrlp_u_ftype = -1;
static int hf_gsmrlp_fcs = -1;
static int hf_gsmrlp_fcs_status = -1;
static int hf_gsmrlp_xid_p_type = -1;
static int hf_gsmrlp_xid_p_len = -1;
static int hf_gsmrlp_xid_p_val = -1;
static int ett_gsmrlp = -1;
static int ett_gsmrlp_xid = -1;
static expert_field ei_gsmrlp_fcs_bad = EI_INIT;
static dissector_handle_t l2rcop_handle;
static gboolean decode_as_l2rcop = true;
/* 3GPP TS 24.002 Section 5.2.1 */
enum rlp_ftype {
RLP_FT_U,
RLP_FT_S,
RLP_FT_IS,
};
static const value_string rlp_ftype_vals[] = {
{ RLP_FT_U, "U" },
{ RLP_FT_S, "S" },
{ RLP_FT_IS, "IS" },
{ 0, NULL }
};
/* 3GPP TS 24.002 Section 5.2.1 */
enum rlp_u_ftype {
RLP_U_FT_SABM = 0x07,
RLP_U_FT_UA = 0x0c,
RLP_U_FT_DISC = 0x08,
RLP_U_FT_DM = 0x03,
RLP_U_FT_NULL = 0x0f,
RLP_U_FT_UI = 0x00,
RLP_U_FT_XID = 0x17,
RLP_U_FT_TEST = 0x1c,
RLP_U_FT_REMAP = 0x11,
};
static const value_string rlp_ftype_u_vals[] = {
{ RLP_U_FT_SABM, "SABM" },
{ RLP_U_FT_UA, "UA" },
{ RLP_U_FT_DISC, "DISC" },
{ RLP_U_FT_DM, "DM" },
{ RLP_U_FT_NULL, "NULL" },
{ RLP_U_FT_UI, "UI" },
{ RLP_U_FT_XID, "XID" },
{ RLP_U_FT_TEST, "TEST" },
{ RLP_U_FT_REMAP, "REMAP" },
{ 0, NULL }
};
/* 3GPP TS 24.002 Section 5.2.1 */
enum rlp_s_ftype {
RLP_S_FT_RR = 0,
RLP_S_FT_REJ = 2,
RLP_S_FT_RNR = 1,
RLP_S_FT_SREJ = 3,
};
static const value_string rlp_ftype_s_vals[] = {
{ RLP_S_FT_RR, "RR" },
{ RLP_S_FT_REJ, "REJ" },
{ RLP_S_FT_RNR, "RNR" },
{ RLP_S_FT_SREJ, "SREJ" },
{ 0, NULL }
};
/* 3GPP TS 24.002 Section 5.2.2.6 */
enum rlp_xid_param_type {
XID_P_DELIMITER = 0,
XID_P_RLP_VERSION = 1,
XID_P_IWF_TO_UE_WIN_SIZE = 2,
XID_P_UE_TO_IWF_WIN_SIZE = 3,
XID_P_ACK_TIMER_T1 = 4,
XID_P_RETRANS_ATTEMPTS_N2 = 5,
XID_P_REPLY_DELAY_T2 = 6,
XID_P_COMPRESSION_PT = 7,
XID_P_RESEQUENCING_T4 = 8,
XID_P_OPTIONAL_FEATURES = 9,
};
static const value_string rlp_xid_param_vals[] = {
{ XID_P_DELIMITER, "Delimiter (end of parameters)" },
{ XID_P_RLP_VERSION, "RLP version number" },
{ XID_P_IWF_TO_UE_WIN_SIZE, "IWF to UE window size" },
{ XID_P_UE_TO_IWF_WIN_SIZE, "UE to IWF window size" },
{ XID_P_ACK_TIMER_T1, "Acknowledgement Timer (T1)" },
{ XID_P_RETRANS_ATTEMPTS_N2, "Retransmission attempts (N2)" },
{ XID_P_REPLY_DELAY_T2, "Reply delay (T2)" },
{ XID_P_COMPRESSION_PT, "Compression PT" },
{ XID_P_RESEQUENCING_T4, "Re-sequencing timer (T4)" },
{ XID_P_OPTIONAL_FEATURES, "Optional Features" },
{ 0, NULL }
};
static const guint32 rlp_fcs_table[256] = {
0x00B29D2D, 0x00643A5B, 0x0044D87A, 0x00927F0C, 0x00051C38, 0x00D3BB4E, 0x00F3596F, 0x0025FE19,
0x008694BC, 0x005033CA, 0x0070D1EB, 0x00A6769D, 0x003115A9, 0x00E7B2DF, 0x00C750FE, 0x0011F788,
0x00DA8E0F, 0x000C2979, 0x002CCB58, 0x00FA6C2E, 0x006D0F1A, 0x00BBA86C, 0x009B4A4D, 0x004DED3B,
0x00EE879E, 0x003820E8, 0x0018C2C9, 0x00CE65BF, 0x0059068B, 0x008FA1FD, 0x00AF43DC, 0x0079E4AA,
0x0062BB69, 0x00B41C1F, 0x0094FE3E, 0x00425948, 0x00D53A7C, 0x00039D0A, 0x00237F2B, 0x00F5D85D,
0x0056B2F8, 0x0080158E, 0x00A0F7AF, 0x007650D9, 0x00E133ED, 0x0037949B, 0x001776BA, 0x00C1D1CC,
0x000AA84B, 0x00DC0F3D, 0x00FCED1C, 0x002A4A6A, 0x00BD295E, 0x006B8E28, 0x004B6C09, 0x009DCB7F,
0x003EA1DA, 0x00E806AC, 0x00C8E48D, 0x001E43FB, 0x008920CF, 0x005F87B9, 0x007F6598, 0x00A9C2EE,
0x0049DA1E, 0x009F7D68, 0x00BF9F49, 0x0069383F, 0x00FE5B0B, 0x0028FC7D, 0x00081E5C, 0x00DEB92A,
0x007DD38F, 0x00AB74F9, 0x008B96D8, 0x005D31AE, 0x00CA529A, 0x001CF5EC, 0x003C17CD, 0x00EAB0BB,
0x0021C93C, 0x00F76E4A, 0x00D78C6B, 0x00012B1D, 0x00964829, 0x0040EF5F, 0x00600D7E, 0x00B6AA08,
0x0015C0AD, 0x00C367DB, 0x00E385FA, 0x0035228C, 0x00A241B8, 0x0074E6CE, 0x005404EF, 0x0082A399,
0x0099FC5A, 0x004F5B2C, 0x006FB90D, 0x00B91E7B, 0x002E7D4F, 0x00F8DA39, 0x00D83818, 0x000E9F6E,
0x00ADF5CB, 0x007B52BD, 0x005BB09C, 0x008D17EA, 0x001A74DE, 0x00CCD3A8, 0x00EC3189, 0x003A96FF,
0x00F1EF78, 0x0027480E, 0x0007AA2F, 0x00D10D59, 0x00466E6D, 0x0090C91B, 0x00B02B3A, 0x00668C4C,
0x00C5E6E9, 0x0013419F, 0x0033A3BE, 0x00E504C8, 0x007267FC, 0x00A4C08A, 0x008422AB, 0x005285DD,
0x001F18F0, 0x00C9BF86, 0x00E95DA7, 0x003FFAD1, 0x00A899E5, 0x007E3E93, 0x005EDCB2, 0x00887BC4,
0x002B1161, 0x00FDB617, 0x00DD5436, 0x000BF340, 0x009C9074, 0x004A3702, 0x006AD523, 0x00BC7255,
0x00770BD2, 0x00A1ACA4, 0x00814E85, 0x0057E9F3, 0x00C08AC7, 0x00162DB1, 0x0036CF90, 0x00E068E6,
0x00430243, 0x0095A535, 0x00B54714, 0x0063E062, 0x00F48356, 0x00222420, 0x0002C601, 0x00D46177,
0x00CF3EB4, 0x001999C2, 0x00397BE3, 0x00EFDC95, 0x0078BFA1, 0x00AE18D7, 0x008EFAF6, 0x00585D80,
0x00FB3725, 0x002D9053, 0x000D7272, 0x00DBD504, 0x004CB630, 0x009A1146, 0x00BAF367, 0x006C5411,
0x00A72D96, 0x00718AE0, 0x005168C1, 0x0087CFB7, 0x0010AC83, 0x00C60BF5, 0x00E6E9D4, 0x00304EA2,
0x00932407, 0x00458371, 0x00656150, 0x00B3C626, 0x0024A512, 0x00F20264, 0x00D2E045, 0x00044733,
0x00E45FC3, 0x0032F8B5, 0x00121A94, 0x00C4BDE2, 0x0053DED6, 0x008579A0, 0x00A59B81, 0x00733CF7,
0x00D05652, 0x0006F124, 0x00261305, 0x00F0B473, 0x0067D747, 0x00B17031, 0x00919210, 0x00473566,
0x008C4CE1, 0x005AEB97, 0x007A09B6, 0x00ACAEC0, 0x003BCDF4, 0x00ED6A82, 0x00CD88A3, 0x001B2FD5,
0x00B84570, 0x006EE206, 0x004E0027, 0x0098A751, 0x000FC465, 0x00D96313, 0x00F98132, 0x002F2644,
0x00347987, 0x00E2DEF1, 0x00C23CD0, 0x00149BA6, 0x0083F892, 0x00555FE4, 0x0075BDC5, 0x00A31AB3,
0x00007016, 0x00D6D760, 0x00F63541, 0x00209237, 0x00B7F103, 0x00615675, 0x0041B454, 0x00971322,
0x005C6AA5, 0x008ACDD3, 0x00AA2FF2, 0x007C8884, 0x00EBEBB0, 0x003D4CC6, 0x001DAEE7, 0x00CB0991,
0x00686334, 0x00BEC442, 0x009E2663, 0x00488115, 0x00DFE221, 0x00094557, 0x0029A776, 0x00FF0000
};
/*! compute RLP FCS according to 3GPP TS 24.022 Section 4.4 */
static guint32 rlp_fcs_compute(const guchar *in, size_t in_len)
{
guint32 divider = 0;
size_t i;
for (i = 0; i < in_len; i++) {
guchar input = in[i] ^ (divider & 0xff);
divider = (divider >> 8) ^ rlp_fcs_table[input];
}
return ((divider & 0xff) << 16) | (divider & 0xff00) | ((divider & 0xff0000) >> 16);
}
static int
dissect_gsmrlp_xid(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree)
{
gint cur;
for (cur = offset; cur < (gint) tvb_reported_length(tvb);) {
guint8 len = tvb_get_guint8(tvb, cur) & 0x0f;
guint8 type = tvb_get_guint8(tvb, cur) >> 4;
proto_tree *xid_tree;
proto_tree_add_subtree_format(tree, tvb, cur, 1 + len, ett_gsmrlp_xid, &xid_tree, "XID Parameter: %s",
val_to_str(type, rlp_xid_param_vals, "Unknown"));
proto_tree_add_item(xid_tree, hf_gsmrlp_xid_p_type, tvb, cur, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(xid_tree, hf_gsmrlp_xid_p_len, tvb, cur, 1, ENC_BIG_ENDIAN);
if (len)
proto_tree_add_item(xid_tree, hf_gsmrlp_xid_p_val, tvb, cur + 1, len, ENC_BIG_ENDIAN);
cur += 1 + len;
if (type == XID_P_DELIMITER)
break;
}
return cur - offset;
}
/* Dissect a RLP v0/v1 message as described in TS 24.022 section 5.2 */
static int
dissect_gsmrlp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
int reported_len = tvb_reported_length(tvb);
proto_tree *rlp_tree;
proto_item *ti;
guint8 n_s, n_r;
/* we currently support the 16bit header of RLP v0 + v1 */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM-RLP");
n_s = (tvb_get_guint8(tvb, 0)) >> 3 | ((tvb_get_guint8(tvb, 1) & 1) << 5);
n_r = (tvb_get_guint8(tvb, 1) >> 2);
ti = proto_tree_add_protocol_format(tree, proto_gsmrlp, tvb, 0, reported_len,
"GSM RLP");
rlp_tree = proto_item_add_subtree(ti, ett_gsmrlp);
proto_tree_add_item(rlp_tree, hf_gsmrlp_cr, tvb, 0, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(rlp_tree, hf_gsmrlp_pf, tvb, 1, 1, ENC_BIG_ENDIAN);
if (n_s == 0x3f) { /* U frame */
guint u_ftype;
proto_tree_add_uint(rlp_tree, hf_gsmrlp_ftype, tvb, 0, 1, RLP_FT_U);
proto_tree_add_item_ret_uint(rlp_tree, hf_gsmrlp_u_ftype, tvb, 1, 1, ENC_BIG_ENDIAN, &u_ftype);
if ((n_r & 0x1f) == RLP_U_FT_XID)
dissect_gsmrlp_xid(tvb, 2, pinfo, rlp_tree);
proto_item_append_text(ti, " U-Frame: %s", val_to_str(u_ftype, rlp_ftype_u_vals, "Unknown 0x%02x"));
} else if (n_s == 0x3e) { /* S Frame */
guint s_ftype;
proto_tree_add_uint(rlp_tree, hf_gsmrlp_ftype, tvb, 0, 1, RLP_FT_S);
proto_tree_add_item_ret_uint(rlp_tree, hf_gsmrlp_s_ftype, tvb, 0, 1, ENC_BIG_ENDIAN, &s_ftype);
proto_tree_add_uint(rlp_tree, hf_gsmrlp_n_r, tvb, 1, 1, n_r);
proto_item_append_text(ti, " S-Frame: %s, N(S): %u, N(R): %u",
val_to_str(s_ftype, rlp_ftype_s_vals, "Unknown 0x%02x"), n_s, n_r);
} else { /* IS Frame */
tvbuff_t *next_tvb;
guint s_ftype;
int data_len;
proto_tree_add_uint(rlp_tree, hf_gsmrlp_ftype, tvb, 0, 1, RLP_FT_IS);
proto_tree_add_item_ret_uint(rlp_tree, hf_gsmrlp_s_ftype, tvb, 0, 1, ENC_BIG_ENDIAN, &s_ftype);
proto_tree_add_uint(rlp_tree, hf_gsmrlp_n_s, tvb, 0, 2, n_s);
proto_tree_add_uint(rlp_tree, hf_gsmrlp_n_r, tvb, 1, 1, n_r);
proto_item_append_text(ti, " IS-Frame: %s, N(S): %u, N(R): %u",
val_to_str(s_ftype, rlp_ftype_s_vals, "Unknown 0x%02x"), n_s, n_r);
/* dispatch user data */
data_len = reported_len - 2 /* header */ - 3 /* FCS */;
next_tvb = tvb_new_subset_length(tvb, 2, data_len);
if (decode_as_l2rcop && l2rcop_handle)
call_dissector(l2rcop_handle, next_tvb, pinfo, rlp_tree);
else
call_data_dissector(next_tvb, pinfo, rlp_tree);
}
/* FCS is always the last 3 bytes of the message */
guint32 fcs_computed = rlp_fcs_compute(tvb_get_ptr(tvb, 0, reported_len - 3), reported_len - 3);
proto_tree_add_checksum(rlp_tree, tvb, reported_len - 3, hf_gsmrlp_fcs, hf_gsmrlp_fcs_status,
&ei_gsmrlp_fcs_bad, pinfo, fcs_computed, ENC_BIG_ENDIAN, PROTO_CHECKSUM_VERIFY);
return tvb_reported_length(tvb);
}
void
proto_register_gsmrlp(void)
{
static hf_register_info hf[] = {
{ &hf_gsmrlp_cr,
{ "C/R", "gsm_rlp.cr", FT_UINT8, BASE_DEC, NULL, 0x01,
"Command/Response bit", HFILL }},
{ &hf_gsmrlp_pf,
{ "P/F", "gsm_rlp.pf", FT_UINT8, BASE_DEC, NULL, 0x02,
"Poll/Final bit", HFILL }},
{ &hf_gsmrlp_n_r,
{ "N(R)", "gsm_rlp.n_r", FT_UINT8, BASE_DEC, NULL, 0,
"Receive Sequence Number", HFILL }},
{ &hf_gsmrlp_n_s,
{ "N(S)", "gsm_rlp.n_s", FT_UINT8, BASE_DEC, NULL, 0,
"Send Sequence Number", HFILL }},
{ &hf_gsmrlp_ftype,
{ "Frame type", "gsm_rlp.ftype", FT_UINT8, BASE_HEX,
VALS(rlp_ftype_vals), 0, NULL, HFILL }},
{ &hf_gsmrlp_u_ftype,
{ "U Frame type", "gsm_rlp.u_ftype", FT_UINT8, BASE_HEX,
VALS(rlp_ftype_u_vals), 0x7c, NULL, HFILL }},
{ &hf_gsmrlp_s_ftype,
{ "S frame type", "gsm_rlp.s_ftype", FT_UINT8, BASE_HEX,
VALS(rlp_ftype_s_vals), 0x06, NULL, HFILL }},
{ &hf_gsmrlp_fcs,
{ "Frame Check Sequence", "gsm_rlp.fcs", FT_UINT24, BASE_HEX,
NULL, 0, NULL, HFILL }},
{ &hf_gsmrlp_fcs_status,
{ "FCS Status", "gsm_rlp.fcs.status", FT_UINT8, BASE_NONE,
VALS(proto_checksum_vals), 0, NULL, HFILL }},
{ &hf_gsmrlp_xid_p_type,
{ "XID Parameter Type", "gsm_rlp.xid.param_type", FT_UINT8, BASE_HEX,
VALS(rlp_xid_param_vals), 0xf0, NULL, HFILL }},
{ &hf_gsmrlp_xid_p_len,
{ "XID Parameter Length", "gsm_rlp.xid.param_len", FT_UINT8, BASE_DEC,
NULL, 0x0f, NULL, HFILL }},
{ &hf_gsmrlp_xid_p_val,
{ "XID Parameter Value", "gsm_rlp.xid.param_value", FT_UINT8, BASE_DEC,
NULL, 0, NULL, HFILL }},
};
static gint *ett[] = {
&ett_gsmrlp,
&ett_gsmrlp_xid,
};
static ei_register_info ei[] = {
{ &ei_gsmrlp_fcs_bad, { "gsm_rlp.fcs_bad", PI_CHECKSUM, PI_ERROR, "Bad checksum" , EXPFILL }},
};
module_t *rlp_module;
expert_module_t *expert_gsmrlp;
proto_gsmrlp = proto_register_protocol("GSM Radio Link Protocol (RLP)", "GSM-RLP", "gsm_rlp");
proto_register_field_array(proto_gsmrlp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_gsmrlp = expert_register_protocol(proto_gsmrlp);
expert_register_field_array(expert_gsmrlp, ei, array_length(ei));
register_dissector("gsm_rlp", dissect_gsmrlp, proto_gsmrlp);
rlp_module = prefs_register_protocol(proto_gsmrlp, NULL);
prefs_register_bool_preference(rlp_module, "decode_as_l2rcop", "Decode payload as L2RCOP",
NULL, &decode_as_l2rcop);
}
void
proto_reg_handoff_gsmrlp(void)
{
l2rcop_handle = find_dissector_add_dependency("gsm_l2rcop", proto_gsmrlp);
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/

View File

@ -111,6 +111,7 @@ enum {
GSMTAP_SUB_LAPD,
GSMTAP_SUB_FR,
GSMTAP_SUB_V5EF,
GSMTAP_SUB_GSM_RLP,
GSMTAP_SUB_MAX
};
@ -440,6 +441,7 @@ static const value_string gsmtap_types[] = {
{ GSMTAP_TYPE_QC_DIAG, "Qualcomm DIAG" },
{ GSMTAP_TYPE_LTE_NAS, "LTE NAS" },
{ GSMTAP_TYPE_E1T1, "E1/T1" },
{ GSMTAP_TYPE_GSM_RLP, "GSM RLP" },
{ 0, NULL },
};
@ -1109,6 +1111,9 @@ dissect_gsmtap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _
break;
}
break;
case GSMTAP_TYPE_GSM_RLP:
sub_handle = GSMTAP_SUB_GSM_RLP;
break;
case GSMTAP_TYPE_UM_BURST:
default:
sub_handle = GSMTAP_SUB_DATA;
@ -1244,6 +1249,7 @@ proto_reg_handoff_gsmtap(void)
sub_handles[GSMTAP_SUB_LAPD] = find_dissector_add_dependency("lapd-phdr", proto_gsmtap);
sub_handles[GSMTAP_SUB_FR] = find_dissector_add_dependency("fr", proto_gsmtap);
sub_handles[GSMTAP_SUB_V5EF] = find_dissector_add_dependency("v5ef", proto_gsmtap);
sub_handles[GSMTAP_SUB_GSM_RLP] = find_dissector_add_dependency("gsm_rlp", proto_gsmtap);
rrc_sub_handles[GSMTAP_RRC_SUB_DL_DCCH_Message] = find_dissector_add_dependency("rrc.dl.dcch", proto_gsmtap);
rrc_sub_handles[GSMTAP_RRC_SUB_UL_DCCH_Message] = find_dissector_add_dependency("rrc.ul.dcch", proto_gsmtap);

View File

@ -41,6 +41,7 @@
#define GSMTAP_TYPE_QC_DIAG 0x11 /* Qualcomm DIAG frame */
#define GSMTAP_TYPE_LTE_NAS 0x12 /* LTE Non-Access Stratum */
#define GSMTAP_TYPE_E1T1 0x13 /* E1/T1 line traces */
#define GSMTAP_TYPE_GSM_RLP 0x14 /* GSM RLP as per 3GPP TS 24.022 */
/* ====== DO NOT MAKE UNAPPROVED MODIFICATIONS HERE ===== */
#define GSMTAP_BURST_UNKNOWN 0x00

View File

@ -1802,6 +1802,7 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
NULL
};
guint32 lifetime;
guint8 prefix_len;
/* RFC 4861 */
@ -1815,11 +1816,13 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
opt_offset += 1;
/* Prefix Valid Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_prefix_valid_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_prefix_valid_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
/* Prefix Preferred Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_prefix_preferred_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_prefix_preferred_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_reserved, tvb, opt_offset, 4, ENC_NA);
@ -2170,6 +2173,8 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
NULL
};
guint32 lifetime;
/* Dist */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_map_dist, tvb, opt_offset, 1, ENC_BIG_ENDIAN);
@ -2182,7 +2187,8 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
opt_offset += 1;
/* Valid Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_map_valid_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_map_valid_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
/* Global Address */
@ -2195,6 +2201,7 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
/* RFC 4191 */
guint8 prefix_len;
guint8 route_preference;
guint32 lifetime;
ws_in6_addr prefix;
address prefix_addr;
static int * const route_flags[] = {
@ -2217,7 +2224,8 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
opt_offset += 1;
/* Route Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_route_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_route_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
/* Prefix */
@ -2248,12 +2256,15 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
case ND_OPT_RECURSIVE_DNS_SERVER: /* Recursive DNS Server Option (25) */
{
guint32 lifetime;
/* Reserved */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_reserved, tvb, opt_offset, 2, ENC_NA);
opt_offset += 2;
/* RDNSS Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_rdnss_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_rdnss_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
while(opt_offset < (offset + opt_len) ) {
@ -2391,6 +2402,7 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
}
case ND_OPT_DNS_SEARCH_LIST: /* DNS Search List Option (31) */
{
guint32 lifetime;
int dnssl_len;
const gchar *dnssl_name, *name_out;
@ -2399,7 +2411,8 @@ dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
opt_offset += 2;
/* DNSSL Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_dnssl_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_dnssl_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
while(opt_offset < (offset + opt_len) ) {
@ -3091,7 +3104,8 @@ dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
}
case RPL_OPT_PREFIX: {
/* Destination prefix option. */
guint32 prefix_len;
guint32 lifetime;
guint32 prefix_len;
static int * const rpl_prefix_flags[] = {
&hf_icmpv6_rpl_opt_prefix_flag_l,
&hf_icmpv6_rpl_opt_prefix_flag_a,
@ -3109,12 +3123,14 @@ dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
ett_icmpv6_rpl_flag_prefix, rpl_prefix_flags, ENC_BIG_ENDIAN);
opt_offset += 1;
/* Valid lifetime. */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_vlifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
/* Valid Lifetime */
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_vlifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
/* Preferred Lifetime */
proto_tree_add_item(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_plifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN);
ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_plifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
opt_offset += 4;
/* 4 reserved bytes. */
@ -3790,6 +3806,7 @@ dissect_rrenum(tvbuff_t *tvb, int rr_offset, packet_info *pinfo _U_, proto_tree
while ((int)tvb_reported_length(tvb) > rr_offset) {
/* Use-Prefix Part */
guint8 uselen, keeplen;
guint32 lifetime;
static int * const mask_flags[] = {
&hf_icmpv6_rr_pco_up_flagmask_l,
&hf_icmpv6_rr_pco_up_flagmask_a,
@ -3831,11 +3848,13 @@ dissect_rrenum(tvbuff_t *tvb, int rr_offset, packet_info *pinfo _U_, proto_tree
rr_offset += 1;
/* Valid Lifetime */
proto_tree_add_item(up_tree, hf_icmpv6_rr_pco_up_validlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item_ret_uint(up_tree, hf_icmpv6_rr_pco_up_validlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
rr_offset += 4;
/* Preferred Lifetime */
proto_tree_add_item(up_tree, hf_icmpv6_rr_pco_up_preferredlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item_ret_uint(up_tree, hf_icmpv6_rr_pco_up_preferredlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN, &lifetime);
proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime));
rr_offset += 4;
/* Flags */

View File

@ -741,6 +741,7 @@ static int hf_qcc = -1;
static int hf_qcc_rqt = -1;
static int hf_qcc_frz = -1;
static int hf_qrp = -1;
static int hf_bcr = -1;
static int hf_bcr_count = -1;
static int hf_bcr_sq = -1;
static int hf_bcr_cy = -1;
@ -1455,14 +1456,20 @@ static void get_BSIspt(tvbuff_t *tvb, guint8 *offset, proto_tree *iec104_header_
==================================================================== */
static void get_BCR(tvbuff_t *tvb, guint8 *offset, proto_tree *iec104_header_tree)
{
proto_tree_add_item(iec104_header_tree, hf_bcr_count, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
*offset += 4;
proto_item* ti;
proto_tree* bcr_tree;
proto_tree_add_item(iec104_header_tree, hf_bcr_sq, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(iec104_header_tree, hf_bcr_cy, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(iec104_header_tree, hf_bcr_ca, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(iec104_header_tree, hf_bcr_iv, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
*offset += 1;
ti = proto_tree_add_item(iec104_header_tree, hf_bcr, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
bcr_tree = proto_item_add_subtree(ti, ett_vti);
proto_tree_add_item(bcr_tree, hf_bcr_count, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
(*offset) += 4;
proto_tree_add_item(bcr_tree, hf_bcr_sq, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(bcr_tree, hf_bcr_cy, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(bcr_tree, hf_bcr_ca, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(bcr_tree, hf_bcr_iv, tvb, *offset, 1, ENC_LITTLE_ENDIAN);
(*offset)++;
}
/* ====================================================================
@ -2575,11 +2582,11 @@ proto_register_iec60870_asdu(void)
NULL, HFILL }},
{ &hf_coi_r,
{ "R", "iec60870_asdu.coi_r", FT_UINT8, BASE_DEC, VALS(coi_r_types), 0x7F,
{ "R", "iec60870_asdu.coi.r", FT_UINT8, BASE_DEC, VALS(coi_r_types), 0x7F,
"COI R", HFILL }},
{ &hf_coi_i,
{ "I", "iec60870_asdu.coi_i", FT_BOOLEAN, 8, TFS(&tfs_coi_i), 0x80,
{ "I", "iec60870_asdu.coi.i", FT_BOOLEAN, 8, TFS(&tfs_coi_i), 0x80,
"COI I", HFILL }},
{ &hf_qoi,
@ -2591,19 +2598,23 @@ proto_register_iec60870_asdu(void)
NULL, HFILL } },
{ &hf_qcc_rqt,
{ "RQT", "iec60870_asdu.rqt", FT_UINT8, BASE_DEC, VALS(rqt_r_types), 0x3F,
{ "RQT", "iec60870_asdu.qcc.rqt", FT_UINT8, BASE_DEC, VALS(rqt_r_types), 0x3F,
NULL, HFILL } },
{ &hf_qcc_frz,
{ "FRZ", "iec60870_asdu.frz", FT_UINT8, BASE_DEC, VALS(frz_r_types), 0xC0,
{ "FRZ", "iec60870_asdu.qcc.frz", FT_UINT8, BASE_DEC, VALS(frz_r_types), 0xC0,
NULL, HFILL } },
{ &hf_qrp,
{ "QRP", "iec60870_asdu.qrp", FT_UINT8, BASE_DEC, VALS(qrp_r_types), 0,
NULL, HFILL }},
{ &hf_bcr,
{ "BCR", "iec60870_asdu.bcr", FT_INT32, BASE_DEC, NULL, 0x0,
"Binary Counter", HFILL }},
{ &hf_bcr_count,
{ "Binary Counter", "iec60870_asdu.bcr.count", FT_INT32, BASE_DEC, NULL, 0x0,
{ "Value", "iec60870_asdu.bcr.count", FT_INT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_bcr_sq,

View File

@ -3616,6 +3616,7 @@ static int hf_ieee80211_fc_frame_extension = -1;
static int hf_ieee80211_fc_frame_type_subtype = -1;
static int hf_ieee80211_fc_flags = -1;
static int hf_ieee80211_fc_flags_str = -1;
static int hf_ieee80211_fc_to_ds = -1;
static int hf_ieee80211_fc_from_ds = -1;
static int hf_ieee80211_fc_data_ds = -1;
@ -6204,6 +6205,22 @@ static int hf_ieee80211_vs_arista_subtype = -1;
static int hf_ieee80211_vs_arista_apname = -1;
static int hf_ieee80211_vs_arista_data = -1;
static int hf_ieee80211_vs_wisun_type = -1;
static int hf_ieee80211_vs_wisun_ptkid = -1;
static int hf_ieee80211_vs_wisun_gtkl = -1;
static int hf_ieee80211_vs_wisun_gtkl_gtk0 = -1;
static int hf_ieee80211_vs_wisun_gtkl_gtk1 = -1;
static int hf_ieee80211_vs_wisun_gtkl_gtk2 = -1;
static int hf_ieee80211_vs_wisun_gtkl_gtk3 = -1;
static int hf_ieee80211_vs_wisun_nr = -1;
static int hf_ieee80211_vs_wisun_lgtkl = -1;
static int hf_ieee80211_vs_wisun_lgtkl_lgtk0 = -1;
static int hf_ieee80211_vs_wisun_lgtkl_lgtk1 = -1;
static int hf_ieee80211_vs_wisun_lgtkl_lgtk2 = -1;
static int hf_ieee80211_vs_wisun_lgtk_key_id = -1;
static int hf_ieee80211_vs_wisun_lgtk_lgtk = -1;
static int hf_ieee80211_vs_wisun_data = -1;
static int hf_ieee80211_rsn_ie_ptk_keyid = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_data_type = -1;
@ -7754,6 +7771,9 @@ static gint ett_routerboard = -1;
static gint ett_meru = -1;
static gint ett_wisun_gtkl = -1;
static gint ett_wisun_lgtkl = -1;
static gint ett_qos_map_set_exception = -1;
static gint ett_qos_map_set_range = -1;
@ -16625,6 +16645,7 @@ dissect_vendor_ie_wpawme(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, in
{
proto_tree_add_item(wpa_sub_akms_tree, hf_ieee80211_wfa_ie_wpa_akms_wfa_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
proto_item_append_text(wpa_akms_item, " %s", wpa_akms_return(tvb_get_ntohl(tvb, offset)));
save_proto_data_value(pinfo, tvb_get_guint8(tvb, offset + 3), AKM_KEY);
} else {
proto_tree_add_item(wpa_sub_akms_tree, hf_ieee80211_wfa_ie_wpa_akms_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
}
@ -18750,6 +18771,101 @@ dissect_vendor_ie_arista(proto_item *item, proto_tree *ietree,
}
}
#define WISUN_PTKID 1
#define WISUN_GTKL 2
#define WISUN_NR 3
#define WISUN_LGTKL 4
#define WISUN_LGTK 5
static const value_string ieee80211_vs_wisun_type_vals[] = {
{ WISUN_PTKID, "PTKID" },
{ WISUN_GTKL, "GTKL" },
{ WISUN_NR, "NR" },
{ WISUN_LGTKL, "LGTKL" },
{ WISUN_LGTK, "LGTK" },
{ 0, NULL }
};
#define WISUN_GTKL_GTK0 0x01
#define WISUN_GTKL_GTK1 0x02
#define WISUN_GTKL_GTK2 0x04
#define WISUN_GTKL_GTK3 0x08
#define WISUN_NR_BR 0
#define WISUN_NR_ROUTER 1
#define WISUN_NR_LFN 2
static const value_string ieee80211_vs_wisun_nr_vals[] = {
{ WISUN_NR_BR, "Border Router" },
{ WISUN_NR_ROUTER, "Router" },
{ WISUN_NR_LFN, "LFN" },
{ 0, NULL }
};
#define WISUN_LGTKL_LGTK0 0x01
#define WISUN_LGTKL_LGTK1 0x02
#define WISUN_LGTKL_LGTK2 0x04
static void
dissect_vendor_ie_wisun(proto_item *item, proto_tree *ietree,
tvbuff_t *tvb, int offset, guint32 tag_len)
{
guint32 type;
proto_tree_add_item_ret_uint(ietree, hf_ieee80211_vs_wisun_type, tvb, offset, 1, ENC_LITTLE_ENDIAN, &type);
proto_item_append_text(item, ": %s", val_to_str_const(type, ieee80211_vs_wisun_type_vals, "Unknown"));
offset += 1;
tag_len -= 1;
switch(type) {
case WISUN_PTKID:
proto_tree_add_item(ietree, hf_ieee80211_vs_wisun_ptkid, tvb, offset, 16, ENC_NA);
break;
case WISUN_GTKL: {
static int * const wisun_gtkl[] = {
&hf_ieee80211_vs_wisun_gtkl_gtk0,
&hf_ieee80211_vs_wisun_gtkl_gtk1,
&hf_ieee80211_vs_wisun_gtkl_gtk2,
&hf_ieee80211_vs_wisun_gtkl_gtk3,
NULL,
};
proto_tree_add_bitmask(ietree, tvb, offset, hf_ieee80211_vs_wisun_gtkl,
ett_wisun_gtkl, wisun_gtkl, ENC_LITTLE_ENDIAN);
break;
}
case WISUN_NR:
proto_tree_add_item(ietree, hf_ieee80211_vs_wisun_nr, tvb,
offset, 1, ENC_LITTLE_ENDIAN);
break;
case WISUN_LGTKL: {
static int * const wisun_lgtkl[] = {
&hf_ieee80211_vs_wisun_lgtkl_lgtk0,
&hf_ieee80211_vs_wisun_lgtkl_lgtk1,
&hf_ieee80211_vs_wisun_lgtkl_lgtk2,
NULL,
};
proto_tree_add_bitmask(ietree, tvb, offset, hf_ieee80211_vs_wisun_lgtkl,
ett_wisun_lgtkl, wisun_lgtkl, ENC_LITTLE_ENDIAN);
break;
}
case WISUN_LGTK:
proto_tree_add_item(ietree, hf_ieee80211_vs_wisun_lgtk_key_id, tvb,
offset, 1, ENC_LITTLE_ENDIAN);
offset += 2;
tag_len -= 2;
proto_tree_add_item(ietree, hf_ieee80211_vs_wisun_lgtk_lgtk, tvb,
offset, tag_len, ENC_NA);
break;
default:
proto_tree_add_item(ietree, hf_ieee80211_vs_wisun_data, tvb, offset, tag_len, ENC_NA);
if (tag_len > 0)
proto_item_append_text(item, " (Data: %s)", tvb_bytes_to_str(wmem_packet_scope(), tvb, offset, tag_len));
break;
}
}
/* 802.11-2012 8.4.2.37 QoS Capability element */
static int
dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int ftype)
@ -28162,7 +28278,9 @@ ieee80211_tag_vendor_specific_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
case OUI_MOJO_ARISTA:
dissect_vendor_ie_arista(field_data->item_tag, tree, tvb, offset, tag_vs_len);
break;
case OUI_WISUN:
dissect_vendor_ie_wisun(field_data->item_tag, tree, tvb, offset, tag_vs_len);
break;
default:
proto_tree_add_item(tree, hf_ieee80211_tag_vendor_data, tvb, offset, tag_vs_len, ENC_NA);
break;
@ -33505,6 +33623,7 @@ dissect_ieee80211_pv0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gboolean more_frags;
proto_item *ti = NULL;
proto_item *cw_item = NULL;
proto_tree *flags_item;
proto_item *hidden_item;
proto_tree *cw_tree = NULL;
guint16 hdr_len, ohdr_len;
@ -34538,6 +34657,8 @@ dissect_ieee80211_pv0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_item_append_text(ti, ", Flags: %s", flag_str);
col_append_fstr(pinfo->cinfo, COL_INFO, ", Flags=%s", flag_str);
flags_item = proto_tree_add_string(hdr_tree, hf_ieee80211_fc_flags_str, tvb, 0, 0, flag_str);
proto_item_set_generated(flags_item);
/*
* Only management and data frames have a body, so we don't have
@ -36167,6 +36288,7 @@ dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_
ENC_BIG_ENDIAN, BMT_NO_APPEND);
offset += 2;
guint16 key_len = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_key_len, tvb, offset,
2, ENC_BIG_ENDIAN);
save_proto_data_value(pinfo, tvb_get_ntohs(tvb, offset), KEY_LEN_KEY);
@ -36205,10 +36327,16 @@ dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_
ti = proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_data,
tvb, offset, eapol_data_len, ENC_NA);
if ((keyinfo & KEY_INFO_ENCRYPTED_KEY_DATA_MASK) ||
!(keyinfo & KEY_INFO_KEY_TYPE_MASK)) {
(!(keyinfo & KEY_INFO_KEY_TYPE_MASK) && key_len)) {
/* RSN: EAPOL-Key Key Data is encrypted.
* WPA: Group Keys use encrypted Key Data.
* IEEE 802.11i-2004 8.5.2.
* Having an encrypted data field without the Encrypted Key Data set
* is not standard, but there are WPA implementation which assume
* encryption when Key Type = 0. In Wi-SUN, the EAPOL-Key frame has
* Key Type = 0 and Encrypted Key Data = 0, but the Key Data is not
* encrypted. To differentiate this case from non standard WPA, we
* check the Key Length, which is 0 for Wi-SUN.
* Let decryption engine try to decrypt this and if successful it's
* stored in EAPOL_KEY proto data.
*/
@ -36598,6 +36726,11 @@ proto_register_ieee80211(void)
FT_UINT8, BASE_HEX, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_fc_flags_str,
{"WLAN Flags", "wlan.flags.str",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_fc_data_ds,
{"DS status", "wlan.fc.ds",
FT_UINT8, BASE_HEX, VALS(tofrom_ds), (FLAG_FROM_DS|FLAG_TO_DS),
@ -48319,6 +48452,55 @@ proto_register_ieee80211(void)
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
/* Vendor Specific : Wi-SUN */
{&hf_ieee80211_vs_wisun_type,
{"Data Type", "wlan.vs.wisun.type",
FT_UINT8, BASE_DEC, VALS(ieee80211_vs_wisun_type_vals), 0,
NULL, HFILL }},
{&hf_ieee80211_vs_wisun_ptkid,
{"PTK ID", "wlan.vs.wisun.ptkid",
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_gtkl,
{"GTK Liveness", "wlan.vs.wisun.gtkl",
FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_gtkl_gtk0,
{"GTK[0]", "wlan.vs.wisun.gtkl.gtk0",
FT_UINT8, BASE_HEX, NULL, WISUN_GTKL_GTK0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_gtkl_gtk1,
{"GTK[1]", "wlan.vs.wisun.gtkl.gtk1",
FT_UINT8, BASE_HEX, NULL, WISUN_GTKL_GTK1, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_gtkl_gtk2,
{"GTK[2]", "wlan.vs.wisun.gtkl.gtk2",
FT_UINT8, BASE_HEX, NULL, WISUN_GTKL_GTK2, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_gtkl_gtk3,
{"GTK[3]", "wlan.vs.wisun.gtkl.gtk3",
FT_UINT8, BASE_HEX, NULL, WISUN_GTKL_GTK3, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_nr,
{"Node Role", "wlan.vs.wisun.nr",
FT_UINT8, BASE_DEC, VALS(ieee80211_vs_wisun_nr_vals), 0,
NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtkl,
{"LGTK Liveness", "wlan.vs.wisun.lgtkl",
FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtkl_lgtk0,
{"LGTK[0]", "wlan.vs.wisun.lgtkl.lgtk0",
FT_UINT8, BASE_HEX, NULL, WISUN_LGTKL_LGTK0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtkl_lgtk1,
{"LGTK[1]", "wlan.vs.wisun.lgtkl.lgtk1",
FT_UINT8, BASE_HEX, NULL, WISUN_LGTKL_LGTK1, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtkl_lgtk2,
{"LGTK[2]", "wlan.vs.wisun.lgtkl.lgtk2",
FT_UINT8, BASE_HEX, NULL, WISUN_LGTKL_LGTK2, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtk_key_id,
{"Key ID", "wlan.vs.wisun.lgtk.key_id",
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_lgtk_lgtk,
{"LGTK", "wlan.vs.wisun.lgtk.lgtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_vs_wisun_data,
{"Data", "wlan.vs.wisun.data",
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_tsinfo,
{"Traffic Stream (TS) Info", "wlan.ts_info",
FT_UINT24, BASE_HEX, NULL, 0,
@ -52340,6 +52522,9 @@ proto_register_ieee80211(void)
&ett_meru,
&ett_wisun_gtkl,
&ett_wisun_lgtkl,
&ett_qos_map_set_exception,
&ett_qos_map_set_range,

View File

@ -5176,8 +5176,8 @@ dissect_ieee802154_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case IEEE802154_CMD_VENDOR_SPECIFIC:
{
guint32 oui = tvb_get_ntoh24(tvb, 0);
if (!dissector_try_uint_new(cmd_vendor_dissector_table, oui, tvb, pinfo, tree, FALSE, packet)) {
proto_tree_add_item(tree, hf_ieee802154_cmd_vendor_oui, tvb, 0, 3, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_ieee802154_cmd_vendor_oui, tvb, 0, 3, ENC_BIG_ENDIAN);
if (!dissector_try_uint_new(cmd_vendor_dissector_table, oui, tvb_new_subset_remaining(tvb, 3), pinfo, tree, FALSE, packet)) {
call_data_dissector(tvb_new_subset_remaining(tvb, 3), pinfo, tree);
}
break;

View File

@ -47,7 +47,9 @@ enum {
WS_CTRL_CMD_NEWMCAST_GRP,
WS_CTRL_CMD_DELMCAST_GRP,
WS_CTRL_CMD_GETMCAST_GRP,
WS_CTRL_CMD_GETPOLICY,
};
enum ws_genl_ctrl_attr {
WS_CTRL_ATTR_UNSPEC,
WS_CTRL_ATTR_FAMILY_ID,
@ -57,6 +59,9 @@ enum ws_genl_ctrl_attr {
WS_CTRL_ATTR_MAXATTR,
WS_CTRL_ATTR_OPS,
WS_CTRL_ATTR_MCAST_GROUPS,
WS_CTRL_ATTR_POLICY,
WS_CTRL_ATTR_OP_POLICY,
WS_CTRL_ATTR_OP,
};
enum ws_genl_ctrl_op_attr {
@ -85,6 +90,7 @@ static const value_string genl_ctrl_cmds[] = {
{ WS_CTRL_CMD_NEWMCAST_GRP, "CTRL_CMD_NEWMCAST_GRP" },
{ WS_CTRL_CMD_DELMCAST_GRP, "CTRL_CMD_DELMCAST_GRP" },
{ WS_CTRL_CMD_GETMCAST_GRP, "CTRL_CMD_GETMCAST_GRP" },
{ WS_CTRL_CMD_GETPOLICY, "CTRL_CMD_GETPOLICY" },
{ 0, NULL }
};
@ -97,6 +103,9 @@ static const value_string genl_ctrl_attr_vals[] = {
{ WS_CTRL_ATTR_MAXATTR, "CTRL_ATTR_MAXATTR" },
{ WS_CTRL_ATTR_OPS, "CTRL_ATTR_OPS" },
{ WS_CTRL_ATTR_MCAST_GROUPS, "CTRL_ATTR_MCAST_GROUPS" },
{ WS_CTRL_ATTR_POLICY, "CTRL_ATTR_POLICY" },
{ WS_CTRL_ATTR_OP_POLICY, "CTRL_ATTR_OP_POLICY" },
{ WS_CTRL_ATTR_OP, "CTRL_ATTR_OP" },
{ 0, NULL }
};
@ -280,6 +289,10 @@ dissect_genl_ctrl_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *n
case WS_CTRL_ATTR_MCAST_GROUPS:
offset = dissect_netlink_attributes_array(tvb, hf_genl_ctrl_groups_attr, ett_genl_ctrl_groups, ett_genl_ctrl_groups_attr, info, nl_data, tree, offset, len, dissect_genl_ctrl_groups_attrs);
break;
case WS_CTRL_ATTR_POLICY:
case WS_CTRL_ATTR_OP_POLICY:
case WS_CTRL_ATTR_OP:
break;
}
return offset;

View File

@ -41,7 +41,8 @@ enum {
WS_NFNL_SUBSYS_CTHELPER = 9,
WS_NFNL_SUBSYS_NFTABLES = 10,
WS_NFNL_SUBSYS_NFT_COMPAT = 11,
WS_NFNL_SUBSYS_COUNT = 12,
WS_NFNL_SUBSYS_HOOK = 12,
WS_NFNL_SUBSYS_COUNT = 13,
};
/* nfnetlink ULOG subsystem types from <include/uapi/linux/netfilter/nfnetlink_log.h> */
@ -66,6 +67,7 @@ enum ws_nf_inet_hooks {
WS_NF_INET_FORWARD = 2,
WS_NF_INET_LOCAL_OUT = 3,
WS_NF_INET_POST_ROUTING = 4,
WS_NF_INET_NUMHOOKS = 5,
};
/* from <include/uapi/linux/netfilter/nf_conntrack_common.h> */
@ -110,6 +112,8 @@ enum ws_ip_conntrack_status {
WS_IPS_HELPER = (1 << WS_IPS_HELPER_BIT),
WS_IPS_OFFLOAD_BIT = 14,
WS_IPS_OFFLOAD = (1 << WS_IPS_OFFLOAD_BIT),
WS_IPS_HW_OFFLOAD_BIT = 15,
WS_IPS_HW_OFFLOAD = (1 << WS_IPS_HW_OFFLOAD_BIT),
};
enum nfexp_flags {
@ -154,6 +158,7 @@ enum ws_nfqnl_attr_type {
WS_NFQA_SECCTX = 18,
WS_NFQA_VLAN = 19,
WS_NFQA_L2HDR = 20,
WS_NFQA_PRIORITY = 21,
};
enum ws_nfqnl_msg_config_cmds {
@ -262,6 +267,8 @@ enum ws_ctattr_type {
WS_CTA_LABELS = 22,
WS_CTA_LABELS_MASK = 23,
WS_CTA_SYNPROXY = 24,
WS_CTA_FILTER = 25,
WS_CTA_STATUS_MASK = 26,
};
enum ws_ctattr_help {
@ -325,13 +332,14 @@ enum ws_ipset_cadt_attr {
WS_IPSET_ATTR_CADT_LINENO = 9,
WS_IPSET_ATTR_MARK = 10,
WS_IPSET_ATTR_MARKMASK = 11,
WS_IPSET_ATTR_BITMASK = 12,
/* (reserved up to 16) */
#define WS_IPSET_ATTR_CADT_MAX 16
WS_IPSET_ATTR_GC = 17,
WS_IPSET_ATTR_INITVAL = 17,
WS_IPSET_ATTR_HASHSIZE = 18,
WS_IPSET_ATTR_MAXELEM = 19,
WS_IPSET_ATTR_NETMASK = 20,
WS_IPSET_ATTR_PROBES = 21,
WS_IPSET_ATTR_BUCKETSIZE = 21,
WS_IPSET_ATTR_RESIZE = 22,
WS_IPSET_ATTR_SIZE = 23,
WS_IPSET_ATTR_ELEMENTS = 24,
@ -397,6 +405,7 @@ static int hf_nfct_attr_status_flag_dying = -1;
static int hf_nfct_attr_status_flag_expected = -1;
static int hf_nfct_attr_status_flag_fixed_timeout = -1;
static int hf_nfct_attr_status_flag_helper = -1;
static int hf_nfct_attr_status_flag_hw_offload = -1;
static int hf_nfct_attr_status_flag_offload = -1;
static int hf_nfct_attr_status_flag_seen_reply = -1;
static int hf_nfct_attr_status_flag_seq_adjust = -1;
@ -622,6 +631,8 @@ static const value_string nfct_attr_vals[] = {
{ WS_CTA_LABELS, "LABELS" },
{ WS_CTA_LABELS_MASK, "LABELS_MASK" },
{ WS_CTA_SYNPROXY, "SYNPROXY" },
{ WS_CTA_FILTER, "FILTER" },
{ WS_CTA_STATUS_MASK, "STATUS_MASK" },
{ 0, NULL }
};
@ -640,6 +651,7 @@ static const value_string nfct_seqadj_attr_vals[] = {
};
static int * const hf_nfct_attr_status_flags[] = {
&hf_nfct_attr_status_flag_hw_offload,
&hf_nfct_attr_status_flag_offload,
&hf_nfct_attr_status_flag_helper,
&hf_nfct_attr_status_flag_untracked,
@ -1002,6 +1014,7 @@ static const value_string nfq_attr_vals[] = {
{ WS_NFQA_SECCTX, "Security context string" },
{ WS_NFQA_VLAN, "Packet VLAN info" },
{ WS_NFQA_L2HDR, "Full L2 header" },
{ WS_NFQA_PRIORITY, "Priority" },
{ 0, NULL }
};
@ -1021,6 +1034,7 @@ const value_string netfilter_hooks_vals[] = {
{ WS_NF_INET_FORWARD, "Forward" },
{ WS_NF_INET_LOCAL_OUT, "Local out" },
{ WS_NF_INET_POST_ROUTING, "Post-routing" },
{ WS_NF_INET_NUMHOOKS, "Number of hooks" },
{ 0, NULL }
};
@ -1191,6 +1205,7 @@ dissect_nfq_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data
case WS_NFQA_SECCTX:
case WS_NFQA_VLAN:
case WS_NFQA_L2HDR:
case WS_NFQA_PRIORITY:
/* TODO */
break;
}
@ -1301,12 +1316,13 @@ static const value_string ipset_cadt_attr_vals[] = {
{ WS_IPSET_ATTR_CADT_LINENO, "CADT_LINENO" },
{ WS_IPSET_ATTR_MARK, "MARK" },
{ WS_IPSET_ATTR_MARKMASK, "MARKMASK" },
{ WS_IPSET_ATTR_BITMASK, "BITMASK" },
/* up to 16 is reserved. */
{ WS_IPSET_ATTR_GC, "GC" },
{ WS_IPSET_ATTR_INITVAL, "INITVAL" },
{ WS_IPSET_ATTR_HASHSIZE, "HASHSIZE" },
{ WS_IPSET_ATTR_MAXELEM, "MAXELEM" },
{ WS_IPSET_ATTR_NETMASK, "NETMASK" },
{ WS_IPSET_ATTR_PROBES, "PROBES" },
{ WS_IPSET_ATTR_BUCKETSIZE, "BUCKETSIZE" },
{ WS_IPSET_ATTR_RESIZE, "RESIZE" },
{ WS_IPSET_ATTR_SIZE, "SIZE" },
{ WS_IPSET_ATTR_ELEMENTS, "ELEMENTS" },
@ -1417,11 +1433,12 @@ dissect_ipset_cadt_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *
case WS_IPSET_ATTR_CADT_LINENO:
case WS_IPSET_ATTR_MARK:
case WS_IPSET_ATTR_MARKMASK:
case WS_IPSET_ATTR_GC:
case WS_IPSET_ATTR_BITMASK:
case WS_IPSET_ATTR_INITVAL:
case WS_IPSET_ATTR_HASHSIZE:
case WS_IPSET_ATTR_MAXELEM:
case WS_IPSET_ATTR_NETMASK:
case WS_IPSET_ATTR_PROBES:
case WS_IPSET_ATTR_BUCKETSIZE:
case WS_IPSET_ATTR_RESIZE:
case WS_IPSET_ATTR_SIZE:
case WS_IPSET_ATTR_ELEMENTS:
@ -1550,6 +1567,7 @@ static const value_string netlink_netfilter_subsystem_vals[] = {
{ WS_NFNL_SUBSYS_CTHELPER, "Connection Tracking Helpers" },
{ WS_NFNL_SUBSYS_NFTABLES, "Netfilter tables" },
{ WS_NFNL_SUBSYS_NFT_COMPAT, "x_tables compatibility layer for nf_tables" },
{ WS_NFNL_SUBSYS_HOOK, "Hook" },
{ WS_NFNL_SUBSYS_COUNT, "Count" },
{ 0, NULL }
};
@ -1774,6 +1792,11 @@ proto_register_netlink_netfilter(void)
FT_UINT32, BASE_DEC, NULL, WS_IPS_OFFLOAD,
NULL, HFILL }
},
{ &hf_nfct_attr_status_flag_hw_offload,
{ "HW offload", "netlink-netfilter.ct_attr.status.hw_offload",
FT_UINT32, BASE_DEC, NULL, WS_IPS_HW_OFFLOAD,
NULL, HFILL }
},
{ &hf_nfct_attr_status,
{ "Status", "netlink-netfilter.ct_attr.status",
FT_UINT32, BASE_HEX, NULL, 0x00,

View File

@ -167,6 +167,22 @@ enum ws_nl80211_commands {
WS_NL80211_CMD_NOTIFY_RADAR,
WS_NL80211_CMD_UPDATE_OWE_INFO,
WS_NL80211_CMD_PROBE_MESH_LINK,
WS_NL80211_CMD_SET_TID_CONFIG,
WS_NL80211_CMD_UNPROT_BEACON,
WS_NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS,
WS_NL80211_CMD_SET_SAR_SPECS,
WS_NL80211_CMD_OBSS_COLOR_COLLISION,
WS_NL80211_CMD_COLOR_CHANGE_REQUEST,
WS_NL80211_CMD_COLOR_CHANGE_STARTED,
WS_NL80211_CMD_COLOR_CHANGE_ABORTED,
WS_NL80211_CMD_COLOR_CHANGE_COMPLETED,
WS_NL80211_CMD_SET_FILS_AAD,
WS_NL80211_CMD_ASSOC_COMEBACK,
WS_NL80211_CMD_ADD_LINK,
WS_NL80211_CMD_REMOVE_LINK,
WS_NL80211_CMD_ADD_LINK_STA,
WS_NL80211_CMD_MODIFY_LINK_STA,
WS_NL80211_CMD_REMOVE_LINK_STA,
};
enum ws_nl80211_attrs {
@ -356,8 +372,8 @@ enum ws_nl80211_attrs {
WS_NL80211_ATTR_CH_SWITCH_COUNT,
WS_NL80211_ATTR_CH_SWITCH_BLOCK_TX,
WS_NL80211_ATTR_CSA_IES,
WS_NL80211_ATTR_CSA_C_OFF_BEACON,
WS_NL80211_ATTR_CSA_C_OFF_PRESP,
WS_NL80211_ATTR_CNTDWN_OFFS_BEACON,
WS_NL80211_ATTR_CNTDWN_OFFS_PRESP,
WS_NL80211_ATTR_RXMGMT_FLAGS,
WS_NL80211_ATTR_STA_SUPPORTED_CHANNELS,
WS_NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES,
@ -452,6 +468,47 @@ enum ws_nl80211_attrs {
WS_NL80211_ATTR_HE_OBSS_PD,
WS_NL80211_ATTR_WIPHY_EDMG_CHANNELS,
WS_NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
WS_NL80211_ATTR_VLAN_ID,
WS_NL80211_ATTR_HE_BSS_COLOR,
WS_NL80211_ATTR_IFTYPE_AKM_SUITES,
WS_NL80211_ATTR_TID_CONFIG,
WS_NL80211_ATTR_CONTROL_PORT_NO_PREAUTH,
WS_NL80211_ATTR_PMK_LIFETIME,
WS_NL80211_ATTR_PMK_REAUTH_THRESHOLD,
WS_NL80211_ATTR_RECEIVE_MULTICAST,
WS_NL80211_ATTR_WIPHY_FREQ_OFFSET,
WS_NL80211_ATTR_CENTER_FREQ1_OFFSET,
WS_NL80211_ATTR_SCAN_FREQ_KHZ,
WS_NL80211_ATTR_HE_6GHZ_CAPABILITY,
WS_NL80211_ATTR_FILS_DISCOVERY,
WS_NL80211_ATTR_UNSOL_BCAST_PROBE_RESP,
WS_NL80211_ATTR_S1G_CAPABILITY,
WS_NL80211_ATTR_S1G_CAPABILITY_MASK,
WS_NL80211_ATTR_SAE_PWE,
WS_NL80211_ATTR_RECONNECT_REQUESTED,
WS_NL80211_ATTR_SAR_SPEC,
WS_NL80211_ATTR_DISABLE_HE,
WS_NL80211_ATTR_OBSS_COLOR_BITMAP,
WS_NL80211_ATTR_COLOR_CHANGE_COUNT,
WS_NL80211_ATTR_COLOR_CHANGE_COLOR,
WS_NL80211_ATTR_COLOR_CHANGE_ELEMS,
WS_NL80211_ATTR_MBSSID_CONFIG,
WS_NL80211_ATTR_MBSSID_ELEMS,
WS_NL80211_ATTR_RADAR_BACKGROUND,
WS_NL80211_ATTR_AP_SETTINGS_FLAGS,
WS_NL80211_ATTR_EHT_CAPABILITY,
WS_NL80211_ATTR_DISABLE_EHT,
WS_NL80211_ATTR_MLO_LINKS,
WS_NL80211_ATTR_MLO_LINK_ID,
WS_NL80211_ATTR_MLD_ADDR,
WS_NL80211_ATTR_MLO_SUPPORT,
WS_NL80211_ATTR_MAX_NUM_AKM_SUITES,
WS_NL80211_ATTR_EML_CAPABILITY,
WS_NL80211_ATTR_MLD_CAPA_AND_OPS,
WS_NL80211_ATTR_TX_HW_TIMESTAMP,
WS_NL80211_ATTR_RX_HW_TIMESTAMP,
WS_NL80211_ATTR_TD_BITMAP,
WS_NL80211_ATTR_PUNCT_BITMAP,
};
enum ws_nl80211_iftype {
@ -521,6 +578,11 @@ enum ws_nl80211_rate_info {
WS_NL80211_RATE_INFO_HE_GI,
WS_NL80211_RATE_INFO_HE_DCM,
WS_NL80211_RATE_INFO_HE_RU_ALLOC,
WS_NL80211_RATE_INFO_320_MHZ_WIDTH,
WS_NL80211_RATE_INFO_EHT_MCS,
WS_NL80211_RATE_INFO_EHT_NSS,
WS_NL80211_RATE_INFO_EHT_GI,
WS_NL80211_RATE_INFO_EHT_RU_ALLOC,
};
enum ws_nl80211_sta_bss_param {
@ -576,6 +638,7 @@ enum ws_nl80211_sta_info {
WS_NL80211_STA_INFO_AIRTIME_WEIGHT,
WS_NL80211_STA_INFO_AIRTIME_LINK_METRIC,
WS_NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
WS_NL80211_STA_INFO_CONNECTED_TO_AS,
};
enum ws_nl80211_tid_stats {
@ -631,6 +694,12 @@ enum ws_nl80211_band_iftype_attr {
WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
WS_NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
WS_NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
};
enum ws_nl80211_band_attr {
@ -676,6 +745,15 @@ enum ws_nl80211_frequency_attr {
WS_NL80211_FREQUENCY_ATTR_NO_20MHZ,
WS_NL80211_FREQUENCY_ATTR_NO_10MHZ,
WS_NL80211_FREQUENCY_ATTR_WMM,
WS_NL80211_FREQUENCY_ATTR_NO_HE,
WS_NL80211_FREQUENCY_ATTR_OFFSET,
WS_NL80211_FREQUENCY_ATTR_1MHZ,
WS_NL80211_FREQUENCY_ATTR_2MHZ,
WS_NL80211_FREQUENCY_ATTR_4MHZ,
WS_NL80211_FREQUENCY_ATTR_8MHZ,
WS_NL80211_FREQUENCY_ATTR_16MHZ,
WS_NL80211_FREQUENCY_ATTR_NO_320MHZ,
WS_NL80211_FREQUENCY_ATTR_NO_EHT,
};
enum ws_nl80211_bitrate_attr {
@ -735,6 +813,8 @@ enum ws_nl80211_reg_rule_flags {
WS_NL80211_RRF_NO_HT40PLUS = 1<<14,
WS_NL80211_RRF_NO_80MHZ = 1<<15,
WS_NL80211_RRF_NO_160MHZ = 1<<16,
WS_NL80211_RRF_NO_HE = 1<<17,
WS_NL80211_RRF_NO_320MHZ = 1<<18,
};
enum ws_nl80211_dfs_regions {
@ -763,6 +843,7 @@ enum ws_nl80211_survey_info {
WS_NL80211_SURVEY_INFO_TIME_SCAN,
WS_NL80211_SURVEY_INFO_PAD,
WS_NL80211_SURVEY_INFO_TIME_BSS_RX,
WS_NL80211_SURVEY_INFO_FREQUENCY_OFFSET,
};
enum ws_nl80211_mntr_flags {
@ -813,6 +894,8 @@ enum ws_nl80211_meshconf_params {
WS_NL80211_MESHCONF_AWAKE_WINDOW,
WS_NL80211_MESHCONF_PLINK_TIMEOUT,
WS_NL80211_MESHCONF_CONNECTED_TO_GATE,
WS_NL80211_MESHCONF_NOLEARN,
WS_NL80211_MESHCONF_CONNECTED_TO_AS,
};
enum ws_nl80211_mesh_setup_params {
@ -866,12 +949,20 @@ enum ws_nl80211_chan_width {
WS_NL80211_CHAN_WIDTH_160,
WS_NL80211_CHAN_WIDTH_5,
WS_NL80211_CHAN_WIDTH_10,
WS_NL80211_CHAN_WIDTH_1,
WS_NL80211_CHAN_WIDTH_2,
WS_NL80211_CHAN_WIDTH_4,
WS_NL80211_CHAN_WIDTH_8,
WS_NL80211_CHAN_WIDTH_16,
WS_NL80211_CHAN_WIDTH_320,
};
enum ws_nl80211_bss_scan_width {
WS_NL80211_BSS_CHAN_WIDTH_20,
WS_NL80211_BSS_CHAN_WIDTH_10,
WS_NL80211_BSS_CHAN_WIDTH_5,
WS_NL80211_BSS_CHAN_WIDTH_1,
WS_NL80211_BSS_CHAN_WIDTH_2,
};
enum ws_nl80211_bss {
@ -895,6 +986,9 @@ enum ws_nl80211_bss {
WS_NL80211_BSS_PARENT_TSF,
WS_NL80211_BSS_PARENT_BSSID,
WS_NL80211_BSS_CHAIN_SIGNAL,
WS_NL80211_BSS_FREQUENCY_OFFSET,
WS_NL80211_BSS_MLO_LINK_ID,
WS_NL80211_BSS_MLD_ADDR,
};
enum ws_nl80211_bss_status {
@ -949,6 +1043,7 @@ enum ws_nl80211_key_attributes {
WS_NL80211_KEY_TYPE,
WS_NL80211_KEY_DEFAULT_TYPES,
WS_NL80211_KEY_MODE,
WS_NL80211_KEY_DEFAULT_BEACON,
};
enum ws_nl80211_tx_rate_attributes {
@ -957,6 +1052,9 @@ enum ws_nl80211_tx_rate_attributes {
WS_NL80211_TXRATE_HT,
WS_NL80211_TXRATE_VHT,
WS_NL80211_TXRATE_GI,
WS_NL80211_TXRATE_HE,
WS_NL80211_TXRATE_HE_GI,
WS_NL80211_TXRATE_HE_LTF,
};
enum ws_nl80211_txrate_gi {
@ -970,6 +1068,8 @@ enum ws_nl80211_band {
WS_NL80211_BAND_5GHZ,
WS_NL80211_BAND_60GHZ,
WS_NL80211_BAND_6GHZ,
WS_NL80211_BAND_S1GHZ,
WS_NL80211_BAND_LC,
};
enum ws_nl80211_ps_state {
@ -1097,6 +1197,7 @@ enum ws_nl80211_rekey_data {
WS_NL80211_REKEY_DATA_KEK,
WS_NL80211_REKEY_DATA_KCK,
WS_NL80211_REKEY_DATA_REPLAY_CTR,
WS_NL80211_REKEY_DATA_AKM,
};
enum ws_nl80211_hidden_ssid {
@ -1200,6 +1301,31 @@ enum ws_nl80211_ext_feature_index {
WS_NL80211_EXT_FEATURE_EXT_KEY_ID,
WS_NL80211_EXT_FEATURE_STA_TX_PWR,
WS_NL80211_EXT_FEATURE_SAE_OFFLOAD,
WS_NL80211_EXT_FEATURE_VLAN_OFFLOAD,
WS_NL80211_EXT_FEATURE_AQL,
WS_NL80211_EXT_FEATURE_BEACON_PROTECTION,
WS_NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH,
WS_NL80211_EXT_FEATURE_PROTECTED_TWT,
WS_NL80211_EXT_FEATURE_DEL_IBSS_STA,
WS_NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS,
WS_NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT,
WS_NL80211_EXT_FEATURE_SCAN_FREQ_KHZ,
WS_NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS,
WS_NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION,
WS_NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK,
WS_NL80211_EXT_FEATURE_SAE_OFFLOAD_AP,
WS_NL80211_EXT_FEATURE_FILS_DISCOVERY,
WS_NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP,
WS_NL80211_EXT_FEATURE_BEACON_RATE_HE,
WS_NL80211_EXT_FEATURE_SECURE_LTF,
WS_NL80211_EXT_FEATURE_SECURE_RTT,
WS_NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
WS_NL80211_EXT_FEATURE_BSS_COLOR,
WS_NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
WS_NL80211_EXT_FEATURE_RADAR_BACKGROUND,
WS_NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
WS_NL80211_EXT_FEATURE_PUNCT,
WS_NL80211_EXT_FEATURE_SECURE_NAN,
};
enum ws_nl80211_probe_resp_offload_support_attr {
@ -1235,6 +1361,8 @@ enum ws_nl80211_scan_flags {
WS_NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10,
WS_NL80211_SCAN_FLAG_RANDOM_SN = 1<<11,
WS_NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1<<12,
WS_NL80211_SCAN_FLAG_FREQ_KHZ = 1<<13,
WS_NL80211_SCAN_FLAG_COLOCATED_6GHZ = 1<<14,
};
enum ws_nl80211_acl_policy {
@ -1283,6 +1411,7 @@ enum ws_nl80211_tdls_peer_capability {
WS_NL80211_TDLS_PEER_HT = 1<<0,
WS_NL80211_TDLS_PEER_VHT = 1<<1,
WS_NL80211_TDLS_PEER_WMM = 1<<2,
WS_NL80211_TDLS_PEER_HE = 1<<3,
};
enum ws_nl80211_sched_scan_plan {
@ -1380,6 +1509,7 @@ enum ws_nl80211_preamble {
WS_NL80211_PREAMBLE_HT,
WS_NL80211_PREAMBLE_VHT,
WS_NL80211_PREAMBLE_DMG,
WS_NL80211_PREAMBLE_HE,
};
enum ws_nl80211_peer_measurement_type {
@ -1437,6 +1567,8 @@ enum ws_nl80211_peer_measurement_ftm_capa {
WS_NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS,
WS_NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT,
WS_NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
WS_NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,
WS_NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED,
};
enum ws_nl80211_peer_measurement_ftm_req {
@ -1450,6 +1582,10 @@ enum ws_nl80211_peer_measurement_ftm_req {
WS_NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES,
WS_NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI,
WS_NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC,
WS_NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED,
WS_NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
WS_NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
WS_NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
};
enum ws_nl80211_peer_measurement_ftm_failure_reasons {
@ -1492,6 +1628,10 @@ enum ws_nl80211_obss_pd_attributes {
WS___NL80211_HE_OBSS_PD_ATTR_INVALID,
WS_NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET,
WS_NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET,
WS_NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET,
WS_NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP,
WS_NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP,
WS_NL80211_HE_OBSS_PD_ATTR_SR_CTRL,
};
static const value_string ws_nl80211_commands_vals[] = {
@ -1632,6 +1772,22 @@ static const value_string ws_nl80211_commands_vals[] = {
{ WS_NL80211_CMD_NOTIFY_RADAR, "NL80211_CMD_NOTIFY_RADAR" },
{ WS_NL80211_CMD_UPDATE_OWE_INFO, "NL80211_CMD_UPDATE_OWE_INFO" },
{ WS_NL80211_CMD_PROBE_MESH_LINK, "NL80211_CMD_PROBE_MESH_LINK" },
{ WS_NL80211_CMD_SET_TID_CONFIG, "NL80211_CMD_SET_TID_CONFIG" },
{ WS_NL80211_CMD_UNPROT_BEACON, "NL80211_CMD_UNPROT_BEACON" },
{ WS_NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS, "NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS" },
{ WS_NL80211_CMD_SET_SAR_SPECS, "NL80211_CMD_SET_SAR_SPECS" },
{ WS_NL80211_CMD_OBSS_COLOR_COLLISION, "NL80211_CMD_OBSS_COLOR_COLLISION" },
{ WS_NL80211_CMD_COLOR_CHANGE_REQUEST, "NL80211_CMD_COLOR_CHANGE_REQUEST" },
{ WS_NL80211_CMD_COLOR_CHANGE_STARTED, "NL80211_CMD_COLOR_CHANGE_STARTED" },
{ WS_NL80211_CMD_COLOR_CHANGE_ABORTED, "NL80211_CMD_COLOR_CHANGE_ABORTED" },
{ WS_NL80211_CMD_COLOR_CHANGE_COMPLETED, "NL80211_CMD_COLOR_CHANGE_COMPLETED" },
{ WS_NL80211_CMD_SET_FILS_AAD, "NL80211_CMD_SET_FILS_AAD" },
{ WS_NL80211_CMD_ASSOC_COMEBACK, "NL80211_CMD_ASSOC_COMEBACK" },
{ WS_NL80211_CMD_ADD_LINK, "NL80211_CMD_ADD_LINK" },
{ WS_NL80211_CMD_REMOVE_LINK, "NL80211_CMD_REMOVE_LINK" },
{ WS_NL80211_CMD_ADD_LINK_STA, "NL80211_CMD_ADD_LINK_STA" },
{ WS_NL80211_CMD_MODIFY_LINK_STA, "NL80211_CMD_MODIFY_LINK_STA" },
{ WS_NL80211_CMD_REMOVE_LINK_STA, "NL80211_CMD_REMOVE_LINK_STA" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_commands_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_commands_vals);
@ -1823,8 +1979,8 @@ static const value_string ws_nl80211_attrs_vals[] = {
{ WS_NL80211_ATTR_CH_SWITCH_COUNT, "NL80211_ATTR_CH_SWITCH_COUNT" },
{ WS_NL80211_ATTR_CH_SWITCH_BLOCK_TX, "NL80211_ATTR_CH_SWITCH_BLOCK_TX" },
{ WS_NL80211_ATTR_CSA_IES, "NL80211_ATTR_CSA_IES" },
{ WS_NL80211_ATTR_CSA_C_OFF_BEACON, "NL80211_ATTR_CSA_C_OFF_BEACON" },
{ WS_NL80211_ATTR_CSA_C_OFF_PRESP, "NL80211_ATTR_CSA_C_OFF_PRESP" },
{ WS_NL80211_ATTR_CNTDWN_OFFS_BEACON, "NL80211_ATTR_CNTDWN_OFFS_BEACON" },
{ WS_NL80211_ATTR_CNTDWN_OFFS_PRESP, "NL80211_ATTR_CNTDWN_OFFS_PRESP" },
{ WS_NL80211_ATTR_RXMGMT_FLAGS, "NL80211_ATTR_RXMGMT_FLAGS" },
{ WS_NL80211_ATTR_STA_SUPPORTED_CHANNELS, "NL80211_ATTR_STA_SUPPORTED_CHANNELS" },
{ WS_NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES, "NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES" },
@ -1919,6 +2075,47 @@ static const value_string ws_nl80211_attrs_vals[] = {
{ WS_NL80211_ATTR_HE_OBSS_PD, "NL80211_ATTR_HE_OBSS_PD" },
{ WS_NL80211_ATTR_WIPHY_EDMG_CHANNELS, "NL80211_ATTR_WIPHY_EDMG_CHANNELS" },
{ WS_NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, "NL80211_ATTR_WIPHY_EDMG_BW_CONFIG" },
{ WS_NL80211_ATTR_VLAN_ID, "NL80211_ATTR_VLAN_ID" },
{ WS_NL80211_ATTR_HE_BSS_COLOR, "NL80211_ATTR_HE_BSS_COLOR" },
{ WS_NL80211_ATTR_IFTYPE_AKM_SUITES, "NL80211_ATTR_IFTYPE_AKM_SUITES" },
{ WS_NL80211_ATTR_TID_CONFIG, "NL80211_ATTR_TID_CONFIG" },
{ WS_NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, "NL80211_ATTR_CONTROL_PORT_NO_PREAUTH" },
{ WS_NL80211_ATTR_PMK_LIFETIME, "NL80211_ATTR_PMK_LIFETIME" },
{ WS_NL80211_ATTR_PMK_REAUTH_THRESHOLD, "NL80211_ATTR_PMK_REAUTH_THRESHOLD" },
{ WS_NL80211_ATTR_RECEIVE_MULTICAST, "NL80211_ATTR_RECEIVE_MULTICAST" },
{ WS_NL80211_ATTR_WIPHY_FREQ_OFFSET, "NL80211_ATTR_WIPHY_FREQ_OFFSET" },
{ WS_NL80211_ATTR_CENTER_FREQ1_OFFSET, "NL80211_ATTR_CENTER_FREQ1_OFFSET" },
{ WS_NL80211_ATTR_SCAN_FREQ_KHZ, "NL80211_ATTR_SCAN_FREQ_KHZ" },
{ WS_NL80211_ATTR_HE_6GHZ_CAPABILITY, "NL80211_ATTR_HE_6GHZ_CAPABILITY" },
{ WS_NL80211_ATTR_FILS_DISCOVERY, "NL80211_ATTR_FILS_DISCOVERY" },
{ WS_NL80211_ATTR_UNSOL_BCAST_PROBE_RESP, "NL80211_ATTR_UNSOL_BCAST_PROBE_RESP" },
{ WS_NL80211_ATTR_S1G_CAPABILITY, "NL80211_ATTR_S1G_CAPABILITY" },
{ WS_NL80211_ATTR_S1G_CAPABILITY_MASK, "NL80211_ATTR_S1G_CAPABILITY_MASK" },
{ WS_NL80211_ATTR_SAE_PWE, "NL80211_ATTR_SAE_PWE" },
{ WS_NL80211_ATTR_RECONNECT_REQUESTED, "NL80211_ATTR_RECONNECT_REQUESTED" },
{ WS_NL80211_ATTR_SAR_SPEC, "NL80211_ATTR_SAR_SPEC" },
{ WS_NL80211_ATTR_DISABLE_HE, "NL80211_ATTR_DISABLE_HE" },
{ WS_NL80211_ATTR_OBSS_COLOR_BITMAP, "NL80211_ATTR_OBSS_COLOR_BITMAP" },
{ WS_NL80211_ATTR_COLOR_CHANGE_COUNT, "NL80211_ATTR_COLOR_CHANGE_COUNT" },
{ WS_NL80211_ATTR_COLOR_CHANGE_COLOR, "NL80211_ATTR_COLOR_CHANGE_COLOR" },
{ WS_NL80211_ATTR_COLOR_CHANGE_ELEMS, "NL80211_ATTR_COLOR_CHANGE_ELEMS" },
{ WS_NL80211_ATTR_MBSSID_CONFIG, "NL80211_ATTR_MBSSID_CONFIG" },
{ WS_NL80211_ATTR_MBSSID_ELEMS, "NL80211_ATTR_MBSSID_ELEMS" },
{ WS_NL80211_ATTR_RADAR_BACKGROUND, "NL80211_ATTR_RADAR_BACKGROUND" },
{ WS_NL80211_ATTR_AP_SETTINGS_FLAGS, "NL80211_ATTR_AP_SETTINGS_FLAGS" },
{ WS_NL80211_ATTR_EHT_CAPABILITY, "NL80211_ATTR_EHT_CAPABILITY" },
{ WS_NL80211_ATTR_DISABLE_EHT, "NL80211_ATTR_DISABLE_EHT" },
{ WS_NL80211_ATTR_MLO_LINKS, "NL80211_ATTR_MLO_LINKS" },
{ WS_NL80211_ATTR_MLO_LINK_ID, "NL80211_ATTR_MLO_LINK_ID" },
{ WS_NL80211_ATTR_MLD_ADDR, "NL80211_ATTR_MLD_ADDR" },
{ WS_NL80211_ATTR_MLO_SUPPORT, "NL80211_ATTR_MLO_SUPPORT" },
{ WS_NL80211_ATTR_MAX_NUM_AKM_SUITES, "NL80211_ATTR_MAX_NUM_AKM_SUITES" },
{ WS_NL80211_ATTR_EML_CAPABILITY, "NL80211_ATTR_EML_CAPABILITY" },
{ WS_NL80211_ATTR_MLD_CAPA_AND_OPS, "NL80211_ATTR_MLD_CAPA_AND_OPS" },
{ WS_NL80211_ATTR_TX_HW_TIMESTAMP, "NL80211_ATTR_TX_HW_TIMESTAMP" },
{ WS_NL80211_ATTR_RX_HW_TIMESTAMP, "NL80211_ATTR_RX_HW_TIMESTAMP" },
{ WS_NL80211_ATTR_TD_BITMAP, "NL80211_ATTR_TD_BITMAP" },
{ WS_NL80211_ATTR_PUNCT_BITMAP, "NL80211_ATTR_PUNCT_BITMAP" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_attrs_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_attrs_vals);
@ -2000,6 +2197,11 @@ static const value_string ws_nl80211_rate_info_vals[] = {
{ WS_NL80211_RATE_INFO_HE_GI, "NL80211_RATE_INFO_HE_GI" },
{ WS_NL80211_RATE_INFO_HE_DCM, "NL80211_RATE_INFO_HE_DCM" },
{ WS_NL80211_RATE_INFO_HE_RU_ALLOC, "NL80211_RATE_INFO_HE_RU_ALLOC" },
{ WS_NL80211_RATE_INFO_320_MHZ_WIDTH, "NL80211_RATE_INFO_320_MHZ_WIDTH" },
{ WS_NL80211_RATE_INFO_EHT_MCS, "NL80211_RATE_INFO_EHT_MCS" },
{ WS_NL80211_RATE_INFO_EHT_NSS, "NL80211_RATE_INFO_EHT_NSS" },
{ WS_NL80211_RATE_INFO_EHT_GI, "NL80211_RATE_INFO_EHT_GI" },
{ WS_NL80211_RATE_INFO_EHT_RU_ALLOC, "NL80211_RATE_INFO_EHT_RU_ALLOC" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_rate_info_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_rate_info_vals);
@ -2059,6 +2261,7 @@ static const value_string ws_nl80211_sta_info_vals[] = {
{ WS_NL80211_STA_INFO_AIRTIME_WEIGHT, "NL80211_STA_INFO_AIRTIME_WEIGHT" },
{ WS_NL80211_STA_INFO_AIRTIME_LINK_METRIC, "NL80211_STA_INFO_AIRTIME_LINK_METRIC" },
{ WS_NL80211_STA_INFO_ASSOC_AT_BOOTTIME, "NL80211_STA_INFO_ASSOC_AT_BOOTTIME" },
{ WS_NL80211_STA_INFO_CONNECTED_TO_AS, "NL80211_STA_INFO_CONNECTED_TO_AS" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_sta_info_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_sta_info_vals);
@ -2124,6 +2327,12 @@ static const value_string ws_nl80211_band_iftype_attr_vals[] = {
{ WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY, "NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY" },
{ WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET, "NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET" },
{ WS_NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE, "NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE" },
{ WS_NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA, "NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA" },
{ WS_NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS, "NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS" },
{ WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC, "NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC" },
{ WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY, "NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY" },
{ WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET, "NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET" },
{ WS_NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE, "NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_band_iftype_attr_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_band_iftype_attr_vals);
@ -2175,6 +2384,15 @@ static const value_string ws_nl80211_frequency_attr_vals[] = {
{ WS_NL80211_FREQUENCY_ATTR_NO_20MHZ, "NL80211_FREQUENCY_ATTR_NO_20MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_NO_10MHZ, "NL80211_FREQUENCY_ATTR_NO_10MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_WMM, "NL80211_FREQUENCY_ATTR_WMM" },
{ WS_NL80211_FREQUENCY_ATTR_NO_HE, "NL80211_FREQUENCY_ATTR_NO_HE" },
{ WS_NL80211_FREQUENCY_ATTR_OFFSET, "NL80211_FREQUENCY_ATTR_OFFSET" },
{ WS_NL80211_FREQUENCY_ATTR_1MHZ, "NL80211_FREQUENCY_ATTR_1MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_2MHZ, "NL80211_FREQUENCY_ATTR_2MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_4MHZ, "NL80211_FREQUENCY_ATTR_4MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_8MHZ, "NL80211_FREQUENCY_ATTR_8MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_16MHZ, "NL80211_FREQUENCY_ATTR_16MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_NO_320MHZ, "NL80211_FREQUENCY_ATTR_NO_320MHZ" },
{ WS_NL80211_FREQUENCY_ATTR_NO_EHT, "NL80211_FREQUENCY_ATTR_NO_EHT" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_frequency_attr_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_frequency_attr_vals);
@ -2246,6 +2464,8 @@ static const value_string ws_nl80211_reg_rule_flags_vals[] = {
{ WS_NL80211_RRF_NO_HT40PLUS, "NL80211_RRF_NO_HT40PLUS" },
{ WS_NL80211_RRF_NO_80MHZ, "NL80211_RRF_NO_80MHZ" },
{ WS_NL80211_RRF_NO_160MHZ, "NL80211_RRF_NO_160MHZ" },
{ WS_NL80211_RRF_NO_HE, "NL80211_RRF_NO_HE" },
{ WS_NL80211_RRF_NO_320MHZ, "NL80211_RRF_NO_320MHZ" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_reg_rule_flags_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_reg_rule_flags_vals);
@ -2280,6 +2500,7 @@ static const value_string ws_nl80211_survey_info_vals[] = {
{ WS_NL80211_SURVEY_INFO_TIME_SCAN, "NL80211_SURVEY_INFO_TIME_SCAN" },
{ WS_NL80211_SURVEY_INFO_PAD, "NL80211_SURVEY_INFO_PAD" },
{ WS_NL80211_SURVEY_INFO_TIME_BSS_RX, "NL80211_SURVEY_INFO_TIME_BSS_RX" },
{ WS_NL80211_SURVEY_INFO_FREQUENCY_OFFSET, "NL80211_SURVEY_INFO_FREQUENCY_OFFSET" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_survey_info_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_survey_info_vals);
@ -2336,6 +2557,8 @@ static const value_string ws_nl80211_meshconf_params_vals[] = {
{ WS_NL80211_MESHCONF_AWAKE_WINDOW, "NL80211_MESHCONF_AWAKE_WINDOW" },
{ WS_NL80211_MESHCONF_PLINK_TIMEOUT, "NL80211_MESHCONF_PLINK_TIMEOUT" },
{ WS_NL80211_MESHCONF_CONNECTED_TO_GATE, "NL80211_MESHCONF_CONNECTED_TO_GATE" },
{ WS_NL80211_MESHCONF_NOLEARN, "NL80211_MESHCONF_NOLEARN" },
{ WS_NL80211_MESHCONF_CONNECTED_TO_AS, "NL80211_MESHCONF_CONNECTED_TO_AS" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_meshconf_params_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_meshconf_params_vals);
@ -2401,6 +2624,12 @@ static const value_string ws_nl80211_chan_width_vals[] = {
{ WS_NL80211_CHAN_WIDTH_160, "NL80211_CHAN_WIDTH_160" },
{ WS_NL80211_CHAN_WIDTH_5, "NL80211_CHAN_WIDTH_5" },
{ WS_NL80211_CHAN_WIDTH_10, "NL80211_CHAN_WIDTH_10" },
{ WS_NL80211_CHAN_WIDTH_1, "NL80211_CHAN_WIDTH_1" },
{ WS_NL80211_CHAN_WIDTH_2, "NL80211_CHAN_WIDTH_2" },
{ WS_NL80211_CHAN_WIDTH_4, "NL80211_CHAN_WIDTH_4" },
{ WS_NL80211_CHAN_WIDTH_8, "NL80211_CHAN_WIDTH_8" },
{ WS_NL80211_CHAN_WIDTH_16, "NL80211_CHAN_WIDTH_16" },
{ WS_NL80211_CHAN_WIDTH_320, "NL80211_CHAN_WIDTH_320" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_chan_width_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_chan_width_vals);
@ -2409,6 +2638,8 @@ static const value_string ws_nl80211_bss_scan_width_vals[] = {
{ WS_NL80211_BSS_CHAN_WIDTH_20, "NL80211_BSS_CHAN_WIDTH_20" },
{ WS_NL80211_BSS_CHAN_WIDTH_10, "NL80211_BSS_CHAN_WIDTH_10" },
{ WS_NL80211_BSS_CHAN_WIDTH_5, "NL80211_BSS_CHAN_WIDTH_5" },
{ WS_NL80211_BSS_CHAN_WIDTH_1, "NL80211_BSS_CHAN_WIDTH_1" },
{ WS_NL80211_BSS_CHAN_WIDTH_2, "NL80211_BSS_CHAN_WIDTH_2" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_bss_scan_width_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_bss_scan_width_vals);
@ -2434,6 +2665,9 @@ static const value_string ws_nl80211_bss_vals[] = {
{ WS_NL80211_BSS_PARENT_TSF, "NL80211_BSS_PARENT_TSF" },
{ WS_NL80211_BSS_PARENT_BSSID, "NL80211_BSS_PARENT_BSSID" },
{ WS_NL80211_BSS_CHAIN_SIGNAL, "NL80211_BSS_CHAIN_SIGNAL" },
{ WS_NL80211_BSS_FREQUENCY_OFFSET, "NL80211_BSS_FREQUENCY_OFFSET" },
{ WS_NL80211_BSS_MLO_LINK_ID, "NL80211_BSS_MLO_LINK_ID" },
{ WS_NL80211_BSS_MLD_ADDR, "NL80211_BSS_MLD_ADDR" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_bss_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_bss_vals);
@ -2502,6 +2736,7 @@ static const value_string ws_nl80211_key_attributes_vals[] = {
{ WS_NL80211_KEY_TYPE, "NL80211_KEY_TYPE" },
{ WS_NL80211_KEY_DEFAULT_TYPES, "NL80211_KEY_DEFAULT_TYPES" },
{ WS_NL80211_KEY_MODE, "NL80211_KEY_MODE" },
{ WS_NL80211_KEY_DEFAULT_BEACON, "NL80211_KEY_DEFAULT_BEACON" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_key_attributes_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_key_attributes_vals);
@ -2512,6 +2747,9 @@ static const value_string ws_nl80211_tx_rate_attributes_vals[] = {
{ WS_NL80211_TXRATE_HT, "NL80211_TXRATE_HT" },
{ WS_NL80211_TXRATE_VHT, "NL80211_TXRATE_VHT" },
{ WS_NL80211_TXRATE_GI, "NL80211_TXRATE_GI" },
{ WS_NL80211_TXRATE_HE, "NL80211_TXRATE_HE" },
{ WS_NL80211_TXRATE_HE_GI, "NL80211_TXRATE_HE_GI" },
{ WS_NL80211_TXRATE_HE_LTF, "NL80211_TXRATE_HE_LTF" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_tx_rate_attributes_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_tx_rate_attributes_vals);
@ -2529,6 +2767,8 @@ static const value_string ws_nl80211_band_vals[] = {
{ WS_NL80211_BAND_5GHZ, "NL80211_BAND_5GHZ" },
{ WS_NL80211_BAND_60GHZ, "NL80211_BAND_60GHZ" },
{ WS_NL80211_BAND_6GHZ, "NL80211_BAND_6GHZ" },
{ WS_NL80211_BAND_S1GHZ, "NL80211_BAND_S1GHZ" },
{ WS_NL80211_BAND_LC, "NL80211_BAND_LC" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_band_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_band_vals);
@ -2684,6 +2924,7 @@ static const value_string ws_nl80211_rekey_data_vals[] = {
{ WS_NL80211_REKEY_DATA_KEK, "NL80211_REKEY_DATA_KEK" },
{ WS_NL80211_REKEY_DATA_KCK, "NL80211_REKEY_DATA_KCK" },
{ WS_NL80211_REKEY_DATA_REPLAY_CTR, "NL80211_REKEY_DATA_REPLAY_CTR" },
{ WS_NL80211_REKEY_DATA_AKM, "NL80211_REKEY_DATA_AKM" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_rekey_data_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_rekey_data_vals);
@ -2799,6 +3040,31 @@ static const value_string ws_nl80211_ext_feature_index_vals[] = {
{ WS_NL80211_EXT_FEATURE_EXT_KEY_ID, "NL80211_EXT_FEATURE_EXT_KEY_ID" },
{ WS_NL80211_EXT_FEATURE_STA_TX_PWR, "NL80211_EXT_FEATURE_STA_TX_PWR" },
{ WS_NL80211_EXT_FEATURE_SAE_OFFLOAD, "NL80211_EXT_FEATURE_SAE_OFFLOAD" },
{ WS_NL80211_EXT_FEATURE_VLAN_OFFLOAD, "NL80211_EXT_FEATURE_VLAN_OFFLOAD" },
{ WS_NL80211_EXT_FEATURE_AQL, "NL80211_EXT_FEATURE_AQL" },
{ WS_NL80211_EXT_FEATURE_BEACON_PROTECTION, "NL80211_EXT_FEATURE_BEACON_PROTECTION" },
{ WS_NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH, "NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH" },
{ WS_NL80211_EXT_FEATURE_PROTECTED_TWT, "NL80211_EXT_FEATURE_PROTECTED_TWT" },
{ WS_NL80211_EXT_FEATURE_DEL_IBSS_STA, "NL80211_EXT_FEATURE_DEL_IBSS_STA" },
{ WS_NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS, "NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS" },
{ WS_NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT, "NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT" },
{ WS_NL80211_EXT_FEATURE_SCAN_FREQ_KHZ, "NL80211_EXT_FEATURE_SCAN_FREQ_KHZ" },
{ WS_NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS, "NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS" },
{ WS_NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION, "NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION" },
{ WS_NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK, "NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK" },
{ WS_NL80211_EXT_FEATURE_SAE_OFFLOAD_AP, "NL80211_EXT_FEATURE_SAE_OFFLOAD_AP" },
{ WS_NL80211_EXT_FEATURE_FILS_DISCOVERY, "NL80211_EXT_FEATURE_FILS_DISCOVERY" },
{ WS_NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP, "NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP" },
{ WS_NL80211_EXT_FEATURE_BEACON_RATE_HE, "NL80211_EXT_FEATURE_BEACON_RATE_HE" },
{ WS_NL80211_EXT_FEATURE_SECURE_LTF, "NL80211_EXT_FEATURE_SECURE_LTF" },
{ WS_NL80211_EXT_FEATURE_SECURE_RTT, "NL80211_EXT_FEATURE_SECURE_RTT" },
{ WS_NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE, "NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE" },
{ WS_NL80211_EXT_FEATURE_BSS_COLOR, "NL80211_EXT_FEATURE_BSS_COLOR" },
{ WS_NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD, "NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD" },
{ WS_NL80211_EXT_FEATURE_RADAR_BACKGROUND, "NL80211_EXT_FEATURE_RADAR_BACKGROUND" },
{ WS_NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE, "NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE" },
{ WS_NL80211_EXT_FEATURE_PUNCT, "NL80211_EXT_FEATURE_PUNCT" },
{ WS_NL80211_EXT_FEATURE_SECURE_NAN, "NL80211_EXT_FEATURE_SECURE_NAN" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_ext_feature_index_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_ext_feature_index_vals);
@ -2842,6 +3108,8 @@ static const value_string ws_nl80211_scan_flags_vals[] = {
{ WS_NL80211_SCAN_FLAG_HIGH_ACCURACY, "NL80211_SCAN_FLAG_HIGH_ACCURACY" },
{ WS_NL80211_SCAN_FLAG_RANDOM_SN, "NL80211_SCAN_FLAG_RANDOM_SN" },
{ WS_NL80211_SCAN_FLAG_MIN_PREQ_CONTENT, "NL80211_SCAN_FLAG_MIN_PREQ_CONTENT" },
{ WS_NL80211_SCAN_FLAG_FREQ_KHZ, "NL80211_SCAN_FLAG_FREQ_KHZ" },
{ WS_NL80211_SCAN_FLAG_COLOCATED_6GHZ, "NL80211_SCAN_FLAG_COLOCATED_6GHZ" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_scan_flags_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_scan_flags_vals);
@ -2906,6 +3174,7 @@ static const value_string ws_nl80211_tdls_peer_capability_vals[] = {
{ WS_NL80211_TDLS_PEER_HT, "NL80211_TDLS_PEER_HT" },
{ WS_NL80211_TDLS_PEER_VHT, "NL80211_TDLS_PEER_VHT" },
{ WS_NL80211_TDLS_PEER_WMM, "NL80211_TDLS_PEER_WMM" },
{ WS_NL80211_TDLS_PEER_HE, "NL80211_TDLS_PEER_HE" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_tdls_peer_capability_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_tdls_peer_capability_vals);
@ -3027,6 +3296,7 @@ static const value_string ws_nl80211_preamble_vals[] = {
{ WS_NL80211_PREAMBLE_HT, "NL80211_PREAMBLE_HT" },
{ WS_NL80211_PREAMBLE_VHT, "NL80211_PREAMBLE_VHT" },
{ WS_NL80211_PREAMBLE_DMG, "NL80211_PREAMBLE_DMG" },
{ WS_NL80211_PREAMBLE_HE, "NL80211_PREAMBLE_HE" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_preamble_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_preamble_vals);
@ -3098,6 +3368,8 @@ static const value_string ws_nl80211_peer_measurement_ftm_capa_vals[] = {
{ WS_NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS, "NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS" },
{ WS_NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT, "NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT" },
{ WS_NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST, "NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST" },
{ WS_NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED, "NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED" },
{ WS_NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED, "NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_peer_measurement_ftm_capa_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_peer_measurement_ftm_capa_vals);
@ -3113,6 +3385,10 @@ static const value_string ws_nl80211_peer_measurement_ftm_req_vals[] = {
{ WS_NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES, "NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI, "NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC, "NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED, "NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, "NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK, "NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK" },
{ WS_NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR, "NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_peer_measurement_ftm_req_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_peer_measurement_ftm_req_vals);
@ -3161,6 +3437,10 @@ static const value_string ws_nl80211_obss_pd_attributes_vals[] = {
{ WS___NL80211_HE_OBSS_PD_ATTR_INVALID, "__NL80211_HE_OBSS_PD_ATTR_INVALID" },
{ WS_NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET, "NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET" },
{ WS_NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET, "NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET" },
{ WS_NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET, "NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET" },
{ WS_NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP, "NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP" },
{ WS_NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP, "NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP" },
{ WS_NL80211_HE_OBSS_PD_ATTR_SR_CTRL, "NL80211_HE_OBSS_PD_ATTR_SR_CTRL" },
{ 0, NULL }
};
static value_string_ext ws_nl80211_obss_pd_attributes_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_obss_pd_attributes_vals);

View File

@ -128,6 +128,18 @@ enum {
WS_RTM_NEWNEXTHOP = 104,
WS_RTM_DELNEXTHOP = 105,
WS_RTM_GETNEXTHOP = 106,
WS_RTM_NEWLINKPROP = 108,
WS_RTM_DELLINKPROP = 109,
WS_RTM_GETLINKPROP = 110,
WS_RTM_NEWVLAN = 112,
WS_RTM_DELVLAN = 113,
WS_RTM_GETVLAN = 114,
WS_RTM_NEWNEXTHOPBUCKET = 116,
WS_RTM_DELNEXTHOPBUCKET = 117,
WS_RTM_GETNEXTHOPBUCKET = 118,
WS_RTM_NEWTUNNEL = 120,
WS_RTM_DELTUNNEL = 121,
WS_RTM_GETTUNNEL = 122,
};
/* values for rta_type (network interface) from </include/uapi/linux/if_link.h> */
@ -184,6 +196,16 @@ enum ws_ifla_attr_type {
WS_IFLA_NEW_IFINDEX = 49,
WS_IFLA_MIN_MTU = 50,
WS_IFLA_MAX_MTU = 51,
WS_IFLA_PROP_LIST = 52,
WS_IFLA_ALT_IFNAME = 53,
WS_IFLA_PERM_ADDRESS = 54,
WS_IFLA_PROTO_DOWN_REASON = 55,
WS_IFLA_PARENT_DEV_NAME = 56,
WS_IFLA_PARENT_DEV_BUS_NAME = 57,
WS_IFLA_GRO_MAX_SIZE = 58,
WS_IFLA_TSO_MAX_SIZE = 59,
WS_IFLA_TSO_MAX_SEGS = 60,
WS_IFLA_ALLMULTI = 61,
};
/* values for rta_type (ip address) from <include/uapi/linux/if_addr.h> */
@ -199,6 +221,7 @@ enum ws_ifa_attr_type {
WS_IFA_FLAGS = 8,
WS_IFA_RT_PRIORITY = 9,
WS_IFA_TARGET_NETNSID = 10,
WS_IFA_PROTO = 11,
};
/* values for rta_type (route) from <include/uapi/linux/rtnetlink.h> */
@ -620,6 +643,16 @@ static const value_string netlink_route_ifla_attr_vals[] = {
{ WS_IFLA_NEW_IFINDEX, "IFLA_NEW_IFINDEX" },
{ WS_IFLA_MIN_MTU, "Minimum MTU" },
{ WS_IFLA_MAX_MTU, "Maximum MTU" },
{ WS_IFLA_PROP_LIST, "Property list" },
{ WS_IFLA_ALT_IFNAME, "Alternative ifname" },
{ WS_IFLA_PERM_ADDRESS, "Permanent address" },
{ WS_IFLA_PROTO_DOWN_REASON, "Protocol down reason" },
{ WS_IFLA_PARENT_DEV_NAME, "Parent device name" },
{ WS_IFLA_PARENT_DEV_BUS_NAME, "Parent device bus name" },
{ WS_IFLA_GRO_MAX_SIZE, "GRO maximum size" },
{ WS_IFLA_TSO_MAX_SIZE, "TSO maximum size" },
{ WS_IFLA_TSO_MAX_SEGS, "TSO maximum number of segments" },
{ WS_IFLA_ALLMULTI, "Allmulti count" },
{ 0, NULL }
};
@ -873,6 +906,7 @@ static const value_string netlink_route_ifa_attr_vals[] = {
{ WS_IFA_FLAGS, "Address flags" },
{ WS_IFA_RT_PRIORITY, "IFA_RT_PRIORITY" },
{ WS_IFA_TARGET_NETNSID, "IFA_TARGET_NETNSID" },
{ WS_IFA_PROTO, "IFA_PROTO" },
{ 0, NULL }
};
@ -1184,6 +1218,18 @@ static const value_string netlink_route_type_vals[] = {
{ WS_RTM_NEWNEXTHOP, "New next hop" },
{ WS_RTM_DELNEXTHOP, "Delete next hop" },
{ WS_RTM_GETNEXTHOP, "Get next hop" },
{ WS_RTM_NEWLINKPROP, "New link property" },
{ WS_RTM_DELLINKPROP, "Delete link property" },
{ WS_RTM_GETLINKPROP, "Get link property" },
{ WS_RTM_NEWVLAN, "New VLAN" },
{ WS_RTM_DELVLAN, "Delete VLAN" },
{ WS_RTM_GETVLAN, "Get VLAN" },
{ WS_RTM_NEWNEXTHOPBUCKET, "New next hop bucket" },
{ WS_RTM_DELNEXTHOPBUCKET, "Delete next hop bucket" },
{ WS_RTM_GETNEXTHOPBUCKET, "Get next hop bucket" },
{ WS_RTM_NEWTUNNEL, "New tunnel" },
{ WS_RTM_DELTUNNEL, "Delete tunnel" },
{ WS_RTM_GETTUNNEL, "Get tunnel" },
{ 0, NULL }
};
static value_string_ext netlink_route_type_vals_ext = VALUE_STRING_EXT_INIT(netlink_route_type_vals);
@ -1214,6 +1260,7 @@ dissect_netlink_route(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
case WS_RTM_NEWLINK:
case WS_RTM_DELLINK:
case WS_RTM_GETLINK:
case WS_RTM_SETLINK:
/*
* Backward compatibility with legacy tools; 16 is
* sizeof(struct ifinfomsg).

View File

@ -98,6 +98,9 @@ enum ws_inet_diag_attr_type {
WS_INET_DIAG_CLASS_ID = 17,
WS_INET_DIAG_MD5SIG = 18,
WS_INET_DIAG_ULP_INFO = 19,
WS_INET_DIAG_SK_BPF_STORAGES = 20,
WS_INET_DIAG_CGROUP_ID = 21,
WS_INET_DIAG_SOCKOPT = 22,
};
enum ws_netlink_diag_show_type {
@ -502,6 +505,12 @@ static const value_string netlink_sock_diag_inet_attr_vals[] = {
{ WS_INET_DIAG_PAD, "pad" },
{ WS_INET_DIAG_MARK, "mark" },
{ WS_INET_DIAG_BBRINFO, "bbrinfo" },
{ WS_INET_DIAG_CLASS_ID, "class_id" },
{ WS_INET_DIAG_MD5SIG, "md5sig" },
{ WS_INET_DIAG_ULP_INFO, "ulp_info" },
{ WS_INET_DIAG_SK_BPF_STORAGES, "sk_bpf_storages" },
{ WS_INET_DIAG_CGROUP_ID, "cgroup_id" },
{ WS_INET_DIAG_SOCKOPT, "sockopt" },
{ 0, NULL }
};

View File

@ -40307,11 +40307,11 @@ dissect_nr_rrc_SN_FieldLengthAM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
nr_drb_mac_rlc_mapping_t *mapping = &nr_rrc_get_private_data(actx)->drb_rlc_mapping;
if (mapping->tempDirection == DIRECTION_UPLINK) {
mapping->rlcUlSnLength_present = TRUE;
mapping->rlcUlSnLength = (value=0) ? 12 : 18;
mapping->rlcUlSnLength = (value==0) ? 12 : 18;
}
else {
mapping->rlcDlSnLength_present = TRUE;
mapping->rlcDlSnLength = (value=0) ? 12 : 18;
mapping->rlcDlSnLength = (value==0) ? 12 : 18;
}
@ -40584,11 +40584,11 @@ dissect_nr_rrc_SN_FieldLengthUM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
nr_drb_mac_rlc_mapping_t *mapping = &nr_rrc_get_private_data(actx)->drb_rlc_mapping;
if (mapping->tempDirection == DIRECTION_UPLINK) {
mapping->rlcUlSnLength_present = TRUE;
mapping->rlcUlSnLength = (value=0) ? 6 : 12;
mapping->rlcUlSnLength = (value==0) ? 6 : 12;
}
else {
mapping->rlcDlSnLength_present = TRUE;
mapping->rlcDlSnLength = (value=0) ? 6 : 12;
mapping->rlcDlSnLength = (value==0) ? 6 : 12;
}

File diff suppressed because it is too large Load Diff

View File

@ -915,6 +915,9 @@ static int hf_pfcp_qer_indications_flags_b0_iqfis = -1;
/* Enterprise IEs */
/* BBF */
static int hf_pfcp_bbf_up_function_features_o7_b7_nat_up = -1;
static int hf_pfcp_bbf_up_function_features_o7_b6_nat_cp = -1;
static int hf_pfcp_bbf_up_function_features_o7_b5_iptv = -1;
static int hf_pfcp_bbf_up_function_features_o7_b4_lcp_keepalive_offload = -1;
static int hf_pfcp_bbf_up_function_features_o7_b3_lns = -1;
static int hf_pfcp_bbf_up_function_features_o7_b2_lac = -1;
@ -959,6 +962,35 @@ static int hf_pfcp_bbf_l2tp_session_id = -1;
static int hf_pfcp_bbf_l2tp_type_flags = -1;
static int hf_pfcp_bbf_l2tp_type_flags_b0_t = -1;
static int hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff = -1;
static int hf_pfcp_bbf_multicast_flags_o7_b0_fastleave = -1;
static int hf_pfcp_bbf_multicast_query_param_robustness = -1;
static int hf_pfcp_bbf_multicast_query_param_query_interval = -1;
static int hf_pfcp_bbf_multicast_query_param_query_response_interval = -1;
static int hf_pfcp_bbf_multicast_query_param_group_query_interval = -1;
static int hf_pfcp_bbf_multicast_group_limit_max_joins = -1;
static int hf_pfcp_bbf_apply_action_flags_b0_nat = -1;
static int hf_pfcp_bbf_nat_external_port_range = -1;
static int hf_pfcp_bbf_nat_external_port_range_start = -1;
static int hf_pfcp_bbf_nat_external_port_range_end = -1;
static int hf_pfcp_bbf_nat_port_forward = -1;
static int hf_pfcp_bbf_nat_port_forward_inside_ip = -1;
static int hf_pfcp_bbf_nat_port_forward_inside_port = -1;
static int hf_pfcp_bbf_nat_port_forward_outside_port = -1;
static int hf_pfcp_bbf_nat_port_forward_protocol = -1;
static int hf_pfcp_bbf_reporting_trigger = -1;
static int hf_pfcp_bbf_dynamic_nat_block_port_range_start_port = -1;
static int hf_pfcp_bbf_dynamic_nat_block_port_range_end_port = -1;
static int hf_pfcp_bbf_event_time_stamp = -1;
/* Travelping */
static int hf_pfcp_enterprise_travelping_packet_measurement = -1;
static int hf_pfcp_enterprise_travelping_packet_measurement_b2_dlnop = -1;
@ -1121,6 +1153,7 @@ static int ett_pfcp_bbf_l2tp_endp_flags = -1;
static int ett_pfcp_bbf_l2tp_type_flags = -1;
static int ett_pfcp_bbf_ppp_lcp_connectivity = -1;
static int ett_pfcp_bbf_l2tp_tunnel = -1;
static int ett_pfcp_bbf_nat_port_forward_list = -1;
static int ett_pfcp_nokia_detailed_stats_key = -1;
static int ett_pfcp_nokia_detailed_stats_bitmap = -1;
@ -10072,13 +10105,20 @@ dissect_pfcp(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void *data
* TR-459: Control and User Plane Separation for a disaggregated BNG
*/
/*
* TR-459: 6.6.1 BBF UP Function Features
* TR-459.2: 6.5.1 BBF UP Function Features
* TR-459.3: Table 1: BBF UP Function Features for Multicast
*/
static int
dissect_pfcp_enterprise_bbf_up_function_features(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
static int * const pfcp_bbf_up_function_features_o7_flags[] = {
&hf_pfcp_spare_b7_b5,
&hf_pfcp_bbf_up_function_features_o7_b7_nat_up,
&hf_pfcp_bbf_up_function_features_o7_b6_nat_cp,
&hf_pfcp_bbf_up_function_features_o7_b5_iptv,
&hf_pfcp_bbf_up_function_features_o7_b4_lcp_keepalive_offload,
&hf_pfcp_bbf_up_function_features_o7_b3_lns,
&hf_pfcp_bbf_up_function_features_o7_b2_lac,
@ -10360,7 +10400,203 @@ dissect_pfcp_enterprise_bbf_l2tp_type(tvbuff_t *tvb, packet_info *pinfo _U_, pro
return offset;
}
/*
* TR-459.3: Figure 6: BBF Multicast Flags Information Element
*/
static int
dissect_pfcp_enterprise_bbf_multicast_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
static int * const pfcp_bbf_multicast_flags[] = {
&hf_pfcp_spare_b7_b2,
&hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff,
&hf_pfcp_bbf_multicast_flags_o7_b0_fastleave,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, offset, 1, pfcp_bbf_multicast_flags, ENC_BIG_ENDIAN);
offset += 1;
return offset;
}
/*
* TR-459.3: Figure 7: BBF Multicast Query Parameters Information Element
*/
static int
dissect_pfcp_enterprise_bbf_multicast_query_parameters(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
proto_tree_add_item(tree, hf_pfcp_bbf_multicast_query_param_robustness, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(tree, hf_pfcp_bbf_multicast_query_param_query_interval, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_pfcp_bbf_multicast_query_param_query_response_interval, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_pfcp_bbf_multicast_query_param_group_query_interval, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
return offset;
}
/*
* TR-459.3: Figure 8: BBF Multicast Group Limit Information Element
*/
static int
dissect_pfcp_enterprise_bbf_multicast_group_limit(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
guint32 value;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_multicast_group_limit_max_joins, tvb, offset, 2, ENC_BIG_ENDIAN, &value);
offset += 2;
proto_item_append_text(proto_tree_get_parent(tree), "%u", value);
return offset;
}
/*
* TR-459.2: 6.5.5 BBF Apply Action IE
*/
static int
dissect_pfcp_enterprise_bbf_apply_action(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
static int * const pfcp_bbf_apply_action_flags[] = {
&hf_pfcp_spare_b7_b1,
&hf_pfcp_bbf_apply_action_flags_b0_nat,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, offset, 1, pfcp_bbf_apply_action_flags, ENC_BIG_ENDIAN);
offset += 1;
return offset;
}
/*
* TR-459.2: 6.5.6 BBF NAT External Port Range
*/
static int
dissect_pfcp_enterprise_bbf_nat_external_port_range(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
guint32 start, end;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_nat_external_port_range_start, tvb, offset, 2, ENC_BIG_ENDIAN, &start);
offset += 2;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_nat_external_port_range_end, tvb, offset, 2, ENC_BIG_ENDIAN, &end);
offset += 2;
proto_item_append_text(proto_tree_get_parent(tree), ": %u:%u", start, end);
return offset;
}
/*
* TR-459.2: 6.5.7 BBF NAT port forward
*/
static int
dissect_pfcp_enterprise_bbf_nat_port_forward(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
int offset = 0;
guint length = tvb_reported_length(tvb);
while ((guint)offset < length) {
guint32 in, out, protocol;
proto_item *li;
proto_tree *lt;
li = proto_tree_add_item(tree, hf_pfcp_bbf_nat_port_forward, tvb, offset, 9, ENC_NA);
lt = proto_item_add_subtree(li, ett_pfcp_bbf_nat_port_forward_list);
proto_tree_add_item(lt, hf_pfcp_bbf_nat_port_forward_inside_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
proto_tree_add_item_ret_uint(lt, hf_pfcp_bbf_nat_port_forward_inside_port, tvb, offset, 2, ENC_BIG_ENDIAN, &in);
offset += 2;
proto_tree_add_item_ret_uint(lt, hf_pfcp_bbf_nat_port_forward_outside_port, tvb, offset, 2, ENC_BIG_ENDIAN, &out);
offset += 2;
proto_tree_add_item_ret_uint(lt, hf_pfcp_bbf_nat_port_forward_protocol, tvb, offset, 1, ENC_BIG_ENDIAN, &protocol);
offset += 1;
proto_item_append_text(li, ": proto=%s: %s:%u -> %u", val_to_str_ext_const(protocol, &ipproto_val_ext, "Unknown"),
tvb_ip_to_str(pinfo->pool, tvb, 0), in, out);
}
return offset;
}
/*
* TR 459.2: 6.5.3 BBF Report Trigger
*/
static const value_string pfcp_bbf_reporting_trigger_vals[] = {
{ 0, "reserved" },
{ 1, "DBNG-UP allocated NAT blocks" },
{ 0, NULL }
};
static int
dissect_pfcp_enterprise_bbf_reporting_trigger(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
guint32 value;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_reporting_trigger, tvb, offset, 1, ENC_BIG_ENDIAN, &value);
offset += 1;
proto_item_append_text(proto_tree_get_parent(tree), "%s", val_to_str_const(value, pfcp_bbf_reporting_trigger_vals, "Unknown"));
return offset;
}
/*
* TR 459.2: 6.5.8 BBF Dynamic NAT Block Port Range
*/
static int
dissect_pfcp_enterprise_bbf_dynamic_nat_block_port_range(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
int offset = 0;
guint32 start, end;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_dynamic_nat_block_port_range_start_port, tvb, offset, 2, ENC_BIG_ENDIAN, &start);
offset += 2;
proto_tree_add_item_ret_uint(tree, hf_pfcp_bbf_dynamic_nat_block_port_range_end_port, tvb, offset, 2, ENC_BIG_ENDIAN, &end);
offset += 2;
proto_item_append_text(proto_tree_get_parent(tree), "%u:%u", start, end);
return offset;
}
/*
* TR 459.2: 6.5.9 BBF Event Time Stamp
*/
static int
dissect_pfcp_enterprise_bbf_event_time_stamp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
int offset = 0;
char *time_str;
proto_tree_add_item_ret_time_string(tree, hf_pfcp_bbf_event_time_stamp, tvb, 0, 8, ENC_TIME_NTP | ENC_BIG_ENDIAN, pinfo->pool, &time_str);
offset += 8;
proto_item_append_text(proto_tree_get_parent(tree), "%s", time_str);
return offset;
}
static pfcp_generic_ie_t pfcp_bbf_ies[] = {
/* TR-459 */
{ VENDOR_BROADBAND_FORUM, 32768 , "UP Function Features" , dissect_pfcp_enterprise_bbf_up_function_features , -1} ,
{ VENDOR_BROADBAND_FORUM, 32769 , "Logical Port" , dissect_pfcp_enterprise_bbf_logical_port , -1} ,
{ VENDOR_BROADBAND_FORUM, 32770 , "Outer Header Creation" , dissect_pfcp_enterprise_bbf_outer_header_creation , -1} ,
@ -10375,6 +10611,18 @@ static pfcp_generic_ie_t pfcp_bbf_ies[] = {
{ VENDOR_BROADBAND_FORUM, 32779 , "L2TP Type" , dissect_pfcp_enterprise_bbf_l2tp_type , -1} ,
{ VENDOR_BROADBAND_FORUM, 32780 , "PPP LCP Connectivity" , dissect_pfcp_grouped_ie_wrapper , -1} ,
{ VENDOR_BROADBAND_FORUM, 32781 , "L2TP Tunnel" , dissect_pfcp_grouped_ie_wrapper , -1} ,
/* TR-459.3 */
{ VENDOR_BROADBAND_FORUM, 32782 , "BBF Multicast Flags" , dissect_pfcp_enterprise_bbf_multicast_flags , -1} ,
{ VENDOR_BROADBAND_FORUM, 32783 , "BBF Multicast Query Parameters" , dissect_pfcp_enterprise_bbf_multicast_query_parameters , -1} ,
{ VENDOR_BROADBAND_FORUM, 32784 , "BBF Multicast Group Limit" , dissect_pfcp_enterprise_bbf_multicast_group_limit , -1} ,
{ VENDOR_BROADBAND_FORUM, 32785 , "BBF Multicast Protocol Control" , dissect_pfcp_grouped_ie_wrapper , -1} ,
/* TR-459.2 */
{ VENDOR_BROADBAND_FORUM, 32787 , "BBF Apply Action" , dissect_pfcp_enterprise_bbf_apply_action , -1} ,
{ VENDOR_BROADBAND_FORUM, 32788 , "BBF NAT External Port Range" , dissect_pfcp_enterprise_bbf_nat_external_port_range , -1} ,
{ VENDOR_BROADBAND_FORUM, 32789 , "BBF NAT Port Forward" , dissect_pfcp_enterprise_bbf_nat_port_forward , -1} ,
{ VENDOR_BROADBAND_FORUM, 32790 , "BBF Report Trigger" , dissect_pfcp_enterprise_bbf_reporting_trigger , -1} ,
{ VENDOR_BROADBAND_FORUM, 32791 , "BBF Dynamic NAT Block Port Range" , dissect_pfcp_enterprise_bbf_dynamic_nat_block_port_range , -1} ,
{ VENDOR_BROADBAND_FORUM, 32792 , "BBF Event Time Stamp" , dissect_pfcp_enterprise_bbf_event_time_stamp , -1} ,
};
/* Enterprise IE decoding Travelping */
@ -10589,6 +10837,7 @@ static pfcp_generic_ie_t pfcp_travelping_ies[] = {
{ VENDOR_TRAVELPING, 32775 , "Error Message" , dissect_pfcp_enterprise_travelping_error_message , -1} ,
{ VENDOR_TRAVELPING, 32776 , "File Name" , dissect_pfcp_enterprise_travelping_file_name , -1} ,
{ VENDOR_TRAVELPING, 32777 , "Line Number" , dissect_pfcp_enterprise_travelping_line_number , -1} ,
{ VENDOR_TRAVELPING, 32778 , "Created NAT Binding" , dissect_pfcp_grouped_ie_wrapper , -1} ,
{ VENDOR_TRAVELPING, 32779 , "IPFIX Policy" , dissect_pfcp_enterprise_travelping_ipfix_policy , -1} ,
{ VENDOR_TRAVELPING, 32780 , "Trace Information" , dissect_pfcp_grouped_ie_wrapper , -1} ,
{ VENDOR_TRAVELPING, 32781 , "Trace Parent" , dissect_pfcp_enterprise_travelping_trace_parent , -1} ,
@ -14978,6 +15227,21 @@ proto_register_pfcp(void)
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
"PPP LCP echo supported in DBNG-UP function", HFILL }
},
{ &hf_pfcp_bbf_up_function_features_o7_b5_iptv,
{ "IPTV", "pfcp.bbf.up_function_features.iptv",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
"DBNG-UP support of IP Multicast", HFILL }
},
{ &hf_pfcp_bbf_up_function_features_o7_b6_nat_cp,
{ "NAT-CP", "pfcp.bbf.up_function_features.nat_cp",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
"NAT function supported in DBNG-CP function", HFILL }
},
{ &hf_pfcp_bbf_up_function_features_o7_b7_nat_up,
{ "NAT-UP", "pfcp.bbf.up_function_features.nat_up",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
"NAT function supported in DBNG-UP function", HFILL }
},
{ &hf_pfcp_bbf_logical_port_id,
{ "Logical Port", "pfcp.bbf.logical_port_id",
@ -15125,6 +15389,116 @@ proto_register_pfcp(void)
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff,
{ "ROUTERALERTOFF", "pfcp.bbf.multicast_flags.routeralertoff",
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_flags_o7_b0_fastleave,
{ "FASTLEAVE", "pfcp.bbf.multicast_flags.fastleave",
FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_query_param_robustness,
{ "Robustness count", "pfcp.bbf.multicast_query_parameters.robustness_count",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_query_param_query_interval,
{ "Query interval", "pfcp.bbf.multicast_query_parameters.query_interval",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_query_param_query_response_interval,
{ "Query response interval", "pfcp.bbf.multicast_query_parameters.query_response_interval",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_query_param_group_query_interval,
{ "Group-specific query interval", "pfcp.bbf.multicast_query_parameters.group_specific_query_interval",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_multicast_group_limit_max_joins,
{ "Maximum number of concurrent (S,G) joins allowed", "pfcp.bbf.multicast_group_limit.max_joins",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_apply_action_flags_b0_nat,
{ "NAT", "pfcp.bbf.apply_action_flags.nat",
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_external_port_range,
{ "Port Range", "pfcp.bbf.nat_external_port_range",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_external_port_range_start,
{ "Start", "pfcp.bbf.nat_external_port_range.start",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_external_port_range_end,
{ "End", "pfcp.bbf.nat_external_port_range.end",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_port_forward,
{ "NAT Port Forward", "pfcp.bbf.nat_port_forward",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_port_forward_inside_ip,
{ "Inside Address", "pfcp.bbf.nat_port_forward.inside_address",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_port_forward_inside_port,
{ "Inside Port", "pfcp.bbf.nat_port_forward.inside_port",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_port_forward_outside_port,
{ "Outside Port", "pfcp.bbf.nat_port_forward.outside_port",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_nat_port_forward_protocol,
{ "Protocol", "pfcp.bbf.nat_port_forward.protocol",
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ipproto_val_ext, 0x0,
NULL , HFILL
}
},
{ &hf_pfcp_bbf_reporting_trigger,
{ "Reporting Trigger", "pfcp.bbf.reporting_trigger",
FT_UINT8, BASE_DEC, VALS(pfcp_bbf_reporting_trigger_vals), 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_dynamic_nat_block_port_range_start_port,
{ "Start", "pfcp.dynamic_nat_block_port_range.start",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_dynamic_nat_block_port_range_end_port,
{ "End", "pfcp.dynamic_nat_block_port_range.end",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_bbf_event_time_stamp,
{ "Event Time Stamp", "pfcp.bbf.event_time_stamp",
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_NTP_UTC, NULL, 0x0,
NULL, HFILL }
},
/* Travelping */
{ &hf_pfcp_enterprise_travelping_packet_measurement,
{ "Flags", "pfcp.travelping.volume_measurement",
@ -15800,7 +16174,8 @@ proto_register_pfcp(void)
&ett_pfcp_bbf_l2tp_type_flags,
&ett_pfcp_bbf_ppp_lcp_connectivity,
&ett_pfcp_bbf_l2tp_tunnel,
/* Nokia */
&ett_pfcp_bbf_nat_port_forward_list,
/* Nokia */
&ett_pfcp_nokia_detailed_stats_key,
&ett_pfcp_nokia_detailed_stats_bitmap,
&ett_pfcp_nokia_measurement_info,

View File

@ -5996,7 +5996,28 @@ dissect_ppp_raw_hdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
call_data_dissector(ppp_tvb, pinfo, tree);
}
}
/* These frames within the byte stream need to be treated like independent
* frames / PDUs, not encapsulated in each other, which means that much of
* the various information stored in the packet_info struct should be reset
* with each frame.
* In particular, the "most recent conservation" elements should be reset
* at the start of a new frame, if that frame is dissected, and possibly
* for fragments that are put on a reassembly table (if the reassembly
* functions use elements from the pinfo struct for matching). (#18278)
* On the other hand, we do want to keep the last set information for use
* in displaying the address of the packet, conversation filtering, etc.
*/
gboolean save_use_conv_addr_port_endpoints;
struct conversation_addr_port_endpoints *save_conv_addr_port_endpoints;
struct conversation_element *save_conv_elements;
save_use_conv_addr_port_endpoints = pinfo->use_conv_addr_port_endpoints;
save_conv_addr_port_endpoints = pinfo->conv_addr_port_endpoints;
save_conv_elements = pinfo->conv_elements;
while (tvb_reported_length_remaining(tvb, offset) > 0) {
/*
* Look for the next frame delimiter.
*/
@ -6051,6 +6072,9 @@ dissect_ppp_raw_hdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void*
if (length > 1) {
ppp_tvb = remove_escape_chars(tvb, pinfo, data_offset, data_length);
if (ppp_tvb != NULL) {
pinfo->use_conv_addr_port_endpoints = save_use_conv_addr_port_endpoints;
pinfo->conv_addr_port_endpoints = save_conv_addr_port_endpoints;
pinfo->conv_elements = save_conv_elements;
add_new_data_source(pinfo, ppp_tvb, "PPP Message");
dissect_ppp_hdlc_common(ppp_tvb, pinfo, tree);
first = FALSE;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-rspro.h */
/* asn2wrs.py -p rspro -c ./rspro.cnf -s ./packet-rspro-template -D . -O ../.. RSPRO.asn */
/* Input file: packet-rspro-template.h */
#line 1 "./asn1/rspro/packet-rspro-template.h"
/* packet-rspro.h
* Routines for RSPRO (remote SIM protocol) packet dissection
* (C) 2019 by Harald Welte <laforge@gnumonks.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PACKET_RSPRO_H
#define PACKET_RSPRO_H
#endif /* PACKET_RSPRO_H */

View File

@ -13663,6 +13663,7 @@ static gboolean dissect_rtps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
} /* dissect_rtps(...) */
static
void append_submessage_col_info(packet_info* pinfo, submessage_col_info* current_submessage_col_info) {
gboolean* is_data_session_intermediate = NULL;

View File

@ -74,6 +74,8 @@ static int st_smpp_res = -1;
static int st_smpp_res_status = -1;
static int hf_smpp_command_id = -1;
static int hf_smpp_command_request = -1;
static int hf_smpp_command_response = -1;
static int hf_smpp_command_length = -1;
static int hf_smpp_command_status = -1;
static int hf_smpp_sequence_number = -1;
@ -2497,18 +2499,25 @@ dissect_smpp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
* Create display subtree for the PDU
*/
proto_tree_add_uint(smpp_tree, hf_smpp_command_length, tvb, 0, 4, command_length);
if (command_id & SMPP_COMMAND_ID_RESPONSE_MASK) {
ti = proto_tree_add_boolean(smpp_tree, hf_smpp_command_response, tvb, 4, 4, TRUE);
}
else {
ti = proto_tree_add_boolean(smpp_tree, hf_smpp_command_request, tvb, 4, 4, TRUE);
}
proto_item_set_generated(ti);
proto_tree_add_uint(smpp_tree, hf_smpp_command_id, tvb, 4, 4, command_id);
proto_item_append_text(ti, ", Command: %s", command_str);
proto_item_append_text(smpp_tree, ", Command: %s", command_str);
/*
* Status is only meaningful with responses
*/
if (command_id & SMPP_COMMAND_ID_RESPONSE_MASK) {
proto_tree_add_uint(smpp_tree, hf_smpp_command_status, tvb, 8, 4, command_status);
proto_item_append_text (ti, ", Status: \"%s\"", command_status_str);
proto_item_append_text (smpp_tree, ", Status: \"%s\"", command_status_str);
}
proto_tree_add_uint(smpp_tree, hf_smpp_sequence_number, tvb, 12, 4, sequence_number);
proto_item_append_text(ti, ", Seq: %u, Len: %u", sequence_number, command_length);
proto_item_append_text(smpp_tree, ", Seq: %u, Len: %u", sequence_number, command_length);
if (command_length <= tvb_reported_length(tvb))
{
@ -2766,6 +2775,20 @@ proto_register_smpp(void)
HFILL
}
},
{ &hf_smpp_command_request,
{ "Request", "smpp.request",
FT_BOOLEAN, BASE_NONE, NULL, 0x00,
"TRUE if this is a SMPP request.",
HFILL
}
},
{ &hf_smpp_command_response,
{ "Response", "smpp.response",
FT_BOOLEAN, BASE_NONE, NULL, 0x00,
"TRUE if this is a SMPP response.",
HFILL
}
},
{ &hf_smpp_command_status,
{ "Result", "smpp.command_status",
FT_UINT32, BASE_HEX | BASE_RANGE_STRING, RVALS(rvals_command_status), 0x00,

View File

@ -1,7 +1,7 @@
/* packet-someip.c
* SOME/IP dissector.
* By Dr. Lars Voelker <lars.voelker@technica-engineering.de> / <lars.voelker@bmw.de>
* Copyright 2012-2022 Dr. Lars Voelker
* Copyright 2012-2023 Dr. Lars Voelker
* Copyright 2019 Ana Pantar
* Copyright 2019 Guenter Ebermann
*
@ -3661,8 +3661,7 @@ dissect_someip_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
}
static gboolean
test_someip(packet_info *pinfo _U_, tvbuff_t *tvb, int offset _U_, void *data _U_)
{
test_someip(packet_info *pinfo _U_, tvbuff_t *tvb, int offset _U_, void *data _U_) {
if (tvb_captured_length(tvb) < SOMEIP_HDR_LEN) {
return FALSE;
}
@ -3683,8 +3682,7 @@ test_someip(packet_info *pinfo _U_, tvbuff_t *tvb, int offset _U_, void *data _U
}
static gboolean
dissect_some_ip_heur_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
dissect_some_ip_heur_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
if (test_someip(pinfo, tvb, 0, data)) {
tcp_dissect_pdus(tvb, pinfo, tree, TRUE, SOMEIP_HDR_PART1_LEN, get_someip_message_len, dissect_someip_message, data);
return TRUE;
@ -3693,10 +3691,8 @@ dissect_some_ip_heur_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
}
static gboolean
dissect_some_ip_heur_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
udp_dissect_pdus(tvb, pinfo, tree, SOMEIP_HDR_PART1_LEN, test_someip, get_someip_message_len, dissect_someip_message, data);
return TRUE;
dissect_some_ip_heur_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
return (udp_dissect_pdus(tvb, pinfo, tree, SOMEIP_HDR_PART1_LEN, test_someip, get_someip_message_len, dissect_someip_message, data) != 0);
}
void

View File

@ -1000,9 +1000,8 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
timestamp.nsecs = (int)(ns % 1000000000);
ti = proto_tree_add_time(tree, hf_tecmp_payload_timestamp, tvb, offset + 4, 8, &timestamp);
subtree = proto_item_add_subtree(ti, ett_tecmp_payload_timestamp);
proto_tree_add_item_ret_boolean(subtree, hf_tecmp_payload_timestamp_async, tvb, offset + 4, 1,ENC_BIG_ENDIAN,
&async);
proto_tree_add_item(subtree, hf_tecmp_payload_timestamp_res, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
proto_tree_add_item_ret_boolean(subtree, hf_tecmp_payload_timestamp_async, tvb, offset + 4, 1, ENC_NA, &async);
proto_tree_add_item(subtree, hf_tecmp_payload_timestamp_res, tvb, offset + 4, 1, ENC_NA);
if (async) {
proto_item_append_text(ti, " (not synchronized)");
@ -1240,12 +1239,12 @@ dissect_tecmp_status_device_vendor_data(tvbuff_t *tvb, packet_info *pinfo _U_, p
tmp = tvb_get_guint16(tvb, offset, ENC_BIG_ENDIAN);
double voltage_value = (double)((tmp & 0x0000ff00) >> 8) + (tmp & 0x000000ff) / 100.0;
proto_tree_add_double(tree, hf_tecmp_payload_status_dev_vendor_technica_voltage, tvb, offset, 2, voltage_value);
/* we are adding the base unit manually since currently proto.c does not do this for doubles */
proto_tree_add_double_format_value(tree, hf_tecmp_payload_status_dev_vendor_technica_voltage, tvb, offset, 2, voltage_value, "%g %s", voltage_value, unit_name_string_get_double(voltage_value, &units_volt));
offset += 2;
if (tvb_captured_length_remaining(tvb, offset) == 1) {
ti = proto_tree_add_item(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature, tvb, offset, 1, ENC_NA);
proto_item_append_text(ti, "%s", UTF8_DEGREE_SIGN "C");
proto_tree_add_item(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature, tvb, offset, 1, ENC_NA);
} else if (tvb_captured_length_remaining(tvb, offset) > 1) {
/* TECMP 1.5 and later */
temperature = tvb_get_gint8(tvb, offset);
@ -1253,7 +1252,6 @@ dissect_tecmp_status_device_vendor_data(tvbuff_t *tvb, packet_info *pinfo _U_, p
proto_tree_add_int_format_value(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature_chassis, tvb, offset, 1, temperature, "%s", "Not Available");
} else {
ti = proto_tree_add_item(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature_chassis, tvb, offset, 1, ENC_NA);
proto_item_append_text(ti, "%s", UTF8_DEGREE_SIGN "C");
if (temperature == VENDOR_TECHNICA_TEMP_MAX) {
proto_item_append_text(ti, " %s", "or more");
}
@ -1265,7 +1263,6 @@ dissect_tecmp_status_device_vendor_data(tvbuff_t *tvb, packet_info *pinfo _U_, p
proto_tree_add_int_format_value(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature_silicon, tvb, offset, 1, temperature, "%s", "Not Available");
} else {
ti = proto_tree_add_item(tree, hf_tecmp_payload_status_dev_vendor_technica_temperature_silicon, tvb, offset, 1, ENC_NA);
proto_item_append_text(ti, "%s", UTF8_DEGREE_SIGN "C");
if (temperature == VENDOR_TECHNICA_TEMP_MAX) {
proto_item_append_text(ti, " %s", "or more");
}
@ -2069,16 +2066,16 @@ proto_register_tecmp_payload(void) {
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, NULL, HFILL } },
{ &hf_tecmp_payload_status_dev_vendor_technica_voltage,
{ "Voltage", "tecmp.payload.status_dev.vendor_technica.voltage",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_volt, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_tecmp_payload_status_dev_vendor_technica_temperature,
{ "Temperature", "tecmp.payload.status_dev.vendor_technica.temperature",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
FT_UINT8, BASE_DEC | BASE_UNIT_STRING, &units_degree_celsius, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_status_dev_vendor_technica_temperature_chassis,
{ "Temperature Chassis", "tecmp.payload.status_dev.vendor_technica.temperature_chassis",
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
FT_INT8, BASE_DEC | BASE_UNIT_STRING, &units_degree_celsius, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_status_dev_vendor_technica_temperature_silicon,
{ "Temperature Silicon", "tecmp.payload.status_dev.vendor_technica.temperature_silicon",
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
FT_INT8, BASE_DEC | BASE_UNIT_STRING, &units_degree_celsius, 0x0, NULL, HFILL }},
/* Status Bus Vendor Data */
{ &hf_tecmp_payload_status_bus_vendor_technica_link_status,

View File

@ -10773,7 +10773,7 @@ ssl_calculate_handshake_hash(SslDecryptSession *ssl_session, tvbuff_t *tvb, guin
guint32 old_length = ssl_session->handshake_data.data_len;
ssl_debug_printf("Calculating hash with offset %d %d\n", offset, length);
ssl_session->handshake_data.data = (guchar *)wmem_realloc(wmem_file_scope(), ssl_session->handshake_data.data, old_length + length);
if (tvb) {
if (tvb && tvb_bytes_exist(tvb, offset, length)) {
tvb_memcpy(tvb, ssl_session->handshake_data.data + old_length, offset, length);
} else {
memset(ssl_session->handshake_data.data + old_length, 0, length);

View File

@ -1166,7 +1166,7 @@ decrypt_ssl3_record(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, SslDecryp
gboolean success;
gint direction;
StringInfo *data_for_iv;
gint data_for_iv_len;
gint data_for_iv_len, data_for_iv_offset;
SslDecoder *decoder;
/* if we can decrypt and decryption was a success
@ -1188,7 +1188,12 @@ decrypt_ssl3_record(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, SslDecryp
/* save data to update IV if decoder is available or updated later */
data_for_iv = (direction != 0) ? &ssl->server_data_for_iv : &ssl->client_data_for_iv;
data_for_iv_len = (record_length < 24) ? record_length : 24;
ssl_data_set(data_for_iv, (const guchar*)tvb_get_ptr(tvb, offset + record_length - data_for_iv_len, data_for_iv_len), data_for_iv_len);
data_for_iv_offset = offset + record_length - data_for_iv_len;
if (!tvb_bytes_exist(tvb, data_for_iv_offset, data_for_iv_len)) {
ssl_debug_printf("decrypt_ssl3_record: record truncated\n");
return FALSE;
}
ssl_data_set(data_for_iv, (const guchar*)tvb_get_ptr(tvb, data_for_iv_offset, data_for_iv_len), data_for_iv_len);
if (!decoder) {
ssl_debug_printf("decrypt_ssl3_record: no decoder available\n");

View File

@ -0,0 +1,294 @@
/* packet-trdp.c
* Routines for TRDP dissection
* Copyright 2020, EKE-Electronics Ltd, Kalle Pokki <kalle.pokki@eke.fi>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
/*
* The Train Real-Time Data Protocol (TRDP) is defined in IEC 61375-2-3. The
* protocol is used to exchange Train Communication Network (TCN) process data
* and message data.
*
* NOTE: Message data support incomplete.
*/
#include <config.h>
#include <epan/packet.h>
void proto_reg_handoff_trdp(void);
void proto_register_trdp(void);
/* Initialize the protocol and registered fields */
static int proto_trdp = -1;
static int hf_trdp_seq = -1;
static int hf_trdp_ver = -1;
static int hf_trdp_msgtype = -1;
static int hf_trdp_comid = -1;
static int hf_trdp_etb_topo = -1;
static int hf_trdp_oper_topo = -1;
static int hf_trdp_len = -1;
static int hf_trdp_res = -1;
static int hf_trdp_reply_comid = -1;
static int hf_trdp_reply_ipaddr = -1;
static int hf_trdp_header_fcs = -1;
static int hf_trdp_padding = -1;
static int hf_trdp_reply_status = -1;
static int hf_trdp_session_id = -1;
static int hf_trdp_reply_timeout = -1;
static int hf_trdp_source_uri = -1;
static int hf_trdp_dest_uri = -1;
#define TRDP_PD_UDP_PORT 17224
#define TRDP_MD_TCP_UDP_PORT 17225
#define TRDP_PD_HEADER_LEN 40
#define TRDP_MD_HEADER_LEN 116
/* Initialize the subtree pointers */
static gint ett_trdp = -1;
/* Initialize dissector table */
static dissector_table_t trdp_dissector_table;
static dissector_handle_t data_handle;
/* Message type names */
static const value_string msgtype_names[] = {
{ 0x4d63, "Message Data Confirm" },
{ 0x4d65, "Message Data Error" },
{ 0x4d6e, "Message Data Notification (request without reply)" },
{ 0x4d70, "Message Data Reply without Confirmation" },
{ 0x4d71, "Message Data Reply with Confirmation" },
{ 0x4d72, "Message Data Request" },
{ 0x5064, "Process Data" },
{ 0x5065, "Process Data Error" },
{ 0x5070, "Process Data Reply" },
{ 0x5072, "Process Data Request" },
{ 0, NULL }
};
static const value_string msgtype_names_short[] = {
{ 0x4d63, "Mc" },
{ 0x4d65, "Me" },
{ 0x4d6e, "Mn" },
{ 0x4d70, "Mp" },
{ 0x4d71, "Mq" },
{ 0x4d72, "Mr" },
{ 0x5064, "Pd" },
{ 0x5065, "Pe" },
{ 0x5070, "Pp" },
{ 0x5072, "Pr" },
{ 0, NULL }
};
/* Communication identifier names */
static const value_string comid_names[] = {
{ 100, "Operational train directory status" },
{ 101, "Operational train directory notification" },
{ 106, "Train network directory information request" },
{ 107, "Train network directory information reply" },
{ 108, "Operational train directory information request" },
{ 109, "Operational train directory information reply" },
{ 120, "ECSP control telegram" },
{ 121, "ECSP status telegram" },
{ 132, "ETBN - Train network directory request" },
{ 133, "ETBN - Train network directory reply" },
{ 2204160, "EKE Modular I/O state" },
{ 2204161, "EKE Modular I/O control" },
{ 0, NULL }
};
/* Reply status indication names
* Signed int: <0: NOK; 0: OK; >0: user reply status */
static const value_string reply_status_names[] = {
{ -1, "Reserved" },
{ -2, "Session abort" },
{ -3, "No replier instance (at replier side)" },
{ -4, "No memory (at replier side)" },
{ -5, "No memory (local)" },
{ -6, "No reply" },
{ -7, "Not all replies" },
{ -8, "No confirm" },
{ -9, "Reserved" },
{ -10, "Sending failed" },
{ 0, "Ok" },
{ 0, NULL }
};
static inline int is_pd(guint16 msgtype)
{
return (msgtype & 0xff00) == 0x5000; // 'P'
}
static int dissect_trdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
proto_item *ti;
proto_tree *trdp_tree;
guint16 ver;
guint32 remaining, datalen, seq, comid, etb_topo, opr_topo, msgtype, header_len;
tvbuff_t *next_tvb;
if (tvb_reported_length(tvb) < TRDP_PD_HEADER_LEN)
return 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "TRDP");
col_clear(pinfo->cinfo, COL_INFO);
header_len = is_pd(tvb_get_guint16(tvb, 6, ENC_BIG_ENDIAN)) ? TRDP_PD_HEADER_LEN : TRDP_MD_HEADER_LEN;
/* Create display subtree for the protocol */
ti = proto_tree_add_item(tree, proto_trdp, tvb, 0, header_len, ENC_NA);
trdp_tree = proto_item_add_subtree(ti, ett_trdp);
/* Add items to the subtree */
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_seq, tvb, 0, 4, ENC_BIG_ENDIAN, &seq);
ver = tvb_get_guint16(tvb, 4, ENC_BIG_ENDIAN);
proto_tree_add_uint_format_value(trdp_tree, hf_trdp_ver, tvb, 4, 2, 0, "%d.%d", ver >> 8, ver & 0xff);
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_msgtype, tvb, 6, 2, ENC_BIG_ENDIAN, &msgtype);
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_comid, tvb, 8, 4, ENC_BIG_ENDIAN, &comid);
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_etb_topo, tvb, 12, 4, ENC_BIG_ENDIAN, &etb_topo);
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_oper_topo, tvb, 16, 4, ENC_BIG_ENDIAN, &opr_topo);
proto_tree_add_item_ret_uint(trdp_tree, hf_trdp_len, tvb, 20, 4, ENC_BIG_ENDIAN, &datalen);
if ( is_pd(msgtype) ) {
proto_tree_add_item(trdp_tree, hf_trdp_res, tvb, 24, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(trdp_tree, hf_trdp_reply_comid, tvb, 28, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(trdp_tree, hf_trdp_reply_ipaddr, tvb, 32, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(trdp_tree, hf_trdp_header_fcs, tvb, 36, 4, ENC_BIG_ENDIAN);
} else {
proto_tree_add_item(trdp_tree, hf_trdp_reply_status, tvb, 24, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(trdp_tree, hf_trdp_session_id, tvb, 28, 16, ENC_BIG_ENDIAN);
guint32 reply_timeout = tvb_get_guint32(tvb, 44, ENC_BIG_ENDIAN);
proto_tree_add_uint_format_value(trdp_tree, hf_trdp_reply_timeout, tvb, 44, 4, 0, "%d usec", reply_timeout);
proto_tree_add_item(trdp_tree, hf_trdp_source_uri, tvb, 48, 32, ENC_ASCII);
proto_tree_add_item(trdp_tree, hf_trdp_dest_uri, tvb, 80, 32, ENC_ASCII);
proto_tree_add_item(trdp_tree, hf_trdp_header_fcs, tvb, 112, 4, ENC_BIG_ENDIAN);
}
/* Append descriptions */
proto_item_append_text(ti, ", Type: %s, Comid: %d, Seq: %d, ETB Topo: 0x%08x, Opr Topo: 0x%08x", val_to_str(msgtype, msgtype_names_short, "0x%x"), comid, seq, etb_topo, opr_topo);
col_add_fstr(pinfo->cinfo, COL_INFO, "Type=%s Comid=%d Seq=%d", val_to_str(msgtype, msgtype_names_short, "0x%x"), comid, seq);
/* Extract possible padding */
remaining = tvb_captured_length_remaining(tvb, header_len);
if (remaining - datalen > 0)
{
proto_tree_add_item(trdp_tree, hf_trdp_padding, tvb, header_len+datalen, -1, ENC_NA);
proto_tree_set_appendix(trdp_tree, tvb, header_len+datalen, remaining-datalen);
}
/* If this protocol has a sub-dissector call it here, see section 1.8 of
* README.dissector for more information. */
next_tvb = tvb_new_subset_length(tvb, header_len, datalen);
if (!dissector_try_uint(trdp_dissector_table, comid, next_tvb, pinfo, tree))
{
call_dissector(data_handle, next_tvb, pinfo, tree);
}
/* Return the amount of data this dissector was able to dissect (which may
* or may not be the total captured packet as we return here). */
return tvb_captured_length(tvb);
}
void proto_register_trdp(void)
{
static hf_register_info hf[] = {
/* PD header */
{ &hf_trdp_seq,
{ "Sequence Counter", "trdp.seq", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_ver,
{ "Protocol Version", "trdp.ver", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_msgtype,
{ "Message Type", "trdp.msgtype", FT_UINT16, BASE_HEX, VALS(msgtype_names), 0, NULL, HFILL }
},
{ &hf_trdp_comid,
{ "Communication Identifier", "trdp.comid", FT_UINT32, BASE_DEC, VALS(comid_names), 0, NULL, HFILL }
},
{ &hf_trdp_etb_topo,
{ "ETB Topography Counter", "trdp.etb_topo", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_oper_topo,
{ "Operational Topography Counter", "trdp.oper_topo", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_len,
{ "Dataset Length", "trdp.len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_res,
{ "Reserved", "trdp.res", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_reply_comid,
{ "Reply Communication Identifier", "trdp.reply_comid", FT_UINT32, BASE_DEC, VALS(comid_names), 0, NULL, HFILL }
},
{ &hf_trdp_reply_ipaddr,
{ "Reply IP address", "trdp.reply_ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_header_fcs,
{ "Header FCS", "trdp.fcs", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_padding,
{ "Padding", "trdp.padding", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }
},
/* MD Header */
{ &hf_trdp_reply_status,
{ "Reply Status Indication", "trdp.reply_status", FT_INT32, BASE_DEC, VALS(reply_status_names), 0, NULL, HFILL }
},
{ &hf_trdp_session_id,
{ "Session UUID", "trdp.session_id", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_reply_timeout,
{ "Reply Timeout", "trdp.reply_timeout", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
},
{ &hf_trdp_source_uri,
{ "Source URI", "trdp.source_uri", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_trdp_dest_uri,
{ "Destination URI", "trdp.dest_uri", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL }
}
};
/* Setup protocol subtree array */
static gint *ett[] = {
&ett_trdp
};
/* Register the protocol name and description */
proto_trdp = proto_register_protocol("Train Realtime Data Protocol", "TRDP", "trdp");
/* Required function calls to register the header fields and subtrees */
proto_register_field_array(proto_trdp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* Register next dissector */
trdp_dissector_table = register_dissector_table("trdp.comid", "comid", proto_trdp, FT_UINT32, BASE_DEC);
}
void proto_reg_handoff_trdp(void)
{
static dissector_handle_t trdp_handle;
trdp_handle = create_dissector_handle(dissect_trdp, proto_trdp);
dissector_add_uint("udp.port", TRDP_PD_UDP_PORT, trdp_handle);
dissector_add_uint("udp.port", TRDP_MD_TCP_UDP_PORT, trdp_handle);
data_handle = find_dissector_add_dependency("data", proto_trdp);
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/

File diff suppressed because it is too large Load Diff

View File

@ -2229,15 +2229,14 @@ dissect_usbll_handshake(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *t
usbll_transfer_info_t *transfer;
guint32 last_offset;
gboolean from_host;
gboolean reassembled;
from_host = usbll_is_stalled_data_from_host(data->transaction_state);
ep_info = usbll_get_endpoint_info(pinfo, data->transaction->address, data->transaction->endpoint, from_host);
last_offset = ep_info->transfer_offset - ep_info->last_data_len;
reassembled = packet_ends_transfer(ep_info, last_offset, ep_info->last_data_len);
if (ep_info->active_transfer_key && !reassembled)
if (ep_info->active_transfer_key &&
!packet_ends_transfer(ep_info, last_offset, ep_info->last_data_len))
{
/* STALL terminates ongoing transfer. While the STALL packet is
* always sent by device, the transfer can be either IN or OUT.

View File

@ -2358,7 +2358,6 @@ vnc_rre_encoding(tvbuff_t *tvb, packet_info *pinfo, gint *offset,
return(0);
}
*offset += 2;
VNC_BYTES_NEEDED(bytes_per_pixel);
proto_tree_add_item(tree, hf_vnc_rre_bg_pixel, tvb, *offset,
bytes_per_pixel, ENC_NA);

View File

@ -0,0 +1,171 @@
/* packet-vsmartcard.c
* Routines for packet dissection of vsmartcard VPCD/VPICC protocol
* Copyright 2019 by Harald Welte <laforge@gnumonks.org>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/prefs.h>
void proto_register_vsmartcard(void);
void proto_reg_handoff_vsmartcard(void);
/*
* Protocol used by Frank Morgners vsmartcard VPICC + VPCD
*
* https://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html
*/
/*
* These ports are not registered for other protocols, as per
* http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
*
* But, as that document says:
*
************************************************************************
* PLEASE NOTE THE FOLLOWING: *
* *
* ASSIGNMENT OF A PORT NUMBER DOES NOT IN ANY WAY IMPLY AN *
* ENDORSEMENT OF AN APPLICATION OR PRODUCT, AND THE FACT THAT NETWORK *
* TRAFFIC IS FLOWING TO OR FROM A REGISTERED PORT DOES NOT MEAN THAT *
* IT IS "GOOD" TRAFFIC, NOR THAT IT NECESSARILY CORRESPONDS TO THE *
* ASSIGNED SERVICE. FIREWALL AND SYSTEM ADMINISTRATORS SHOULD *
* CHOOSE HOW TO CONFIGURE THEIR SYSTEMS BASED ON THEIR KNOWLEDGE OF *
* THE TRAFFIC IN QUESTION, NOT WHETHER THERE IS A PORT NUMBER *
* REGISTERED OR NOT. *
************************************************************************
*/
#define VSMARTCARD_TCP_PORTS "35963,35964"
static dissector_handle_t vsmartcard_tcp_handle;
//static gboolean global_ipa_in_root = FALSE;
//static gboolean global_ipa_in_info = FALSE;
/* Initialize the protocol and registered fields */
static int proto_vsmartcard = -1;
static int hf_vsmartcard_len = -1;
static int hf_vsmartcard_cmd = -1;
static int hf_vsmartcard_data = -1;
/* Initialize the subtree pointers */
static gint ett_vsmartcard = -1;
static dissector_handle_t sub_handle_simcard;
static const value_string vsmartcard_cmd_vals[] = {
{ 0x00, "OFF" },
{ 0x01, "ON" },
{ 0x02, "RESET" },
{ 0x04, "ATR" },
{ 0, NULL }
};
/* Code to actually dissect the packets */
static int
dissect_vsmartcard(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
gint remaining;
const gint header_length = 2;
int offset = 0;
guint16 len;
if (tvb_reported_length(tvb) < 3)
return 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "vsmartcard");
col_clear(pinfo->cinfo, COL_INFO);
while ((remaining = tvb_reported_length_remaining(tvb, offset)) > 0) {
proto_item *ti;
proto_tree *vsmartcard_tree = NULL;
tvbuff_t *next_tvb;
len = tvb_get_ntohs(tvb, offset);
if ((guint) tvb_reported_length(tvb) < (guint) len + header_length)
return 0;
ti = proto_tree_add_protocol_format(tree, proto_vsmartcard,
tvb, offset, len+header_length, "vsmartcard protocol");
vsmartcard_tree = proto_item_add_subtree(ti, ett_vsmartcard);
proto_tree_add_item(vsmartcard_tree, hf_vsmartcard_len,
tvb, offset, 2, ENC_BIG_ENDIAN);
if (len == 1) {
proto_tree_add_item(vsmartcard_tree, hf_vsmartcard_cmd,
tvb, offset, 1, ENC_NA);
} else {
next_tvb = tvb_new_subset_length(tvb, offset+header_length, len);
call_dissector(sub_handle_simcard, next_tvb, pinfo, tree);
}
offset += len + header_length;
}
return tvb_captured_length(tvb);
}
void proto_register_vsmartcard(void)
{
//module_t *vsmartcard_module;
static hf_register_info hf[] = {
{&hf_vsmartcard_len,
{"Length", "vsmartcard.length",
FT_UINT16, BASE_DEC, NULL, 0x0,
"The length of the data (in bytes)", HFILL}
},
{&hf_vsmartcard_cmd,
{"Command", "vsmartcard.command",
FT_UINT8, BASE_HEX, VALS(vsmartcard_cmd_vals), 0x0,
NULL, HFILL}
},
{&hf_vsmartcard_data,
{"Data", "vsmartcard.data",
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}
},
};
static gint *ett[] = {
&ett_vsmartcard,
};
proto_vsmartcard = proto_register_protocol("Smartcard (ISO7816) over TCP", "vsmartcard", "vsmartcard");
proto_register_field_array(proto_vsmartcard, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
#if 0
vsmartcard_module = prefs_register_protocol(proto_vsmartcard, NULL);
prefs_register_bool_preference(vsmartcard_module, "hsl_debug_in_root_tree",
"HSL Debug messages in root protocol tree",
NULL, &global_ipa_in_root);
prefs_register_bool_preference(vsmartcard_module, "hsl_debug_in_info",
"HSL Debug messages in INFO column",
NULL, &global_ipa_in_info);
#endif
}
void proto_reg_handoff_vsmartcard(void)
{
sub_handle_simcard = find_dissector_add_dependency("gsm_sim", proto_vsmartcard);
vsmartcard_tcp_handle = create_dissector_handle(dissect_vsmartcard, proto_vsmartcard);
dissector_add_uint_range_with_preference("tcp.port", VSMARTCARD_TCP_PORTS, vsmartcard_tcp_handle);
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 8
* tab-width: 8
* indent-tabs-mode: t
* End:
*
* vi: set shiftwidth=8 tabstop=8 noexpandtab:
* :indentSize=8:tabSize=8:noTabs=false:
*/

View File

@ -3,6 +3,7 @@
* Wi-SUN IE Dissectors for Wireshark
* By Owen Kirby <osk@exegin.com>
* Copyright 2007 Exegin Technologies Limited
* Copyright 2022-2023 Silicon Laboratories Inc.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*------------------------------------------------------------
@ -13,6 +14,8 @@
#include <epan/proto_data.h>
#include <wsutil/pint.h>
#include <epan/reassemble.h>
#include <epan/oids.h>
#include <epan/oui.h>
#include "packet-ieee802154.h"
@ -75,6 +78,8 @@ static reassembly_table netricity_reassembly_table;
#define WISUN_PIE_SUBID_LCP 0x04
#define WISUN_PIE_SUBID_LFNVER 0x40
#define WISUN_PIE_SUBID_LGTKHASH 0x41
#define WISUN_PIE_SUBID_LBATS 0x09
#define WISUN_PIE_SUBID_JM 0x0a
#define WISUN_LGTKHASH_LGTK0_INCLUDED_MASK 0x01
#define WISUN_LGTKHASH_LGTK1_INCLUDED_MASK 0x02
@ -109,6 +114,12 @@ static reassembly_table netricity_reassembly_table;
#define WISUN_PIE_PHY_OPERATING_MODES_MASK 0x0F
#define WISUN_PIE_PHY_TYPE 0xF0
#define WISUN_PIE_JM_ID_PLF 1
#define WISUN_PIE_JM_ID_MASK 0xfc
#define WISUN_PIE_JM_LEN_MASK 0x03
#define WISUN_CMD_MDR 0x03
static int proto_wisun = -1;
static int hf_wisun_subid = -1;
static int hf_wisun_unknown_ie = -1;
@ -139,7 +150,6 @@ static int hf_wisun_lbtie_slot = -1;
static int hf_wisun_lbtie_bio = -1;
static int hf_wisun_nrie = -1;
static int hf_wisun_nrie_nr_id = -1;
static int hf_wisun_nrie_listening_type = -1;
static int hf_wisun_nrie_timing_accuracy = -1;
static int hf_wisun_nrie_listening_interval_min = -1;
static int hf_wisun_nrie_listening_interval_max = -1;
@ -244,6 +254,17 @@ static int hf_wisun_lgtkhashie_flag_active_lgtk_index = -1;
static int hf_wisun_lgtkhashie_gtk0 = -1;
static int hf_wisun_lgtkhashie_gtk1 = -1;
static int hf_wisun_lgtkhashie_gtk2 = -1;
static int hf_wisun_lbatsie = -1;
static int hf_wisun_lbatsie_additional_tx = -1;
static int hf_wisun_lbatsie_next_tx_delay = -1;
static int hf_wisun_jmie = -1;
static int hf_wisun_jmie_version = -1;
static int hf_wisun_jmie_metric_hdr = -1;
static int hf_wisun_jmie_metric_id = -1;
static int hf_wisun_jmie_metric_len = -1;
static int hf_wisun_jmie_metric_plf = -1;
static int hf_wisun_jmie_metric_plf_data = -1;
static int hf_wisun_jmie_metric_unknown = -1;
static int proto_wisun_sec = -1;
static int hf_wisun_sec_function = -1;
@ -257,6 +278,12 @@ static int hf_wisun_eapol_relay_sup = -1;
static int hf_wisun_eapol_relay_kmp_id = -1;
static int hf_wisun_eapol_relay_direction = -1;
static int hf_wisun_cmd_subid = -1;
static int hf_wisun_cmd_mdr_phy_mode_id = -1;
static int hf_wisun_cmd_mdr_phy_type = -1;
static int hf_wisun_cmd_mdr_phy_mode_fsk = -1;
static int hf_wisun_cmd_mdr_phy_mode_ofdm = -1;
// Netricity
static int proto_wisun_netricity_sc;
static int hf_wisun_netricity_nftie = -1;
@ -283,6 +310,7 @@ static int hf_wisun_netricity_scr_segment_count = -1;
static int hf_wisun_netricity_scr_reassembled_in = -1;
static int hf_wisun_netricity_scr_reassembled_length = -1;
static gint ett_wisun_phy_mode_id = -1;
static gint ett_wisun_unknown_ie = -1;
static gint ett_wisun_uttie = -1;
static gint ett_wisun_btie = -1;
@ -315,10 +343,14 @@ static gint ett_wisun_panverie = -1;
static gint ett_wisun_gtkhashie = -1;
static gint ett_wisun_pomie = -1;
static gint ett_wisun_pomie_hdr = -1;
static gint ett_wisun_pomie_phy_mode_id = -1;
static gint ett_wisun_lfnverie = -1;
static gint ett_wisun_lgtkhashie = -1;
static gint ett_wisun_lgtkhashie_flags = -1;
static gint ett_wisun_lbatsie = -1;
static gint ett_wisun_jmie = -1;
static gint ett_wisun_jmie_metric_hdr = -1;
static gint ett_wisun_jmie_metric_plf = -1;
static gint ett_wisun_jmie_metric_unknown = -1;
static gint ett_wisun_sec = -1;
static gint ett_wisun_eapol_relay = -1;
// Netricity
@ -402,6 +434,8 @@ static const value_string wisun_wsie_names_short[] = {
{ WISUN_PIE_SUBID_POM, "PHY Operating Modes IE" },
{ WISUN_PIE_SUBID_LFNVER, "LFN Version IE" },
{ WISUN_PIE_SUBID_LGTKHASH, "LFN GTK Hash IE" },
{ WISUN_PIE_SUBID_LBATS, "LFN Broadcast Additional Transmit Schedule IE" },
{ WISUN_PIE_SUBID_JM, "Join Metrics IE" },
{ 0, NULL }
};
@ -520,6 +554,19 @@ static const value_string wisun_window_style[] = {
{ 0, NULL }
};
static const value_string wisun_metric_id[] = {
{ WISUN_PIE_JM_ID_PLF, "PAN Load Factor" },
{ 0, NULL }
};
static const value_string wisun_metric_len[] = {
{ 0, "0" },
{ 1, "1" },
{ 2, "2" },
{ 3, "4" },
{ 0, NULL }
};
static const value_string wisun_sec_functions[] = {
{ 0x01, "SM Error" },
{ 0, NULL }
@ -582,9 +629,9 @@ static const range_string wisun_phy_mode_ofdm_vals[] = {
{ 0, 0, NULL }
};
static const true_false_string wisun_wsie_listening_type_tfs = {
"Semi-synchronized Listening Type",
"Coordinated Sample Listening"
static const value_string wisun_cmd_vals[] = {
{ 3, "MDR Command" },
{ 0, NULL }
};
static const true_false_string wisun_netricity_sc_contention_control_tfs = {
@ -611,6 +658,7 @@ static expert_field ei_wisun_wsie_unsupported = EI_INIT;
static expert_field ei_wisun_usie_channel_plan_invalid = EI_INIT;
static expert_field ei_wisun_edfe_start_not_found = EI_INIT;
static expert_field ei_wisun_usie_explicit_reserved_bits_not_zero = EI_INIT;
static expert_field ei_wisun_jmie_metric_unsupported = EI_INIT;
static guint
wisun_add_wbxml_uint(tvbuff_t *tvb, proto_tree *tree, int hf, guint offset)
@ -626,6 +674,33 @@ wisun_add_wbxml_uint(tvbuff_t *tvb, proto_tree *tree, int hf, guint offset)
return len;
}
static void
wisun_add_phy_mode_id(tvbuff_t *tvb, proto_tree *tree,
const guint offset, const int hf, int *const hf_type,
int *const hf_fsk, int *const hf_ofdm)
{
guint8 phy_type = (tvb_get_guint8(tvb, offset) & WISUN_PIE_PHY_TYPE) >> 4;
int *const wisun_phy_mode_fsk_fields[] = {
hf_type,
hf_fsk,
NULL
};
int *const wisun_phy_mode_ofdm_fields[] = {
hf_type,
hf_ofdm,
NULL
};
if (phy_type < 2) {
// 0 and 1 are FSK modes
proto_tree_add_bitmask(tree, tvb, offset, hf, ett_wisun_phy_mode_id, wisun_phy_mode_fsk_fields, ENC_NA);
} else {
// The rest are OFDM modes
proto_tree_add_bitmask(tree, tvb, offset, hf, ett_wisun_phy_mode_id, wisun_phy_mode_ofdm_fields, ENC_NA);
}
}
/*-----------------------------------------------
* Wi-SUN Header IE Dissection
*---------------------------------------------*/
@ -776,10 +851,6 @@ dissect_wisun_nrie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guin
guint8 node_role = tvb_get_guint8(tvb, offset) & WISUN_WSIE_NODE_ROLE_MASK;
proto_tree_add_item(tree, hf_wisun_nrie_nr_id, tvb, offset, 1, ENC_LITTLE_ENDIAN);
if (node_role == WISUN_WSIE_NODE_ROLE_ID_LFN) {
proto_tree_add_item(tree, hf_wisun_nrie_listening_type, tvb, offset, 1, ENC_LITTLE_ENDIAN);
}
offset++;
proto_tree_add_item(tree, hf_wisun_usie_clock_drift, tvb, offset, 1, ENC_LITTLE_ENDIAN);
@ -1319,18 +1390,6 @@ dissect_wisun_pomie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, voi
NULL
};
static int* const wisun_pomie_phy_mode_fsk_fields[] = {
&hf_wisun_pomie_phy_type,
&hf_wisun_pomie_phy_mode_fsk,
NULL
};
static int* const wisun_pomie_phy_mode_ofdm_fields[] = {
&hf_wisun_pomie_phy_type,
&hf_wisun_pomie_phy_mode_ofdm,
NULL
};
item = proto_tree_add_item(tree, hf_wisun_pomie, tvb, 0, tvb_reported_length(tvb), ENC_NA);
subtree = proto_item_add_subtree(item, ett_wisun_pomie);
@ -1342,15 +1401,8 @@ dissect_wisun_pomie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, voi
offset++;
for (guint8 i = 0; i < number_operating_modes; i++) {
guint8 phy_type = (tvb_get_guint8(tvb, offset) & WISUN_PIE_PHY_TYPE) >> 4;
if (phy_type < 2) {
// 0 and 1 are FSK modes
proto_tree_add_bitmask(subtree, tvb, offset, hf_wisun_pomie_phy_mode_id, ett_wisun_pomie_phy_mode_id, wisun_pomie_phy_mode_fsk_fields, ENC_NA);
} else {
// The rest are OFDM modes
proto_tree_add_bitmask(subtree, tvb, offset, hf_wisun_pomie_phy_mode_id, ett_wisun_pomie_phy_mode_id, wisun_pomie_phy_mode_ofdm_fields, ENC_NA);
}
wisun_add_phy_mode_id(tvb, tree, offset, hf_wisun_pomie_phy_mode_id, &hf_wisun_pomie_phy_type,
&hf_wisun_pomie_phy_mode_fsk, &hf_wisun_pomie_phy_mode_ofdm);
offset++;
}
@ -1419,6 +1471,74 @@ dissect_wisun_lgtkhashie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
static int
dissect_wisun_lbatsie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
guint8 offset = 0;
proto_item *item;
proto_tree *subtree;
item = proto_tree_add_item(tree, hf_wisun_lbatsie, tvb, 0, tvb_reported_length(tvb), ENC_NA);
subtree = proto_item_add_subtree(item, ett_wisun_lbatsie);
proto_tree_add_bitmask(subtree, tvb, offset, hf_wisun_wsie, ett_wisun_wsie_bitmap, wisun_format_nested_ie_short, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(subtree, hf_wisun_lbatsie_additional_tx, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
proto_tree_add_item(subtree, hf_wisun_lbatsie_next_tx_delay, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
return offset;
}
static int
dissect_wisun_jmie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
static int * const fields_jmie_metric_hdr[] = {
&hf_wisun_jmie_metric_id,
&hf_wisun_jmie_metric_len,
NULL
};
guint8 offset = 0;
proto_item *item;
proto_tree *subtree;
item = proto_tree_add_item(tree, hf_wisun_jmie, tvb, 0, tvb_reported_length(tvb), ENC_NA);
subtree = proto_item_add_subtree(item, ett_wisun_jmie);
proto_tree_add_bitmask(subtree, tvb, offset, hf_wisun_wsie, ett_wisun_wsie_bitmap, wisun_format_nested_ie_short, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(subtree, hf_wisun_jmie_version, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
while (tvb_reported_length_remaining(tvb, offset) > 0) {
guint8 metric_hdr = tvb_get_guint8(tvb, offset);
guint8 metric_len = metric_hdr & WISUN_PIE_JM_LEN_MASK;
proto_tree *metric_subtree;
if (metric_len == 3)
metric_len = 4;
switch ((metric_hdr & WISUN_PIE_JM_ID_MASK) >> 2) {
case WISUN_PIE_JM_ID_PLF:
item = proto_tree_add_item(subtree, hf_wisun_jmie_metric_plf, tvb, offset, 1 + metric_len, ENC_NA);
metric_subtree = proto_item_add_subtree(item, ett_wisun_jmie_metric_plf);
proto_tree_add_bitmask(metric_subtree, tvb, offset, hf_wisun_jmie_metric_hdr, ett_wisun_jmie_metric_hdr, fields_jmie_metric_hdr, ENC_NA);
offset += 1;
proto_tree_add_item(metric_subtree, hf_wisun_jmie_metric_plf_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
break;
default:
item = proto_tree_add_item(subtree, hf_wisun_jmie_metric_unknown, tvb, offset, 1 + metric_len, ENC_NA);
metric_subtree = proto_item_add_subtree(item, ett_wisun_jmie_metric_unknown);
proto_tree_add_bitmask(metric_subtree, tvb, offset, hf_wisun_jmie_metric_hdr, ett_wisun_jmie_metric_hdr, fields_jmie_metric_hdr, ENC_NA);
offset += 1;
expert_add_info(pinfo, metric_subtree, &ei_wisun_jmie_metric_unsupported);
call_data_dissector(tvb_new_subset_length(tvb, offset, metric_len), pinfo, metric_subtree);
break;
}
offset += metric_len;
}
return offset;
}
static int
dissect_wisun_pie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ies_tree, void *data)
{
@ -1482,6 +1602,12 @@ dissect_wisun_pie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ies_tree, void
case WISUN_PIE_SUBID_LGTKHASH:
dissect_wisun_lgtkhashie(wsie_tvb, pinfo, tree, data);
break;
case WISUN_PIE_SUBID_LBATS:
dissect_wisun_lbatsie(wsie_tvb, pinfo, tree, data);
break;
case WISUN_PIE_SUBID_JM:
dissect_wisun_jmie(wsie_tvb, pinfo, tree, data);
break;
default:{
proto_item *item = proto_tree_add_item(tree, hf_wisun_unknown_ie, wsie_tvb, 0, tvb_reported_length(wsie_tvb), ENC_NA);
proto_tree *subtree = proto_item_add_subtree(item, ett_wisun_unknown_ie);
@ -1497,6 +1623,30 @@ dissect_wisun_pie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ies_tree, void
return offset;
}
static int
dissect_wisun_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
guint8 offset = 0;
guint8 cmd_subid;
cmd_subid = tvb_get_guint8(tvb, offset);
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Wi-SUN");
col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(cmd_subid, wisun_cmd_vals, "Unknown Wi-SUN MAC Command"));
proto_tree_add_item(tree, hf_wisun_cmd_subid, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
switch (cmd_subid) {
case WISUN_CMD_MDR:
wisun_add_phy_mode_id(tvb, tree, offset, hf_wisun_cmd_mdr_phy_mode_id, &hf_wisun_cmd_mdr_phy_type,
&hf_wisun_cmd_mdr_phy_mode_fsk, &hf_wisun_cmd_mdr_phy_mode_ofdm);
break;
default:
call_data_dissector(tvb_new_subset_remaining(tvb, offset), pinfo, tree);
break;
}
return offset;
}
/*-----------------------------------------------
* Wi-SUN FAN Security Extensions Dissection
*---------------------------------------------*/
@ -1790,10 +1940,6 @@ void proto_register_wisun(void)
NULL, HFILL }
},
{ &hf_wisun_nrie_listening_type,
{ "Listening Type", "wisun.nrie.listening_type", FT_BOOLEAN, BASE_NONE, TFS(&wisun_wsie_listening_type_tfs), 1>>7,
NULL, HFILL }},
{ &hf_wisun_nrie_timing_accuracy,
{ "Timing Accuracy", "wisun.nrie.timing_accuracy", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &units_milliseconds, 0x0,
NULL, HFILL }
@ -2310,6 +2456,61 @@ void proto_register_wisun(void)
NULL, HFILL }
},
{ &hf_wisun_lbatsie,
{ "LBATS-IE", "wisun.lbatsie", FT_NONE, BASE_NONE, NULL, 0x0,
"LFN Broadcast Additional Transmit Schedule IE", HFILL }
},
{ &hf_wisun_lbatsie_additional_tx,
{ "Additional Transmissions", "wisun.lbatsie.additional_tx", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_wisun_lbatsie_next_tx_delay,
{ "Next Transmit Delay", "wisun.lbatsie.next_tx_delay", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_milliseconds, 0x0,
NULL, HFILL }
},
{ &hf_wisun_jmie,
{ "JM-IE", "wisun.jmie", FT_NONE, BASE_NONE, NULL, 0x0,
"Join Metrics IE", HFILL }
},
{ &hf_wisun_jmie_version,
{ "Content Version", "wisun.jmie.version", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_hdr,
{ "Metric Header", "wisun.jmie.metric.hdr", FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_id,
{ "Metric ID", "wisun.jmie.metric.id", FT_UINT8, BASE_DEC, VALS(wisun_metric_id), WISUN_PIE_JM_ID_MASK,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_len,
{ "Metric Length", "wisun.jmie.metric.len", FT_UINT8, BASE_DEC, VALS(wisun_metric_len), WISUN_PIE_JM_LEN_MASK,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_plf,
{ "JM-PLF", "wisun.jmie.metric.plf", FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_plf_data,
{ "PAN Load Factor", "wisun.jmie.metric.plf.data", FT_UINT8, BASE_DEC|BASE_UNIT_STRING, &units_percent, 0x0,
NULL, HFILL }
},
{ &hf_wisun_jmie_metric_unknown,
{ "Unknown Metric", "wisun.jmie.metric.unknown", FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
/* Wi-SUN FAN Security Extension */
{ &hf_wisun_sec_function,
{ "Function Code", "wisun.sec.function", FT_UINT8, BASE_HEX, VALS(wisun_sec_functions), 0x0,
@ -2339,6 +2540,29 @@ void proto_register_wisun(void)
{ "Direction", "wisun.eapol_relay.direction", FT_BOOLEAN, BASE_NONE, TFS(&tfs_up_down), 0x0,
NULL, HFILL }},
{ &hf_wisun_cmd_subid,
{ "Command Sub-ID", "wisun.cmd", FT_UINT8, BASE_DEC, VALS(wisun_cmd_vals), 0x0,
"Wi-SUN MAC Command Sub-ID", HFILL }},
{ &hf_wisun_cmd_mdr_phy_mode_id,
{ "PHY Mode ID", "wisun.cmd.mdr.phy_mode_id", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_wisun_cmd_mdr_phy_type,
{ "PHY Type", "wisun.cmd.mdr.phy_type", FT_UINT8, BASE_HEX, VALS(wisun_phy_type_vals), WISUN_PIE_PHY_TYPE,
NULL, HFILL }
},
{ &hf_wisun_cmd_mdr_phy_mode_fsk,
{ "PHY Mode FSK", "wisun.cmd.mdr.phy_mode_fsk", FT_UINT8, BASE_HEX|BASE_RANGE_STRING, RVALS(wisun_phy_mode_fsk_vals), WISUN_PIE_PHY_OPERATING_MODES_MASK,
NULL, HFILL }
},
{ &hf_wisun_cmd_mdr_phy_mode_ofdm,
{ "PHY Mode OFDM", "wisun.cmd.mdr.phy_mode_ofdm", FT_UINT8, BASE_HEX|BASE_RANGE_STRING, RVALS(wisun_phy_mode_ofdm_vals), WISUN_PIE_PHY_OPERATING_MODES_MASK,
NULL, HFILL }
},
/* Wi-SUN Netricity */
{ &hf_wisun_netricity_nftie,
{ "Netricity Frame Type IE", "wisun.netricity.nftie", FT_NONE, BASE_NONE, NULL, 0x0,
@ -2440,6 +2664,7 @@ void proto_register_wisun(void)
/* Subtrees */
static gint *ett[] = {
&ett_wisun_phy_mode_id,
&ett_wisun_unknown_ie,
&ett_wisun_uttie,
&ett_wisun_btie,
@ -2459,11 +2684,15 @@ void proto_register_wisun(void)
&ett_wisun_panverie,
&ett_wisun_pomie,
&ett_wisun_pomie_hdr,
&ett_wisun_pomie_phy_mode_id,
&ett_wisun_gtkhashie,
&ett_wisun_lfnverie,
&ett_wisun_lgtkhashie,
&ett_wisun_lgtkhashie_flags,
&ett_wisun_lbatsie,
&ett_wisun_jmie,
&ett_wisun_jmie_metric_hdr,
&ett_wisun_jmie_metric_plf,
&ett_wisun_jmie_metric_unknown,
&ett_wisun_sec,
&ett_wisun_eapol_relay,
&ett_wisun_netricity_nftie,
@ -2495,6 +2724,8 @@ void proto_register_wisun(void)
"EDFE Transfer: start frame not found", EXPFILL }},
{ &ei_wisun_usie_explicit_reserved_bits_not_zero, { "wisun.usie.explicit.reserved.invalid", PI_MALFORMED, PI_ERROR,
"Reserved bits not zero", EXPFILL }},
{ &ei_wisun_jmie_metric_unsupported, { "wisun.jmie.metric.unsupported", PI_PROTOCOL, PI_WARN,
"Unsupported Metric ID", EXPFILL }},
};
expert_module_t* expert_wisun;
@ -2524,6 +2755,9 @@ void proto_reg_handoff_wisun(void)
{
dissector_add_uint(IEEE802154_HEADER_IE_DTABLE, IEEE802154_HEADER_IE_WISUN, create_dissector_handle(dissect_wisun_hie, proto_wisun));
dissector_add_uint(IEEE802154_PAYLOAD_IE_DTABLE, IEEE802154_PAYLOAD_IE_WISUN, create_dissector_handle(dissect_wisun_pie, proto_wisun));
dissector_add_uint(IEEE802154_CMD_VENDOR_DTABLE, OUI_WISUN, create_dissector_handle(dissect_wisun_cmd, proto_wisun));
oid_add_from_string("id-kp-wisun-fan-device", "1.3.6.1.4.1.45605.1");
// For EAPOL relay
dissector_add_uint("udp.port", WISUN_EAPOL_RELAY_UDP_PORT, wisun_eapol_relay_handle);

View File

@ -6,16 +6,20 @@ MANUAL srvsvc_dissect_element_NetGetFileSecurity_sd_buf_
MANUAL srvsvc_dissect_element_NetSetFileSecurity_sd_buf
MANUAL srvsvc_dissect_element_NetShareCtr1501_array__
MANUAL srvsvc_dissect_element_NetShareInfo502_sd_
NOEMIT srvsvc_dissect_element_NetShareInfo502_sd__
# we wont need to manually define servertype once svcctl is autogenerated
MANUAL srvsvc_dissect_element_NetSrvInfo101_server_type
MANUAL srvsvc_dissect_element_NetSrvInfo102_server_type
# until we get secinfo
MANUAL srvsvc_dissect_element_NetGetFileSecurity_securityinformation
MANUAL srvsvc_dissect_element_NetSetFileSecurity_securityinformation
MANUAL srvsvc_dissect_element_NetShareInfo502_sd_buf
MANUAL srvsvc_dissect_element_NetShareInfoCtr_ctr
NOEMIT srvsvc_dissect_element_NetGetFileSecurity_sd_buf__
NOEMIT srvsvc_dissect_element_NetSetFileSecurity_sd_buf_
HF_FIELD hf_srvsvc_sec_desc_buf_len "Sec Desc Buf Len" "srvsvc.sec_desc_buf_len" FT_UINT32 BASE_DEC NULL 0 "" "" ""
#
#
# Prettifications
@ -39,7 +43,21 @@ CODE START
#include "packet-smb-browse.h"
static int
srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
srvsvc_dissect_NetShareCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
static int
srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *level)
{
ALIGN_TO_5_BYTES
offset = srvsvc_dissect_NetShareCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfoCtr_ctr, *level);
return offset;
}
static int
srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index);
static int
srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_)
{
guint32 len;
@ -61,31 +79,28 @@ srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto
static int
srvsvc_dissect_element_NetShareInfo_info1501_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfo_info1501);
}
static int
srvsvc_dissect_element_NetGetFileSecurity_sd_buf_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetGetFileSecurity_sd_buf);
}
static int
srvsvc_dissect_element_NetSetFileSecurity_sd_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSetFileSecurity_sd_buf);
}
static int
srvsvc_dissect_element_NetShareCtr1501_array__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareCtr1501_array);
}
static int
srvsvc_dissect_element_NetShareInfo502_sd_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
srvsvc_dissect_element_NetShareInfo502_sd_buf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
{
return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_sec_desc_buf(tvb,offset,pinfo,tree,di,drep, hf_srvsvc_srvsvc_NetShareInfo502_sd_buf);
}
static int
srvsvc_dissect_ServerType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
@ -94,8 +109,7 @@ srvsvc_dissect_ServerType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
return offset;
}
offset=dissect_smb_server_type_flags(tvb, offset, pinfo, tree,
drep, 0);
offset=dissect_smb_server_type_flags(tvb, offset, pinfo, tree, drep, 0);
return offset;
}
@ -104,15 +118,14 @@ srvsvc_dissect_element_NetSrvInfo101_server_type(tvbuff_t *tvb, int offset, pack
{
return srvsvc_dissect_ServerType(tvb, offset, pinfo, tree, di, drep);
}
static int
srvsvc_dissect_element_NetSrvInfo102_server_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_ServerType(tvb, offset, pinfo, tree, di, drep);
}
static int
srvsvc_dissect_secinfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_)
srvsvc_dissect_secinfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_)
{
if(di->conformant_run){
/*just a run to handle conformant arrays, nothing to dissect */
@ -126,12 +139,12 @@ srvsvc_dissect_secinfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_
static int
srvsvc_dissect_element_NetGetFileSecurity_securityinformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetGetFileSecurity_securityinformation);
}
static int
srvsvc_dissect_element_NetSetFileSecurity_securityinformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
{
return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep);
return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSetFileSecurity_securityinformation);
}
CODE END

View File

@ -1,16 +1,14 @@
#include "idl_types.h"
/*import "security.idl", "svcctl.idl";*/
/*
srvsvc interface definitions
*/
/* import "misc.idl", "security.idl", "svcctl.idl"; */
[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
version(3.0),
endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
pointer_default(unique),
pointer_default_top(unique),
helpstring("Server Service")
] interface srvsvc
{
@ -53,30 +51,34 @@
[default] ;
} srvsvc_NetCharDevCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetCharDevCtr ctr;
} srvsvc_NetCharDevInfoCtr;
/******************/
/* Function: 0x00 */
WERROR srvsvc_NetCharDevEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetCharDevCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x01 */
WERROR srvsvc_NetCharDevGetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 device_name[],
[in] uint32 level,
[out,switch_is(level),ref] srvsvc_NetCharDevInfo *info
[out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info
);
/******************/
/* Function: 0x02 */
WERROR srvsvc_NetCharDevControl(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 device_name[],
[in] uint32 opcode
);
@ -118,22 +120,26 @@
[default] ;
} srvsvc_NetCharDevQCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetCharDevQCtr ctr;
} srvsvc_NetCharDevQInfoCtr;
/******************/
/* Function: 0x03 */
WERROR srvsvc_NetCharDevQEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *user,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetCharDevQCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *user,
[in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x04 */
WERROR srvsvc_NetCharDevQGetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 queue_name[],
[in] [string,charset(UTF16)] uint16 user[],
[in] uint32 level,
@ -143,24 +149,24 @@
/******************/
/* Function: 0x05 */
WERROR srvsvc_NetCharDevQSetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 queue_name[],
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetCharDevQInfo info,
[in,out] uint32 *parm_error
[in,out,unique] uint32 *parm_error
);
/******************/
/* Function: 0x06 */
WERROR srvsvc_NetCharDevQPurge(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 queue_name[]
);
/******************/
/* Function: 0x07 */
WERROR srvsvc_NetCharDevQPurgeSelf(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 queue_name[],
[in] [string,charset(UTF16)] uint16 computer_name[]
);
@ -198,16 +204,20 @@
[default] ;
} srvsvc_NetConnCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetConnCtr ctr;
} srvsvc_NetConnInfoCtr;
/******************/
/* Function: 0x08 */
WERROR srvsvc_NetConnEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *path,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetConnCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *path,
[in,out,ref] srvsvc_NetConnInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/**************************/
@ -247,23 +257,27 @@
[default] ;
} srvsvc_NetFileCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetFileCtr ctr;
} srvsvc_NetFileInfoCtr;
/******************/
/* Function: 0x09 */
WERROR srvsvc_NetFileEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *path,
[in] [string,charset(UTF16)] uint16 *user,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetFileCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *path,
[in,unique] [string,charset(UTF16)] uint16 *user,
[in,out,ref] srvsvc_NetFileInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x0a */
WERROR srvsvc_NetFileGetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 fid,
[in] uint32 level,
[out,switch_is(level),ref] srvsvc_NetFileInfo *info
@ -272,18 +286,13 @@
/******************/
/* Function: 0x0b */
WERROR srvsvc_NetFileClose(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 fid
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 fid
);
/**************************/
/* srvsvc_NetSess */
/**************************/
typedef [bitmap32bit] bitmap {
SESS_GUEST = 0x00000001,
SESS_NOENCRYPTION = 0x00000002
} srvsvc_SessionUserFlags;
typedef struct {
[string,charset(UTF16)] uint16 *client;
} srvsvc_NetSessInfo0;
@ -299,7 +308,7 @@
uint32 num_open;
uint32 time;
uint32 idle_time;
srvsvc_SessionUserFlags user_flags;
uint32 user_flags;
} srvsvc_NetSessInfo1;
typedef struct {
@ -313,7 +322,7 @@
uint32 num_open;
uint32 time;
uint32 idle_time;
srvsvc_SessionUserFlags user_flags;
uint32 user_flags;
[string,charset(UTF16)] uint16 *client_type;
} srvsvc_NetSessInfo2;
@ -340,7 +349,7 @@
uint32 num_open;
uint32 time;
uint32 idle_time;
srvsvc_SessionUserFlags user_flags;
uint32 user_flags;
[string,charset(UTF16)] uint16 *client_type;
[string,charset(UTF16)] uint16 *transport;
} srvsvc_NetSessInfo502;
@ -361,23 +370,28 @@
/******************/
/* Function: 0x0c */
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetSessCtr ctr;
} srvsvc_NetSessInfoCtr;
WERROR srvsvc_NetSessEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *client,
[in] [string,charset(UTF16)] uint16 *user,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetSessCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *client,
[in,unique] [string,charset(UTF16)] uint16 *user,
[in,out,ref] srvsvc_NetSessInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x0d */
WERROR srvsvc_NetSessDel(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *client,
[in] [string,charset(UTF16)] uint16 *user
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *client,
[in,unique] [string,charset(UTF16)] uint16 *user
);
/**************************/
@ -400,19 +414,38 @@
STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN,
STYPE_IPC = 3, /* Interprocess communication (IPC) */
STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY,
STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN
STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN,
STYPE_CLUSTER_FS = 0x02000000, /* A cluster share */
STYPE_CLUSTER_FS_TEMPORARY = STYPE_CLUSTER_FS|STYPE_TEMPORARY,
STYPE_CLUSTER_FS_HIDDEN = STYPE_CLUSTER_FS|STYPE_HIDDEN,
STYPE_CLUSTER_SOFS = 0x04000000, /* A Scale-Out cluster share */
STYPE_CLUSTER_SOFS_TEMPORARY = STYPE_CLUSTER_SOFS|STYPE_TEMPORARY,
STYPE_CLUSTER_SOFS_HIDDEN = STYPE_CLUSTER_SOFS|STYPE_HIDDEN,
STYPE_CLUSTER_DFS = 0x08000000, /* A DFS share in a cluster */
STYPE_CLUSTER_DFS_TEMPORARY = STYPE_CLUSTER_DFS|STYPE_TEMPORARY,
STYPE_CLUSTER_DFS_HIDDEN = STYPE_CLUSTER_DFS|STYPE_HIDDEN
} srvsvc_ShareType;
typedef struct {
[string,charset(UTF16)] uint16 *name;
} srvsvc_NetShareInfo0;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo0 *array;
} srvsvc_NetShareCtr0;
typedef struct {
[string,charset(UTF16)] uint16 *name;
srvsvc_ShareType type;
[string,charset(UTF16)] uint16 *comment;
} srvsvc_NetShareInfo1;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo1 *array;
} srvsvc_NetShareCtr1;
typedef struct {
[string,charset(UTF16)] uint16 *name;
srvsvc_ShareType type;
@ -424,6 +457,11 @@
[string,charset(UTF16)] uint16 *password;
} srvsvc_NetShareInfo2;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo2 *array;
} srvsvc_NetShareCtr2;
typedef struct {
[string,charset(UTF16)] uint16 *name;
srvsvc_ShareType type;
@ -431,74 +469,60 @@
uint32 csc_policy;
} srvsvc_NetShareInfo501;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo501 *array;
} srvsvc_NetShareCtr501;
typedef struct {
[string,charset(UTF16)] uint16 *name;
srvsvc_ShareType type;
[string,charset(UTF16)] uint16 *comment;
uint32 permissions;
int32 max_users;
uint32 max_users;
uint32 current_users;
[string,charset(UTF16)] uint16 *path;
[string,charset(UTF16)] uint16 *password;
/* maybe here is a struct sec_desc_buf following */
uint32 unknown;
[subcontext(4)] security_descriptor *sd;
sec_desc_buf sd_buf;
} srvsvc_NetShareInfo502;
typedef struct {
[string,charset(UTF16)] uint16 *comment;
} srvsvc_NetShareInfo1004;
typedef struct {
int32 max_users;
} srvsvc_NetShareInfo1006;
typedef [bitmap32bit] bitmap {
SHARE_1005_FLAGS_IN_DFS = 0x00000001,
SHARE_1005_FLAGS_DFS_ROOT = 0x00000002,
CSC_CACHE_AUTO_REINT = 0x00000010,
CSC_CACHE_VDO = 0x00000020,
FLAGS_RESTRICT_EXCLUSIVE_OPENS = 0x00000100,
FLAGS_FORCE_SHARED_DELETE = 0x00000200,
FLAGS_ALLOW_NAMESPACE_CACHING = 0x00000400,
FLAGS_ACCESS_BASED_DIRECTORY_ENUM = 0x00000800
} srvsvc_DFSFlags;
const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo0 *array;
} srvsvc_NetShareCtr0;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo1 *array;
} srvsvc_NetShareCtr1;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo2 *array;
} srvsvc_NetShareCtr2;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo501 *array;
} srvsvc_NetShareCtr501;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo502 *array;
} srvsvc_NetShareCtr502;
typedef struct {
[string,charset(UTF16)] uint16 *comment;
} srvsvc_NetShareInfo1004;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo1004 *array;
} srvsvc_NetShareCtr1004;
const uint32 SHARE_1005_CSC_CACHE_MANUAL_REINT = 0x00000000;
typedef bitmap {
SHARE_1005_IN_DFS = 0x00000001,
SHARE_1005_DFS_ROOT = 0x00000002,
SHARE_1005_CSC_CACHE_AUTO_REINT = 0x00000010,
SHARE_1005_CSC_CACHE_VDO = 0x00000020,
SHARE_1005_CSC_CACHE_NONE = 0x00000030,
SHARE_1005_RESTRICT_EXCLUSIVE_OPENS = 0x00000100,
SHARE_1005_FORCE_SHARED_DELETE = 0x00000200,
SHARE_1005_ALLOW_NAMESPACE_CACHING = 0x00000400,
SHARE_1005_ACCESS_BASED_DIRECTORY_ENUM = 0x00000800,
SHARE_1005_FORCE_LEVELII_OPLOCK = 0x00001000,
SHARE_1005_ENABLE_HASH = 0x00002000,
SHARE_1005_ENABLE_CA = 0x00004000,
SHARE_1005_ENCRYPT_DATA = 0x00008000
} NetShareInfo1005Flags;
const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
typedef struct {
srvsvc_DFSFlags dfs_flags;
NetShareInfo1005Flags dfs_flags;
} srvsvc_NetShareInfo1005;
typedef struct {
@ -506,6 +530,10 @@
[size_is(count)] srvsvc_NetShareInfo1005 *array;
} srvsvc_NetShareCtr1005;
typedef struct {
uint32 max_users;
} srvsvc_NetShareInfo1006;
typedef struct {
uint32 count;
[size_is(count)] srvsvc_NetShareInfo1006 *array;
@ -554,49 +582,53 @@
[default] ;
} srvsvc_NetShareCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetShareCtr ctr;
} srvsvc_NetShareInfoCtr;
/******************/
/* Function: 0x0e */
WERROR srvsvc_NetShareAdd(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetShareInfo info,
[in,out] uint32 *parm_error
[in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
[in,out,unique] uint32 *parm_error
);
/******************/
/* Function: 0x0f */
WERROR srvsvc_NetShareEnumAll (
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetShareCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] srvsvc_NetShareInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x10 */
WERROR srvsvc_NetShareGetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 share_name[],
[in] uint32 level,
[out,switch_is(level),ref] srvsvc_NetShareInfo *info
[out,ref,switch_is(level)] srvsvc_NetShareInfo *info
);
/******************/
/* Function: 0x11 */
WERROR srvsvc_NetShareSetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 share_name[],
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetShareInfo info,
[in,out] uint32 *parm_error
[in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
[in,out,unique] uint32 *parm_error
);
/******************/
/* Function: 0x12 */
WERROR srvsvc_NetShareDel(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 share_name[],
[in] uint32 reserved
);
@ -604,15 +636,15 @@
/******************/
/* Function: 0x13 */
WERROR srvsvc_NetShareDelSticky(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 share_name[],
[in] uint32 reserved
);
/******************/
/* Function: 0x14 */
WERROR srvsvc_NetShareCheck(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 device_name[],
[out,ref] srvsvc_ShareType *type
);
@ -628,12 +660,12 @@
PLATFORM_ID_VMS = 700
} srvsvc_PlatformId;
typedef struct {
typedef [public] struct {
srvsvc_PlatformId platform_id;
[string,charset(UTF16)] uint16 *server_name;
} srvsvc_NetSrvInfo100;
typedef struct {
typedef [public] struct {
srvsvc_PlatformId platform_id;
[string,charset(UTF16)] uint16 *server_name;
uint32 version_major;
@ -678,6 +710,7 @@
uint32 sessreqs;
uint32 opensearch;
uint32 activelocks;
uint32 numreqbufs;
uint32 sizereqbufs;
uint32 numbigbufs;
uint32 numfiletasks;
@ -711,11 +744,12 @@
uint32 sessreqs;
uint32 opensearch;
uint32 activelocks;
uint32 numreqbufs;
uint32 sizereqbufs;
uint32 numbigbufs;
uint32 numfiletasks;
uint32 alertsched;
uint32 eroralert;
uint32 erroralert;
uint32 logonalert;
uint32 accessalert;
uint32 diskalert;
@ -1122,25 +1156,25 @@
/******************/
/* Function: 0x15 */
WERROR srvsvc_NetSrvGetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[out,switch_is(level),ref] srvsvc_NetSrvInfo *info
[out,ref,switch_is(level)] srvsvc_NetSrvInfo *info
);
/******************/
/* Function: 0x16 */
WERROR srvsvc_NetSrvSetInfo(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetSrvInfo info,
[in,out] uint32 *parm_error
[in,ref,switch_is(level)] srvsvc_NetSrvInfo *info,
[in,out,unique] uint32 *parm_error
);
/**************************/
/* srvsvc_NetDisk */
/**************************/
typedef struct {
[flag(STR_LEN4)] string disk;
[charset(UTF16),string] uint16 disk[3];
} srvsvc_NetDiskInfo0;
typedef struct {
@ -1151,12 +1185,12 @@
/******************/
/* Function: 0x17 */
WERROR srvsvc_NetDiskEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in,out,ref] srvsvc_NetDiskInfo *info,
[in] uint32 maxlen,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/**************************/
@ -1185,11 +1219,11 @@
/******************/
/* Function: 0x18 */
WERROR srvsvc_NetServerStatisticsGet(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *service,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *service,
[in] uint32 level,
[in] uint32 options,
[out,ref] srvsvc_Statistics *stat
[out,ref] srvsvc_Statistics **stats
);
/**************************/
@ -1206,7 +1240,7 @@
/******************/
/* Function: 0x19 */
WERROR srvsvc_NetTransportAdd(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetTransportInfo info
);
@ -1230,11 +1264,6 @@
[size_is(count)] srvsvc_NetTransportInfo1 *array;
} srvsvc_NetTransportCtr1;
typedef [bitmap32bit] bitmap {
SVTI2_REMAP_PIPE_NAMES = 0x00000001
} srvsvc_TransportFlags;
typedef struct {
uint32 vcs;
[string,charset(UTF16)] uint16 *name;
@ -1242,7 +1271,7 @@
uint32 addr_len;
[string,charset(UTF16)] uint16 *net_addr;
[string,charset(UTF16)] uint16 *domain;
srvsvc_TransportFlags transport_flags;
uint32 unknown;
} srvsvc_NetTransportInfo2;
typedef struct {
@ -1257,9 +1286,9 @@
uint32 addr_len;
[string,charset(UTF16)] uint16 *net_addr;
[string,charset(UTF16)] uint16 *domain;
srvsvc_TransportFlags transport_flags;
uint32 password_len;
uint8 password[256];
uint32 unknown1;
uint32 unknown2;
uint8 unknown3[256];
} srvsvc_NetTransportInfo3;
typedef struct {
@ -1275,23 +1304,27 @@
[default];
} srvsvc_NetTransportCtr;
typedef struct {
uint32 level;
[switch_is(level)] srvsvc_NetTransportCtr ctr;
} srvsvc_NetTransportInfoCtr;
/******************/
/* Function: 0x1a */
WERROR srvsvc_NetTransportEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetTransportCtr *transports,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] srvsvc_NetTransportInfoCtr *transports,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x1b */
WERROR srvsvc_NetTransportDel(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 unknown,
[in] srvsvc_NetTransportInfo0 transport
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in] srvsvc_NetTransportInfo0 *info0
);
/**************************/
@ -1315,8 +1348,8 @@
/******************/
/* Function: 0x1c */
WERROR srvsvc_NetRemoteTOD(
[in] [string,charset(UTF16)] uint16 *server_unc,
[out,unique] srvsvc_NetRemoteTODInfo *info
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[out,ref] srvsvc_NetRemoteTODInfo **info
);
/**************************/
@ -1325,8 +1358,8 @@
/******************/
/* Function: 0x1d */
WERROR srvsvc_NetSetServiceBits(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *transport,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *transport,
[in] uint32 servicebits,
[in] uint32 updateimmediately
);
@ -1337,7 +1370,7 @@
/******************/
/* Function: 0x1e */
WERROR srvsvc_NetPathType(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 path[],
[in] uint32 pathflags,
[out,ref] uint32 *pathtype
@ -1346,7 +1379,7 @@
/******************/
/* Function: 0x1f */
WERROR srvsvc_NetPathCanonicalize(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 path[],
[out] [size_is(maxbuf)] uint8 can_path[],
[in] uint32 maxbuf,
@ -1358,7 +1391,7 @@
/******************/
/* Function: 0x20 */
WERROR srvsvc_NetPathCompare(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 path1[],
[in] [string,charset(UTF16)] uint16 path2[],
[in] uint32 pathtype,
@ -1371,7 +1404,7 @@
/******************/
/* Function: 0x21 */
WERROR srvsvc_NetNameValidate(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 name[],
[in] uint32 name_type,
[in] uint32 flags
@ -1385,7 +1418,7 @@
/******************/
/* Function: 0x23 */
WERROR srvsvc_NetPRNameCompare(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 name1[],
[in] [string,charset(UTF16)] uint16 name2[],
[in] uint32 name_type,
@ -1397,22 +1430,21 @@
/**************************/
/******************/
/* Function: 0x24 */
/* Note, there must be some way to return entries read vs
/* Note, there must be some way to return entries read vs
total entries ... */
WERROR srvsvc_NetShareEnum(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] uint32 *level,
[in,out,switch_is(level),ref] srvsvc_NetShareCtr *ctr,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,out,ref] srvsvc_NetShareInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out] uint32 *resume_handle
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
);
/******************/
/* Function: 0x25 */
WERROR srvsvc_NetShareDelStart(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 share[],
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *share,
[in] uint32 reserved,
[out,unique] policy_handle *hnd
);
@ -1420,27 +1452,27 @@
/******************/
/* Function: 0x26 */
WERROR srvsvc_NetShareDelCommit(
[in, out] policy_handle *hnd
[in, out,unique] policy_handle *hnd
);
/******************/
/* Function: 0x27 */
WERROR srvsvc_NetGetFileSecurity(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *share,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *share,
[in] [string,charset(UTF16)] uint16 file[],
[in] security_secinfo securityinformation,
[out,unique] sec_desc_buf *sd_buf
[out,ref] sec_desc_buf **sd_buf
);
/******************/
/* Function: 0x28 */
WERROR srvsvc_NetSetFileSecurity(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *share,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *share,
[in] [string,charset(UTF16)] uint16 file[],
[in] security_secinfo securityinformation,
[in] sec_desc_buf sd_buf
[in,ref] sec_desc_buf *sd_buf
);
@ -1455,7 +1487,7 @@
/******************/
/* Function: 0x29 */
WERROR srvsvc_NetServerTransportAddEx(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in] uint32 level,
[in,switch_is(level)] srvsvc_NetTransportInfo info
);
@ -1463,9 +1495,9 @@
/******************/
/* Function: 0x2a */
WERROR srvsvc_NetServerSetServiceBitsEx(
[in] [string,charset(UTF16)] uint16 *server_unc,
[in] [string,charset(UTF16)] uint16 *emulated_server_unc,
[in] [string,charset(UTF16)] uint16 *transport,
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc,
[in,unique] [string,charset(UTF16)] uint16 *transport,
[in] uint32 servicebitsofinterest,
[in] uint32 servicebits,
[in] uint32 updateimmediately

View File

@ -24,12 +24,6 @@
extern "C" {
#endif /* __cplusplus */
typedef enum {
TCP_STREAM = 0,
UDP_STREAM,
MAX_STREAM
} stream_type;
typedef enum {
FRS_OK,
FRS_OPEN_ERROR,
@ -77,7 +71,6 @@ typedef union _stream_addr {
struct _follow_info;
typedef gboolean (*follow_print_line_func)(char *, size_t, gboolean, void *);
typedef frs_return_t (*follow_read_stream_func)(struct _follow_info *follow_info, follow_print_line_func follow_print, void *arg);
#define SUBSTREAM_UNUSED G_GUINT64_CONSTANT(0xFFFFFFFFFFFFFFFF)

View File

@ -867,9 +867,6 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
int len;
guint saved_layers_len = 0;
guint saved_tree_count = tree ? tree->tree_data->count : 0;
gboolean saved_use_conv_addr_port_endpoints;
struct conversation_addr_port_endpoints *saved_conv_addr_port_endpoints;
struct conversation_element *saved_conv_elements;
if (handle->protocol != NULL &&
!proto_is_protocol_enabled(handle->protocol)) {
@ -884,10 +881,6 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
saved_layers_len = wmem_list_count(pinfo->layers);
DISSECTOR_ASSERT(saved_layers_len < PINFO_LAYER_MAX_RECURSION_DEPTH);
saved_use_conv_addr_port_endpoints = pinfo->use_conv_addr_port_endpoints;
saved_conv_addr_port_endpoints = pinfo->conv_addr_port_endpoints;
saved_conv_elements = pinfo->conv_elements;
/*
* can_desegment is set to 2 by anyone which offers the
* desegmentation api/service.
@ -944,9 +937,6 @@ call_dissector_work(dissector_handle_t handle, tvbuff_t *tvb, packet_info *pinfo
}
pinfo->current_proto = saved_proto;
pinfo->can_desegment = saved_can_desegment;
pinfo->use_conv_addr_port_endpoints = saved_use_conv_addr_port_endpoints;
pinfo->conv_addr_port_endpoints = saved_conv_addr_port_endpoints;
pinfo->conv_elements = saved_conv_elements;
return len;
}

View File

@ -6,8 +6,8 @@
*
* List of PCI ID's
*
* Version: 2023.02.11
* Date: 2023-02-11 03:15:01
* Version: 2023.02.23
* Date: 2023-02-23 03:15:02
*
* Maintained by Albert Pool, Martin Mares, and other volunteers from
* the PCI ID Project at https://pci-ids.ucw.cz/.
@ -147,6 +147,7 @@ pci_id_t pci_vid_021B[] = {
pci_id_t pci_vid_025E[] = {
{0x025E, 0xFFFF, 0xFFFF, 0xFFFF, "Solidigm(0x025E)"},
{0x025E, 0x0B60, 0xFFFF, 0xFFFF, "NVMe DC SSD [Sentinel Rock Plus controller](0x0B60)"},
{0x025E, 0x0B70, 0xFFFF, 0xFFFF, "NVMe DC SSD [Yorktown controller](0x0B70)"},
}; /* pci_vid_025E[] */
@ -1097,6 +1098,7 @@ pci_id_t pci_vid_1000[] = {
{0x1000, 0x10E2, 0x1000, 0x4000, "MegaRAID 9560-16i(0x1000-0x4000)"},
{0x1000, 0x10E2, 0x1000, 0x4002, "MegaRAID 9561-16i(0x1000-0x4002)"},
{0x1000, 0x10E2, 0x1000, 0x4010, "MegaRAID 9560-8i(0x1000-0x4010)"},
{0x1000, 0x10E2, 0x1000, 0x4015, "MegaRAID 9550-8i(0x1000-0x4015)"},
{0x1000, 0x10E2, 0x1000, 0x4020, "MegaRAID 9580-8i8e(0x1000-0x4020)"},
{0x1000, 0x10E2, 0x1000, 0x40B0, "MegaRAID 9562-16i(0x1000-0x40B0)"},
{0x1000, 0x10E2, 0x1028, 0x1AE0, "PERC H755 Adapter(0x1028-0x1AE0)"},
@ -1241,7 +1243,8 @@ pci_id_t pci_vid_1002[] = {
{0x1002, 0x1551, 0xFFFF, 0xFFFF, "Arlene(0x1551)"},
{0x1002, 0x1552, 0xFFFF, 0xFFFF, "Pooky(0x1552)"},
{0x1002, 0x1561, 0xFFFF, 0xFFFF, "Anubis(0x1561)"},
{0x1002, 0x15BF, 0xFFFF, 0xFFFF, "Phoenix(0x15BF)"},
{0x1002, 0x15BF, 0xFFFF, 0xFFFF, "Phoenix1(0x15BF)"},
{0x1002, 0x15C8, 0xFFFF, 0xFFFF, "Phoenix2(0x15C8)"},
{0x1002, 0x15D8, 0xFFFF, 0xFFFF, "Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series](0x15D8)"},
{0x1002, 0x15D8, 0x103C, 0x8615, "Pavilion Laptop 15-cw1xxx(0x103C-0x8615)"},
{0x1002, 0x15D8, 0x17AA, 0x3181, "ThinkCentre M75n IoT(0x17AA-0x3181)"},
@ -2591,8 +2594,8 @@ pci_id_t pci_vid_1002[] = {
{0x1002, 0x6760, 0x1028, 0x0506, "Radeon HD 6470M(0x1028-0x0506)"},
{0x1002, 0x6760, 0x1028, 0x0507, "Radeon HD 6470M(0x1028-0x0507)"},
{0x1002, 0x6760, 0x1028, 0x0514, "Radeon HD 6470M(0x1028-0x0514)"},
{0x1002, 0x6760, 0x1028, 0x051C, "Radeon HD 6450M(0x1028-0x051C)"},
{0x1002, 0x6760, 0x1028, 0x051D, "Radeon HD 6450M(0x1028-0x051D)"},
{0x1002, 0x6760, 0x1028, 0x051C, "Radeon HD 6450M / 7430M(0x1028-0x051C)"},
{0x1002, 0x6760, 0x1028, 0x051D, "Radeon HD 6450M / 7430M(0x1028-0x051D)"},
{0x1002, 0x6760, 0x103C, 0x161A, "Radeon HD 6470M(0x103C-0x161A)"},
{0x1002, 0x6760, 0x103C, 0x161B, "Radeon HD 6470M(0x103C-0x161B)"},
{0x1002, 0x6760, 0x103C, 0x161E, "Radeon HD 6470M(0x103C-0x161E)"},
@ -3922,6 +3925,8 @@ pci_id_t pci_vid_1002[] = {
{0x1002, 0x7310, 0xFFFF, 0xFFFF, "Navi 10 [Radeon Pro W5700X](0x7310)"},
{0x1002, 0x7312, 0xFFFF, 0xFFFF, "Navi 10 [Radeon Pro W5700](0x7312)"},
{0x1002, 0x7314, 0xFFFF, 0xFFFF, "Navi 10 USB(0x7314)"},
{0x1002, 0x7319, 0xFFFF, 0xFFFF, "Navi 10 [Radeon Pro 5700 XT](0x7319)"},
{0x1002, 0x731B, 0xFFFF, 0xFFFF, "Navi 10 [Radeon Pro 5700](0x731B)"},
{0x1002, 0x731E, 0xFFFF, 0xFFFF, "TDC-150(0x731E)"},
{0x1002, 0x731F, 0xFFFF, 0xFFFF, "Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT](0x731F)"},
{0x1002, 0x731F, 0x1002, 0x0B36, "Reference RX 5700 XT(0x1002-0x0B36)"},
@ -3972,8 +3977,7 @@ pci_id_t pci_vid_1002[] = {
{0x1002, 0x73E1, 0xFFFF, 0xFFFF, "Navi 23 WKS-XM [Radeon PRO W6600M](0x73E1)"},
{0x1002, 0x73E3, 0xFFFF, 0xFFFF, "Navi 23 WKS-XL [Radeon PRO W6600](0x73E3)"},
{0x1002, 0x73E4, 0xFFFF, 0xFFFF, "Navi 23 USB(0x73E4)"},
{0x1002, 0x73EF, 0xFFFF, 0xFFFF, "Navi 23 [Radeon RX 6650 XT](0x73EF)"},
{0x1002, 0x73EF, 0x1002, 0x73EF, "Navi 23 [Radeon RX 6700S / 6800S / 6650 XT](0x1002-0x73EF)"},
{0x1002, 0x73EF, 0xFFFF, 0xFFFF, "Navi 23 [Radeon RX 6650 XT / 6700S / 6800S](0x73EF)"},
{0x1002, 0x73EF, 0x1458, 0x2405, "Navi 23 [Radeon RX 6650 XT](0x1458-0x2405)"},
{0x1002, 0x73FF, 0xFFFF, 0xFFFF, "Navi 23 [Radeon RX 6600/6600 XT/6600M](0x73FF)"},
{0x1002, 0x73FF, 0x1462, 0x5022, "RX 6600 MECH 2X(0x1462-0x5022)"},
@ -3990,6 +3994,9 @@ pci_id_t pci_vid_1002[] = {
{0x1002, 0x743F, 0x1DA2, 0xE457, "PULSE AMD Radeon RX 6500 XT(0x1DA2-0xE457)"},
{0x1002, 0x744C, 0xFFFF, 0xFFFF, "Navi 31 [Radeon RX 7900 XT/7900 XTX](0x744C)"},
{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, 0x7480, 0xFFFF, 0xFFFF, "Navi 33 [Radeon RX 7600S](0x7480)"},
{0x1002, 0x7483, 0xFFFF, 0xFFFF, "Navi 33 [Radeon RX 7600M/7600M XT](0x7483)"},
{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)"},
@ -13397,7 +13404,7 @@ pci_id_t pci_vid_10DE[] = {
{0x10DE, 0x25B9, 0xFFFF, 0xFFFF, "GA107GLM [RTX A1000 Laptop GPU](0x25B9)"},
{0x10DE, 0x25BA, 0xFFFF, 0xFFFF, "GA107GLM [RTX A2000 8GB Laptop GPU](0x25BA)"},
{0x10DE, 0x25BB, 0xFFFF, 0xFFFF, "GA107GLM [RTX A500 Laptop GPU](0x25BB)"},
{0x10DE, 0x25BC, 0xFFFF, 0xFFFF, "GA107(0x25BC)"},
{0x10DE, 0x25BC, 0xFFFF, 0xFFFF, "GA107GLM [RTX A1000 6GB Laptop GPU](0x25BC)"},
{0x10DE, 0x25E0, 0xFFFF, 0xFFFF, "GA107BM [GeForce RTX 3050 Ti Mobile](0x25E0)"},
{0x10DE, 0x25E2, 0xFFFF, 0xFFFF, "GA107BM [GeForce RTX 3050 Mobile](0x25E2)"},
{0x10DE, 0x25E5, 0xFFFF, 0xFFFF, "GA107BM [GeForce RTX 3050 Mobile](0x25E5)"},
@ -13419,19 +13426,19 @@ pci_id_t pci_vid_10DE[] = {
{0x10DE, 0x2782, 0xFFFF, 0xFFFF, "AD104 [GeForce RTX 4070 Ti](0x2782)"},
{0x10DE, 0x2785, 0xFFFF, 0xFFFF, "AD104(0x2785)"},
{0x10DE, 0x2786, 0xFFFF, 0xFFFF, "AD104 [GeForce RTX 4070](0x2786)"},
{0x10DE, 0x27A0, 0xFFFF, 0xFFFF, "GN21-X9(0x27A0)"},
{0x10DE, 0x27A0, 0xFFFF, 0xFFFF, "AD104M [GeForce RTX 4080 Max-Q / Mobile](0x27A0)"},
{0x10DE, 0x27B8, 0xFFFF, 0xFFFF, "AD104GL [L4](0x27B8)"},
{0x10DE, 0x27BA, 0xFFFF, 0xFFFF, "AD104(0x27BA)"},
{0x10DE, 0x27BB, 0xFFFF, 0xFFFF, "AD104GLM [RTX 3500 Ada Generation Laptop GPU](0x27BB)"},
{0x10DE, 0x27E0, 0xFFFF, 0xFFFF, "GN21-X9(0x27E0)"},
{0x10DE, 0x2820, 0xFFFF, 0xFFFF, "GN21-X6(0x2820)"},
{0x10DE, 0x27E0, 0xFFFF, 0xFFFF, "AD104M [GeForce RTX 4080 Max-Q / Mobile](0x27E0)"},
{0x10DE, 0x2820, 0xFFFF, 0xFFFF, "AD106M [GeForce RTX 4070 Max-Q / Mobile](0x2820)"},
{0x10DE, 0x2838, 0xFFFF, 0xFFFF, "AD106GLM [RTX 3000 Ada Generation Laptop GPU](0x2838)"},
{0x10DE, 0x2860, 0xFFFF, 0xFFFF, "GN21-X6(0x2860)"},
{0x10DE, 0x28A0, 0xFFFF, 0xFFFF, "GN21-X4(0x28A0)"},
{0x10DE, 0x28A1, 0xFFFF, 0xFFFF, "GN21-X2(0x28A1)"},
{0x10DE, 0x2860, 0xFFFF, 0xFFFF, "AD106M [GeForce RTX 4070 Max-Q / Mobile](0x2860)"},
{0x10DE, 0x28A0, 0xFFFF, 0xFFFF, "AD107M [GeForce RTX 4060 Max-Q / Mobile](0x28A0)"},
{0x10DE, 0x28A1, 0xFFFF, 0xFFFF, "AD107M [GeForce RTX 4050 Max-Q / Mobile](0x28A1)"},
{0x10DE, 0x28B8, 0xFFFF, 0xFFFF, "AD107GLM [RTX 2000 Ada Generation Laptop GPU](0x28B8)"},
{0x10DE, 0x28E0, 0xFFFF, 0xFFFF, "GN21-X4(0x28E0)"},
{0x10DE, 0x28E1, 0xFFFF, 0xFFFF, "GN21-X2(0x28E1)"},
{0x10DE, 0x28E0, 0xFFFF, 0xFFFF, "AD107M [GeForce RTX 4060 Max-Q / Mobile](0x28E0)"},
{0x10DE, 0x28E1, 0xFFFF, 0xFFFF, "AD107M [GeForce RTX 4050 Max-Q / Mobile](0x28E1)"},
}; /* pci_vid_10DE[] */
pci_id_t pci_vid_10DF[] = {
@ -22361,6 +22368,16 @@ pci_id_t pci_vid_144D[] = {
{0x144D, 0xA80A, 0x0128, 0x2167, "DC NVMe PM9A3 RI 110M.2 1.92TB(0x0128-0x2167)"},
{0x144D, 0xA80A, 0x0128, 0x2168, "DC NVMe PM9A3 RI 80M.2 480GB(0x0128-0x2168)"},
{0x144D, 0xA80A, 0x0128, 0x2169, "DC NVMe PM9A3 RI 80M.2 960GB(0x0128-0x2169)"},
{0x144D, 0xA80A, 0x1028, 0x215A, "DC NVMe PM9A3 RI U.2 960GB(0x1028-0x215A)"},
{0x144D, 0xA80A, 0x1028, 0x215B, "DC NVMe PM9A3 RI U.2 1.92TB(0x1028-0x215B)"},
{0x144D, 0xA80A, 0x1028, 0x215C, "DC NVMe PM9A3 RI U.2 3.84TB(0x1028-0x215C)"},
{0x144D, 0xA80A, 0x1028, 0x2166, "DC NVMe PM9A3 RI 110M.2 960GB(0x1028-0x2166)"},
{0x144D, 0xA80A, 0x1028, 0x2167, "DC NVMe PM9A3 RI 110M.2 1.92TB(0x1028-0x2167)"},
{0x144D, 0xA80A, 0x1028, 0x2168, "DC NVMe PM9A3 RI 80M.2 480GB(0x1028-0x2168)"},
{0x144D, 0xA80A, 0x1028, 0x2169, "DC NVMe PM9A3 RI 80M.2 960GB(0x1028-0x2169)"},
{0x144D, 0xA80A, 0x1028, 0x2276, "DC NVMe PM9A3 RI 110M.2 960GB(0x1028-0x2276)"},
{0x144D, 0xA80A, 0x1028, 0x2277, "DC NVMe PM9A3 RI 110M.2 1.92TB(0x1028-0x2277)"},
{0x144D, 0xA80A, 0x1028, 0x512D, "DC NVMe PM9A3 RI U.2 7.68TB(0x1028-0x512D)"},
{0x144D, 0xA80A, 0x144D, 0xA813, "General DC NVMe PM9A3(0x144D-0xA813)"},
{0x144D, 0xA80B, 0xFFFF, 0xFFFF, "NVMe SSD Controller PM9B1(0xA80B)"},
{0x144D, 0xA820, 0xFFFF, 0xFFFF, "NVMe SSD Controller 171X(0xA820)"},
@ -22443,7 +22460,48 @@ pci_id_t pci_vid_144D[] = {
{0x144D, 0xA824, 0x1028, 0x2132, "Ent NVMe v2 AGN FIPS RI U.2 15.36TB(0x1028-0x2132)"},
{0x144D, 0xA824, 0x1028, 0x2133, "Ent NVMe v2 AGN RI U.2 15.36TB(0x1028-0x2133)"},
{0x144D, 0xA825, 0xFFFF, 0xFFFF, "NVMe SSD Controller PM173Xa(0xA825)"},
{0x144D, 0xA825, 0x1028, 0x2178, "Ent NVMe FIPS PM1733a RI 1.92TB(0x1028-0x2178)"},
{0x144D, 0xA825, 0x1028, 0x2179, "Ent NVMe PM1733a RI 1.92TB(0x1028-0x2179)"},
{0x144D, 0xA825, 0x1028, 0x217A, "Ent NVMe FIPS PM1733a RI 3.84TB(0x1028-0x217A)"},
{0x144D, 0xA825, 0x1028, 0x217B, "Ent NVMe PM1733a RI 3.84TB(0x1028-0x217B)"},
{0x144D, 0xA825, 0x1028, 0x217C, "Ent NVMe FIPS PM1733a RI 7.68TB(0x1028-0x217C)"},
{0x144D, 0xA825, 0x1028, 0x217D, "Ent NVMe PM1733a RI 7.68TB(0x1028-0x217D)"},
{0x144D, 0xA825, 0x1028, 0x217E, "Ent NVMe FIPS PM1733a RI 15.36TB(0x1028-0x217E)"},
{0x144D, 0xA825, 0x1028, 0x217F, "Ent NVMe PM1733a RI 15.36TB(0x1028-0x217F)"},
{0x144D, 0xA825, 0x1028, 0x2180, "Ent NVMe FIPS PM1735a MU 1.6TB(0x1028-0x2180)"},
{0x144D, 0xA825, 0x1028, 0x2181, "Ent NVMe PM1735a MU 1.6TB(0x1028-0x2181)"},
{0x144D, 0xA825, 0x1028, 0x2182, "Ent NVMe FIPS PM1735a MU 3.2TB(0x1028-0x2182)"},
{0x144D, 0xA825, 0x1028, 0x2183, "Ent NVMe PM1735a MU 3.2TB(0x1028-0x2183)"},
{0x144D, 0xA825, 0x1028, 0x2184, "Ent NVMe FIPS PM1735a MU 6.4TB(0x1028-0x2184)"},
{0x144D, 0xA825, 0x1028, 0x2185, "Ent NVMe PM1735a MU 6.4TB(0x1028-0x2185)"},
{0x144D, 0xA825, 0x1028, 0x2186, "Ent NVMe FIPS PM1735a MU 12.8TB(0x1028-0x2186)"},
{0x144D, 0xA825, 0x1028, 0x2187, "Ent NVMe PM1735a MU 12.8TB(0x1028-0x2187)"},
{0x144D, 0xA825, 0x1028, 0x226A, "Ent NVMe FIPS PM1733a RI 30.72TB(0x1028-0x226A)"},
{0x144D, 0xA826, 0xFFFF, 0xFFFF, "NVMe SSD Controller PM174X(0xA826)"},
{0x144D, 0xA826, 0x1028, 0x2214, "NVMe PM1743 RI E3.S 1.92TB(0x1028-0x2214)"},
{0x144D, 0xA826, 0x1028, 0x2216, "NVMe PM1743 RI E3.S 3.84TB(0x1028-0x2216)"},
{0x144D, 0xA826, 0x1028, 0x2218, "NVMe PM1743 RI E3.S 7.68TB(0x1028-0x2218)"},
{0x144D, 0xA826, 0x1028, 0x221A, "NVMe PM1743 RI E3.S 15.36TB(0x1028-0x221A)"},
{0x144D, 0xA826, 0x1028, 0x221C, "NVMe PM1745 MU E3.S 1.6TB(0x1028-0x221C)"},
{0x144D, 0xA826, 0x1028, 0x221E, "NVMe PM1745 MU E3.S 3.2TB(0x1028-0x221E)"},
{0x144D, 0xA826, 0x1028, 0x2220, "NVMe PM1745 MU E3.S 6.4TB(0x1028-0x2220)"},
{0x144D, 0xA826, 0x1028, 0x2222, "NVMe PM1745 MU E3.S 12.8TB(0x1028-0x2222)"},
{0x144D, 0xA826, 0x1028, 0x224E, "NVMe FIPS PM1743 RI U.2 1.92TB(0x1028-0x224E)"},
{0x144D, 0xA826, 0x1028, 0x224F, "NVMe PM1743 RI U.2 1.92TB(0x1028-0x224F)"},
{0x144D, 0xA826, 0x1028, 0x2250, "NVMe FIPS PM1743 RI U.2 3.84TB(0x1028-0x2250)"},
{0x144D, 0xA826, 0x1028, 0x2251, "NVMe PM1743 RI U.2 3.84TB(0x1028-0x2251)"},
{0x144D, 0xA826, 0x1028, 0x2252, "NVMe FIPS PM1743 RI U.2 7.68TB(0x1028-0x2252)"},
{0x144D, 0xA826, 0x1028, 0x2253, "NVMe PM1743 RI U.2 7.68TB(0x1028-0x2253)"},
{0x144D, 0xA826, 0x1028, 0x2254, "NVMe FIPS PM1743 RI U.2 15.36TB(0x1028-0x2254)"},
{0x144D, 0xA826, 0x1028, 0x2255, "NVMe PM1743 RI U.2 15.36TB(0x1028-0x2255)"},
{0x144D, 0xA826, 0x1028, 0x2258, "NVMe FIPS PM1745 MU U.2 1.6TB(0x1028-0x2258)"},
{0x144D, 0xA826, 0x1028, 0x2259, "NVMe PM1745 MU U.2 1.6TB(0x1028-0x2259)"},
{0x144D, 0xA826, 0x1028, 0x225A, "NVMe FIPS PM1745 MU U.2 3.2TB(0x1028-0x225A)"},
{0x144D, 0xA826, 0x1028, 0x225B, "NVMe PM1745 MU U.2 3.2TB(0x1028-0x225B)"},
{0x144D, 0xA826, 0x1028, 0x225C, "NVMe FIPS PM1745 MU U.2 6.4TB(0x1028-0x225C)"},
{0x144D, 0xA826, 0x1028, 0x225D, "NVMe PM1745 MU U.2 6.4TB(0x1028-0x225D)"},
{0x144D, 0xA826, 0x1028, 0x225E, "NVMe FIPS PM1745 MU U.2 12.8TB(0x1028-0x225E)"},
{0x144D, 0xA826, 0x1028, 0x225F, "NVMe PM1745 MU U.2 12.8TB(0x1028-0x225F)"},
{0x144D, 0xECEC, 0xFFFF, 0xFFFF, "Exynos 8895 PCIe Root Complex(0xECEC)"},
}; /* pci_vid_144D[] */
@ -25300,6 +25358,8 @@ pci_id_t pci_vid_15B3[] = {
{0x15B3, 0x0281, 0xFFFF, 0xFFFF, "NPS-600 Flash Recovery(0x0281)"},
{0x15B3, 0x0282, 0xFFFF, 0xFFFF, "ArcusE Flash recovery(0x0282)"},
{0x15B3, 0x0283, 0xFFFF, 0xFFFF, "ArcusE RMA(0x0283)"},
{0x15B3, 0x0284, 0xFFFF, 0xFFFF, "Sagitta(0x0284)"},
{0x15B3, 0x0285, 0xFFFF, 0xFFFF, "Sagitta RMA(0x0285)"},
{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)"},
@ -26656,6 +26716,7 @@ pci_id_t pci_vid_16E2[] = {
{0x16E2, 0x5050, 0xFFFF, 0xFFFF, "GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board(0x5050)"},
{0x16E2, 0x5055, 0xFFFF, 0xFFFF, "GX5055 Dynamic Digital I/O with Pin Electronics PXI Board(0x5055)"},
{0x16E2, 0x5083, 0xFFFF, 0xFFFF, "GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board(0x5083)"},
{0x16E2, 0x5105, 0xFFFF, 0xFFFF, "GX5105 High-Speed Digital I/O Timing (Master) Module PXI Board(0x5105)"},
{0x16E2, 0x5106, 0xFFFF, 0xFFFF, "GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board(0x5106)"},
{0x16E2, 0x5151, 0xFFFF, 0xFFFF, "GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board(0x5151)"},
{0x16E2, 0x5152, 0xFFFF, 0xFFFF, "GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board(0x5152)"},
@ -27208,6 +27269,9 @@ pci_id_t pci_vid_17D3[] = {
{0x17D3, 0x1880, 0x17D3, 0x1882, "ARC-1882 8/12/16/24 Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller(0x17D3-0x1882)"},
{0x17D3, 0x1880, 0x17D3, 0x1883, "ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller(0x17D3-0x1883)"},
{0x17D3, 0x1884, 0xFFFF, 0xFFFF, "ARC-1884 series PCIe 3.0 to SAS/SATA 12/6Gb RAID Controller(0x1884)"},
{0x17D3, 0x1886, 0xFFFF, 0xFFFF, "ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller(0x1886)"},
{0x17D3, 0x1886, 0x17D3, 0x1686, "ARC-1686 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller(0x17D3-0x1686)"},
{0x17D3, 0x1886, 0x17D3, 0x1886, "ARC-1886 PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller(0x17D3-0x1886)"},
{0x17D3, 0x188A, 0xFFFF, 0xFFFF, "ARC-1886 series PCIe 4.0 to NVMe/SAS/SATA 16/12/6Gb RAID Controller(0x188A)"},
{0x17D3, 0x188A, 0x17D3, 0x1217, "ARC-1217 4-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller(0x17D3-0x1217)"},
{0x17D3, 0x188A, 0x17D3, 0x1227, "ARC-1227 8-Port PCIe 4.0 to SAS/SATA 12/6Gb RAID Controller(0x17D3-0x1227)"},
@ -29634,7 +29698,7 @@ pci_id_t pci_vid_1C5F[] = {
{0x1C5F, 0x000D, 0x1C5F, 0x4221, "NVMe SSD PBlaze5 526 1600G 2.5\" U.2(0x1C5F-0x4221)"},
{0x1C5F, 0x000D, 0x1C5F, 0x4230, "NVMe SSD PBlaze5 526 3200G AIC(0x1C5F-0x4230)"},
{0x1C5F, 0x000D, 0x1C5F, 0x4231, "NVMe SSD PBlaze5 526 3200G 2.5\" U.2(0x1C5F-0x4231)"},
{0x1C5F, 0x000E, 0xFFFF, 0xFFFF, "PBlaze6 6530(0x000E)"},
{0x1C5F, 0x000E, 0xFFFF, 0xFFFF, "PBlaze6 6530/6531/6541/6630(0x000E)"},
{0x1C5F, 0x000E, 0x1C5F, 0x0B20, "NVMe SSD PBlaze6 6530 1920G AIC(0x1C5F-0x0B20)"},
{0x1C5F, 0x000E, 0x1C5F, 0x0B21, "NVMe SSD PBlaze6 6530 1920G 2.5\" U.2(0x1C5F-0x0B21)"},
{0x1C5F, 0x000E, 0x1C5F, 0x0B25, "NVMe SSD PBlaze6 6530 1920G E1.S(0x1C5F-0x0B25)"},
@ -29646,6 +29710,7 @@ pci_id_t pci_vid_1C5F[] = {
{0x1C5F, 0x000E, 0x1C5F, 0x0B40, "NVMe SSD PBlaze6 6530 7680G AIC(0x1C5F-0x0B40)"},
{0x1C5F, 0x000E, 0x1C5F, 0x0B41, "NVMe SSD PBlaze6 6530 7680G 2.5\" U.2(0x1C5F-0x0B41)"},
{0x1C5F, 0x000E, 0x1C5F, 0x0B47, "NVMe SSD PBlaze6 6630 7680G 2.5\" U.2(0x1C5F-0x0B47)"},
{0x1C5F, 0x000E, 0x1C5F, 0x1321, "NVMe SSD PBlaze6 6531 1920G 2.5\" U.2(0x1C5F-0x1321)"},
{0x1C5F, 0x000E, 0x1C5F, 0x1331, "NVMe SSD PBlaze6 6531 3840G 2.5\" U.2(0x1C5F-0x1331)"},
{0x1C5F, 0x000E, 0x1C5F, 0x1341, "NVMe SSD PBlaze6 6531 7680G 2.5\" U.2(0x1C5F-0x1341)"},
{0x1C5F, 0x000E, 0x1C5F, 0x1431, "NVMe SSD PBlaze6 6541 3840G 2.5\" U.2(0x1C5F-0x1431)"},
@ -29661,6 +29726,7 @@ pci_id_t pci_vid_1C5F[] = {
{0x1C5F, 0x000E, 0x1C5F, 0x4B40, "NVMe SSD PBlaze6 6536 6400G AIC(0x1C5F-0x4B40)"},
{0x1C5F, 0x000E, 0x1C5F, 0x4B41, "NVMe SSD PBlaze6 6536 6400G 2.5\" U.2(0x1C5F-0x4B41)"},
{0x1C5F, 0x000E, 0x1C5F, 0x4B47, "NVMe SSD PBlaze6 6636 6400G 2.5\" U.2(0x1C5F-0x4B47)"},
{0x1C5F, 0x000E, 0x1C5F, 0x5321, "NVMe SSD PBlaze6 6537 1600G 2.5\" U.2(0x1C5F-0x5321)"},
{0x1C5F, 0x000E, 0x1C5F, 0x5331, "NVMe SSD PBlaze6 6537 3200G 2.5\" U.2(0x1C5F-0x5331)"},
{0x1C5F, 0x000E, 0x1C5F, 0x5341, "NVMe SSD PBlaze6 6537 6400G 2.5\" U.2(0x1C5F-0x5341)"},
{0x1C5F, 0x000E, 0x1C5F, 0x5431, "NVMe SSD PBlaze6 6547 3200G 2.5\" U.2(0x1C5F-0x5431)"},
@ -30177,6 +30243,7 @@ pci_id_t pci_vid_1D87[] = {
{0x1D87, 0x0100, 0xFFFF, 0xFFFF, "RK3399 PCI Express Root Port(0x0100)"},
{0x1D87, 0x1808, 0xFFFF, 0xFFFF, "RK1808 Neural Network Processor Card(0x1808)"},
{0x1D87, 0x3528, 0xFFFF, 0xFFFF, "RK3528 PCI Express Root Port(0x3528)"},
{0x1D87, 0x3562, 0xFFFF, 0xFFFF, "RK3562 PCI Express Root Port(0x3562)"},
{0x1D87, 0x3566, 0xFFFF, 0xFFFF, "RK3568 Remote Signal Processor(0x3566)"},
{0x1D87, 0x3588, 0xFFFF, 0xFFFF, "RK3588(0x3588)"},
}; /* pci_vid_1D87[] */
@ -30592,6 +30659,8 @@ pci_id_t pci_vid_1DF7[] = {
pci_id_t 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)"},
{0x1DF8, 0xC000, 0xFFFF, 0xFFFF, "DC NVMe SSD(0xC000)"},
{0x1DF8, 0xC000, 0x1DF8, 0xC600, "Enterprise U.2 NVMe SSD(0x1DF8-0xC600)"},
{0x1DF8, 0xD000, 0xFFFF, 0xFFFF, "PC NVMe SSD(0xD000)"},
@ -30645,6 +30714,17 @@ pci_id_t pci_vid_1E0F[] = {
{0x1E0F, 0x0011, 0x1028, 0x2193, "NVMe CD7 E3.S 1.92TB(0x1028-0x2193)"},
{0x1E0F, 0x0011, 0x1028, 0x2194, "NVMe CD7 E3.S 3.84TB(0x1028-0x2194)"},
{0x1E0F, 0x0011, 0x1028, 0x2195, "NVMe CD7 E3.S 7.68TB(0x1028-0x2195)"},
{0x1E0F, 0x001F, 0xFFFF, 0xFFFF, "NVMe SSD Controller CD8(0x001F)"},
{0x1E0F, 0x001F, 0x1028, 0x2223, "DC NVMe CD8 U.2 SED 15.36TB(0x1028-0x2223)"},
{0x1E0F, 0x001F, 0x1028, 0x2224, "DC NVMe CD8 U.2 SED 7.68TB(0x1028-0x2224)"},
{0x1E0F, 0x001F, 0x1028, 0x2225, "DC NVMe CD8 U.2 SED 3.84TB(0x1028-0x2225)"},
{0x1E0F, 0x001F, 0x1028, 0x2226, "DC NVMe CD8 U.2 SED 1.92TB(0x1028-0x2226)"},
{0x1E0F, 0x001F, 0x1028, 0x2227, "DC NVMe CD8 U.2 SED 960GB(0x1028-0x2227)"},
{0x1E0F, 0x001F, 0x1028, 0x2228, "DC NVMe CD8 U.2 15.36TB(0x1028-0x2228)"},
{0x1E0F, 0x001F, 0x1028, 0x2229, "DC NVMe CD8 U.2 7.68TB(0x1028-0x2229)"},
{0x1E0F, 0x001F, 0x1028, 0x222A, "DC NVMe CD8 U.2 3.84TB(0x1028-0x222A)"},
{0x1E0F, 0x001F, 0x1028, 0x222B, "DC NVMe CD8 U.2 1.92TB(0x1028-0x222B)"},
{0x1E0F, 0x001F, 0x1028, 0x222C, "DC NVMe CD8 U.2 960GB(0x1028-0x222C)"},
}; /* pci_vid_1E0F[] */
pci_id_t pci_vid_1E17[] = {
@ -31088,7 +31168,13 @@ pci_id_t pci_vid_1F0F[] = {
{0x1F0F, 0x1222, 0xFFFF, 0xFFFF, "D1055AS Ethernet Controller(0x1222)"},
{0x1F0F, 0x1223, 0xFFFF, 0xFFFF, "D1055AS Ethernet Controller(0x1223)"},
{0x1F0F, 0x1600, 0xFFFF, 0xFFFF, "M16104 Family(0x1600)"},
{0x1F0F, 0x1600, 0x1F0F, 0x0001, "M16104 Family(0x1F0F-0x0001)"},
{0x1F0F, 0x1601, 0xFFFF, 0xFFFF, "M16104 Family Virtual Function(0x1601)"},
{0x1F0F, 0x1601, 0x1F0F, 0x0001, "M16104 Family Virtual Function(0x1F0F-0x0001)"},
{0x1F0F, 0x1A00, 0xFFFF, 0xFFFF, "M16104 Family(0x1A00)"},
{0x1F0F, 0x1A00, 0x1F0F, 0x0001, "M16104 Family(0x1F0F-0x0001)"},
{0x1F0F, 0x1A01, 0xFFFF, 0xFFFF, "M16104 Family Virtual Function(0x1A01)"},
{0x1F0F, 0x1A01, 0x1F0F, 0x0001, "M16104 Family Virtual Function(0x1F0F-0x0001)"},
{0x1F0F, 0x2022, 0xFFFF, 0xFFFF, "D1055AS PCI Express Switch Upstream Port(0x2022)"},
{0x1F0F, 0x9088, 0xFFFF, 0xFFFF, "D1055AS PCI Express Switch Downstream Port(0x9088)"},
}; /* pci_vid_1F0F[] */
@ -32649,6 +32735,7 @@ pci_id_t pci_vid_8086[] = {
{0x8086, 0x06BA, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #1(0x06BA)"},
{0x8086, 0x06BB, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #4(0x06BB)"},
{0x8086, 0x06BD, 0xFFFF, 0xFFFF, "Comet Lake PCIe Port #6(0x06BD)"},
{0x8086, 0x06BF, 0xFFFF, 0xFFFF, "Comet Lake PCIe Port #8(0x06BF)"},
{0x8086, 0x06C0, 0xFFFF, 0xFFFF, "Comet Lake PCI Express Root Port #17(0x06C0)"},
{0x8086, 0x06C8, 0xFFFF, 0xFFFF, "Comet Lake PCH cAVS(0x06C8)"},
{0x8086, 0x06D2, 0xFFFF, 0xFFFF, "Comet Lake SATA AHCI Controller(0x06D2)"},
@ -34518,6 +34605,7 @@ pci_id_t pci_vid_8086[] = {
{0x8086, 0x1592, 0x8086, 0x0010, "Ethernet 100G 2P E810-C-stg Adapter(0x8086-0x0010)"},
{0x8086, 0x1592, 0x8086, 0x0011, "Ethernet Network Adapter E810-C-Q1 for OCP3.0(0x8086-0x0011)"},
{0x8086, 0x1592, 0x8086, 0x0012, "Ethernet 100G 2P E810-C-st Adapter(0x8086-0x0012)"},
{0x8086, 0x1592, 0x8086, 0x0013, "Ethernet Network Adapter E810-C-Q1 for OCP 3.0(0x8086-0x0013)"},
{0x8086, 0x1593, 0xFFFF, 0xFFFF, "Ethernet Controller E810-C for SFP(0x1593)"},
{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)"},
@ -41737,6 +41825,16 @@ pci_id_t pci_vid_C0FE[] = {
{0xC0FE, 0xFFFF, 0xFFFF, 0xFFFF, "Motion Engineering, Inc.(0xC0FE)"},
}; /* pci_vid_C0FE[] */
pci_id_t pci_vid_CA01[] = {
{0xCA01, 0xFFFF, 0xFFFF, 0xFFFF, "I-TEK OptoElectronics Co., LTD.(0xCA01)"},
{0xCA01, 0x0212, 0xFFFF, 0xFFFF, "Vulcan-CL(0x0212)"},
}; /* pci_vid_CA01[] */
pci_id_t pci_vid_CA02[] = {
{0xCA02, 0xFFFF, 0xFFFF, 0xFFFF, "I-TEK OptoElectronics Co., LTD.(0xCA02)"},
{0xCA02, 0x0213, 0xFFFF, 0xFFFF, "Vulcan-CXP(0x0213)"},
}; /* pci_vid_CA02[] */
pci_id_t pci_vid_CA3B[] = {
{0xCA3B, 0xFFFF, 0xFFFF, 0xFFFF, "Cambrionix Ltd.(0xCA3B)"},
}; /* pci_vid_CA3B[] */
@ -42197,7 +42295,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x01DE, 4, pci_vid_01DE },
{0x0200, 1, pci_vid_0200 },
{0x021B, 2, pci_vid_021B },
{0x025E, 2, pci_vid_025E },
{0x025E, 3, pci_vid_025E },
{0x0270, 1, pci_vid_0270 },
{0x0291, 1, pci_vid_0291 },
{0x02AC, 2, pci_vid_02AC },
@ -42225,9 +42323,9 @@ pci_vid_index_t pci_vid_index[] = {
{0x0E55, 1, pci_vid_0E55 },
{0x0EAC, 2, pci_vid_0EAC },
{0x0F62, 1, pci_vid_0F62 },
{0x1000, 756, pci_vid_1000 },
{0x1000, 757, pci_vid_1000 },
{0x1001, 10, pci_vid_1001 },
{0x1002, 3204, pci_vid_1002 },
{0x1002, 3209, pci_vid_1002 },
{0x1003, 2, pci_vid_1003 },
{0x1004, 34, pci_vid_1004 },
{0x1005, 8, pci_vid_1005 },
@ -43292,7 +43390,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x144A, 15, pci_vid_144A },
{0x144B, 1, pci_vid_144B },
{0x144C, 1, pci_vid_144C },
{0x144D, 107, pci_vid_144D },
{0x144D, 158, pci_vid_144D },
{0x144E, 1, pci_vid_144E },
{0x144F, 1, pci_vid_144F },
{0x1450, 1, pci_vid_1450 },
@ -43644,7 +43742,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x15B0, 1, pci_vid_15B0 },
{0x15B1, 1, pci_vid_15B1 },
{0x15B2, 1, pci_vid_15B2 },
{0x15B3, 245, pci_vid_15B3 },
{0x15B3, 247, pci_vid_15B3 },
{0x15B4, 1, pci_vid_15B4 },
{0x15B5, 1, pci_vid_15B5 },
{0x15B6, 17, pci_vid_15B6 },
@ -43781,7 +43879,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x16D5, 98, pci_vid_16D5 },
{0x16DA, 2, pci_vid_16DA },
{0x16DF, 1, pci_vid_16DF },
{0x16E2, 60, pci_vid_16E2 },
{0x16E2, 61, pci_vid_16E2 },
{0x16E3, 2, pci_vid_16E3 },
{0x16E5, 3, pci_vid_16E5 },
{0x16EC, 7, pci_vid_16EC },
@ -43833,7 +43931,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x17CC, 2, pci_vid_17CC },
{0x17CD, 1, pci_vid_17CD },
{0x17CF, 1, pci_vid_17CF },
{0x17D3, 43, pci_vid_17D3 },
{0x17D3, 46, pci_vid_17D3 },
{0x17D5, 30, pci_vid_17D5 },
{0x17DB, 2, pci_vid_17DB },
{0x17DE, 1, pci_vid_17DE },
@ -44084,7 +44182,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x1C44, 2, pci_vid_1C44 },
{0x1C58, 7, pci_vid_1C58 },
{0x1C5C, 25, pci_vid_1C5C },
{0x1C5F, 67, pci_vid_1C5F },
{0x1C5F, 69, pci_vid_1C5F },
{0x1C63, 2, pci_vid_1C63 },
{0x1C7E, 2, pci_vid_1C7E },
{0x1C7F, 2, pci_vid_1C7F },
@ -44133,7 +44231,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x1D79, 1, pci_vid_1D79 },
{0x1D7C, 2, pci_vid_1D7C },
{0x1D82, 5, pci_vid_1D82 },
{0x1D87, 6, pci_vid_1D87 },
{0x1D87, 7, pci_vid_1D87 },
{0x1D89, 2, pci_vid_1D89 },
{0x1D8F, 1, pci_vid_1D8F },
{0x1D92, 1, pci_vid_1D92 },
@ -44168,9 +44266,9 @@ pci_vid_index_t pci_vid_index[] = {
{0x1DEF, 27, pci_vid_1DEF },
{0x1DF3, 29, pci_vid_1DF3 },
{0x1DF7, 4, pci_vid_1DF7 },
{0x1DF8, 7, pci_vid_1DF8 },
{0x1DF8, 9, pci_vid_1DF8 },
{0x1DFC, 2, pci_vid_1DFC },
{0x1E0F, 39, pci_vid_1E0F },
{0x1E0F, 50, pci_vid_1E0F },
{0x1E17, 1, pci_vid_1E17 },
{0x1E24, 8, pci_vid_1E24 },
{0x1E26, 1, pci_vid_1E26 },
@ -44229,7 +44327,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x1EFB, 1, pci_vid_1EFB },
{0x1F02, 1, pci_vid_1F02 },
{0x1F03, 8, pci_vid_1F03 },
{0x1F0F, 13, pci_vid_1F0F },
{0x1F0F, 19, pci_vid_1F0F },
{0x1F24, 4, pci_vid_1F24 },
{0x1F2F, 7, pci_vid_1F2F },
{0x1F3F, 38, pci_vid_1F3F },
@ -44373,7 +44471,7 @@ pci_vid_index_t pci_vid_index[] = {
{0x7FED, 1, pci_vid_7FED },
{0x8008, 4, pci_vid_8008 },
{0x807D, 1, pci_vid_807D },
{0x8086, 8446, pci_vid_8086 },
{0x8086, 8448, pci_vid_8086 },
{0x8088, 53, pci_vid_8088 },
{0x80EE, 3, pci_vid_80EE },
{0x8322, 1, pci_vid_8322 },
@ -44445,6 +44543,8 @@ pci_vid_index_t pci_vid_index[] = {
{0xC0A9, 4, pci_vid_C0A9 },
{0xC0DE, 1, pci_vid_C0DE },
{0xC0FE, 1, pci_vid_C0FE },
{0xCA01, 2, pci_vid_CA01 },
{0xCA02, 2, pci_vid_CA02 },
{0xCA3B, 1, pci_vid_CA3B },
{0xCA50, 1, pci_vid_CA50 },
{0xCACE, 4, pci_vid_CACE },
@ -44498,7 +44598,7 @@ pci_vid_index_t pci_vid_index[] = {
{0xFFFD, 2, pci_vid_FFFD },
{0xFFFE, 2, pci_vid_FFFE },
{0xFFFF, 1, pci_vid_FFFF },
}; /* We have 2318 VIDs */
}; /* We have 2320 VIDs */
static pci_vid_index_t *get_vid_index(guint16 vid)
{

View File

@ -211,7 +211,6 @@ typedef struct _e_prefs {
gint gui_debounce_timer;
gchar *saved_at_version;
gboolean unknown_prefs; /* unknown or obsolete pref(s) */
gboolean unknown_colorfilters; /* Warn when saving unknown or obsolete color filters. */
gboolean gui_qt_packet_list_separator;
gboolean gui_qt_packet_header_column_definition;
gboolean gui_qt_packet_list_hover_style; /* Enable/Disable mouse-over colorization */

View File

@ -12254,6 +12254,9 @@ proto_tree_add_bits_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb,
PROTO_REGISTRAR_GET_NTH(hfindex, hfinfo);
if (no_of_bits < 0) {
THROW(ReportedBoundsError);
}
octet_length = (no_of_bits + 7) >> 3;
octet_offset = bit_offset >> 3;
test_length(hfinfo, tvb, octet_offset, octet_length, encoding);
@ -12302,7 +12305,9 @@ _proto_tree_add_bits_ret_val(proto_tree *tree, const int hfindex, tvbuff_t *tvb,
hf_field->abbrev, hf_field->name);
}
if (no_of_bits == 0) {
if (no_of_bits < 0) {
THROW(ReportedBoundsError);
} else if (no_of_bits == 0) {
REPORT_DISSECTOR_BUG("field %s passed to proto_tree_add_bits_ret_val() has a bit width of 0",
hf_field->abbrev);
}
@ -12674,7 +12679,9 @@ _proto_tree_add_bits_format_value(proto_tree *tree, const int hfindex,
hf_field->abbrev, hf_field->name);
}
if (no_of_bits == 0) {
if (no_of_bits < 0) {
THROW(ReportedBoundsError);
} else if (no_of_bits == 0) {
REPORT_DISSECTOR_BUG("field %s passed to proto_tree_add_bits_format_value() has a bit width of 0",
hf_field->abbrev);
}

View File

@ -18,8 +18,9 @@
#include "epan/dissectors/dissectors.h"
static const char *cur_cb_name = NULL;
// We could use g_atomic_pointer_set/get instead of a mutex, but that's
// currently (early 2018) invisible to TSAN.
// We could use g_atomic_pointer_set/get instead of a mutex, but that causes
// a false positive with Clang and TSAN for GLib < 2.64.0 (Issue #17753):
// https://gitlab.gnome.org/GNOME/glib/-/issues/1843
static GMutex cur_cb_name_mtx;
static GAsyncQueue *register_cb_done_q;

182
manuf
View File

@ -45,23 +45,23 @@
# https://standards-oui.ieee.org/cid/cid.csv:
# Content-Length: 14062
# Last-Modified: Sun, 12 Feb 2023 15:00:31 GMT
# Last-Modified: Sun, 05 Mar 2023 15:00:39 GMT
# https://standards-oui.ieee.org/iab/iab.csv:
# Content-Length: 381510
# Last-Modified: Sun, 12 Feb 2023 15:00:50 GMT
# Last-Modified: Sun, 05 Mar 2023 15:01:00 GMT
# https://standards-oui.ieee.org/oui/oui.csv:
# Content-Length: 3101532
# Last-Modified: Sun, 12 Feb 2023 15:01:32 GMT
# Content-Length: 3112090
# Last-Modified: Sun, 05 Mar 2023 15:01:46 GMT
# https://standards-oui.ieee.org/oui28/mam.csv:
# Content-Length: 509141
# Last-Modified: Sun, 12 Feb 2023 15:01:00 GMT
# Content-Length: 512786
# Last-Modified: Sun, 05 Mar 2023 15:01:14 GMT
# https://standards-oui.ieee.org/oui36/oui36.csv:
# Content-Length: 481229
# Last-Modified: Sun, 12 Feb 2023 15:01:22 GMT
# Content-Length: 483910
# Last-Modified: Sun, 05 Mar 2023 15:01:37 GMT
00:00:00 00:00:00 Officially Xerox, but 0:0:0:0:0:0 is more common
00:00:01 Xerox Xerox Corporation
@ -10537,6 +10537,7 @@
00:35:FF TexasIns Texas Instruments
00:36:76 ARRISGro ARRIS Group, Inc.
00:36:BE Northwes Northwest Towers
00:36:D7 KeltronI Keltron IOT Corp.
00:36:F8 ContiTem Conti Temic microelectronic GmbH
00:36:FE SuperVis SuperVision
00:37:6D MurataMa Murata Manufacturing Co., Ltd.
@ -15726,7 +15727,7 @@
00:80:B5 UnitedNe United Networks Inc.
00:80:B6 Themis Themis corporation
00:80:B7 StellarC Stellar Computer
00:80:B8 DmgMoriB Dmg Mori B.U.G. Co., Ltd.
00:80:B8 DMGMORID DMG MORI Digital Co., LTD
00:80:B9 ArcheTec Arche Technoligies Inc.
00:80:BA Speciali Specialix (Asia) Pte, Ltd
00:80:BB HughesLa Hughes Lan Systems
@ -18015,6 +18016,7 @@
08:30:CE Fiberhom Fiberhome Telecommunication Technologies Co.,LTD
08:31:8B HuaweiTe Huawei Technologies Co.,Ltd
08:31:A4 HuaweiDe Huawei Device Co., Ltd.
08:33:ED AskeyCom Askey Computer Corp
08:35:1B Shenzhen Shenzhen Jialihua Electronic Technology Co., Ltd
08:35:71 CASwell CASwell INC.
08:35:B2 CoreEdge CoreEdge Networks Co., Ltd
@ -18283,6 +18285,7 @@
08:F8:0D:A0:00:00/28 MickeyIn Mickey Industry,Ltd.
08:F8:0D:B0:00:00/28 VontInno Vont Innovations
08:F8:BC Apple Apple, Inc.
08:F9:E0 Espressi Espressif Inc.
08:FA:28 HuaweiTe Huawei Technologies Co.,Ltd
08:FA:79 vivoMobi vivo Mobile Communication Co., Ltd.
08:FA:E0 FohhnAud Fohhn Audio AG
@ -18336,6 +18339,7 @@
0C:25:76 Longchee Longcheer Telecommunication Limited
0C:27:24 Cisco Cisco Systems, Inc
0C:27:55 Valuable Valuable Techologies Limited
0C:29:8F Tesla Tesla,Inc.
0C:29:EF Dell Dell Inc.
0C:2A:69 electric electric imp, incorporated
0C:2A:86 Fiberhom Fiberhome Telecommunication Technologies Co.,LTD
@ -18507,6 +18511,7 @@
0C:86:29:D0:00:00/28 BeijingB Beijing Beibianzhida Technology Co.,Ltd
0C:86:29:E0:00:00/28 FxTechno Fx Technology Limited
0C:86:C7 JabilCir Jabil Circuit (Guangzhou) Limited
0C:87:72 FujianSt Fujian Star-Net Communication Co.,Ltd
0C:89:10 SamsungE Samsung Electronics Co.,Ltd
0C:8A:87 AgLogica AgLogica Holdings, Inc
0C:8B:7D Vizio Vizio, Inc
@ -18766,6 +18771,8 @@
10:12:FB Hangzhou Hangzhou Hikvision Digital Technology Co.,Ltd.
10:13:31 Technico Technicolor Delivery Technologies Belgium NV
10:13:EE JustecIn Justec International Technology INC.
10:15:C1 ZhanzuoB Zhanzuo (Beijing) Technology Co., Ltd.
10:18:49 WeifangG Weifang Goertek Electronics Co.,Ltd
10:18:9E ElmoMoti Elmo Motion Control
10:19:65 NewH3CTe New H3C Technologies Co., Ltd
10:1B:54 HuaweiTe Huawei Technologies Co.,Ltd
@ -19128,6 +19135,7 @@
14:16:9D Cisco Cisco Systems, Inc
14:16:9E Wingtech Wingtech Group (HongKongLimited
14:17:2A Fiberhom Fiberhome Telecommunication Technologies Co.,LTD
14:18:44 XenonSma Xenon Smart Teknoloji Ltd.
14:18:77 Dell Dell Inc.
14:18:C3 IntelCor Intel Corporate
14:19:73 BeijingY Beijing Yunyi Times Technology Co.,Ltd
@ -19172,6 +19180,7 @@
14:2B:D6 Guangdon Guangdong Appscomm Co.,Ltd
14:2C:78 GooWiWir GooWi Wireless Technology Co., Limited
14:2D:27 HonHaiPr Hon Hai Precision Ind. Co.,Ltd.
14:2D:41 SiliconL Silicon Laboratories
14:2D:4D Apple Apple, Inc.
14:2D:79 Fiberhom Fiberhome Telecommunication Technologies Co.,LTD
14:2D:8B IncipioT Incipio Technologies, Inc
@ -20231,7 +20240,7 @@
1C:A0:D3:40:00:00/28 NpoTelec Npo Telecom Jsc
1C:A0:D3:50:00:00/28 DynamicC Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd.
1C:A0:D3:60:00:00/28 Intertec Intertecno SRL "NISUTA"
1C:A0:D3:70:00:00/28 Private
1C:A0:D3:70:00:00/28 U-TXTech U-TX Technologies Ltd
1C:A0:D3:80:00:00/28 Desarrol Desarrollos y Soluciones Guinea I+D S.L.
1C:A0:D3:90:00:00/28 CirqueAu Cirque Audio Technology Co., Ltd
1C:A0:D3:A0:00:00/28 DSMMesst DSM Messtechnik GmbH
@ -20669,6 +20678,7 @@
20:B7:30 TeconGro TeconGroup, Inc
20:B7:80 ToshibaV Toshiba Visual Solutions Corporation Co.,Ltd
20:B7:C0 OMICRONe OMICRON electronics GmbH
20:B8:2B Sagemcom Sagemcom Broadband SAS
20:B8:68 Motorola Motorola Mobility LLC, a Lenovo Company
20:BA:36 u-blox u-blox AG
20:BB:76 COLGIOVA COL GIOVANNI PAOLO SpA
@ -20949,6 +20959,7 @@
24:69:A5 HuaweiTe Huawei Technologies Co.,Ltd
24:6A:AB IT-ISInt IT-IS International
24:6C:60 HuaweiDe Huawei Device Co., Ltd.
24:6C:84 Cisco Cisco Systems, Inc
24:6C:8A YUKAIEng YUKAI Engineering
24:6E:96 Dell Dell Inc.
24:6F:28 Espressi Espressif Inc.
@ -21038,7 +21049,7 @@
24:BC:F8 HuaweiTe Huawei Technologies Co.,Ltd
24:BE:05 HewlettP Hewlett Packard
24:BE:18 Dadoutek Dadoutek Company Limited
24:BF:74 Private
24:BF:74 Hamamats Hamamatsu Photonics K.K.
24:C0:B3 Rsf
24:C1:7A BeijingI Beijing Iactive Network Co.,Ltd
24:C1:BD CrrcDali Crrc Dalian R&D Co.,Ltd.
@ -21078,6 +21089,7 @@
24:DB:AD ShopperT ShopperTrak RCT Corporation
24:DB:ED SamsungE Samsung Electronics Co.,Ltd
24:DC:0F PhytiumT Phytium Technology Co.,Ltd.
24:DC:C3 Espressi Espressif Inc.
24:DE:C6 ArubaaHe Aruba, a Hewlett Packard Enterprise Company
24:DF:6A HuaweiTe Huawei Technologies Co.,Ltd
24:DF:A7 Hangzhou Hangzhou BroadLink Technology Co.,Ltd
@ -21302,6 +21314,7 @@
28:71:84 SpirePay Spire Payments
28:72:C5 Smartmat Smartmatic Corp
28:72:F0 Athena
28:73:F6 AmazonTe Amazon Technologies Inc.
28:74:F5 NokiaSol Nokia Solutions and Networks GmbH & Co. KG
28:75:D8 FujianSt Fujian Star-Net Communication Co.,Ltd
28:76:10 IgniteNe IgniteNet
@ -21474,6 +21487,7 @@
28:EA:0B Microsof Microsoft Corporation
28:EA:2D Apple Apple, Inc.
28:EB:A6 Nex-T Nex-T LLC
28:EC:22 eero eero inc.
28:EC:95 Apple Apple, Inc.
28:EC:9A TexasIns Texas Instruments
28:ED:58 JAGJakob JAG Jakob AG
@ -21675,6 +21689,7 @@
2C:3A:FD AVMAudio AVM Audiovisuelles Marketing und Computersysteme GmbH
2C:3B:70 AzureWav AzureWave Technology Inc.
2C:3B:FD NetstorT Netstor Technology Co., Ltd.
2C:3E:BF HOSINGlo HOSIN Global Electronics Co., Ltd.
2C:3E:CF Cisco Cisco Systems, Inc
2C:3F:0B CiscoMer Cisco Meraki
2C:3F:38 Cisco Cisco Systems, Inc
@ -22039,6 +22054,7 @@
30:1A:30 MakoNetw Mako Networks Ltd
30:1A:BA Guangdon Guangdong Oppo Mobile Telecommunications Corp.,Ltd
30:1B:97 LierdaSc Lierda Science & Technology Group Co.,Ltd
30:1D:49 FirmusTe Firmus Technologies Pty Ltd
30:1F:48 zte zte corporation
30:1F:9A IEEERegi IEEE Registration Authority
30:1F:9A:00:00:00/28 IlsanEle Ilsan Electronics
@ -22277,6 +22293,7 @@
30:B1:B5 Arcadyan Arcadyan Corporation
30:B2:16 HitachiE Hitachi Energy Germany AG
30:B2:37 GDMideaA GD Midea Air-Conditioning Equipment Co.,Ltd.
30:B2:9F Evident Evident Corporation
30:B3:46 CjscNors Cjsc Norsi-Trans
30:B3:A2 Shenzhen Shenzhen Heguang Measurement & Control Technology Co.,Ltd
30:B4:9E Tp-LinkT Tp-Link Technologies Co.,Ltd.
@ -22584,6 +22601,7 @@
34:86:2A HeinzLac Heinz Lackmann GmbH & Co KG
34:86:5D Espressi Espressif Inc.
34:87:3D QuectelW Quectel Wireless Solutions Co.,Ltd.
34:88:18 Cisco Cisco Systems, Inc
34:88:5D Logitech Logitech Far East
34:8A:12 ArubaaHe Aruba, a Hewlett Packard Enterprise Company
34:8A:7B SamsungE Samsung Electronics Co.,Ltd
@ -22698,6 +22716,7 @@
34:D2:62 SzDjiTec Sz Dji Technology Co.,Ltd
34:D2:70 AmazonTe Amazon Technologies Inc.
34:D2:C4 RENAPrin RENA GmbH Print Systeme
34:D4:E3 AtomPowe Atom Power, Inc.
34:D6:93 HuaweiDe Huawei Device Co., Ltd.
34:D7:12 Smartisa Smartisan Digital Co., Ltd
34:D7:37 IBGIndus IBG Industriebeteiligungsgesellschaft mbH &b Co. KG
@ -22708,6 +22727,7 @@
34:DA:C1 SAETechn SAE Technologies Development(Dongguan) Co., Ltd.
34:DB:9C Sagemcom Sagemcom Broadband SAS
34:DB:FD Cisco Cisco Systems, Inc
34:DC:99 NewH3CTe New H3C Technologies Co., Ltd
34:DD:04 Minut Minut AB
34:DD:7E UmeoxInn Umeox Innovations Co.,Ltd
34:DE:1A IntelCor Intel Corporate
@ -23310,6 +23330,7 @@
3C:2C:99 Edgecore Edgecore Networks Corporation
3C:2C:A6 BeijingX Beijing Xiaomi Electronics Co.,Ltd
3C:2D:B7 TexasIns Texas Instruments
3C:2E:F5 SiliconL Silicon Laboratories
3C:2E:F9 Apple Apple, Inc.
3C:2E:FF Apple Apple, Inc.
3C:2F:3A SFORZATO SFORZATO Corp.
@ -23575,6 +23596,7 @@
3C:DF:1E Cisco Cisco Systems, Inc
3C:DF:A9 ARRISGro ARRIS Group, Inc.
3C:DF:BD HuaweiTe Huawei Technologies Co.,Ltd
3C:E0:02 TexasIns Texas Instruments
3C:E0:38 Omnifi Omnifi Inc.
3C:E0:64 TexasIns Texas Instruments
3C:E0:72 Apple Apple, Inc.
@ -23593,6 +23615,7 @@
3C:EA:F9 Jubixcol Jubixcoltd
3C:EA:FB Nse Nse Ag
3C:EC:EF SuperMic Super Micro Computer, Inc.
3C:EF:42 TCTmobil TCT mobile ltd
3C:EF:8C Zhejiang Zhejiang Dahua Technology Co., Ltd.
3C:F0:11 IntelCor Intel Corporate
3C:F3:92 Virtualt Virtualtek. Co. Ltd
@ -23667,6 +23690,7 @@
40:11:DC Sonance
40:12:E4 Compass- Compass-EOS
40:13:D9 GlobalES Global ES
40:14:82 Cisco Cisco Systems, Inc
40:14:AD HuaweiDe Huawei Device Co., Ltd.
40:15:97 ProtectA Protect America, Inc.
40:16:3B SamsungE Samsung Electronics Co.,Ltd
@ -23691,6 +23715,7 @@
40:26:19 Apple Apple, Inc.
40:27:0B Mobileec Mobileeco Co., Ltd
40:28:14 RFIEngin RFI Engineering
40:2A:8F Shanghai Shanghai High-Flying Electronics Technology Co., Ltd
40:2B:50 ARRISGro ARRIS Group, Inc.
40:2B:69 KumhoEle Kumho Electric Inc.
40:2B:A1 Sony Sony Corporation
@ -23852,6 +23877,7 @@
40:98:7B Aisino Aisino Corporation
40:98:AD Apple Apple, Inc.
40:99:22 AzureWav AzureWave Technology Inc.
40:9A:30 TecnoMob Tecno Mobile Limited
40:9B:0D Shenzhen Shenzhen Yourf Kwan Industrial Co., Ltd
40:9B:21 Nokia
40:9B:CD D-LinkIn D-Link International
@ -23948,7 +23974,9 @@
40:D3:AE SamsungE Samsung Electronics Co.,Ltd
40:D4:0E Biodata Biodata Ltd
40:D4:BD SKNetwor SK Networks Service CO., LTD.
40:D4:F6 HonorDev Honor Device Co., Ltd.
40:D5:59 MicroSER Micro S.E.R.I.
40:D5:63 HANAElec HANA Electronics
40:D6:3C Equitech Equitech Industrial(DongGuan)Co.,Ltd
40:D8:55 IEEERegi IEEE Registration Authority
40:D8:55:00:00:00/36 Xronos Xronos.Inc
@ -24542,6 +24570,7 @@
44:03:77:E0:00:00/28 BolinTec Bolin Technology Co., Ltd
44:03:A7 Cisco Cisco Systems, Inc
44:04:44 Guangdon Guangdong Oppo Mobile Telecommunications Corp.,Ltd
44:05:3F Sagemcom Sagemcom Broadband SAS
44:05:E8 twareLAB
44:07:0B Google Google, Inc.
44:09:B8 SalcompS Salcomp (Shenzhen) CO., LTD.
@ -24969,6 +24998,7 @@
48:2F:6B ArubaaHe Aruba, a Hewlett Packard Enterprise Company
48:2F:D7 HuaweiTe Huawei Technologies Co.,Ltd
48:31:77 Nintendo Nintendo Co.,Ltd
48:31:B7 Espressi Espressif Inc.
48:31:DB HuaweiDe Huawei Device Co., Ltd.
48:33:DD ZennioAv Zennio Avance Y Tecnologia, S.L.
48:34:3D IEP IEP GmbH
@ -25119,6 +25149,7 @@
48:91:53 Weinmann Weinmann Geräte für Medizin GmbH + Co. KG
48:91:D5 Cisco Cisco Systems, Inc
48:91:F6 Shenzhen Shenzhen Reach software technology CO.,LTD
48:93:DC UniwayIn Uniway Infocom Pvt Ltd
48:95:07 Guangdon Guangdong Oppo Mobile Telecommunications Corp.,Ltd
48:98:CA SichuanA Sichuan AI-Link Technology Co., Ltd.
48:9A:42 Technoma Technomate Ltd
@ -25617,6 +25648,7 @@
4C:D0:CB HuaweiTe Huawei Technologies Co.,Ltd
4C:D0:DD HuaweiTe Huawei Technologies Co.,Ltd
4C:D1:A1 HuaweiTe Huawei Technologies Co.,Ltd
4C:D2:FB Unionman Unionman Technology Co.,Ltd
4C:D3:AF HMDGloba HMD Global Oy
4C:D5:77 Chongqin Chongqing Fugui Electronics Co.,Ltd.
4C:D6:29 HuaweiTe Huawei Technologies Co.,Ltd
@ -25660,6 +25692,7 @@
4C:EB:42 IntelCor Intel Corporate
4C:EB:BD Chongqin Chongqing Fugui Electronics Co.,Ltd.
4C:EB:D6 Espressi Espressif Inc.
4C:EC:0F Cisco Cisco Systems, Inc
4C:EC:EF Soraa Soraa, Inc.
4C:ED:DE AskeyCom Askey Computer Corp
4C:ED:FB ASUSTekC ASUSTek COMPUTER INC.
@ -26199,6 +26232,7 @@
54:2F:8A Tellesco Tellescom Industria E Comercio Em Telecomunicacao
54:31:31 RasterVi Raster Vision Ltd
54:31:D4 TGWMecha TGW Mechanics GmbH
54:32:04 Espressi Espressif Inc.
54:32:C7 Apple Apple, Inc.
54:33:CB Apple Apple, Inc.
54:34:EF HuaweiTe Huawei Technologies Co.,Ltd
@ -26544,6 +26578,7 @@
58:40:4E Apple Apple, Inc.
58:41:20 Tp-LinkT Tp-Link Technologies Co.,Ltd.
58:42:E4 BaxterIn Baxter International Inc
58:43:AB Guangdon Guangdong Oppo Mobile Telecommunications Corp.,Ltd
58:44:98 XiaomiCo Xiaomi Communications Co Ltd
58:45:4C Ericsson Ericsson AB
58:46:8F KoncarEl Koncar Electronics and Informatics
@ -26595,6 +26630,7 @@
58:53:C0 BeijingG Beijing Guang Runtong Technology Development Company co.,Ltd
58:55:95 Apple Apple, Inc.
58:55:CA Apple Apple, Inc.
58:56:9F Cisco Cisco Systems, Inc
58:56:C2 HuaweiTe Huawei Technologies Co.,Ltd
58:56:E8 ARRISGro ARRIS Group, Inc.
58:57:0D DanfossS Danfoss Solar Inverters
@ -26742,6 +26778,7 @@
58:C8:76 ChinaMob China Mobile (Hangzhou) Information Technology Co., Ltd.
58:C9:35 ChiunMai Chiun Mai Communication System, Inc
58:CB:52 Google Google, Inc.
58:CD:C9 CloudNet Cloud Network Technology Singapore Pte. Ltd.
58:CE:2A IntelCor Intel Corporate
58:CF:4B LufkinIn Lufkin Industries
58:CF:79 Espressi Espressif Inc.
@ -27150,11 +27187,13 @@
5C:E3:B6 Fiberhom Fiberhome Telecommunication Technologies Co.,LTD
5C:E4:2A IntelCor Intel Corporate
5C:E5:0C BeijingX Beijing Xiaomi Mobile Software Co., Ltd
5C:E6:88 VECOSEur VECOS Europe B.V.
5C:E7:47 HuaweiTe Huawei Technologies Co.,Ltd
5C:E7:A0 Nokia
5C:E7:BF NewSingu New Singularity International Technical Development Co.,Ltd
5C:E8:83 HuaweiTe Huawei Technologies Co.,Ltd
5C:E8:B7 OraimoTe Oraimo Technology Limited
5C:E8:D3 Signalin Signalinks Communication Technology Co., Ltd
5C:E8:EB SamsungE Samsung Electronics Co.,Ltd
5C:E9:1E Apple Apple, Inc.
5C:EA:1D HonHaiPr Hon Hai Precision Ind. Co.,Ltd.
@ -27401,6 +27440,7 @@
60:92:17 Apple Apple, Inc.
60:92:F5 ARRISGro ARRIS Group, Inc.
60:93:16 Apple Apple, Inc.
60:95:32 ZebraTec Zebra Technologies Inc.
60:95:BD Apple Apple, Inc.
60:95:CE IEEERegi IEEE Registration Authority
60:95:CE:00:00:00/28 SiemaApp Siema Applications
@ -27617,6 +27657,7 @@
64:17:59 Intelliv Intellivision Holdings, LLC
64:1A:22 Heliospe Heliospectra AB
64:1A:BA DryadNet Dryad Networks GmbH
64:1C:10 TexasIns Texas Instruments
64:1C:67 Digibras Digibras Industria Do Brasils/A
64:1C:AE SamsungE Samsung Electronics Co.,Ltd
64:1C:B0 SamsungE Samsung Electronics Co.,Ltd
@ -27986,6 +28027,7 @@
68:18:D9 HillAFB- Hill AFB - CAPRE Group
68:19:3F DigitalA Digital Airways
68:19:AC Guangzho Guangzhou Xianyou Intelligent Technogoly CO., LTD
68:1A:7C SichuanT Sichuan Tianyi Comheart Telecom Co.,LTD
68:1A:A4 Shenzhen Shenzhen Skyworth Digital Technology CO., Ltd
68:1A:B2 zte zte corporation
68:1B:EF HuaweiTe Huawei Technologies Co.,Ltd
@ -28004,6 +28046,7 @@
68:27:37 SamsungE Samsung Electronics Co.,Ltd
68:27:5F zte zte corporation
68:28:BA Dejai
68:28:CF ArubaaHe Aruba, a Hewlett Packard Enterprise Company
68:28:F6 VubiqNet Vubiq Networks, Inc.
68:29:DC FicosaEl Ficosa Electronics S.L.U.
68:2C:7B Cisco Cisco Systems, Inc
@ -28080,6 +28123,7 @@
68:6D:BC Hangzhou Hangzhou Hikvision Digital Technology Co.,Ltd.
68:6E:23 Wi3 Wi3 Inc.
68:6E:48 ProphetE Prophet Electronic Technology Corp.,Ltd
68:71:61 Cisco Cisco Systems, Inc
68:72:51 Ubiquiti Ubiquiti Inc
68:72:C3 SamsungE Samsung Electronics Co.,Ltd
68:72:DC CETORYTV CETORY.TV Company Limited
@ -28266,6 +28310,7 @@
68:EF:43 Apple Apple, Inc.
68:EF:BD Cisco Cisco Systems, Inc
68:F0:6D AlongInd Along Industrial Co., Limited
68:F0:B5 HonorDev Honor Device Co., Ltd.
68:F0:BC Shenzhen Shenzhen LiWiFi Technology Co., Ltd
68:F0:D0 SkyBellT SkyBell Technologies Inc.
68:F1:25 DataCont Data Controls Inc.
@ -28368,6 +28413,22 @@
6C:29:95 IntelCor Intel Corporate
6C:29:D2 Cisco Cisco Systems, Inc
6C:2A:CB PaxtonAc Paxton Access Ltd
6C:2A:DF IEEERegi IEEE Registration Authority
6C:2A:DF:00:00:00/28 Ademcodb Ademco Inc. dba ADI Global Distribution
6C:2A:DF:10:00:00/28 XianXind Xi'an Xindian Equipment Engineering Center Co., Ltd
6C:2A:DF:20:00:00/28 DaikoEle Daiko Electric Co.,Ltd
6C:2A:DF:30:00:00/28 FodicsSy FodicsSystem
6C:2A:DF:40:00:00/28 Zhejiang Zhejiang Eternal Automation Sci-Tec Co., Ltd
6C:2A:DF:50:00:00/28 Xinjiang Xinjiang Ying Sheng Information Technology Co., Ltd.
6C:2A:DF:60:00:00/28 ITI ITI Limited
6C:2A:DF:70:00:00/28 RootV
6C:2A:DF:80:00:00/28 BeijingY Beijing Yisheng Chuanqi Technology Co., Ltd.
6C:2A:DF:90:00:00/28 Simplewa Simpleway Europe a.s.
6C:2A:DF:A0:00:00/28 Jbf
6C:2A:DF:B0:00:00/28 MOBAMobi MOBA Mobile Automation AG
6C:2A:DF:C0:00:00/28 VnetsInf Vnets Information Technology Ltd.
6C:2A:DF:D0:00:00/28 SichuanH Sichuan Huidian Qiming Intelligent Technology Co.,Ltd
6C:2A:DF:E0:00:00/28 WeatherF WeatherFlow-Tempest, Inc
6C:2B:59 Dell Dell Inc.
6C:2C:06 NPPSyste OOO NPP Systemotechnika-NN
6C:2C:DC Skyworth Skyworth Digital Technology(Shenzhen) Co.,Ltd
@ -28684,15 +28745,19 @@
70:06:92 IEEERegi IEEE Registration Authority
70:06:92:00:00:00/28 Techolog Techology, LLC
70:06:92:10:00:00/28 BeijingF Beijing Fortech Microsystems., Co., Ltd.
70:06:92:20:00:00/28 ScudFuji Scud (Fujian) Electronics Co.,Ltd
70:06:92:30:00:00/28 Bosscctv Bosscctv Co., Ltd
70:06:92:40:00:00/28 Fusiosto Fusiostor Technologies Private Limited
70:06:92:50:00:00/28 CanaanCr Canaan Creative Co.,Ltd.
70:06:92:60:00:00/28 Hangzhou Hangzhou Clounix Technology Limited
70:06:92:70:00:00/28 DcnetSol Dcnet Solutions India Pvt Ltd
70:06:92:80:00:00/28 JMAWirel JMA Wireless
70:06:92:90:00:00/28 Shenzhen Shenzhen Lingwei Technology Co., Ltd
70:06:92:A0:00:00/28 Munters
70:06:92:B0:00:00/28 SWITElec SWIT Electronics Co.,Ltd
70:06:92:C0:00:00/28 ScoreBir ScoreBird, LLC
70:06:92:D0:00:00/28 SkywareP Skyware Protech Limited
70:06:92:E0:00:00/28 Ganghsan Ganghsan Guanglian
70:06:AC Eastcomp Eastcompeace Technology Co., Ltd
70:07:77 OnTarget OnTarget Technologies, Inc
70:09:71 SamsungE Samsung Electronics Co.,Ltd
@ -30776,7 +30841,7 @@
70:B3:D5:6F:10:00/36 Discover Discover Battery
70:B3:D5:6F:20:00/36 P&CMicro P&C Micro's Pty Ltd
70:B3:D5:6F:30:00/36 iungo
70:B3:D5:6F:40:00/36 Private
70:B3:D5:6F:40:00/36 WDIWiseD WDI Wise Device Inc.
70:B3:D5:6F:50:00/36 Cominfo Cominfo, Inc.
70:B3:D5:6F:60:00/36 AccoBran Acco Brands Europe
70:B3:D5:6F:70:00/36 Egicon Egicon Srl
@ -33303,6 +33368,7 @@
74:46:87 Kingsign Kingsignal Technology Co., Ltd.
74:46:A0 HewlettP Hewlett Packard
74:46:B3 TexasIns Texas Instruments
74:49:D2 NewH3CTe New H3C Technologies Co., Ltd
74:4A:A4 zte zte corporation
74:4B:E9 Explorer Explorer Hypertech Co.,Ltd
74:4C:A1 LiteonTe Liteon Technology Corporation
@ -33314,6 +33380,7 @@
74:53:27 Commsen Commsen Co., Limited
74:53:A8 ACLAirsh ACL Airshop BV
74:54:27 Shenzhen Shenzhen Fast Technologies Co.,Ltd
74:54:6B hangzhou hangzhou zhiyi communication co., ltd
74:54:7D CiscoSPV Cisco SPVTG
74:56:12 ARRISGro ARRIS Group, Inc.
74:56:3C Giga-Byt Giga-Byte Technology Co.,Ltd.
@ -33452,6 +33519,7 @@
74:A4:A7 QRSMusic QRS Music Technologies, Inc.
74:A4:B5 Powerlea Powerleader Science and Technology Co. Ltd.
74:A5:28 HuaweiTe Huawei Technologies Co.,Ltd
74:A5:8C TexasIns Texas Instruments
74:A6:CD Apple Apple, Inc.
74:A7:22 LGElectr LG Electronics (Mobile Communications)
74:A7:8E zte zte corporation
@ -33677,6 +33745,7 @@
78:28:CA Sonos Sonos, Inc.
78:29:ED AskeyCom Askey Computer Corp
78:2A:79 Integrat Integrated Device Technology (Malaysia) Sdn. Bhd.
78:2A:F8 IethcomI Iethcom Information Technology Co., Ltd.
78:2B:46 IntelCor Intel Corporate
78:2B:64 Bose Bose Corporation
78:2B:CB Dell Dell Inc.
@ -34152,6 +34221,7 @@
7C:2E:DD SamsungE Samsung Electronics Co.,Ltd
7C:2F:80 GigasetC Gigaset Communications GmbH
7C:31:0E Cisco Cisco Systems, Inc
7C:31:80 SMK SMK corporation
7C:33:6E MEGElect MEG Electronics Inc.
7C:33:F9 HuaweiTe Huawei Technologies Co.,Ltd
7C:35:48 Transcen Transcend Information
@ -34741,6 +34811,7 @@
80:7D:E3 Chongqin Chongqing Sichuan Instrument Microcircuit Co.LTD.
80:7E:B4 Shenzhen Shenzhen SuperElectron Technology Co.,Ltd.
80:7F:F8 JuniperN Juniper Networks
80:80:2C Fortinet Fortinet, Inc.
80:81:A5 TONGQING TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd
80:82:23 Apple Apple, Inc.
80:82:87 ATCOMTec ATCOM Technology Co.Ltd.
@ -35008,6 +35079,7 @@
84:3B:10 Lvswitch Lvswitches Inc.
84:3C:4C RobertBo Robert Bosch SRL
84:3D:C6 Cisco Cisco Systems, Inc
84:3E:1D HuiZhouG Hui Zhou Gaoshengda Technology Co.,LTD
84:3E:79 Shenzhen Shenzhen Belon Technology CO.,LTD
84:3E:92 HuaweiTe Huawei Technologies Co.,Ltd
84:3F:4E Tri-Tech Tri-Tech Manufacturing, Inc.
@ -35060,6 +35132,7 @@
84:71:27 SiliconL Silicon Laboratories
84:71:6A HuaweiDe Huawei Device Co., Ltd.
84:72:07 I&CTechn I&C Technology
84:72:93 TexasIns Texas Instruments
84:73:03 LetvMobi Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.
84:74:2A zte zte corporation
84:74:60 zte zte corporation
@ -35288,6 +35361,7 @@
84:F1:17 Newseaso Newseason
84:F1:29 Metrasca Metrascale Inc.
84:F1:47 Cisco Cisco Systems, Inc
84:F1:75 JiangxiX Jiangxi Xunte Intelligent Terminal Co., Ltd
84:F1:D0 EhoomeIo Ehoome Iot Private Limited
84:F3:EB Espressi Espressif Inc.
84:F4:4C Internat International Integrated Systems., Inc.
@ -35359,6 +35433,7 @@
88:2B:D7 Addénerg Addénergie Technologies
88:2D:53 BaiduOnl Baidu Online Network Technology (Beijing) Co., Ltd.
88:2E:5A storONE
88:30:37 JuniperN Juniper Networks
88:30:8A MurataMa Murata Manufacturing Co., Ltd.
88:32:9B SamsungE Samsung Electro-Mechanics(Thailand)
88:33:14 TexasIns Texas Instruments
@ -35391,6 +35466,7 @@
88:3C:C5:E0:00:00/28 myUpTech myUpTech AB
88:3D:24 Google Google, Inc.
88:3F:0C systemav system a.v. co., ltd.
88:3F:37 Uhtek Uhtek Co., Ltd.
88:3F:4A TexasIns Texas Instruments
88:3F:99 Siemens Siemens AG
88:3F:D3 HuaweiTe Huawei Technologies Co.,Ltd
@ -35811,6 +35887,7 @@
8C:1F:64:04:30:00/36 AperNet AperNet, LLC
8C:1F:64:04:50:00/36 Veilux Veilux Inc.
8C:1F:64:04:60:00/36 American American Fullway Corp.
8C:1F:64:05:10:00/36 CPcontec CP contech electronic GmbH
8C:1F:64:05:60:00/36 DongGuan Dong Guan Yung Fu Electronics Ltd.
8C:1F:64:05:90:00/36 MBconnec MB connect line GmbH Fernwartungssysteme
8C:1F:64:05:F0:00/36 ESCADAUT ESCAD AUTOMATION GmbH
@ -35832,6 +35909,7 @@
8C:1F:64:09:80:00/36 Agvoluti Agvolution GmbH
8C:1F:64:09:90:00/36 Pantheru Pantherun Technologies Pvt Ltd
8C:1F:64:09:B0:00/36 Taiv
8C:1F:64:09:E0:00/36 IWSGloba IWS Global Pty Ltd
8C:1F:64:09:F0:00/36 MBconnec MB connect line GmbH Fernwartungssysteme
8C:1F:64:0A:80:00/36 SamabaNo SamabaNova Systems
8C:1F:64:0A:A0:00/36 Di3Infot Di3 Infotech Llp
@ -35843,10 +35921,12 @@
8C:1F:64:0B:80:00/36 Signatro Signatrol Ltd
8C:1F:64:0B:B0:00/36 InfraChe InfraChen Technology Co., Ltd.
8C:1F:64:0B:E0:00/36 Bnb
8C:1F:64:0B:F0:00/36 AuroraCo Aurora Communication Technologies Corp.
8C:1F:64:0C:00:00/36 ActiveRe Active Research Limited
8C:1F:64:0C:50:00/36 TechnipF TechnipFMC
8C:1F:64:0D:50:00/36 RealD RealD, Inc.
8C:1F:64:0D:60:00/36 AvdInnov Avd Innovation Limited
8C:1F:64:0D:80:00/36 PowerEle Power Electronics Espana, S.L.
8C:1F:64:0E:00:00/36 Autophar Autopharma
8C:1F:64:0E:60:00/36 Cleanwat Cleanwatts Digital, S.A.
8C:1F:64:0E:A0:00/36 SmartSky SmartSky Networks LLC
@ -35871,6 +35951,7 @@
8C:1F:64:13:30:00/36 Vtron Vtron Pty Ltd
8C:1F:64:13:50:00/36 YuvalFic Yuval Fichman
8C:1F:64:13:80:00/36 Vissavis Vissavi sp. z o.o.
8C:1F:64:13:F0:00/36 Elsist Elsist Srl
8C:1F:64:14:40:00/36 Langfang Langfang ENN lntelligent Technology Co.,Ltd.
8C:1F:64:14:50:00/36 Spectrum Spectrum FiftyNine BV
8C:1F:64:14:B0:00/36 PotterEl Potter Electric Signal Company
@ -35895,6 +35976,7 @@
8C:1F:64:19:C0:00/36 Aton Aton srl
8C:1F:64:1A:50:00/36 Dialtron Dialtronics Systems Pvt Ltd
8C:1F:64:1A:70:00/36 aelettro aelettronica group srl
8C:1F:64:1A:D0:00/36 NexxtoSe Nexxto Servicos Em Tecnologia da Informacao SA
8C:1F:64:1A:F0:00/36 EnviroNo EnviroNode IoT Solutions
8C:1F:64:1B:20:00/36 Rapid-e- Rapid-e-Engineering Steffen Kramer
8C:1F:64:1B:50:00/36 Xicato
@ -35906,6 +35988,7 @@
8C:1F:64:1C:00:00/36 INVENTIA INVENTIA Sp. z o.o.
8C:1F:64:1C:20:00/36 SolidInv Solid Invent Ltda.
8C:1F:64:1C:B0:00/36 SASYSeK SASYS e.K.
8C:1F:64:1C:E0:00/36 Eiden Eiden Co.,Ltd.
8C:1F:64:1D:00:00/36 MBconnec MB connect line GmbH Fernwartungssysteme
8C:1F:64:1D:10:00/36 ASStrömu AS Strömungstechnik GmbH
8C:1F:64:1D:80:00/36 Mesomat Mesomat inc.
@ -35955,17 +36038,21 @@
8C:1F:64:2A:50:00/36 Nonet Nonet Inc
8C:1F:64:2A:90:00/36 ElbitAme Elbit Systems of America, LLC
8C:1F:64:2B:60:00/36 StercomP Stercom Power Solutions GmbH
8C:1F:64:2B:80:00/36 Veinland Veinland GmbH
8C:1F:64:2B:B0:00/36 ChakraTe Chakra Technology Ltd
8C:1F:64:2C:20:00/36 TexCompu Tex Computer Srl
8C:1F:64:2C:30:00/36 TeraDiod TeraDiode / Panasonic
8C:1F:64:2C:50:00/36 Sysn
8C:1F:64:2C:60:00/36 YUYAMAMF YUYAMA MFG Co.,Ltd
8C:1F:64:2C:70:00/36 Contralt Contralto Audio Srl
8C:1F:64:2C:80:00/36 BRSSiste BRS Sistemas Eletrônicos
8C:1F:64:2C:B0:00/36 SmartCom Smart Component Technologies Ltd
8C:1F:64:2C:D0:00/36 TaiwanVt Taiwan Vtron
8C:1F:64:2D:80:00/36 CONTROL CONTROL SYSTEMS Srl
8C:1F:64:2E:20:00/36 MarkRobe Mark Roberts Motion Control
8C:1F:64:2E:80:00/36 SonoraNe Sonora Network Solutions
8C:1F:64:2E:F0:00/36 Invisens Invisense AB
8C:1F:64:2F:00:00/36 SwitchSc Switch Science, Inc.
8C:1F:64:2F:50:00/36 FloridaR Florida R&D Associates LLC
8C:1F:64:2F:B0:00/36 MBconnec MB connect line GmbH Fernwartungssysteme
8C:1F:64:2F:C0:00/36 Unimar Unimar, Inc.
@ -35981,6 +36068,7 @@
8C:1F:64:31:60:00/36 PotterEl Potter Electric Signal Company
8C:1F:64:31:70:00/36 BacancyL Bacancy Systems LLP
8C:1F:64:31:A0:00/36 Asiga Asiga Pty Ltd
8C:1F:64:31:B0:00/36 jointana joint analytical systems GmbH
8C:1F:64:32:40:00/36 KineticT Kinetic Technologies
8C:1F:64:32:80:00/36 ComVideo Com Video Security Systems Co., Ltd.
8C:1F:64:32:90:00/36 YUYAMAMF YUYAMA MFG Co.,Ltd
@ -36048,6 +36136,7 @@
8C:1F:64:41:20:00/36 Comercia Comercial Electronica Studio-2 s.l.
8C:1F:64:41:40:00/36 INSEVIS INSEVIS GmbH
8C:1F:64:41:70:00/36 Fracarro Fracarro srl
8C:1F:64:41:C0:00/36 KSE KSE GmbH
8C:1F:64:41:D0:00/36 AspenSpe Aspen Spectra Sdn Bhd
8C:1F:64:42:30:00/36 HiwinMik Hiwin Mikrosystem Corp.
8C:1F:64:42:60:00/36 eumigind eumig industrie-TV GmbH.
@ -36073,6 +36162,7 @@
8C:1F:64:48:90:00/36 Hupi
8C:1F:64:49:30:00/36 Security Security Products International, LLC
8C:1F:64:49:80:00/36 YUYAMAMF YUYAMA MFG Co.,Ltd
8C:1F:64:4A:00:00/36 Tantec Tantec A/S
8C:1F:64:4A:C0:00/36 Vekto
8C:1F:64:4A:E0:00/36 KCS KCS Co., Ltd.
8C:1F:64:4A:F0:00/36 miniDSP
@ -36082,6 +36172,7 @@
8C:1F:64:4C:70:00/36 SBS SBS SpA
8C:1F:64:4C:D0:00/36 GuanShow Guan Show Technologe Co., Ltd.
8C:1F:64:4D:60:00/36 DanSmith Dan Smith LLC
8C:1F:64:4D:90:00/36 Securico Securico Electronics India Ltd
8C:1F:64:4D:A0:00/36 DTDSTech DTDS Technology Pte Ltd
8C:1F:64:4D:B0:00/36 Private
8C:1F:64:4D:C0:00/36 BESOsp BESO sp. z o.o.
@ -36106,6 +36197,7 @@
8C:1F:64:51:80:00/36 WagnerGr Wagner Group GmbH
8C:1F:64:52:10:00/36 MP-SENSO MP-SENSOR GmbH
8C:1F:64:52:50:00/36 UnitedSt United States Technologies Inc.
8C:1F:64:52:A0:00/36 HiwinMik Hiwin Mikrosystem Corp.
8C:1F:64:52:D0:00/36 CubicITS Cubic ITS, Inc. dba GRIDSMART Technologies
8C:1F:64:52:E0:00/36 CLOUDTEL CLOUD TELECOM Inc.
8C:1F:64:53:40:00/36 SuryaEle Surya Electronics
@ -36366,6 +36458,7 @@
8C:1F:64:8E:20:00/36 ALPHA ALPHA Corporation
8C:1F:64:8E:30:00/36 UniTikTe UniTik Technology Co., Limited
8C:1F:64:8E:50:00/36 Druck Druck Ltd.
8C:1F:64:8E:80:00/36 Cominfo Cominfo, Inc.
8C:1F:64:8E:90:00/36 Vesperix Vesperix Corporation
8C:1F:64:8E:B0:00/36 NumaProd Numa Products LLC
8C:1F:64:8E:E0:00/36 AbbottDi Abbott Diagnostics Technologies AS
@ -36430,6 +36523,7 @@
8C:1F:64:9C:F0:00/36 ASAPElec ASAP Electronics GmbH
8C:1F:64:9D:40:00/36 Wolfspyr Wolfspyre Labs
8C:1F:64:9D:80:00/36 Integerp Integer.pl S.A.
8C:1F:64:9E:00:00/36 Druck Druck Ltd.
8C:1F:64:9E:20:00/36 Technolo Technology for Energy Corp
8C:1F:64:9E:80:00/36 GHMMesst GHM Messtechnik GmbH
8C:1F:64:9F:00:00/36 ePlant ePlant, Inc.
@ -36467,11 +36561,13 @@
8C:1F:64:A6:00:00/36 ActiveOp Active Optical Systems, LLC
8C:1F:64:A6:A0:00/36 SphereCo Sphere Com Services Pvt Ltd
8C:1F:64:A6:D0:00/36 CyberneX CyberneX Co., Ltd
8C:1F:64:A7:00:00/36 V-teknik V-teknik Elektronik AB
8C:1F:64:A7:60:00/36 DEUTA-WE DEUTA-WERKE GmbH
8C:1F:64:A7:70:00/36 Rax-Tech Rax-Tech International
8C:1F:64:A8:10:00/36 3Dpercep 3D perception AS
8C:1F:64:A8:30:00/36 EkspertS EkspertStroyProekt
8C:1F:64:A8:40:00/36 BeijingW Beijing Wenrise Technology Co., Ltd.
8C:1F:64:A9:10:00/36 Infiniti Infinitive Group Limited
8C:1F:64:A9:40:00/36 Futurewa Future wave ultra tech Company
8C:1F:64:A9:70:00/36 Integerp Integer.pl S.A.
8C:1F:64:A9:A0:00/36 Signasys Signasystems Elektronik San. ve Tic. Ltd. Sti.
@ -36512,6 +36608,7 @@
8C:1F:64:B2:20:00/36 Blighter Blighter Surveillance Systems Ltd
8C:1F:64:B2:B0:00/36 RhombusE Rhombus Europe
8C:1F:64:B2:C0:00/36 SanminaI Sanmina Israel Medical Systems Ltd
8C:1F:64:B3:60:00/36 Pneumax Pneumax Spa
8C:1F:64:B3:B0:00/36 Sicon Sicon srl
8C:1F:64:B3:D0:00/36 RealD RealD, Inc.
8C:1F:64:B4:60:00/36 Phygital Phygitall Soluções Em Internet Das Coisas
@ -36589,6 +36686,7 @@
8C:1F:64:C6:10:00/36 BeijingC Beijing Ceresdate Technology Co.,LTD
8C:1F:64:C6:40:00/36 Ajeco Ajeco Oy
8C:1F:64:C6:80:00/36 FibermeC Fiberme Communications Llc
8C:1F:64:C6:A0:00/36 RedPhase Red Phase Technologies Limited
8C:1F:64:C6:B0:00/36 Mediana
8C:1F:64:C7:C0:00/36 MERKLESc MERKLE Schweissanlagen-Technik GmbH
8C:1F:64:C8:00:00/36 VECOSEur VECOS Europe B.V.
@ -36650,6 +36748,7 @@
8C:1F:64:D5:B0:00/36 LocalSec Local Security
8C:1F:64:D5:E0:00/36 Integerp Integer.pl S.A.
8C:1F:64:D6:90:00/36 ADiCo ADiCo Corporation
8C:1F:64:D6:C0:00/36 Packetal Packetalk LLC
8C:1F:64:D7:30:00/36 BRSSiste BRS Sistemas Eletrônicos
8C:1F:64:D7:80:00/36 HunanOus Hunan Oushi Electronic Technology Co.,Ltd
8C:1F:64:D7:C0:00/36 QuercusT Quercus Technologies, S.L.
@ -36672,6 +36771,7 @@
8C:1F:64:DC:20:00/36 ProconEl Procon Electronics Pty Ltd
8C:1F:64:DC:90:00/36 PeterHub Peter Huber Kaeltemaschinenbau AG
8C:1F:64:DC:A0:00/36 Porschee Porsche engineering
8C:1F:64:DD:40:00/36 Midlands Midlands Technical Co., Ltd.
8C:1F:64:DD:50:00/36 Cardinal Cardinal Scales Manufacturing Co
8C:1F:64:DD:70:00/36 KSTtechn KST technology
8C:1F:64:DD:E0:00/36 JemacSwe Jemac Sweden AB
@ -36684,6 +36784,7 @@
8C:1F:64:E1:00:00/36 Scenario Scenario Automation
8C:1F:64:E1:20:00/36 PixusTec Pixus Technologies Inc.
8C:1F:64:E2:10:00/36 LG-LHTAi LG-LHT Aircraft Solutions GmbH
8C:1F:64:E2:40:00/36 CometaSa Cometa Sas
8C:1F:64:E2:D0:00/36 Private
8C:1F:64:E3:00:00/36 VMuktiSo VMukti Solutions Private Limited
8C:1F:64:E4:10:00/36 Grossenb Grossenbacher Systeme AG
@ -36704,6 +36805,7 @@
8C:1F:64:E7:B0:00/36 Dongguan Dongguan Pengchen Earth Instrument CO. LT
8C:1F:64:E7:C0:00/36 AshinneT Ashinne Technology Co., Ltd
8C:1F:64:E8:60:00/36 ComVetia ComVetia AG
8C:1F:64:E8:F0:00/36 JieChuan JieChuang HeYi(Beijing) Technology Co., Ltd.
8C:1F:64:E9:00:00/36 MHEElect MHE Electronics
8C:1F:64:E9:20:00/36 EAElektr EA Elektro-Automatik
8C:1F:64:E9:40:00/36 ZinTechn Zin Technologies
@ -36764,6 +36866,7 @@
8C:1F:64:F5:B0:00/36 SemaConn SemaConnect, Inc
8C:1F:64:F5:C0:00/36 Flextron Flextronics International Kft
8C:1F:64:F5:F0:00/36 TR7Siber TR7 Siber Savunma A.S.
8C:1F:64:F6:30:00/36 QuantumM Quantum Media Systems
8C:1F:64:F6:50:00/36 Talleres Talleres de Escoriaza SA
8C:1F:64:F7:00:00/36 VisionSa Vision Systems Safety Tech
8C:1F:64:F7:20:00/36 Contrade Contrader
@ -37146,6 +37249,7 @@
8C:EC:4B Dell Dell Inc.
8C:EC:7B Apple Apple, Inc.
8C:EE:C6 Precepsc Precepscion Pty. Ltd.
8C:EE:FD zte zte corporation
8C:F1:12 Motorola Motorola Mobility LLC, a Lenovo Company
8C:F2:28 MercuryC Mercury Communication Technologies Co.,Ltd.
8C:F3:19 SiemensI Siemens Industrial Automation Products Ltd., Chengdu
@ -37181,6 +37285,7 @@
90:03:72 LongnanJ Longnan Junya Digital Technology Co. Ltd.
90:03:B7 Parrot Parrot Sa
90:06:28 SamsungE Samsung Electronics Co.,Ltd
90:06:F2 TexasIns Texas Instruments
90:09:17 Far-sigh Far-sighted mobile
90:09:D0 Synology Synology Incorporated
90:09:DF IntelCor Intel Corporate
@ -37331,6 +37436,7 @@
90:6A:EB Microsof Microsoft Corporation
90:6C:AC Fortinet Fortinet, Inc.
90:6D:05 BxbElect Bxb Electronics Co., Ltd
90:6D:62 CambiumN Cambium Networks Limited
90:6D:C8 DLGAutom DLG Automação Industrial Ltda
90:6E:BB HonHaiPr Hon Hai Precision Ind. Co.,Ltd.
90:6F:18 Private
@ -37371,6 +37477,7 @@
90:84:8B HDR10+Te HDR10+ Technologies, LLC
90:86:74 SichuanT Sichuan Tianyi Comheart Telecom Co.,LTD
90:86:9B zte zte corporation
90:88:55 Cisco Cisco Systems, Inc
90:88:A2 IonicsTe Ionics Technology Me Ltda
90:89:5F WeifangG Weifang Goertek Electronics Co.,Ltd
90:8C:09 TotalPha Total Phase
@ -37524,6 +37631,7 @@
90:E9:5E Cisco Cisco Systems, Inc
90:EA:60 SPILaser SPI Lasers Ltd
90:EB:48 Shanghai Shanghai XinMiaoLink Technology Co., Ltd
90:EB:50 Cisco Cisco Systems, Inc
90:EC:50 COBO C.O.B.O. Spa
90:EC:77 silicom
90:EC:EA Apple Apple, Inc.
@ -37700,6 +37808,7 @@
94:76:B7 SamsungE Samsung Electronics Co.,Ltd
94:77:2B HuaweiTe Huawei Technologies Co.,Ltd
94:78:06 NingboSu Ningbo Sunvot Technology Co.,Ltd
94:79:18 ItelMobi Itel Mobile Limited
94:7B:AE XiaomiCo Xiaomi Communications Co Ltd
94:7B:BE Ubicquia Ubicquia LLC
94:7B:E7 SamsungE Samsung Electronics Co.,Ltd
@ -37963,6 +38072,7 @@
98:02:D8:D0:00:00/28 Promicon Promicon Elektronik GmbH + Co.KG
98:02:D8:E0:00:00/28 Private
98:02:D8:F0:00:00/28 Private
98:03:8A TexasIns Texas Instruments
98:03:9B Mellanox Mellanox Technologies, Inc.
98:03:A0 ABBPower ABB n.v. Power Quality Products
98:03:D8 Apple Apple, Inc.
@ -38962,6 +39072,7 @@ A0:63:91 Netgear
A0:64:8F AskeyCom Askey Computer Corp
A0:65:18 VnptTech Vnpt Technology
A0:66:10 Fujitsu Fujitsu Limited
A0:66:36 Intracom Intracom SA Telecom Solutions
A0:67:20 ChinaDra China Dragon Technology Limited
A0:67:BE Sicon Sicon srl
A0:68:1C GDMideaA GD Midea Air-Conditioning Equipment Co.,Ltd.
@ -39672,6 +39783,7 @@ A8:24:EB NPOIntro ZAO NPO Introtest
A8:25:EB Cambridg Cambridge Industries(Group) Co.,Ltd.
A8:26:D9 HTC HTC Corporation
A8:29:4C Precisio Precision Optical Transceivers, Inc.
A8:2A:D6 Arthrex Arthrex Inc.
A8:2B:B5 Edgecore Edgecore Networks Corporation
A8:2B:B9 SamsungE Samsung Electronics Co.,Ltd
A8:2B:CD HuaweiTe Huawei Technologies Co.,Ltd
@ -39966,6 +40078,7 @@ AA:DC:47 Cachengo Cachengo, Inc.
AA:F0:19 Transfer TransferJet Consortium Incorporated Association
AC:00:7A Apple Apple, Inc.
AC:00:D0 zte zte corporation
AC:00:F9 BizLinkT BizLink Technology (S.E.A) Sdn. Bhd.
AC:01:42 UrielTec Uriel Technologies SIA
AC:02:CA HISoluti HI Solutions, Inc.
AC:02:CF RWTecnol RW Tecnologia Industria e Comercio Ltda
@ -40065,6 +40178,7 @@ AC:3E:B1 Google Google, Inc.
AC:3F:A4 TaiyoYud Taiyo Yuden Co.,Ltd
AC:40:EA C&TSolut C&T Solution Inc.
AC:41:22 EclipseE Eclipse Electronic Systems Inc.
AC:41:6A AmazonTe Amazon Technologies Inc.
AC:42:28 PartaNet Parta Networks
AC:43:30 VersaNet Versa Networks
AC:44:F2 Yamaha Yamaha Corporation
@ -40294,6 +40408,7 @@ AC:D5:64 Chongqin Chongqing Fugui Electronics Co.,Ltd.
AC:D6:18 OnePlusT OnePlus Technology (Shenzhen) Co., Ltd
AC:D6:57 ShaanxiG Shaanxi GuoLian Digital TV Technology Co.,Ltd.
AC:D8:29 Bouffalo Bouffalo Lab (Nanjing) Co., Ltd.
AC:D8:A7 BELLDESI BELLDESIGN Inc.
AC:D9:D6 tci tci GmbH
AC:DB:48 ARRISGro ARRIS Group, Inc.
AC:DB:DA Shenzhen Shenzhen Geniatech Inc, Ltd
@ -40415,7 +40530,7 @@ B0:35:B5 Apple Apple, Inc.
B0:37:95 LGElectr LG Electronics
B0:38:29 Siliconw Siliconware Precision Industries Co., Ltd.
B0:38:50 NanjingC Nanjing CAS-ZDC IOT SYSTEM CO.,LTD
B0:38:93 OndaTLC Onda TLC GmbH
B0:38:93 OndaTLCI Onda TLC Italia S.r.l.
B0:38:E2 WananHon Wanan Hongsheng Electronic Co.Ltd
B0:39:56 Netgear
B0:3A:CE HuaweiDe Huawei Device Co., Ltd.
@ -40543,6 +40658,7 @@ B0:9F:BA Apple Apple, Inc.
B0:A1:0A Pivotal Pivotal Systems Corporation
B0:A2:E7 Shenzhen Shenzhen TINNO Mobile Technology Corp.
B0:A3:7E QingDaoH Qing Dao Haier Telecom Co.,Ltd.
B0:A3:F2 HuaqinTe Huaqin Technology Co. LTD
B0:A4:54 Tripwire Tripwire Inc.
B0:A4:60 IntelCor Intel Corporate
B0:A4:F0 HuaweiTe Huawei Technologies Co.,Ltd
@ -40691,6 +40807,7 @@ B0:F7:C4 AmazonTe Amazon Technologies Inc.
B0:F8:93 Shanghai Shanghai MXCHIP Information Technology Co., Ltd.
B0:F9:63 Hangzhou Hangzhou H3C Technologies Co., Limited
B0:FA:EB Cisco Cisco Systems, Inc
B0:FB:15 LairdCon Laird Connectivity
B0:FB:DD Shenzhen Shenzhen SuperElectron Technology Co.,Ltd.
B0:FC:0D AmazonTe Amazon Technologies Inc.
B0:FC:36 CyberTAN CyberTAN Technology Inc.
@ -40835,6 +40952,18 @@ B4:4B:D6:D0:00:00/28 ElletaSo Elleta Solutions Ltd
B4:4B:D6:E0:00:00/28 Chunghsi Chunghsin International Electronics Co.,Ltd.
B4:4C:3B Zhejiang Zhejiang Dahua Technology Co., Ltd.
B4:4C:C2 NrElectr Nr Electric Co., Ltd
B4:4D:43 IEEERegi IEEE Registration Authority
B4:4D:43:00:00:00/28 Mihoyo
B4:4D:43:10:00:00/28 iLineMic iLine Microsystems S.L. (B20956751)
B4:4D:43:20:00:00/28 RgSoluti Rg Solutions Ltd
B4:4D:43:30:00:00/28 ETSMETec ETSME Technologies C0., Ltd.
B4:4D:43:40:00:00/28 ALLSPACE ALL.SPACE Networks Ltd
B4:4D:43:70:00:00/28 SernetSu Sernet (Suzhou) Technologies Corporation
B4:4D:43:80:00:00/28 ShenZhen ShenZhen Launch-Wonder Technology co., LTD
B4:4D:43:90:00:00/28 AdHocDev Ad Hoc Developments S.L.
B4:4D:43:A0:00:00/28 UAVNavig UAV Navigation
B4:4D:43:B0:00:00/28 Paulmann Paulmann Licht GmbH
B4:4D:43:C0:00:00/28 Shenzhen Shenzhen Kosky Technology Co.,Ltd.
B4:4F:96 Zhejiang Zhejiang Xinzailing Technology co., ltd
B4:50:62 EmBestor EmBestor Technology Inc.
B4:51:F9 NBSoftwa NB Software
@ -41869,6 +41998,7 @@ C0:48:84 SigmaBil Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti
C0:48:E6 SamsungE Samsung Electronics Co.,Ltd
C0:48:FB Shenzhen Shenzhen JingHanDa Electronics Co.Ltd
C0:49:3D Maitrise Maitrise Technologique
C0:49:43 zte zte corporation
C0:49:EF Espressi Espressif Inc.
C0:4A:00 Tp-LinkT Tp-Link Technologies Co.,Ltd.
C0:4A:09 Zhejiang Zhejiang Everbright Communication Equip. Co,. Ltd
@ -41883,6 +42013,7 @@ C0:56:27 BelkinIn Belkin International Inc.
C0:56:E3 Hangzhou Hangzhou Hikvision Digital Technology Co.,Ltd.
C0:57:BC Avaya Avaya Inc
C0:58:A7 Pico Pico Systems Co., Ltd.
C0:5B:44 BeijingX Beijing Xiaomi Mobile Software Co., Ltd
C0:5E:6F VStonkau V. Stonkaus firma "Kodinis Raktas"
C0:5E:79 Shenzhen Shenzhen Huaxun Ark Technologies Co.,Ltd
C0:61:18 Tp-LinkT Tp-Link Technologies Co.,Ltd.
@ -42571,6 +42702,7 @@ C4:EB:41 Sagemcom Sagemcom Broadband SAS
C4:EB:42 Sagemcom Sagemcom Broadband SAS
C4:EB:43 Sagemcom Sagemcom Broadband SAS
C4:EB:E3 RrcnSas Rrcn Sas
C4:EB:FF zte zte corporation
C4:ED:BA TexasIns Texas Instruments
C4:EE:AE VSSMonit VSS Monitoring
C4:EE:F5 II-VI II-VI Incorporated
@ -42634,6 +42766,7 @@ C8:0E:77 LeShiZhi Le Shi Zhi Xin Electronic Technology (Tianjin) Limited
C8:0E:95 OmniLync OmniLync Inc.
C8:10:73 CenturyO Century Opticomm Co.,Ltd
C8:12:0B SamsungE Samsung Electronics Co.,Ltd
C8:13:37 JuniperN Juniper Networks
C8:13:8B Shenzhen Shenzhen Skyworth Digital Technology CO., Ltd
C8:14:51 HuaweiTe Huawei Technologies Co.,Ltd
C8:14:79 SamsungE Samsung Electronics Co.,Ltd
@ -43273,6 +43406,7 @@ CC:B1:82 HuaweiTe Huawei Technologies Co.,Ltd
CC:B2:55 D-LinkIn D-Link International
CC:B3:AB shenzhen shenzhen Biocare Bio-Medical Equipment Co.,Ltd.
CC:B3:F8 FujitsuI Fujitsu Isotec Limited
CC:B5:4C TexasIns Texas Instruments
CC:B5:5A Fraunhof Fraunhofer ITWM
CC:B5:D1 BeijingX Beijing Xiaomi Mobile Software Co., Ltd
CC:B6:91 NECMagnu NECMagnusCommunications
@ -43928,6 +44062,7 @@ D4:25:CC:C0:00:00/28 POSNETPo POSNET Polska S.A.
D4:25:CC:D0:00:00/28 Combined Combined Energy Technologies Pty Ltd
D4:25:CC:E0:00:00/28 Coperion
D4:27:51 Infopia Infopia Co., Ltd
D4:27:87 Shanghai Shanghai High-Flying Electronics Technology Co., Ltd
D4:28:B2 ioBridge ioBridge, Inc.
D4:28:D5 TCTmobil TCT mobile ltd
D4:29:EA Zimory Zimory GmbH
@ -43987,6 +44122,7 @@ D4:50:7A CEIVALog CEIVA Logic, Inc
D4:52:2A TangoWiF TangoWiFi.com
D4:52:51 IBTIngen IBT Ingenieurbureau Broennimann Thun
D4:52:97 nSTREAMS nSTREAMS Technologies, Inc.
D4:52:C7 BeijingL Beijing L&S Lancom Platform Tech. Co., Ltd.
D4:52:EE SkyUk Sky Uk Limited
D4:53:47 Merytron Merytronic 2012, S.L.
D4:53:83 MurataMa Murata Manufacturing Co., Ltd.
@ -44167,6 +44303,7 @@ D4:B1:10 HuaweiTe Huawei Technologies Co.,Ltd
D4:B1:69 LeShiZhi Le Shi Zhi Xin Electronic Technology (Tianjin) Limited
D4:B2:7A ARRISGro ARRIS Group, Inc.
D4:B4:3E Messcomp Messcomp Datentechnik GmbH
D4:B6:80 Shanghai Shanghai Linkyum Microeletronics Co.,Ltd
D4:B7:09 zte zte corporation
D4:B7:61 SichuanA Sichuan AI-Link Technology Co., Ltd.
D4:B7:D0 Ciena Ciena Corporation
@ -44188,6 +44325,7 @@ D4:BA:BA:B0:00:00/28 QingdaoV Qingdao Vzense Technology Co., Ltd.
D4:BA:BA:C0:00:00/28 RusatomA Rusatom Automated Control Systems, Joint-Stock Company
D4:BA:BA:D0:00:00/28 AADONACo AADONA Communication Pvt Ltd
D4:BA:BA:E0:00:00/28 CamozziA Camozzi Automation SpA
D4:BA:FA Guangdon Guangdong Oppo Mobile Telecommunications Corp.,Ltd
D4:BB:C8 vivoMobi vivo Mobile Communication Co., Ltd.
D4:BB:E6 HuaweiDe Huawei Device Co., Ltd.
D4:BD:1E 5VTTechn 5VT Technologies,Taiwan LTd.
@ -44241,6 +44379,7 @@ D4:E8:53 Hangzhou Hangzhou Hikvision Digital Technology Co.,Ltd.
D4:E8:80 Cisco Cisco Systems, Inc
D4:E8:B2 SamsungE Samsung Electronics Co.,Ltd
D4:E9:0B Cvt Cvt Co.,Ltd
D4:E9:5E TexasIns Texas Instruments
D4:E9:8A IntelCor Intel Corporate
D4:EA:0E Avaya Avaya Inc
D4:EB:68 Cisco Cisco Systems, Inc
@ -44568,6 +44707,7 @@ D8:D1:CB Apple Apple, Inc.
D8:D2:7C JemaEner Jema Energy, Sa
D8:D3:85 HewlettP Hewlett Packard
D8:D4:3C Sony Sony Corporation
D8:D4:5D OrbicNor Orbic North America
D8:D4:E6 HytecInt Hytec Inter Co., Ltd.
D8:D5:B9 Rainfore Rainforest Automation, Inc.
D8:D6:7E GskCncEq Gsk Cnc Equipment Co.,Ltd
@ -44837,6 +44977,7 @@ DC:8B:28 IntelCor Intel Corporate
DC:8C:1B vivoMobi vivo Mobile Communication Co., Ltd.
DC:8C:37 Cisco Cisco Systems, Inc
DC:8D:8A NokiaSol Nokia Solutions and Networks GmbH & Co. KG
DC:8D:91 Infinixm Infinix mobility limited
DC:8D:B7 AtwTechn Atw Technology, Inc.
DC:8E:95 SiliconL Silicon Laboratories
DC:90:20 RuruTekP Ruru Tek Private Limited
@ -44922,6 +45063,7 @@ DC:CF:94 BeijingR Beijing Rongcheng Hutong Technology Co., Ltd.
DC:CF:96 SamsungE Samsung Electronics Co.,Ltd
DC:D0:F7 Bentek Bentek Systems Ltd.
DC:D2:55 KinpoEle Kinpo Electronics, Inc.
DC:D2:6A Hangzhou Hangzhou Hikvision Digital Technology Co.,Ltd.
DC:D2:FC HuaweiTe Huawei Technologies Co.,Ltd
DC:D2:FD HuaweiTe Huawei Technologies Co.,Ltd
DC:D3:21 HUMAX HUMAX Co., Ltd.
@ -45409,6 +45551,7 @@ E4:15:F6 TexasIns Texas Instruments
E4:17:D8 8BitdoTe 8Bitdo Technology Hk Limited
E4:18:6B ZyxelCom Zyxel Communications Corporation
E4:19:C1 HuaweiTe Huawei Technologies Co.,Ltd
E4:1A:1D NoveaEne Novea Energies
E4:1A:2C ZPE ZPE Systems, Inc.
E4:1C:4B V2Techno V2 Technology, Inc.
E4:1D:2D Mellanox Mellanox Technologies, Inc.
@ -45464,6 +45607,7 @@ E4:35:93 Hangzhou Hangzhou GoTo technology Co.Ltd
E4:35:C8 HuaweiTe Huawei Technologies Co.,Ltd
E4:35:FB SabreTec Sabre Technology (Hull) Ltd
E4:37:D7 HenriDep Henri Depaepe S.A.S.
E4:38:19 Shenzhen Shenzhen Hi-Link Electronic CO.,Ltd.
E4:38:7E Cisco Cisco Systems, Inc
E4:38:83 Ubiquiti Ubiquiti Inc
E4:38:8C DigitalP Digital Products Limited
@ -45483,6 +45627,7 @@ E4:41:E6 OttecTec Ottec Technology GmbH
E4:42:A6 IntelCor Intel Corporate
E4:43:4B Dell Dell Inc.
E4:44:E5 ExtremeN Extreme Networks, Inc.
E4:45:19 BeijingX Beijing Xiaomi Electronics Co.,Ltd
E4:46:B0 FujitsuC Fujitsu Client Computing Limited
E4:46:BD C&CTechn C&C Technic Taiwan Co., Ltd.
E4:46:DA XiaomiCo Xiaomi Communications Co Ltd
@ -45718,6 +45863,7 @@ E4:F8:9C IntelCor Intel Corporate
E4:F8:EF SamsungE Samsung Electronics Co.,Ltd
E4:F9:39 MinxonHo Minxon Hotel Technology INC.
E4:FA:1D PADPerip PAD Peripheral Advanced Design Inc.
E4:FA:C4 BigField Big Field Global PTE. Ltd.
E4:FA:ED SamsungE Samsung Electronics Co.,Ltd
E4:FA:FD IntelCor Intel Corporate
E4:FB:5D HuaweiTe Huawei Technologies Co.,Ltd
@ -45785,6 +45931,7 @@ E8:1C:D8 Apple Apple, Inc.
E8:1D:A8 RuckusWi Ruckus Wireless
E8:1E:92 HuaweiDe Huawei Device Co., Ltd.
E8:20:E2 HUMAX HUMAX Co., Ltd.
E8:24:04 QuectelW Quectel Wireless Solutions Co.,Ltd.
E8:24:A6 JuniperN Juniper Networks
E8:26:89 ArubaaHe Aruba, a Hewlett Packard Enterprise Company
E8:26:8D Shenzhen Shenzhen SuperElectron Technology Co.,Ltd.
@ -47117,6 +47264,7 @@ F4:A5:9D HuaweiDe Huawei Device Co., Ltd.
F4:A7:39 JuniperN Juniper Networks
F4:A8:0D WistronI Wistron InfoComm(Kunshan)Co.,Ltd.
F4:A9:97 Canon Canon Inc.
F4:AA:D0 Ohsung
F4:AC:C1 Cisco Cisco Systems, Inc
F4:AF:E7 Apple Apple, Inc.
F4:B1:64 Lightnin Lightning Telecommunications Technology Co. Ltd
@ -47161,6 +47309,7 @@ F4:C7:C8 Kelvin Kelvin Inc.
F4:C8:8A IntelCor Intel Corporate
F4:CA:24 FreeBit FreeBit Co., Ltd.
F4:CA:E5 FreeboxS Freebox Sas
F4:CA:E7 Arcadyan Arcadyan Corporation
F4:CB:52 HuaweiTe Huawei Technologies Co.,Ltd
F4:CC:55 JuniperN Juniper Networks
F4:CD:90 Vispiron Vispiron Rotec GmbH
@ -47317,6 +47466,7 @@ F8:22:85 CypressT Cypress Technology CO., LTD.
F8:23:87 Shenzhen Shenzhen Horn Audio Co.,Ltd.
F8:23:B2 HuaweiTe Huawei Technologies Co.,Ltd
F8:24:41 Yeelink
F8:24:DB EntryPoi EntryPoint Networks, Inc
F8:24:E4 Beyonics Beyonics Technology Electronic (Changshu) Co., Ltd
F8:25:51 SeikoEps Seiko Epson Corporation
F8:27:2E Mercku
@ -47329,6 +47479,7 @@ F8:2B:C8 JiangsuS Jiangsu Switter Co., Ltd
F8:2C:18 2Wire 2Wire Inc
F8:2D:7C Apple Apple, Inc.
F8:2D:C0 ARRISGro ARRIS Group, Inc.
F8:2E:0C TexasIns Texas Instruments
F8:2E:3F HuaweiTe Huawei Technologies Co.,Ltd
F8:2E:8E NanjingK Nanjing Kechen Electric Co., Ltd.
F8:2E:DB RTW RTW GmbH & Co. KG
@ -47417,6 +47568,7 @@ F8:64:65 AnovaApp Anova Applied Electronics, Inc.
F8:64:B8 zte zte corporation
F8:66:01 SuzhouCh Suzhou Chi-tek information technology Co., Ltd
F8:66:5A Apple Apple, Inc.
F8:66:91 SichuanT Sichuan Tianyi Comheart Telecom Co.,LTD
F8:66:D1 HonHaiPr Hon Hai Precision Ind. Co.,Ltd.
F8:66:F2 Cisco Cisco Systems, Inc
F8:69:71 SeibuEle Seibu Electric Co.,
@ -47776,6 +47928,7 @@ FC:45:5F JiangxiS Jiangxi Shanshui Optoelectronic Technology Co.,Ltd
FC:45:96 CompalIn Compal Information (Kunshan) Co., Ltd.
FC:45:C3 TexasIns Texas Instruments
FC:47:D8 Apple Apple, Inc.
FC:48:C9 YobiiqIn Yobiiq Intelligence B.V.
FC:48:EF HuaweiTe Huawei Technologies Co.,Ltd
FC:49:2D AmazonTe Amazon Technologies Inc.
FC:4A:E9 Castlene Castlenet Technology Inc.
@ -47807,7 +47960,7 @@ FC:60:18 Zhejiang Zhejiang Kangtai Electric Co., Ltd.
FC:60:9B NewH3CTe New H3C Technologies Co., Ltd
FC:61:79 IEEERegi IEEE Registration Authority
FC:61:79:00:00:00/28 ZhuhaiAn Zhuhai Anjubao Electronics Technology Co., Ltd.
FC:61:79:10:00:00/28 Signalin Signalinks Communication Technology Co.,Ltd
FC:61:79:10:00:00/28 Signalin Signalinks Communication Technology Co., Ltd
FC:61:79:20:00:00/28 Shenzhen Shenzhen Shenshui Electronic Commerce Co.,Ltd
FC:61:79:30:00:00/28 EchoStar EchoStar Mobile
FC:61:79:40:00:00/28 Choeunen Choeuneng
@ -47858,6 +48011,7 @@ FC:83:29 Treitech Trei technics
FC:83:99 Avaya Avaya Inc
FC:83:C6 N-RadioT N-Radio Technologies Co., Ltd.
FC:84:17 HonorDev Honor Device Co., Ltd.
FC:84:A7 MurataMa Murata Manufacturing Co., Ltd.
FC:85:96 Axonne Axonne Inc.
FC:86:2A HuaweiDe Huawei Device Co., Ltd.
FC:87:43 HuaweiTe Huawei Technologies Co.,Ltd

View File

@ -29,6 +29,7 @@ dseditgroup -q -o edit -a "$USER" -t user "$BPF_GROUP"
chmod u=rw,g=r,o=r "$CHMOD_BPF_PLIST"
chown root:wheel "$CHMOD_BPF_PLIST"
# Clean up our legacy startup item if it's still around.
rm -rf /Library/StartupItems/ChmodBPF
launchctl load "$CHMOD_BPF_PLIST"
launchctl bootstrap system "$CHMOD_BPF_PLIST"

View File

@ -10,7 +10,7 @@
CHMOD_BPF_PLIST="/Library/LaunchDaemons/org.wireshark.ChmodBPF.plist"
BPF_GROUP="access_bpf"
launchctl unload -F "$CHMOD_BPF_PLIST"
launchctl bootout system "$CHMOD_BPF_PLIST"
dscl . -read /Groups/"$BPF_GROUP" > /dev/null 2>&1 && \
dseditgroup -q -o delete "$BPF_GROUP"

View File

@ -16,7 +16,7 @@
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="wsicon-ask.svg"
inkscape:export-filename="/Users/gerald/Development/wsweb/material/wsicon-ask.png"
inkscape:export-filename="wsicon-ask.png"
inkscape:export-xdpi="2.8099999"
inkscape:export-ydpi="2.8099999"
inkscape:output_extension="org.inkscape.output.svg.inkscape"

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -150,7 +150,7 @@
x="1"
y="1005.3622"
id="rect2816"
inkscape:export-filename="/Users/gerald/Development/qtshark/image/layout_1.png"
inkscape:export-filename="layout_1.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="capture_comment_update.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/capture_comment_update@2x.png"
inkscape:export-filename="capture_comment_update@2x.png"
inkscape:export-xdpi="180"
inkscape:export-ydpi="180">
<defs

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-bookmark.active.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-bookmark.selected.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-bookmark.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-clear.active.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-clear.selected.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-clear.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -16,7 +16,7 @@
version="1.1"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="x-filter-dropdown.dark.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
@ -101,7 +101,7 @@
transform="matrix(18.072651,0,0,10.43425,-2089.4275,982.04694)"
inkscape:transform-center-y="2.5363326"
inkscape:transform-center-x="0.018274753"
inkscape:export-filename="/Users/gcombs/Development/qtshark/qt/dfilter_dropdown.png"
inkscape:export-filename="dfilter_dropdown.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
</g>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -16,7 +16,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-dropdown.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
@ -100,7 +100,7 @@
transform="matrix(18.072651,0,0,10.43425,-2089.4275,982.04694)"
inkscape:transform-center-y="2.5363326"
inkscape:transform-center-x="0.018274753"
inkscape:export-filename="/Users/gcombs/Development/qtshark/qt/dfilter_dropdown.png"
inkscape:export-filename="dfilter_dropdown.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
</g>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-matching-bookmark.active.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-matching-bookmark.selected.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-matching-bookmark.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-apply.active.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-apply.selected.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="x-filter-apply.svg"
inkscape:export-filename="/Users/gerald/Development/wireshark/image/x-filter-apply.png"
inkscape:export-filename="x-filter-apply.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -13,10 +13,9 @@
sodipodi:version="0.32"
width="210mm"
height="297mm"
sodipodi:docbase="/Users/gerald/devel/wsweb/material"
sodipodi:docname="wsbadge-dev.svg"
inkscape:version="0.45.1"
inkscape:export-filename="/Users/gerald/Desktop/wsbadge-dev.png"
inkscape:export-filename="wsbadge-dev.png"
inkscape:export-xdpi="38.178936"
inkscape:export-ydpi="38.178936"
inkscape:output_extension="org.inkscape.output.svg.inkscape">

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -706,6 +706,8 @@ kink 910/tcp/udp # Kerberized Internet Negotiation of Keys (KINK)
xact-backup 911/tcp/udp
apex-mesh 912/tcp/udp # APEX relay-relay service
apex-edge 913/tcp/udp # APEX endpoint-relay service
rift-lies 914/udp # Routing in Fat Trees Link Information Elements (TEMPORARY - registered 2023-02-17, expires 2024-02-17)
rift-ties 915/udp # Routing in Fat Trees Topology Information Elements (TEMPORARY - registered 2023-02-17, expires 2024-02-17)
rndc 953/tcp # BIND9 remote name daemon controller
ftps-data 989/tcp/udp # ftp protocol, data, over TLS/SSL
ftps 990/tcp/udp # ftp protocol, control, over TLS/SSL

View File

@ -116,12 +116,10 @@ sharkd_json_value_anyf(const char *key, const char *format, ...)
if (key)
json_dumper_set_member_name(&dumper, key);
if (format) {
va_list ap;
va_start(ap, format);
json_dumper_value_va_list(&dumper, format, ap);
va_end(ap);
}
va_list ap;
va_start(ap, format);
json_dumper_value_va_list(&dumper, format, ap);
va_end(ap);
}
static void
@ -129,8 +127,7 @@ sharkd_json_value_string(const char *key, const char *str)
{
if (key)
json_dumper_set_member_name(&dumper, key);
if (str)
json_dumper_value_string(&dumper, str);
json_dumper_value_string(&dumper, str);
}
static void
@ -147,14 +144,12 @@ sharkd_json_value_stringf(const char *key, const char *format, ...)
if (key)
json_dumper_set_member_name(&dumper, key);
if (format) {
va_list ap;
va_start(ap, format);
char* sformat = ws_strdup_printf("\"%s\"", format);
json_dumper_value_va_list(&dumper, sformat, ap);
g_free(sformat);
va_end(ap);
}
va_list ap;
va_start(ap, format);
char* sformat = ws_strdup_printf("\"%s\"", format);
json_dumper_value_va_list(&dumper, sformat, ap);
g_free(sformat);
va_end(ap);
}
static void
@ -171,6 +166,20 @@ sharkd_json_array_close(void)
json_dumper_end_array(&dumper);
}
static void
sharkd_json_object_open(const char *key)
{
if (key)
json_dumper_set_member_name(&dumper, key);
json_dumper_begin_object(&dumper);
}
static void
sharkd_json_object_close(void)
{
json_dumper_end_object(&dumper);
}
static void
sharkd_json_response_open(guint32 id)
{
@ -182,6 +191,8 @@ sharkd_json_response_open(guint32 id)
static void
sharkd_json_response_close(void)
{
json_dumper_end_object(&dumper); // end the message
json_dumper_finish(&dumper);
/*
@ -205,15 +216,13 @@ static void
sharkd_json_result_prologue(guint32 id)
{
sharkd_json_response_open(id);
sharkd_json_value_anyf("result", NULL);
json_dumper_begin_object(&dumper); // start the result object
sharkd_json_object_open("result"); // start the result object
}
static void
sharkd_json_result_epilogue(void)
{
json_dumper_end_object(&dumper); // end the result object
json_dumper_end_object(&dumper); // end the message
sharkd_json_response_close();
}
@ -228,7 +237,6 @@ static void
sharkd_json_result_array_epilogue(void)
{
sharkd_json_array_close(); // end of result array
json_dumper_end_object(&dumper); // end the message
sharkd_json_response_close();
}
@ -253,8 +261,7 @@ static void G_GNUC_PRINTF(4, 5)
sharkd_json_error(guint32 id, int code, char* data, char* format, ...)
{
sharkd_json_response_open(id);
sharkd_json_value_anyf("error", NULL);
json_dumper_begin_object(&dumper);
sharkd_json_object_open("error");
sharkd_json_value_anyf("code", "%d", code);
if (format)
@ -271,12 +278,11 @@ sharkd_json_error(guint32 id, int code, char* data, char* format, ...)
g_free(error_msg);
}
json_dumper_end_object(&dumper);
sharkd_json_object_close();
if (data)
sharkd_json_value_string("data", data);
json_dumper_end_object(&dumper);
sharkd_json_response_close();
}
@ -1087,7 +1093,17 @@ sharkd_session_process_load(const char *buf, const jsmntok_t *tokens, int count)
ENDTRY;
if (err == 0)
{
sharkd_json_simple_ok(rpcid);
}
else
{
sharkd_json_result_prologue(rpcid);
sharkd_json_value_string("status", wtap_strerror(err));
sharkd_json_value_anyf("err", "%d", err);
sharkd_json_result_epilogue();
}
}
/**
@ -1552,11 +1568,11 @@ sharkd_session_process_frames(const char *buf, const jsmntok_t *tokens, int coun
}
static void
sharkd_session_process_tap_stats_node_cb(const stat_node *n)
sharkd_session_process_tap_stats_node_cb(const char *key, const stat_node *n)
{
stat_node *node;
sharkd_json_array_open(NULL);
sharkd_json_array_open(key);
for (node = n->children; node; node = node->next)
{
json_dumper_begin_object(&dumper);
@ -1601,8 +1617,7 @@ sharkd_session_process_tap_stats_node_cb(const stat_node *n)
if (node->children)
{
sharkd_json_value_anyf("sub", NULL);
sharkd_session_process_tap_stats_node_cb(node);
sharkd_session_process_tap_stats_node_cb("sub", node);
}
json_dumper_end_object(&dumper);
}
@ -1641,8 +1656,7 @@ sharkd_session_process_tap_stats_cb(void *psp)
sharkd_json_value_string("type", "stats");
sharkd_json_value_string("name", st->cfg->name);
sharkd_json_value_anyf("stats", NULL);
sharkd_session_process_tap_stats_node_cb(&st->root);
sharkd_session_process_tap_stats_node_cb("stats", &st->root);
json_dumper_end_object(&dumper);
}
@ -2022,7 +2036,7 @@ sharkd_session_process_tap_rtp_analyse_cb(void *tapdata)
sharkd_json_value_string("tap", rtp_req->tap_name);
sharkd_json_value_string("type", "rtp-analyse");
sharkd_json_value_anyf("ssrc", "%u", rtp_req->id.ssrc);
sharkd_json_value_stringf("ssrc", "0x%x", rtp_req->id.ssrc);
sharkd_json_value_anyf("max_delta", "%f", statinfo->max_delta);
sharkd_json_value_anyf("max_delta_nr", "%u", statinfo->max_nr);
@ -2729,7 +2743,7 @@ sharkd_session_process_tap_rtp_cb(void *arg)
json_dumper_begin_object(&dumper);
sharkd_json_value_anyf("ssrc", "%u", calc.ssrc);
sharkd_json_value_stringf("ssrc", "0x%x", calc.ssrc);
sharkd_json_value_string("payload", calc.all_payload_type_names);
sharkd_json_value_string("saddr", calc.src_addr_str);
@ -3276,11 +3290,11 @@ sharkd_session_process_follow(char *buf, const jsmntok_t *tokens, int count)
}
static void
sharkd_session_process_frame_cb_tree(epan_dissect_t *edt, proto_tree *tree, tvbuff_t **tvbs, gboolean display_hidden)
sharkd_session_process_frame_cb_tree(const char *key, epan_dissect_t *edt, proto_tree *tree, tvbuff_t **tvbs, gboolean display_hidden)
{
proto_node *node;
sharkd_json_array_open(NULL);
sharkd_json_array_open(key);
for (node = tree->first_child; node; node = node->next)
{
field_info *finfo = PNODE_FINFO(node);
@ -3377,8 +3391,7 @@ sharkd_session_process_frame_cb_tree(epan_dissect_t *edt, proto_tree *tree, tvbu
if (finfo->tree_type != -1)
sharkd_json_value_anyf("e", "%d", finfo->tree_type);
sharkd_json_value_anyf("n", NULL);
sharkd_session_process_frame_cb_tree(edt, (proto_tree *) node, tvbs, display_hidden);
sharkd_session_process_frame_cb_tree("n", edt, (proto_tree *) node, tvbs, display_hidden);
}
json_dumper_end_object(&dumper);
@ -3476,8 +3489,7 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep
tvbs[count] = NULL;
}
sharkd_json_value_anyf("tree", NULL);
sharkd_session_process_frame_cb_tree(edt, tree, tvbs, display_hidden);
sharkd_session_process_frame_cb_tree("tree", edt, tree, tvbs, display_hidden);
g_free(tvbs);
}
@ -4082,7 +4094,7 @@ sharkd_session_process_check(char *buf, const jsmntok_t *tokens, int count)
if (dfilter_compile(tok_filter, &dfp, &df_err))
{
if (dfp && dfilter_deprecated_tokens(dfp))
sharkd_json_warning(rpcid, df_err->msg);
sharkd_json_warning(rpcid, "Filter contains deprecated tokens");
else
sharkd_json_simple_ok(rpcid);
@ -4440,8 +4452,7 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d)
char json_pref_key[512];
snprintf(json_pref_key, sizeof(json_pref_key), "%s.%s", data->module->name, pref_name);
json_dumper_set_member_name(&dumper, json_pref_key);
json_dumper_begin_object(&dumper);
sharkd_json_object_open(json_pref_key);
switch (prefs_get_type(pref))
{
@ -4534,7 +4545,7 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d)
sharkd_json_value_string("t", prefs_get_title(pref));
#endif
json_dumper_end_object(&dumper);
sharkd_json_object_close();
return 0; /* continue */
}
@ -4584,10 +4595,9 @@ sharkd_session_process_dumpconf(char *buf, const jsmntok_t *tokens, int count)
sharkd_json_result_prologue(rpcid);
sharkd_json_value_anyf("prefs", NULL);
json_dumper_begin_object(&dumper);
sharkd_json_object_open("prefs");
prefs_modules_foreach(sharkd_session_process_dumpconf_mod_cb, &data);
json_dumper_end_object(&dumper);
sharkd_json_object_close();
sharkd_json_result_epilogue();
return;
@ -4611,10 +4621,9 @@ sharkd_session_process_dumpconf(char *buf, const jsmntok_t *tokens, int count)
sharkd_json_result_prologue(rpcid);
sharkd_json_value_anyf("prefs", NULL);
json_dumper_begin_object(&dumper);
sharkd_json_object_open("prefs");
sharkd_session_process_dumpconf_cb(pref, &data);
json_dumper_end_object(&dumper);
sharkd_json_object_close();
sharkd_json_result_epilogue();
return;
@ -4639,10 +4648,9 @@ sharkd_session_process_dumpconf(char *buf, const jsmntok_t *tokens, int count)
sharkd_json_result_prologue(rpcid);
sharkd_json_value_anyf("prefs", NULL);
json_dumper_begin_object(&dumper);
sharkd_json_object_open("prefs");
prefs_pref_foreach(pref_mod, sharkd_session_process_dumpconf_cb, &data);
json_dumper_end_object(&dumper);
sharkd_json_object_close();
sharkd_json_result_epilogue();
}
@ -4949,7 +4957,7 @@ sharkd_session_process_download(char *buf, const jsmntok_t *tokens, int count)
sharkd_json_value_string("file", filename);
sharkd_json_value_string("mime", mime);
sharkd_json_value_anyf("data", NULL);
json_dumper_set_member_name(&dumper, "data");
json_dumper_begin_base64(&dumper);
sharkd_rtp_download_decode(&rtp_req);
json_dumper_end_base64(&dumper);
@ -4958,6 +4966,13 @@ sharkd_session_process_download(char *buf, const jsmntok_t *tokens, int count)
g_slist_free_full(rtp_req.packets, sharkd_rtp_download_free_items);
}
else
{
sharkd_json_error(
rpcid, -10003, NULL,
"no rtp data available"
);
}
}
}

Binary file not shown.

BIN
test/captures/trunc.pcap Normal file

Binary file not shown.

View File

@ -70,6 +70,15 @@ class case_sharkd(subprocesstest.SubprocessTestCase):
{"jsonrpc":"2.0","id":1,"error":{"code":-2001,"message":"Unable to open the file"}},
))
def test_sharkd_req_load_truncated_pcap(self, check_sharkd_session, capture_file):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"load",
"params":{"file": capture_file('trunc.pcap')}
},
), (
{"jsonrpc":"2.0","id":1,"result":{"status":"Less data was read than was expected","err":-12}},
))
def test_sharkd_req_status_no_pcap(self, check_sharkd_session):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"status"},
@ -252,6 +261,55 @@ class case_sharkd(subprocesstest.SubprocessTestCase):
}},
))
def test_sharkd_req_tap_rtp_streams(self, check_sharkd_session, capture_file):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"load",
"params":{"file": capture_file('sip-rtp.pcapng')}
},
{"jsonrpc":"2.0", "id":2, "method":"tap", "params":{"tap0": "rtp-streams"}},
{"jsonrpc":"2.0", "id":2, "method":"tap", "params":{"tap0": "rtp-analyse:200.57.7.204_8000_200.57.7.196_40376_0xd2bd4e3e"}},
), (
{"jsonrpc":"2.0","id":1,"result":{"status":"OK"}},
{"jsonrpc":"2.0","id":2,"result":{
"taps":[{
"tap":"rtp-streams",
"type":"rtp-streams",
"streams":[{
"ssrc":"0xd2bd4e3e",
"payload":"g711A",
"saddr":"200.57.7.204",
"sport":8000,
"daddr":"200.57.7.196",
"dport":40376,
"pkts":548,
"max_delta":5843.742000,
"max_jitter":7.406751,
"mean_jitter":2.517173,
"expectednr":548,
"totalnr":548,
"problem":False,
"ipver":4
}]
}]
}},
{"jsonrpc":"2.0","id":2,"result":
{"taps":[{
"tap":"rtp-analyse:200.57.7.204_8000_200.57.7.196_40376_0xd2bd4e3e",
"type":"rtp-analyse",
"ssrc":"0xd2bd4e3e",
"max_delta":5843.742000,
"max_delta_nr":168,
"max_jitter":7.406751,
"mean_jitter":2.517173,
"max_skew":319.289000,
"total_nr":548,
"seq_err":0,
"duration":24124.055000,
"items": MatchAny()
}]
}},
))
def test_sharkd_req_follow_bad(self, check_sharkd_session, capture_file):
# Unrecognized taps currently produce no output (not even err).
check_sharkd_session((
@ -477,7 +535,7 @@ class case_sharkd(subprocesstest.SubprocessTestCase):
))
def test_sharkd_req_download_tls_secrets(self, check_sharkd_session, capture_file):
# XXX test download for eo: and rtp: too
# XXX test download for eo: too
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"load",
"params":{"file": capture_file('tls12-dsb.pcapng')}
@ -493,6 +551,25 @@ class case_sharkd(subprocesstest.SubprocessTestCase):
},
))
def test_sharkd_req_download_rtp_stream(self, check_sharkd_session, capture_file):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"load",
"params":{"file": capture_file('sip-rtp.pcapng')}
},
{"jsonrpc":"2.0", "id":2, "method":"download",
"params":{"token": "rtp:200.57.7.204_8000_200.57.7.196_40376_0xd2bd4e3e"}},
{"jsonrpc":"2.0", "id":3, "method":"download",
"params":{"token": "rtp:1.1.1.1_8000_1.1.1.2_9000_0xdddddddd"}},
), (
{"jsonrpc":"2.0","id":1,"result":{"status":"OK"}},
{"jsonrpc":"2.0","id":2,"result":{
"file":"rtp:200.57.7.204_8000_200.57.7.196_40376_0xd2bd4e3e",
"mime":"audio/x-wav",
"data":MatchRegExp(r'UklGRv.+')}
},
{"jsonrpc":"2.0","id":3,"error":{"code":-10003,"message":"no rtp data available"}},
))
def test_sharkd_req_bye(self, check_sharkd_session):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"bye"},

View File

@ -683,6 +683,36 @@ class Output(object):
else:
self.f.write(line+'\n')
def is_valid(spec):
"""Check spec"""
def check_item(item):
if item['spare']:
return True
return check_variation(item['variation'])
def check_variation(variation):
t = variation['type']
if t == 'Element':
return True
elif t == 'Group':
return all([check_item(i) for i in variation['items']])
elif t == 'Extended':
n1 = variation['first']
n2 = variation['extents']
fx = variation['fx']
if fx != 'regular':
return False # 'iregular extended item'
return all([check_item(i) for i in variation['items']])
elif t == 'Repetitive':
return check_variation(variation['variation'])
elif t == 'Explicit':
return True
elif t == 'Compound':
items = [i for i in variation['items'] if i is not None]
return all([check_item(i) for i in items])
else:
raise Exception('unexpected variation type {}'.format(t))
return all([check_item(i) for i in spec['catalogue']])
def main():
parser = argparse.ArgumentParser(description='Process asterix specs files.')
parser.add_argument('paths', metavar='PATH', nargs='*',
@ -703,6 +733,7 @@ def main():
jsons = [json.loads(i) for i in jsons]
jsons = sorted(jsons, key = lambda x: (x['number'], x['edition']['major'], x['edition']['minor']))
jsons = [spec for spec in jsons if spec['type'] == 'Basic']
jsons = [spec for spec in jsons if is_valid(spec)]
cats = list(set([x['number'] for x in jsons]))
latest_editions = {cat: sorted(

Some files were not shown because too many files have changed in this diff Show More