wireshark/epan/CMakeLists.txt

466 lines
8.2 KiB
CMake
Raw Normal View History

# CMakeLists.txt
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
if (HAVE_HFI_SECTION_INIT)
add_definitions(
-DHAVE_HFI_SECTION_INIT
)
endif()
add_definitions(
${LIBXML2_DEFINITIONS}
${KERBEROS_DEFINITIONS}
)
add_subdirectory(crypt)
add_subdirectory(dfilter)
add_subdirectory(dissectors)
add_subdirectory(ftypes)
if(LUA_FOUND)
add_subdirectory(wslua)
endif()
add_custom_command(
OUTPUT ps.c
COMMAND ${PYTHON_EXECUTABLE}
${CMAKE_SOURCE_DIR}/tools/rdps.py
${CMAKE_CURRENT_SOURCE_DIR}/print.ps
ps.c
DEPENDS
${CMAKE_SOURCE_DIR}/tools/rdps.py
${CMAKE_CURRENT_SOURCE_DIR}/print.ps
)
set(LIBWIRESHARK_PUBLIC_HEADERS
addr_and_mask.h
addr_resolv.h
address.h
address_types.h
afn.h
aftypes.h
app_mem_usage.h
arcnet_pids.h
arptypes.h
asn1.h
ax25_pids.h
bridged_pids.h
capture_dissectors.h
charsets.h
chdlctypes.h
cisco_pid.h
color_filters.h
column.h
column-info.h
column-utils.h
conversation.h
conversation_debug.h
conversation_table.h
conv_id.h
crc10-tvb.h
crc16-tvb.h
crc32-tvb.h
crc6-tvb.h
crc8-tvb.h
decode_as.h
diam_dict.h
disabled_protos.h
conversation_filter.h
dccpservicecodes.h
dtd.h
dtd_parse.h
dvb_chartbl.h
eap.h
eapol_keydes_types.h
epan.h
epan_dissect.h
etypes.h
ex-opt.h
except.h
exceptions.h
expert.h
export_object.h
exported_pdu.h
filter_expressions.h
follow.h
frame_data.h
frame_data_sequence.h
funnel.h
#geoip_db.h
golay.h
guid-utils.h
iana_charsets.h
iax2_codec_type.h
in_cksum.h
introspection.h
ip_opts.h
ipproto.h
ipv4.h
ipv6.h
lapd_sapi.h
llcsaps.h
maxmind_db.h
media_params.h
next_tvb.h
nlpid.h
oids.h
osi-utils.h
oui.h
packet.h
packet_info.h
params.h
NCSI: Squash commits of NCSI and PCI-IDS NCSI: Extends NCSI dissection based on DSP0222 Version: 1.2.0_2b Add pci-ids.c and pci-ids.h for mapping PCI IDs(VID,DID,SID,SVID) to string. Extends NCSI dissection to support DSP0222 Version: 1.2.0_2b. Extends NCSI dissection to support Mellanox OEM commands. NCSI: Use TFS for boolean mapped string and added AEN dissectors 1. Use the tfs defined in tfs.c 2. Refine the boolean mapped strings to be TFS style 3. Added dissectors for AEN NSCI: Fixed erros with gcc 7.5.0 1. Fix compiling errors with gcc 7.5.0 under Ubuntu 18.04 2. Sloved complaints of git pre-commit hook NCSI: Add "0x" prefix for displaying HEX values There are codes display HEX values without prefix, added "0x" to fix that. PCI-IDS: Added PCI ID file and python script to convert it to C codes 1. Added the PCI ID file pci.ids from https://pci-ids.ucw.cz/ 2. Added pci-ids-convert.py to convert to epan/dissectors/pci-ids.c PCI-IDS: Updated the PCI ID list to be Version 2021.01.11 NCSI: Remove trailing spaces and unused href entries PCI-IDS: Use a fresh copy of pci.ids to generate pci-ids.c 1. Renamed pci-ids-convert.py to make-pci-ids.py 2. make-pci-ids.py uses a fresh copy of pic.ids to generate pci-ids.c PCI-IDS: Move internal structure to C file 1. Move pci_id_t and pci_vid_index_t from header file to C file. 2. Refined the comments of pci-ids.c 3. Renamed local variable index (shadow variable) to idx PCI-IDS: Refined binary search codes PCI-IDS: Moved pci-ids.[ch] to epan/ Moved pci-ids.[ch] to epan/ as they ought to be
2021-02-17 07:10:31 +00:00
pci-ids.h
plugin_if.h
ppptypes.h
print.h
print_stream.h
prefs.h
prefs-int.h
proto.h
proto_data.h
ps.h
ptvcursor.h
range.h
reassemble.h
reedsolomon.h
register.h
req_resp_hdrs.h
rtd_table.h
rtp_pt.h
sctpppids.h
secrets.h
show_exception.h
slow_protocol_subtypes.h
sminmpec.h
srt_table.h
stat_tap_ui.h
stat_groups.h
stats_tree.h
stats_tree_priv.h
stream.h
strutil.h
t35.h
tap.h
tap-voip.h
timestamp.h
timestats.h
tfs.h
to_str.h
tvbparse.h
tvbuff.h
tvbuff-int.h
uat.h
uat-int.h
unit_strings.h
value_string.h
wmem_scopes.h
wscbor.h
x264_prt_id.h
xdlc.h
)
set(LIBWIRESHARK_HEADER_FILES
${LIBWIRESHARK_PUBLIC_HEADERS}
)
set(LIBWIRESHARK_NONGENERATED_FILES
addr_and_mask.c
addr_resolv.c
address_types.c
afn.c
aftypes.c
app_mem_usage.c
asn1.c
capture_dissectors.c
charsets.c
color_filters.c
column.c
column-utils.c
conversation.c
conversation_table.c
crc10-tvb.c
crc16-tvb.c
crc32-tvb.c
crc6-tvb.c
crc8-tvb.c
decode_as.c
disabled_protos.c
conversation_filter.c
dvb_chartbl.c
epan.c
ex-opt.c
except.c
expert.c
export_object.c
exported_pdu.c
filter_expressions.c
follow.c
frame_data.c
frame_data_sequence.c
funnel.c
#geoip_db.c
golay.c
guid-utils.c
iana_charsets.c
in_cksum.c
introspection.c
ipproto.c
maxmind_db.c
media_params.c
next_tvb.c
oids.c
osi-utils.c
packet.c
NCSI: Squash commits of NCSI and PCI-IDS NCSI: Extends NCSI dissection based on DSP0222 Version: 1.2.0_2b Add pci-ids.c and pci-ids.h for mapping PCI IDs(VID,DID,SID,SVID) to string. Extends NCSI dissection to support DSP0222 Version: 1.2.0_2b. Extends NCSI dissection to support Mellanox OEM commands. NCSI: Use TFS for boolean mapped string and added AEN dissectors 1. Use the tfs defined in tfs.c 2. Refine the boolean mapped strings to be TFS style 3. Added dissectors for AEN NSCI: Fixed erros with gcc 7.5.0 1. Fix compiling errors with gcc 7.5.0 under Ubuntu 18.04 2. Sloved complaints of git pre-commit hook NCSI: Add "0x" prefix for displaying HEX values There are codes display HEX values without prefix, added "0x" to fix that. PCI-IDS: Added PCI ID file and python script to convert it to C codes 1. Added the PCI ID file pci.ids from https://pci-ids.ucw.cz/ 2. Added pci-ids-convert.py to convert to epan/dissectors/pci-ids.c PCI-IDS: Updated the PCI ID list to be Version 2021.01.11 NCSI: Remove trailing spaces and unused href entries PCI-IDS: Use a fresh copy of pci.ids to generate pci-ids.c 1. Renamed pci-ids-convert.py to make-pci-ids.py 2. make-pci-ids.py uses a fresh copy of pic.ids to generate pci-ids.c PCI-IDS: Move internal structure to C file 1. Move pci_id_t and pci_vid_index_t from header file to C file. 2. Refined the comments of pci-ids.c 3. Renamed local variable index (shadow variable) to idx PCI-IDS: Refined binary search codes PCI-IDS: Moved pci-ids.[ch] to epan/ Moved pci-ids.[ch] to epan/ as they ought to be
2021-02-17 07:10:31 +00:00
pci-ids.c
plugin_if.c
print.c
print_stream.c
prefs.c
proto.c
proto_data.c
range.c
reassemble.c
reedsolomon.c
register.c
req_resp_hdrs.c
rtd_table.c
sctpppids.c
secrets.c
sequence_analysis.c
Move show_exception() and show_reported_bounds_error() to epan/show_exception.c, as it's used outside epan/dissectors/packet-frame.c. Update their callers to include <epan/show_exception.h> to get their declaration. Add a CATCH_NONFATAL_ERRORS macro that catches all exceptions that, if there's more stuff in the packet to dissect after the dissector call that threw the exception, doesn't mean you shouldn't go ahead and dissect that stuff. Use it in all those cases, including ones where BoundsError was inappropriately being caught (you want those passed up to the top level, so that the packet is reported as having been cut short in the capture process). Add a CATCH_BOUNDS_ERRORS macro that catches all exceptions that correspond to running past the end of the data for a tvbuff; use it rather than explicitly catching those exceptions individually, and rather than just catching all exceptions (the only place that DissectorError should be caught, for example, is at the top level, so dissector bugs show up in the protocol tree). Don't catch and then immediately rethrow exceptions without doing anything else; just let the exceptions go up to the final catcher. Use show_exception() to report non-fatal errors, rather than doing it yourself. If a dissector is called from Lua, catch all non-fatal errors and use show_exception() to report them rather than catching only ReportedBoundsError and adding a proto_malformed item. Don't catch exceptions when constructing a trailer tvbuff in packet-ieee8023.c - just construct it after the payload has been dissected, and let whatever exceptions that throws be handled at the top level. Avoid some TRY/CATCH/ENDTRY cases by using checks such as tvb_bytes_exist() before even looking in the tvbuff. svn path=/trunk/; revision=47924
2013-02-27 22:43:54 +00:00
show_exception.c
srt_table.c
stat_tap_ui.c
stats_tree.c
strutil.c
stream.c
t35.c
tap.c
timestamp.c
timestats.c
tfs.c
to_str.c
tvbparse.c
tvbuff.c
tvbuff_base64.c
tvbuff_brotli.c
tvbuff_composite.c
tvbuff_real.c
tvbuff_subset.c
tvbuff_zlib.c
2022-12-23 02:03:27 +00:00
tvbuff_zstd.c
smb2: add support for decompression The latest iteration of Microsoft updates to SMB3 added compression to the protocol. This commit implements decompressing and dissecting compressed payloads. The compression algorithms that can be used are "Plain LZ77", "LZ77+Huffman" and "LZNT1" which you can read more about in the [MS-XCA] documentation. This set of algorithm is sometimes referred to as XPRESS. This commit reuses the existing uncompression API scheme already in place with zlib and brotli and adds 3 tvb_uncompress_*() function implemented in: * epan/tvbuff_lz77.c * epan/tvbuff_lz77huff.c * epan/tvbuff_lznt1.c A new function wmem_array_try_index() was added to the wmem_array API to make bound checked reads that fail gracefully. New tests for it have been added as well. Since both reads (tvb) and writes (wmem_array) are bound checked the risk for buffer overruns is drastically reduced. LZ77+Huffman has decoding tables and special care was taken to bound check these. Simplified versions of the implementations were succesfully tested against AFL (American Fuzzy Lop) for ~150 millions executions each. The SMB2/3 dissector was changed to deal with the new transform header for compressed packets (new protocol_id value) and READ request flags (COMPRESSED). Badly compressed or encrypted packets are now reported as such, and the decryption test suite was changed to reflect that. This commit also adds a test capture with 1 packet compressed with each algorithm as returned by Windows Server 2019, along with 3 matching tests in test/suite_dissection.py Change-Id: I2b84f56541f2f4ee7d886152794b993987dd10e7 Reviewed-on: https://code.wireshark.org/review/33855 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-07-05 14:08:18 +00:00
tvbuff_lz77.c
tvbuff_lz77huff.c
tvbuff_lznt1.c
tvbuff_rdp.c
uat.c
value_string.c
wscbor.c
unit_strings.c
wmem_scopes.c
xdlc.c
protobuf-helper.c
protobuf_lang_tree.c
${CMAKE_CURRENT_BINARY_DIR}/ps.c
)
set(LIBWIRESHARK_FILES ${LIBWIRESHARK_NONGENERATED_FILES})
add_lex_files(LEX_FILES LIBWIRESHARK_FILES
diam_dict.l
dtd_parse.l
dtd_preparse.l
radius_dict.l
uat_load.l
protobuf_lang_scanner.l
)
add_lemon_files(LEMON_FILES LIBWIRESHARK_FILES
dtd_grammar.lemon
protobuf_lang_parser.lemon
)
set_source_files_properties(
${LIBWIRESHARK_NONGENERATED_FILES}
PROPERTIES
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_library(epan
#Included so that Visual Studio can properly put header files in solution
${LIBWIRESHARK_HEADER_FILES}
${LIBWIRESHARK_FILES}
$<TARGET_OBJECTS:crypt>
$<TARGET_OBJECTS:dfilter>
$<TARGET_OBJECTS:dissectors>
$<TARGET_OBJECTS:dissectors-corba>
$<TARGET_OBJECTS:dissector-registration>
$<TARGET_OBJECTS:ftypes>
$<$<BOOL:${LUA_FOUND}>:$<TARGET_OBJECTS:wslua>>
${CMAKE_BINARY_DIR}/resources/libwireshark.rc
)
set_target_properties(epan PROPERTIES
COMPILE_DEFINITIONS "WS_BUILD_DLL"
LINK_FLAGS "${WS_LINK_FLAGS}"
VERSION "0.0.0" SOVERSION 0
INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}"
# By default the name for a library with target name epan will be libepan,
# but Ethereal is now named Wireshark
OUTPUT_NAME "wireshark"
PREFIX "lib"
FOLDER "DLLs"
)
if(MSVC)
set_target_properties(epan PROPERTIES LINK_FLAGS_DEBUG "${WS_MSVC_DEBUG_LINK_FLAGS}")
endif()
target_link_libraries(epan
PUBLIC
wsutil
${GLIB2_LIBRARIES}
PRIVATE
wiretap
${BROTLI_LIBRARIES}
${CARES_LIBRARIES}
${GCRYPT_LIBRARIES}
${GIO2_LIBRARIES}
${GNUTLS_LIBRARIES}
${KERBEROS_LIBRARIES}
${LIBXML2_LIBRARIES}
${LUA_LIBRARIES}
${LZ4_LIBRARIES}
${M_LIBRARIES}
${NGHTTP2_LIBRARIES}
${SMI_LIBRARIES}
${SNAPPY_LIBRARIES}
${WIN_PSAPI_LIBRARY}
${WIN_WS2_32_LIBRARY}
${ZLIB_LIBRARIES}
${ZSTD_LIBRARIES}
$<$<BOOL:${LUA_FOUND}>:lrexlib>
)
target_include_directories(epan
SYSTEM PUBLIC
${GLIB2_INCLUDE_DIRS}
)
target_include_directories(epan
INTERFACE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/wireshark>
)
target_include_directories(epan
SYSTEM PRIVATE
${BROTLI_INCLUDE_DIRS}
${CARES_INCLUDE_DIRS}
${GCRYPT_INCLUDE_DIRS}
${GLIB2_INCLUDE_DIRS}
${GNUTLS_INCLUDE_DIRS}
${LIBXML2_INCLUDE_DIRS}
${LUA_INCLUDE_DIRS}
${LZ4_INCLUDE_DIRS}
${NGHTTP2_INCLUDE_DIRS}
${SMI_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
${ZSTD_INCLUDE_DIRS}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)
add_dependencies(epan lemon)
install(TARGETS epan
EXPORT WiresharkTargets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(FILES ${LIBWIRESHARK_PUBLIC_HEADERS}
DESTINATION "${PROJECT_INSTALL_INCLUDEDIR}/epan"
COMPONENT "Development"
EXCLUDE_FROM_ALL
)
add_executable(exntest EXCLUDE_FROM_ALL exntest.c except.c)
target_link_libraries(exntest epan)
set_target_properties(exntest PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
COMPILE_DEFINITIONS "WS_BUILD_DLL"
2022-10-20 17:26:49 +00:00
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_executable(oids_test EXCLUDE_FROM_ALL oids_test.c)
target_link_libraries(oids_test epan)
set_target_properties(oids_test PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
COMPILE_DEFINITIONS "WS_BUILD_DLL"
2022-10-20 17:26:49 +00:00
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_executable(reassemble_test EXCLUDE_FROM_ALL reassemble_test.c)
target_link_libraries(reassemble_test epan)
set_target_properties(reassemble_test PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
2022-10-20 17:26:49 +00:00
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_executable(tvbtest EXCLUDE_FROM_ALL tvbtest.c)
2022-12-23 02:03:55 +00:00
target_link_libraries(tvbtest epan)
set_target_properties(tvbtest PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
COMPILE_DEFINITIONS "WS_BUILD_DLL"
2022-10-20 17:26:49 +00:00
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_executable(wscbor_test EXCLUDE_FROM_ALL wscbor_test.c)
target_link_libraries(wscbor_test epan)
set_target_properties(wscbor_test PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
2022-10-20 17:26:49 +00:00
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
add_executable(test_epan EXCLUDE_FROM_ALL test_epan.c)
target_link_libraries(test_epan epan)
set_target_properties(test_epan PROPERTIES
FOLDER "Tests"
EXCLUDE_FROM_DEFAULT_BUILD True
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
)
CHECKAPI(
NAME
epan
SWITCHES
SOURCES
${LIBWIRESHARK_NONGENERATED_FILES}
)
#
# 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:
#