Merge "Apply layouts in Qt Creator. Fix a tooltip."
authorAlexis La Goutte <alexis.lagoutte@gmail.com>
Wed, 29 Jan 2014 17:44:54 +0000 (17:44 +0000)
committerWireshark code review <code-review-do-not-reply@wireshark.org>
Wed, 29 Jan 2014 17:44:54 +0000 (17:44 +0000)
315 files changed:
.gitignore
AUTHORS
CMakeLists.txt
CMakeOptions.txt
Makefile.nmake
README.cmake
asn1/ansi_map/packet-ansi_map-template.c
asn1/cms/cms.cnf
asn1/ess/packet-ess-template.c
asn1/gprscdr/gprscdr.cnf
asn1/gsm_map/MAP-ApplicationContexts.asn
asn1/gsm_map/MAP-BS-Code.asn
asn1/gsm_map/MAP-CH-DataTypes.asn
asn1/gsm_map/MAP-CallHandlingOperations.asn
asn1/gsm_map/MAP-CommonDataTypes.asn
asn1/gsm_map/MAP-DialogueInformation.asn
asn1/gsm_map/MAP-ER-DataTypes.asn
asn1/gsm_map/MAP-Errors.asn
asn1/gsm_map/MAP-ExtensionDataTypes.asn
asn1/gsm_map/MAP-GR-DataTypes.asn
asn1/gsm_map/MAP-Group-Call-Operations.asn
asn1/gsm_map/MAP-LCS-DataTypes.asn
asn1/gsm_map/MAP-LocationServiceOperations.asn
asn1/gsm_map/MAP-MS-DataTypes.asn
asn1/gsm_map/MAP-MobileServiceOperations.asn
asn1/gsm_map/MAP-OM-DataTypes.asn
asn1/gsm_map/MAP-OperationAndMaintenanceOperations.asn
asn1/gsm_map/MAP-Protocol.asn
asn1/gsm_map/MAP-SM-DataTypes.asn
asn1/gsm_map/MAP-SS-Code.asn
asn1/gsm_map/MAP-SS-DataTypes.asn
asn1/gsm_map/MAP-ShortMessageServiceOperations.asn
asn1/gsm_map/MAP-SupplementaryServiceOperations.asn
asn1/gsm_map/MAP-TS-Code.asn
asn1/gsm_map/gsm_map.cnf
asn1/ldap/ldap.cnf
asn1/ldap/packet-ldap-template.c
asn1/lte-rrc/lte-rrc.cnf
asn1/lte-rrc/packet-lte-rrc-template.c
asn1/pkcs12/packet-pkcs12-template.c
asn1/rtse/packet-rtse-template.c
asn1/sabp/packet-sabp-template.c
asn1/snmp/packet-snmp-template.c
asn1/t124/t124.cnf
asn1/x509af/packet-x509af-template.c
asn1/x509af/packet-x509af-template.h
asn1/x509af/x509af.cnf
capinfos.c
capture_sync.c
cmake/modules/FindASCIIDOC.cmake
cmake/modules/FindChocolatey.cmake [new file with mode: 0644]
cmake/modules/FindLEX.cmake
cmake/modules/FindSETCAP.cmake [new file with mode: 0644]
cmake/modules/FindYACC.cmake
config.nmake
configure.ac
diameter/dictionary.xml
doc/README.dissector
doc/README.packaging
docbook/CMakeLists.txt
docbook/Makefile.am
docbook/Makefile.common
docbook/Makefile.nmake
docbook/asciidoc.conf
docbook/check_git_version.sh [moved from docbook/check_svn_version.sh with 69% similarity]
docbook/developer-guide.xml
docbook/docbook.vcproj
docbook/user-guide.xml
docbook/wsdg_src/WSDG_chapter_env_intro.asciidoc [new file with mode: 0644]
docbook/wsdg_src/WSDG_chapter_env_intro.xml [deleted file]
docbook/wsdg_src/WSDG_chapter_quick_setup.asciidoc [new file with mode: 0644]
docbook/wsdg_src/WSDG_chapter_quick_setup.xml [deleted file]
docbook/wsdg_src/WSDG_chapter_sources.asciidoc [new file with mode: 0644]
docbook/wsdg_src/WSDG_chapter_sources.xml [deleted file]
docbook/wsdg_src/WSDG_chapter_tools.xml
docbook/wsdg_src/WSDG_preface.asciidoc [new file with mode: 0644]
docbook/wsdg_src/WSDG_preface.xml [deleted file]
dumpcap.c
editcap.c
epan/CMakeLists.txt
epan/dfilter/dfunctions.c
epan/dissectors/Makefile.common
epan/dissectors/file-mp4.c
epan/dissectors/packet-9p.c
epan/dissectors/packet-aastra-aasp.c
epan/dissectors/packet-adwin-config.c
epan/dissectors/packet-afp.c
epan/dissectors/packet-aim-chatnav.c
epan/dissectors/packet-aim-location.c
epan/dissectors/packet-aim-messaging.c
epan/dissectors/packet-aim-oft.c
epan/dissectors/packet-aim-popup.c
epan/dissectors/packet-aim-signon.c
epan/dissectors/packet-aim-ssi.c
epan/dissectors/packet-aim-userlookup.c
epan/dissectors/packet-aim.c
epan/dissectors/packet-alcap.c
epan/dissectors/packet-amqp.c
epan/dissectors/packet-ansi_637.c
epan/dissectors/packet-ansi_a.c
epan/dissectors/packet-ansi_map.c
epan/dissectors/packet-applemidi.c
epan/dissectors/packet-aprs.c
epan/dissectors/packet-ar_drone.c
epan/dissectors/packet-artnet.c
epan/dissectors/packet-asap.c
epan/dissectors/packet-assa_r3.c
epan/dissectors/packet-asterix.c
epan/dissectors/packet-atalk.c
epan/dissectors/packet-ber.c
epan/dissectors/packet-bgp.c
epan/dissectors/packet-bootp.c
epan/dissectors/packet-bthci_cmd.c
epan/dissectors/packet-cms.c
epan/dissectors/packet-dcerpc-eventlog.c
epan/dissectors/packet-diameter.c
epan/dissectors/packet-dns.c
epan/dissectors/packet-dsi.c
epan/dissectors/packet-dtcp-ip.c
epan/dissectors/packet-dtls.c
epan/dissectors/packet-dvbci.c
epan/dissectors/packet-edonkey.c
epan/dissectors/packet-ess.c
epan/dissectors/packet-exported_pdu.c
epan/dissectors/packet-gprscdr.c
epan/dissectors/packet-gsm_a_gm.c
epan/dissectors/packet-gsm_map.c
epan/dissectors/packet-gsm_rlcmac.c
epan/dissectors/packet-hdcp.c
epan/dissectors/packet-ieee17221.c
epan/dissectors/packet-ipx.c
epan/dissectors/packet-irc.c
epan/dissectors/packet-ldap.c
epan/dissectors/packet-lte-rrc.c
epan/dissectors/packet-lwm.c [new file with mode: 0644]
epan/dissectors/packet-mac-lte.c
epan/dissectors/packet-mbim.c
epan/dissectors/packet-mbim.h [new file with mode: 0644]
epan/dissectors/packet-mip.c
epan/dissectors/packet-nfs.c
epan/dissectors/packet-openflow_v1.c
epan/dissectors/packet-openflow_v5.c
epan/dissectors/packet-p_mul.c
epan/dissectors/packet-pdcp-lte.c
epan/dissectors/packet-pdcp-lte.h
epan/dissectors/packet-pkcs12.c
epan/dissectors/packet-pppoe.c
epan/dissectors/packet-redbackli.c
epan/dissectors/packet-rmt-lct.c
epan/dissectors/packet-rsvp.c
epan/dissectors/packet-rtse.c
epan/dissectors/packet-sabp.c
epan/dissectors/packet-sametime.c
epan/dissectors/packet-sgsap.c
epan/dissectors/packet-sip.c
epan/dissectors/packet-smb2.c
epan/dissectors/packet-smpp.c
epan/dissectors/packet-snmp.c
epan/dissectors/packet-ssl-utils.c
epan/dissectors/packet-ssl-utils.h
epan/dissectors/packet-ssl.c
epan/dissectors/packet-t124.c
epan/dissectors/packet-x509af.c
epan/dissectors/packet-x509af.h
epan/dissectors/packet-zbee-zcl-ha.c
epan/dissectors/pidl/eventlog.cnf
epan/enterprise-numbers
epan/except.c
epan/except.h
epan/ftypes/ftype-bytes.c
epan/ftypes/ftype-double.c
epan/ftypes/ftype-guid.c
epan/ftypes/ftype-integer.c
epan/ftypes/ftype-ipv4.c
epan/ftypes/ftype-ipv6.c
epan/ftypes/ftype-none.c
epan/ftypes/ftype-pcre.c
epan/ftypes/ftype-string.c
epan/ftypes/ftype-time.c
epan/ftypes/ftype-tvbuff.c
epan/ftypes/ftypes-int.h
epan/ftypes/ftypes.c
epan/ftypes/ftypes.h
epan/oids.c
epan/proto.c
epan/proto.h
epan/to_str.c
epan/tvbuff.c
epan/tvbuff.h
epan/wslua/wslua_gui.c
file.c
make-version.pl
manuf
mergecap.c
nio-ie5.c [deleted file]
nio-ie5.h [deleted file]
plugins/wimax/mac_mgmt_msg_decoder.c
plugins/wimax/msg_fpc.c
plugins/wimax/msg_ulmap.c
plugins/wimax/wimax_bits.h
reordercap.c
services
tools/backport-change
tools/fuzz-test.sh
tools/lemon/lemon.c
tools/runlex.sh
tshark.c
ui/CMakeLists.txt
ui/Makefile.common
ui/gtk/afp_stat.c
ui/gtk/ansi_a_stat.c
ui/gtk/ansi_map_stat.c
ui/gtk/bootp_stat.c
ui/gtk/camel_srt.c
ui/gtk/capture_file_dlg.c
ui/gtk/compare_stat.c
ui/gtk/conversations_eth.c
ui/gtk/conversations_fc.c
ui/gtk/conversations_fddi.c
ui/gtk/conversations_ip.c
ui/gtk/conversations_ipv6.c
ui/gtk/conversations_ipx.c
ui/gtk/conversations_jxta.c
ui/gtk/conversations_ncp.c
ui/gtk/conversations_rsvp.c
ui/gtk/conversations_sctp.c
ui/gtk/conversations_tcpip.c
ui/gtk/conversations_udpip.c
ui/gtk/conversations_usb.c
ui/gtk/conversations_wlan.c
ui/gtk/dcerpc_stat.c
ui/gtk/diameter_stat.c
ui/gtk/dissector_tables_dlg.c
ui/gtk/export_pdu_dlg.c
ui/gtk/export_pdu_dlg.h
ui/gtk/fc_stat.c
ui/gtk/flow_graph.c
ui/gtk/funnel_stat.c
ui/gtk/gsm_a_stat.c
ui/gtk/gsm_map_stat.c
ui/gtk/gsm_map_summary.c
ui/gtk/gtp_stat.c
ui/gtk/h225_counter.c
ui/gtk/h225_ras_srt.c
ui/gtk/hostlist_eth.c
ui/gtk/hostlist_fc.c
ui/gtk/hostlist_fddi.c
ui/gtk/hostlist_ip.c
ui/gtk/hostlist_ipv6.c
ui/gtk/hostlist_ipx.c
ui/gtk/hostlist_jxta.c
ui/gtk/hostlist_ncp.c
ui/gtk/hostlist_rsvp.c
ui/gtk/hostlist_sctp.c
ui/gtk/hostlist_tcpip.c
ui/gtk/hostlist_wlan.c
ui/gtk/iax2_analysis.c
ui/gtk/io_stat.c
ui/gtk/ldap_stat.c
ui/gtk/mac_lte_stat_dlg.c
ui/gtk/main.c
ui/gtk/mcast_stream_dlg.c
ui/gtk/megaco_stat.c
ui/gtk/mgcp_stat.c
ui/gtk/mtp3_stat.c
ui/gtk/mtp3_summary.c
ui/gtk/ncp_stat.c
ui/gtk/radius_stat.c
ui/gtk/rlc_lte_stat_dlg.c
ui/gtk/rpc_progs.c
ui/gtk/rpc_stat.c
ui/gtk/rtp_analysis.c
ui/gtk/rtp_stream_dlg.c
ui/gtk/scsi_stat.c
ui/gtk/sctp_chunk_stat.c
ui/gtk/smb2_stat.c
ui/gtk/smb_stat.c
ui/gtk/stats_tree_stat.c
ui/gtk/summary_dlg.c
ui/gtk/voip_calls_dlg.c
ui/gtk/wlan_stat_dlg.c
ui/gtk/wsp_stat.c
ui/qt/main_window_slots.cpp
ui/qt/qtshark_de.ts
ui/qt/qtshark_en.qm
ui/qt/qtshark_en.ts
ui/qt/qtshark_fr.qm
ui/qt/qtshark_fr.ts
ui/qt/qtshark_zh_CN.qm
ui/qt/qtshark_zh_CN.ts
ui/qt/simple_dialog_qt.cpp
ui/qt/simple_dialog_qt.h
ui/tap_export_pdu.c [new file with mode: 0644]
ui/tap_export_pdu.h [new file with mode: 0644]
ui/win32/console_win32.c
update.c [deleted file]
wiretap/5views.c
wiretap/btsnoop.c
wiretap/commview.c
wiretap/erf.c
wiretap/eyesdn.c
wiretap/k12.c
wiretap/k12text.l
wiretap/lanalyzer.c
wiretap/libpcap.c
wiretap/netmon.c
wiretap/nettl.c
wiretap/network_instruments.c
wiretap/netxray.c
wiretap/ngsniffer.c
wiretap/pcapng.c
wiretap/snoop.c
wiretap/visual.c
wiretap/wtap.c
wiretap/wtap.h

index 7f8a7c53946fc0c762b4b89065df3304c1b7462b..557ffbe181a2b97466c19de0f61c735e5c7defde 100644 (file)
@@ -58,6 +58,7 @@ wireshark-tap-register-cache.pkl
 aclocal.m4
 autom4te.cache
 capinfos
+captype
 compile
 config.h
 config.h.in
@@ -81,6 +82,7 @@ reordercap
 reassemble_test
 stamp-h1
 text2pcap
+tfshark
 tshark
 tvbtest
 wireshark
diff --git a/AUTHORS b/AUTHORS
index a237b5b88c51420e95018db9ca836cec3cf8156c..e6d04a32029861902bbff4abd6c91401fb192ddc 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -3801,6 +3801,7 @@ Zeljko Ancimer            <zancimer[AT]gmail.com>
 Deon van der Westhuysen <deonvdw[AT]gmail.com>
 Ibrahim Can Yuce       <canyuce[AT]gmail.com>
 Robert Jongbloed       <robertj[AT]voxlucida.com.au>
+Pavel Moravec          <pmoravec[AT]redhat.com>
 
 Dan Lasley <dlasley[AT]promus.com> gave permission for his
 dumpit() hex-dump routine to be used.
index 5a600d9dc48284a6f92beed419befcd79d8cf439..f6dc55cb89586fbbbd621c5731a7c1d53713d189 100644 (file)
@@ -137,8 +137,17 @@ if(NOT LIBRARY_OUTPUT_PATH)
                   "Single output directory for building all libraries.")
 endif()
 
-
-include(CMakeOptions.txt)
+include( CMakeOptions.txt )
+if( DUMPCAP_INSTALL_OPTION STREQUAL "suid" )
+       set( DUMPCAP_SETUID "SETUID" )
+else()
+       set( DUMPCAP_SETUID )
+endif()
+if( NOT CMAKE_SYSTEM_NAME STREQUAL "Linux" AND
+       DUMPCAP_INSTALL_OPTION STREQUAL "capabilities" )
+       message( WARNING "Capabilities are only supported on Linux" )
+       set( DUMPCAP_INSTALL_OPTION )
+endif()
 
 if( CMAKE_C_COMPILER_ID MATCHES "MSVC")
        if (MSVC10)
@@ -192,7 +201,6 @@ else()
                -Wformat-security
                -Wvla
                -Waddress
-               -Warray-bounds
                -Wattributes
                -Wdiv-by-zero
                -Wignored-qualifiers
@@ -493,7 +501,7 @@ endif()
 
 # Capabilities
 if(ENABLE_CAP)
-       set(PACKAGELIST ${PACKAGELIST} CAP)
+       set(PACKAGELIST ${PACKAGELIST} CAP SETCAP)
 endif()
 
 if(ENABLE_PYTHON)
@@ -1257,7 +1265,27 @@ if(BUILD_dumpcap AND PCAP_FOUND)
        set_target_properties(dumpcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
        set_target_properties(dumpcap PROPERTIES FOLDER "Executables")
        target_link_libraries(dumpcap ${dumpcap_LIBS})
-       install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+       install(TARGETS dumpcap
+                       RUNTIME
+                       DESTINATION ${CMAKE_INSTALL_BINDIR}
+                       PERMISSIONS ${DUMPCAP_SETUID}
+                               OWNER_READ OWNER_WRITE OWNER_EXECUTE
+                               GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+       )
+       if(DUMPCAP_INSTALL_OPTION STREQUAL "capabilities")
+               install( CODE "execute_process(
+                       COMMAND
+                               ${SETCAP_EXECUTABLE}
+                               cap_net_raw,cap_net_admin+ep
+                               ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/dumpcap${CMAKE_EXECUTABLE_SUFFIX}
+                       RESULT_VARIABLE
+                               _SETCAP_RESULT
+                       )
+                       if( _SETCAP_RESULT )
+                               message( WARNING \"setcap failed (${_SETCAP_RESULT}).\")
+                       endif()"
+               )
+       endif()
 endif()
 
 ADD_CUSTOM_COMMAND(
index e1ddb9302a4d53ce6a93f279e0537a200c5241c2..c3d167eda908393068d7c8e5faf5f24a91714bfb 100644 (file)
@@ -56,3 +56,8 @@ option(ENABLE_CARES      "Build with c-ares support" ON)
 option(ENABLE_NETLINK    "Build with libnl support" ON)
 # todo Mostly hardcoded
 option(ENABLE_KERBEROS   "Build with Kerberos support" ON)
+# How to install
+set(DUMPCAP_INSTALL_OPTION   "normal" CACHE STRING "Permissions to install")
+set(DUMPCAP_INST_VALS "normal" "suid" "capabilities")
+set_property(CACHE DUMPCAP_INSTALL_OPTION PROPERTY STRINGS ${DUMPCAP_INST_VALS})
+
index c7f743df22c41958273cbe55463b21a758e9115f..99ce77398114377965f4e023cccaa4c616e6934a 100644 (file)
@@ -1237,7 +1237,7 @@ install-generated-files: doc
 install-all: install-generated-files
        set copycmd=/y
        if not exist $(INSTALL_DIR) mkdir $(INSTALL_DIR)
-!IF "$(GTK_INST_VERSION)" == "3.4"
+!IF "$(GTK_INST_VERSION)" == "3.4" || "$(GTK_INST_VERSION)" == "3.6"
        xcopy $(GTK_DIR)\bin\libgdk-3-0.dll $(INSTALL_DIR) /d
        xcopy $(GTK_DIR)\bin\libgtk-3-0.dll $(INSTALL_DIR) /d
 !ELSE
@@ -1254,7 +1254,7 @@ install-all: install-generated-files
        xcopy $(GTK_DIR)\$(GTK_ETC_DIR)\*.* $(INSTALL_DIR)\$(GTK_ETC_DIR) /d
 #      if not exist $(INSTALL_DIR)\etc\pango mkdir $(INSTALL_DIR)\etc\pango
 #      xcopy $(GTK_DIR)\etc\pango\pango.* $(INSTALL_DIR)\etc\pango /d
-!IF "$(GTK_INST_VERSION)" == "3.4"
+!IF "$(GTK_INST_VERSION)" == "3.4" || "$(GTK_INST_VERSION)" == "3.6"
        if not exist $(INSTALL_DIR)\lib\gtk-3.0 mkdir $(INSTALL_DIR)\lib\gtk-3.0
        if not exist $(INSTALL_DIR)\lib\gtk-3.0\$(GTK_LIB_DIR) mkdir $(INSTALL_DIR)\lib\gtk-3.0\$(GTK_LIB_DIR)
        xcopy ".\ui\win32\settings.ini" $(INSTALL_DIR)\$(GTK_ETC_DIR) /d
@@ -1376,7 +1376,7 @@ install-all: install-generated-files
 !ENDIF
        cd $(INSTALL_DIR)
        peflags --dynamicbase=true --nxcompat=true *.dll
-!IF "$(GTK_INST_VERSION)" == "3.4"
+!IF "$(GTK_INST_VERSION)" == "3.4" || "$(GTK_INST_VERSION)" == "3.6"
 !ELSE
        peflags --dynamicbase=true --nxcompat=true lib/gtk-2.0/*/engines/*.dll
        peflags --dynamicbase=true --nxcompat=true lib/gtk-2.0/modules/*.dll
index 571b6e8b7e7a8dce0a42167a8829ab71d5fdc4a9..24eb8af04e9849dd736427eb6b4a651647b8ec08 100644 (file)
@@ -66,7 +66,7 @@ How to do out of tree build (Win32/64):
 1d) In case you want to use Visual Studio, make sure that the paths
     to python and cygwin are available to GUI applications.
 2) Install cmake
-2a) Build the zblib library, e.g.
+2a) Build the zlib library, e.g.
     cd %WIRESHARK_BASE_DIR%\wireshark-%WIRESHARK_TARGET_PLATFORM%-libs\zlib125
     cmake -G "NMake Makefiles" . # msbuild will not do because of configuration path
     cmake --build .
index ef92a7d925a5729e4823724fe306c65a74dd22b4..3d411c1882345d8fb376ade7a2cbbe2bb5302bbd 100644 (file)
@@ -702,7 +702,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
                 return;
             offset++;
             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
-            proto_item_append_text(actx->created_item, " - %s", tvb_get_string(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset)));
+            proto_item_append_text(actx->created_item, " - %s", tvb_get_string_enc(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset),ENC_ASCII|ENC_NA));
             break;
         case 3:
             /* Octet string */
@@ -735,7 +735,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
         case 2:
             /* IA5 Coding */
             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
-            proto_item_append_text(actx->created_item, " - %s", tvb_get_string(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset)));
+            proto_item_append_text(actx->created_item, " - %s", tvb_get_string_enc(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset),ENC_ASCII|ENC_NA));
             break;
         case 3:
             /* Octet string */
index af843d17037d73b0862ef9d744393f90cf79f5c7..b2c81b09f433c17d5a96b012861b7afb55d0e093 100644 (file)
@@ -153,8 +153,8 @@ RevocationInfoChoice/other          otherRIC
   old_offset = get_ber_identifier(tvb, old_offset, NULL, NULL, NULL);
   old_offset = get_ber_length(tvb, old_offset, NULL, NULL);
 
-  if(content_tvb && actx->external.direct_reference)
-    cms_verify_msg_digest(pi, content_tvb, actx->external.direct_reference, tvb, old_offset);
+  if(content_tvb)
+    cms_verify_msg_digest(pi, content_tvb, x509af_get_last_algorithm_id(), tvb, old_offset);
 
 #.FN_PARS SMIMECapability/capability
   FN_VARIANT = _str  HF_INDEX = hf_cms_attrType  VAL_PTR = &object_identifier_id
index bae3d07cb3ae7512bfd1e1d7882ef7e65489d5af..0c28d44d6def3880408e9a519449a31d91d4a3ba 100644 (file)
@@ -1,5 +1,6 @@
 /* packet-ess.c
- * Routines for RFC5035 Extended Security Services packet dissection
+ * Routines for RFC 2634 and RFC 5035 Extended Security Services packet
+ * dissection
  *   Ronnie Sahlberg 2004
  *   Stig Bjorlykke 2010
  *
@@ -123,7 +124,7 @@ ess_dissect_attribute_flags (tvbuff_t *tvb, asn1_ctx_t *actx)
   guint i;
 
   tree = proto_item_add_subtree (actx->created_item, ett_Category_attributes);
-  value = tvb_get_string (wmem_packet_scope(), tvb, 0, tvb_length (tvb));
+  value = (guint8 *)tvb_memdup (wmem_packet_scope(), tvb, 0, tvb_length (tvb));
 
   for (i = 0; i < num_ess_category_attributes; i++) {
     ess_category_attributes_t *u = &(ess_category_attributes[i]);
index 4d96d478923a412e820b6aed3bd340fb8992e087..99b06a42c7c53c222bf89309aa124d61f6f61369 100644 (file)
@@ -88,7 +88,7 @@ GPRSRecord
                        tvb_get_guint8(parameter_tvb,3),                        /* Hour */
                        tvb_get_guint8(parameter_tvb,4),                        /* Minute */
                        tvb_get_guint8(parameter_tvb,5),                        /* Second */
-                       tvb_get_string(wmem_packet_scope(), parameter_tvb,6,1), /* Sign */
+                       tvb_get_string_enc(wmem_packet_scope(), parameter_tvb,6,1,ENC_ASCII|ENC_NA), /* Sign */
                        tvb_get_guint8(parameter_tvb,7),                        /* Hour */
                        tvb_get_guint8(parameter_tvb,8)                         /* Minute */
                        );
index f69671823c5619640a1453b1e41dd84a2390d356..92d3af09cbb21da3f4cc68fcd2558335a420db8c 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
 --17.3.3       ASN.1 Module for application-context-names
 --The following ASN.1 module summarises the application-context-name assigned to MAP application-contexts.
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 
 MAP-ApplicationContexts {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ApplicationContexts (2) version13 (13)}
+   gsm-Network (1) modules (3) map-ApplicationContexts (2) version15 (15)}
 
 DEFINITIONS
 
@@ -203,3 +203,4 @@ vcsgLocationCancellationContext-v3  OBJECT IDENTIFIER ::=
 
 
 END
+
index 04c31b35814f264b6f187cd7911c009a743c314b..845b6d4c0eff46bface5a718406ea1add3db61d5 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 -- 17.7.10     Bearer Service Codes
  
 MAP-BS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-BS-Code (20) version13 (13)}
+   gsm-Network (1) modules (3) map-BS-Code (20) version15 (15)}
 
 DEFINITIONS
 
index 703da6b24d8576c2e6dfb3f967eac2e37e413d89..27539014340e78a64e4172b0967ce8e463ee38d0 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 -- 17.7.3      Call handling data types
  
 MAP-CH-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CH-DataTypes (13) version13 (13)}
+   gsm-Network (1) modules (3) map-CH-DataTypes (13) version15 (15)}
 
 DEFINITIONS
 
@@ -36,10 +36,10 @@ EXPORTS
 IST-CommandRes,
 UU-Data,
 ReleaseResourcesArg,
--- WS added exports needed by gsm_map.asn (extra asn1 file to handle older proto. ver.)
+ReleaseResourcesRes,
+--- WS added exports needed by gsm_map.asn (extra asn1 file to handle older proto. ver.)
 RoutingInfo,
-CUG-CheckInfo,
-ReleaseResourcesRes
+CUG-CheckInfo
 ;
 
 IMPORTS
@@ -58,14 +58,14 @@ IMPORTS
        PagingArea
 FROM MAP-MS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)}
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)}
 
        ForwardingOptions,
        SS-List,
        CCBS-Feature
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
        ISDN-AddressString,
        ISDN-SubaddressString,
@@ -77,15 +77,16 @@ FROM MAP-SS-DataTypes {
        Ext-BasicServiceCode,
        AlertingPattern,
        NAEA-PreferredCI,
-       EMLPP-Priority
+       EMLPP-Priority,
+       PLMN-Id
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 ;
 
 
@@ -260,7 +261,8 @@ ProvideRoamingNumberArg ::= SEQUENCE {
        pagingArea      [22] PagingArea OPTIONAL,
        callPriority    [23]    EMLPP-Priority  OPTIONAL,
        mtrf-Indicator  [24] NULL               OPTIONAL,
-       oldMSC-Number   [25] ISDN-AddressString OPTIONAL
+       oldMSC-Number   [25] ISDN-AddressString OPTIONAL,
+       lastUsedLtePLMN-Id      [26] PLMN-Id    OPTIONAL
         }
 
 ProvideRoamingNumberRes ::= SEQUENCE {
index bc4a5d7105c4bd2231e3c2bba3b146b7f9bc5365..eaae7837fe21af80b4f925c930656c797729e158 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 --17.6.3       Call Handling Operations
 MAP-CallHandlingOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-CallHandlingOperations (7)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -53,7 +53,7 @@ joint-iso-itu-t remote-operations(4)
 
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
        SendRoutingInfoArg,
        SendRoutingInfoRes,
        ProvideRoamingNumberArg,
@@ -74,7 +74,7 @@ FROM MAP-Errors {
        ReleaseResourcesRes
 FROM MAP-CH-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CH-DataTypes (13) version13 (13)}
+   gsm-Network (1) modules (3) map-CH-DataTypes (13) version15 (15)}
 
 ;
 
index 50141cfcf8cedaf15c6c671854ccc1acbf832b4e..6e6107b4e08db8080eb008e8392c7a304c53ff13 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 -- 17.7.8      Common data types
 
 MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
 DEFINITIONS
 
@@ -22,8 +22,8 @@ EXPORTS
        maxISDN-AddressLength,
        FTN-AddressString,
        ISDN-SubaddressString,
-       ExternalSignalInfo,
-       Ext-ExternalSignalInfo,
+       ExternalSignalInfo, 
+       Ext-ExternalSignalInfo, 
 AccessNetworkSignalInfo,
        SignalInfo,
        maxSignalInfoLength,
@@ -31,10 +31,11 @@ AccessNetworkSignalInfo,
        TBCD-STRING,
        DiameterIdentity,
        Time,
+       HLR-Id,
 
        -- data types for numbering and identification
        IMSI,
-       TMSI,
+       TMSI, 
        Identity,
        SubscriberId,
        IMEI,
@@ -43,8 +44,8 @@ AccessNetworkSignalInfo,
        GlobalCellId,
        NetworkResource,
        AdditionalNetworkResource,
-       NAEA-PreferredCI,
-       NAEA-CIC,
+       NAEA-PreferredCI, 
+       NAEA-CIC, 
        ASCI-CallReference,
        SubscriberIdentity,
        PLMN-Id,
@@ -54,7 +55,7 @@ AccessNetworkSignalInfo,
        NetworkNodeDiameterAddress,
 
        -- data types for CAMEL
-       CellGlobalIdOrServiceAreaIdOrLAI,
+       CellGlobalIdOrServiceAreaIdOrLAI, 
        CellGlobalIdOrServiceAreaIdFixedLength,
        LAIFixedLength,
 
@@ -62,7 +63,7 @@ AccessNetworkSignalInfo,
        BasicServiceCode,
        Ext-BasicServiceCode,
        EMLPP-Info,
-       EMLPP-Priority,
+       EMLPP-Priority, 
        MC-SS-Info,
        MaxMC-Bearers,
        MC-Bearers,
@@ -73,9 +74,8 @@ AccessNetworkSignalInfo,
        LCSClientExternalID,
        LCSClientInternalID,
        LCSServiceTypeID,
-       -- WS added exports needed by gsm_map.asn (extra asn1 file to handle older prot. ver.)
+-- WS added exports needed by gsm_map.asn (extra asn1 file to handle older prot. ver.)
        ProtocolId,
-
        -- gprs location registration types
        GSN-Address
 
@@ -86,23 +86,23 @@ IMPORTS
        Ext-TeleserviceCode
 FROM MAP-TS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-TS-Code (19) version13 (13)}
+   gsm-Network (1) modules (3) map-TS-Code (19) version15 (15)}
 
        BearerServiceCode,
        Ext-BearerServiceCode
 FROM MAP-BS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-BS-Code (20) version13 (13)}
+   gsm-Network (1) modules (3) map-BS-Code (20) version15 (15)}
 
        SS-Code
 FROM MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 ;
 
 
@@ -118,7 +118,7 @@ TBCD-STRING ::= OCTET STRING
        -- bits 8765 of octet n encoding digit 2n
        -- bits 4321 of octet n encoding digit 2(n-1) +1
 
-DiameterIdentity ::= OCTET STRING (SIZE(9..55))
+DiameterIdentity ::= OCTET STRING (SIZE(9..255))
 -- content of DiameterIdentity is defined in IETF RFC 3588 [139]
 
 AddressString ::= OCTET STRING (SIZE (1..maxAddressLength))
@@ -164,21 +164,21 @@ AddressString ::= OCTET STRING (SIZE (1..maxAddressLength))
 
 maxAddressLength  INTEGER ::= 20
 
-ISDN-AddressString ::=
+ISDN-AddressString ::= 
                        AddressString (SIZE (1..maxISDN-AddressLength))
        -- This type is used to represent ISDN numbers.
 
 maxISDN-AddressLength  INTEGER ::= 9
 
-FTN-AddressString ::=
+FTN-AddressString ::= 
                        AddressString (SIZE (1..maxFTN-AddressLength))
-       -- This type is used to represent forwarded-to numbers.
+       -- This type is used to represent forwarded-to numbers. 
        -- If NAI = international the first digits represent the country code (CC)
        -- and the network destination code (NDC) as for E.164.
 
 maxFTN-AddressLength  INTEGER ::= 15
 
-ISDN-SubaddressString ::=
+ISDN-SubaddressString ::= 
                        OCTET STRING (SIZE (1..maxISDN-SubaddressLength))
        -- This type is used to represent ISDN subaddresses.
        -- It is composed of
@@ -254,18 +254,18 @@ Ext-ExternalSignalInfo ::= SEQUENCE {
 
 Ext-ProtocolId ::= ENUMERATED {
        ets-300356  (1),
-       ...
+       ... 
         }
 -- exception handling:
 -- For Ext-ExternalSignalInfo sequences containing this parameter with any
--- other value than the ones listed the receiver shall ignore the whole
+-- other value than the ones listed the receiver shall ignore the whole 
 -- Ext-ExternalSignalInfo sequence.
 
 AccessNetworkSignalInfo ::= SEQUENCE {
        accessNetworkProtocolId AccessNetworkProtocolId,
        signalInfo      LongSignalInfo,
        -- Information about the internal structure is given in clause 7.6.9.1
-
+       
        extensionContainer      ExtensionContainer      OPTIONAL,
        ...}
 
@@ -284,7 +284,7 @@ AccessNetworkProtocolId ::= ENUMERATED {
        ...}
        -- exception handling:
        -- For AccessNetworkSignalInfo sequences containing this parameter with any
-       -- other value than the ones listed the receiver shall ignore the whole
+       -- other value than the ones listed the receiver shall ignore the whole 
        -- AccessNetworkSignalInfo sequence.
 
 AlertingPattern ::= OCTET STRING (SIZE (1) )
@@ -305,7 +305,7 @@ alertingLevel-1   AlertingPattern ::= '00000001'B
 alertingLevel-2   AlertingPattern ::= '00000010'B
        -- all other values of Alerting level are reserved
        -- Alerting Levels are defined in GSM 02.07
-
+       
 alertingCategory-1   AlertingPattern ::= '00000100'B
 alertingCategory-2   AlertingPattern ::= '00000101'B
 alertingCategory-3   AlertingPattern ::= '00000110'B
@@ -408,9 +408,9 @@ NAEA-PreferredCI ::= SEQUENCE {
 
 NAEA-CIC ::= OCTET STRING (SIZE (3))
        -- The internal structure is defined by the Carrier Identification
-       -- parameter in ANSI T1.113.3. Carrier codes between "000" and "999" may
-       -- be encoded as 3 digits using "000" to "999" or as 4 digits using
-       -- "0000" to "0999". Carrier codes between "1000" and "9999" are encoded
+       -- parameter in ANSI T1.113.3. Carrier codes between \93000\94 and \93999\94 may
+       -- be encoded as 3 digits using \93000\94 to \93999\94 or as 4 digits using 
+       -- \930000\94 to \930999\94. Carrier codes between \931000\94 and \939999\94 are encoded
        -- using 4 digits.
 
 SubscriberIdentity ::= CHOICE {
@@ -449,7 +449,7 @@ navigation                  LCSServiceTypeID ::= 8
        --this service type is reserved for use in previous releases
 citySightseeing                LCSServiceTypeID ::= 9
 localizedAdvertising           LCSServiceTypeID ::= 10
-mobileYellowPages              LCSServiceTypeID ::= 11
+mobileYellowPages              LCSServiceTypeID ::= 11 
 trafficAndPublicTransportationInfo             LCSServiceTypeID ::= 12
 weather                                LCSServiceTypeID ::= 13
 assetAndServiceFinding         LCSServiceTypeID ::= 14
@@ -571,8 +571,8 @@ CellGlobalIdOrServiceAreaIdFixedLength ::= OCTET STRING (SIZE (7))
        -- octet 3 bits 4321    Mobile Network Code 1st digit
        --         bits 8765    Mobile Network Code 2nd digit
        -- octets 4 and 5       Location Area Code according to 3GPP TS 24.008
-       -- octets 6 and 7       Cell Identity (CI) value or
-       --                      Service Area Code (SAC) value
+       -- octets 6 and 7       Cell Identity (CI) value or 
+       --                      Service Area Code (SAC) value 
        --                      according to 3GPP TS 23.003
 
 LAIFixedLength ::= OCTET STRING (SIZE (5))
@@ -658,9 +658,9 @@ AgeOfLocationInformation ::= INTEGER (0..32767)
 -- the value represents the elapsed time in minutes since the last
 -- network contact of the mobile station (i.e. the actuality of the
 -- location information).
--- value "0" indicates that the MS is currently in contact with the
+-- value \930\94 indicates that the MS is currently in contact with the
 --           network
--- value "32767" indicates that the location information is at least
+-- value \9332767\94 indicates that the location information is at least
 --               32767 minutes old
 
 END
index 21375adc02963e8dded1b9c60d4b0cd963f8f476..044957100a80922f12b17b21e159c0590899c0ba 100644 (file)
@@ -1,9 +1,9 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 -- 17.4        MAP Dialogue Information
 MAP-DialogueInformation {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-DialogueInformation (3) version13 (13)}
+   gsm-Network (1) modules (3) map-DialogueInformation (3) version15 (15)}
 
 DEFINITIONS
 
@@ -29,12 +29,12 @@ FROM MobileDomainDefinitions {
        AddressString
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network(1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network(1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
 
 ;
index ed1c3060823c2446dbb6bff09f4fe1e7e2f26160..c7d9b28341fe915b4f776e6d0c9f4a145a901169 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS V11.5.0 (2012-12) 
+-- 3GPP TS V12.3.0 (2013-12) 
 -- 17.7.7      Error data types
 
 MAP-ER-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ER-DataTypes (17) version13 (13)}
+   gsm-Network (1) modules (3) map-ER-DataTypes (17) version15 (15)}
 
 DEFINITIONS
 
@@ -72,7 +72,7 @@ IMPORTS
        SS-Status
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
        SignalInfo,
        BasicServiceCode,
@@ -81,18 +81,18 @@ FROM MAP-SS-DataTypes {
        IMSI
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
 
        SS-Code
 FROM MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 ;
 
 RoamingNotAllowedParam ::= SEQUENCE {
@@ -429,4 +429,5 @@ OngoingGroupCallParam ::= SEQUENCE {
        extensionContainer      ExtensionContainer      OPTIONAL,
        ...}
 
+
 END
index 642ef321e554f959863d86895254368c5f6416dc..90d8837e0cbb0b34e730ca490e9ce269d54c81f7 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)  
+-- 3GPP TS 29.002 V12.3.0 (2013-12)  
 -- 17.6.6      Errors
  
 MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
 DEFINITIONS
 
@@ -107,7 +107,7 @@ FROM Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4)
        SS-Status
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
        SS-IncompatibilityCause,
        PW-RegistrationFailureCause,
@@ -158,7 +158,7 @@ TargetCellOutsideGCA-Param,
 OngoingGroupCallParam
 FROM MAP-ER-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ER-DataTypes (17) version13 (13)}
+   gsm-Network (1) modules (3) map-ER-DataTypes (17) version15 (15)}
 ;
 
 -- generic errors
index 4744e7816eb801f49787c1cb74f97af738202d8e..49010ae148bc63f0d54b48182c1f5a1d31160f02 100644 (file)
@@ -1,14 +1,14 @@
 -- $Id$
 -- MAP-ExtensionDataTypes.asn
 --
--- Taken from 3GPP TS 29.002 V11.5.0 (2012-12)
+-- Taken from 3GPP TS 29.002 V12.3.0 (2013-12) 
 --
 -- 17.7.11 Extension data types
 --
 
 MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
 DEFINITIONS
 
index 067fd8cbcc437a1ae754ffcbf3fda524f33f8ecb..a0d8db5a7db358eedb7f0e8a31af1729bffffce9 100644 (file)
@@ -6,7 +6,7 @@
  
 MAP-GR-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-GR-DataTypes (23) version13 (13)}
+   gsm-Network (1) modules (3) map-GR-DataTypes (23) version15 (15)}
 
 DEFINITIONS
 
@@ -38,12 +38,12 @@ IMPORTS
        AccessNetworkSignalInfo
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        Ext-TeleserviceCode
 FROM MAP-TS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-TS-Code (19) version13 (13)}
+   gsm-Network (1) modules (3) map-TS-Code (19) version15 (15)}
 
        Kc,
        AdditionalInfo,
@@ -53,12 +53,12 @@ Long-GroupId,
        Cksn
 FROM MAP-MS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)}
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 ;
 
 
index 99f7c3dc7507ecbc46e39e6508e6941df6fef8af..faf3d64f2627fa8738a9b44139c0adac9895bdb3 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)  
+-- 3GPP TS 29.002 V12.3.0 (2013-12)  
 -- 17.6.7      Group Call operations
  
 MAP-Group-Call-Operations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-Group-Call-Operations (22)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -36,7 +36,7 @@ joint-iso-itu-t remote-operations(4)
        dataMissing
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        PrepareGroupCallArg,
        PrepareGroupCallRes,
@@ -48,7 +48,7 @@ FROM MAP-Errors {
        SendGroupCallInfoRes
 FROM MAP-GR-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-GR-DataTypes (23) version13 (13)}
+   gsm-Network (1) modules (3) map-GR-DataTypes (23) version15 (15)}
 
 ;
 
index 79046df5fe842593c20080ea29810101386cc6ae..b0500dc0e7bc00f37709fc10111bd830012a85d3 100644 (file)
@@ -1,14 +1,14 @@
 -- $Id$
 -- MAP-LCS-DataTypes.asn
 --
--- Taken from 3GPP TS 29.002  V11.5.0 (2012-12)
+-- Taken from 3GPP TS 29.002  V12.3.0 (2013-12) 
 --
 -- 17.7.13 Location service data types
 --
 
 MAP-LCS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version13 (13)}
+   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version15 (15)}
 
 DEFINITIONS
 IMPLICIT TAGS
@@ -22,17 +22,17 @@ EXPORTS
        ProvideSubscriberLocation-Res,
        SubscriberLocationReport-Arg,
        SubscriberLocationReport-Res,
-LocationType,
+LocationType, 
 DeferredLocationEventType,
 LCSClientName,
 LCS-QoS,
 Horizontal-Accuracy,
 ResponseTime,
-Ext-GeographicalInformation,
+Ext-GeographicalInformation, 
 VelocityEstimate,
 SupportedGADShapes,
 Add-GeographicalInformation,
-LCSRequestorID,
+LCSRequestorID, 
 LCS-ReferenceNumber,
 LCSCodeword,
 AreaEventInfo,
@@ -60,30 +60,30 @@ PLMN-Id,
        DiameterIdentity
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer,
        SLR-ArgExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
        USSD-DataCodingScheme,
 USSD-String
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
-   map-SS-DataTypes (14) version13 (13)}
+   map-SS-DataTypes (14) version15 (15)}
 
        APN,
        SupportedLCS-CapabilitySets
 FROM MAP-MS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)}
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)}
 
        Additional-Number
 FROM MAP-SM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SM-DataTypes (16) version13 (13)}
+   gsm-Network (1) modules (3) map-SM-DataTypes (16) version15 (15)}
 ;
 
 
@@ -115,7 +115,9 @@ LCSLocationInfo ::= SEQUENCE {
        supportedLCS-CapabilitySets     [4]     SupportedLCS-CapabilitySets     OPTIONAL,
        additional-LCS-CapabilitySets   [5]     SupportedLCS-CapabilitySets     OPTIONAL,
        mme-Name                [6]     DiameterIdentity        OPTIONAL,
-       aaa-Server-Name [8]     DiameterIdentity        OPTIONAL
+       aaa-Server-Name [8]     DiameterIdentity        OPTIONAL,
+       sgsn-Name               [9]     DiameterIdentity        OPTIONAL,
+       sgsn-Realm      [10]    DiameterIdentity        OPTIONAL
        }
 
 ProvideSubscriberLocation-Arg ::= SEQUENCE {
@@ -143,7 +145,7 @@ ProvideSubscriberLocation-Arg ::= SEQUENCE {
        reportingPLMNList       [18] ReportingPLMNList  OPTIONAL }
 
        -- one of imsi or msisdn is mandatory
-       -- If a location estimate type indicates activate deferred location or cancel deferred
+       -- If a location estimate type indicates activate deferred location or cancel deferred 
        -- location, a lcs-Reference number shall be included.
 
 LocationType ::= SEQUENCE {
@@ -168,12 +170,12 @@ DeferredLocationEventType ::= BIT STRING {
        enteringIntoArea        (1),
        leavingFromArea (2),
        beingInsideArea (3) ,
-       periodicLDR     (4)  } (SIZE (1..16))
+       periodicLDR     (4)  } (SIZE (1..16)) 
 -- beingInsideArea is always treated as oneTimeEvent regardless of the possible value
 -- of occurrenceInfo inside areaEventInfo.
 -- exception handling:
--- a ProvideSubscriberLocation-Arg containing other values than listed above in
--- DeferredLocationEventType shall be rejected by the receiver with a return error cause of
+-- a ProvideSubscriberLocation-Arg containing other values than listed above in 
+-- DeferredLocationEventType shall be rejected by the receiver with a return error cause of 
 -- unexpected data value.
 
 LCS-ClientID ::= SEQUENCE {
@@ -195,7 +197,7 @@ LCSClientType ::= ENUMERATED {
        --      exception handling:
        --      unrecognized values may be ignored if the LCS client uses the privacy override
        --      otherwise, an unrecognized value shall be treated as unexpected data by a receiver
-       --      a return error shall then be returned if received in a MAP invoke
+       --      a return error shall then be returned if received in a MAP invoke 
 
 LCSClientName ::= SEQUENCE {
        dataCodingScheme        [0] USSD-DataCodingScheme,
@@ -233,7 +235,7 @@ LCS-FormatIndicator ::= ENUMERATED {
 LCS-Priority ::= OCTET STRING (SIZE (1))
        -- 0 = highest priority
        -- 1 = normal priority
-       -- all other values treated as 1
+       -- all other values treated as 1 
 
 LCS-QoS ::= SEQUENCE {
        horizontal-accuracy     [0] Horizontal-Accuracy OPTIONAL,
@@ -246,14 +248,14 @@ LCS-QoS ::= SEQUENCE {
 
 Horizontal-Accuracy ::= OCTET STRING (SIZE (1))
        -- bit 8 = 0
-       -- bits 7-1 = 7 bit Uncertainty Code defined in 3GPP TS 23.032. The horizontal location
+       -- bits 7-1 = 7 bit Uncertainty Code defined in 3GPP TS 23.032. The horizontal location 
        -- error should be less than the error indicated by the uncertainty code with 67%
        -- confidence.
 
 Vertical-Accuracy ::= OCTET STRING (SIZE (1))
        -- bit 8 = 0
-       -- bits 7-1 = 7 bit Vertical Uncertainty Code defined in 3GPP TS 23.032.
-       -- The vertical location error should be less than the error indicated
+       -- bits 7-1 = 7 bit Vertical Uncertainty Code defined in 3GPP TS 23.032. 
+       -- The vertical location error should be less than the error indicated 
        -- by the uncertainty code with 67% confidence.
 
 ResponseTime ::= SEQUENCE {
@@ -439,18 +441,18 @@ Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInform
        --              (d) Ellipsoid Arc
        --              (e) Ellipsoid Point
        -- Any other value in octet 1 shall be treated as invalid
-       -- Octets 2 to 8 for case (a) - Ellipsoid point with uncertainty circle
+       -- Octets 2 to 8 for case (a) \96 Ellipsoid point with uncertainty circle
        --              Degrees of Latitude                             3 octets
        --              Degrees of Longitude                            3 octets
        --              Uncertainty code                                1 octet
-       -- Octets 2 to 11 for case (b) - Ellipsoid point with uncertainty ellipse:
+       -- Octets 2 to 11 for case (b) \96 Ellipsoid point with uncertainty ellipse:
        --              Degrees of Latitude                             3 octets
        --              Degrees of Longitude                            3 octets
        --              Uncertainty semi-major axis                             1 octet
        --              Uncertainty semi-minor axis                             1 octet
        --              Angle of major axis                             1 octet
        --              Confidence                              1 octet
-       -- Octets 2 to 14 for case (c) - Ellipsoid point with altitude and uncertainty ellipsoid
+       -- Octets 2 to 14 for case (c) \96 Ellipsoid point with altitude and uncertainty ellipsoid
        --              Degrees of Latitude                             3 octets
        --              Degrees of Longitude                            3 octets
        --              Altitude                                2 octets
@@ -459,7 +461,7 @@ Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInform
        --              Angle of major axis                             1 octet
        --              Uncertainty altitude                            1 octet
        --              Confidence                              1 octet
-       -- Octets 2 to 13 for case (d) - Ellipsoid Arc
+       -- Octets 2 to 13 for case (d) \96 Ellipsoid Arc
        --              Degrees of Latitude                             3 octets
        --              Degrees of Longitude                            3 octets
        --              Inner radius                            2 octets
@@ -467,7 +469,7 @@ Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInform
        --              Offset angle                            1 octet
        --              Included angle                          1 octet
        --              Confidence                              1 octet
-       -- Octets 2 to 7 for case (e) - Ellipsoid Point
+       -- Octets 2 to 7 for case (e) \96 Ellipsoid Point
        --              Degrees of Latitude                             3 octets
        --              Degrees of Longitude                            3 octets
 
@@ -477,7 +479,7 @@ Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInform
        -- to 3GPP TS 23.032 shall be treated as invalid data by a receiver.
        --
        -- An Ext-GeographicalInformation parameter comprising one octet shall be discarded
-       -- by the receiver if an Add-GeographicalInformation parameter is received
+       -- by the receiver if an Add-GeographicalInformation parameter is received 
        -- in the same message.
        --
        -- An Ext-GeographicalInformation parameter comprising one octet shall be treated as
@@ -485,7 +487,7 @@ Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInform
        -- received in the same message.
 
 maxExt-GeographicalInformation  INTEGER ::= 20
-       -- the maximum length allows for further shapes in 3GPP TS 23.032 to be included in later
+       -- the maximum length allows for further shapes in 3GPP TS 23.032 to be included in later 
        -- versions of 3GPP TS 29.002
 
 VelocityEstimate ::= OCTET STRING (SIZE (4..7))
@@ -503,15 +505,15 @@ VelocityEstimate ::= OCTET STRING (SIZE (4..7))
        -- Octets 2 to 4 for case (a) Horizontal velocity:
        --              Bearing                         1 octet
        --              Horizontal Speed                                2 octets
-       -- Octets 2 to 5 for case (b) - Horizontal with Vertical Velocity:
+       -- Octets 2 to 5 for case (b) \96 Horizontal with Vertical Velocity:
        --              Bearing                         1 octet
        --              Horizontal Speed                                2 octets
        --              Vertical Speed                          1 octet
-       -- Octets 2 to 5 for case (c) - Horizontal velocity with Uncertainty:
+       -- Octets 2 to 5 for case (c) \96 Horizontal velocity with Uncertainty:
        --              Bearing                         1 octet
        --              Horizontal Speed                                2 octets
        --              Uncertainty Speed                               1 octet
-       -- Octets 2 to 7 for case (d) - Horizontal with Vertical Velocity and Uncertainty:
+       -- Octets 2 to 7 for case (d) \96 Horizontal with Vertical Velocity and Uncertainty:
        --              Bearing                         1 octet
        --              Horizontal Speed                                2 octets
        --              Vertical Speed                          1 octet
@@ -521,10 +523,10 @@ VelocityEstimate ::= OCTET STRING (SIZE (4..7))
 PositioningDataInformation ::= OCTET STRING (SIZE (2..maxPositioningDataInformation))
        -- Refers to the Positioning Data defined in 3GPP TS 49.031.
        -- This is composed of 2 or more octets with an internal structure according to
-       -- 3GPP TS 49.031.
+       -- 3GPP TS 49.031. 
 
 maxPositioningDataInformation INTEGER ::= 10
-       --
+       -- 
 
 UtranPositioningDataInfo ::= OCTET STRING (SIZE (3..maxUtranPositioningDataInfo))
        -- Refers to the Position Data defined in 3GPP TS 25.413.
@@ -532,15 +534,15 @@ UtranPositioningDataInfo ::= OCTET STRING (SIZE (3..maxUtranPositioningDataInfo)
        -- included in positionData as defined in 3GPP TS 25.413.
 
 maxUtranPositioningDataInfo INTEGER ::= 11
-       --
+       -- 
 
 GeranGANSSpositioningData ::= OCTET STRING (SIZE (2..maxGeranGANSSpositioningData))
        -- Refers to the GANSS Positioning Data defined in 3GPP TS 49.031.
        -- This is composed of 2 or more octets with an internal structure according to
-       -- 3GPP TS 49.031.
+       -- 3GPP TS 49.031. 
 
 maxGeranGANSSpositioningData INTEGER ::= 10
-       --
+       -- 
 
 UtranGANSSpositioningData ::= OCTET STRING (SIZE (1..maxUtranGANSSpositioningData))
        -- Refers to the Position Data defined in 3GPP TS 25.413.
@@ -548,24 +550,24 @@ UtranGANSSpositioningData ::= OCTET STRING (SIZE (1..maxUtranGANSSpositioningDat
      -- as defined in 3GPP TS 25.413.
 
 maxUtranGANSSpositioningData INTEGER ::= 9
-       --
+       -- 
 
 Add-GeographicalInformation ::= OCTET STRING (SIZE (1..maxAdd-GeographicalInformation))
        -- Refers to geographical Information defined in 3GPP TS 23.032.
-       -- This is composed of 1 or more octets with an internal structure according to
+       -- This is composed of 1 or more octets with an internal structure according to 
        -- 3GPP TS 23.032
        -- Octet 1: Type of shape, all the shapes defined in 3GPP TS 23.032 are allowed:
        -- Octets 2 to n (where n is the total number of octets necessary to encode the shape
        -- according to 3GPP TS 23.032) are used to encode the shape itself in accordance with the
        -- encoding defined in 3GPP TS 23.032
        --
-       -- An Add-GeographicalInformation parameter, whether valid or invalid, received
-       -- together with a valid Ext-GeographicalInformation parameter in the same message
+       -- An Add-GeographicalInformation parameter, whether valid or invalid, received 
+       -- together with a valid Ext-GeographicalInformation parameter in the same message 
        -- shall be discarded.
        --
-       -- An Add-GeographicalInformation parameter containing any shape not defined in
-       -- 3GPP TS 23.032 or an incorrect number of octets or coding according to
-       -- 3GPP TS 23.032 shall be treated as invalid data by a receiver if not received
+       -- An Add-GeographicalInformation parameter containing any shape not defined in 
+       -- 3GPP TS 23.032 or an incorrect number of octets or coding according to 
+       -- 3GPP TS 23.032 shall be treated as invalid data by a receiver if not received 
        -- together with a valid Ext-GeographicalInformation parameter in the same message.
 
 maxAdd-GeographicalInformation  INTEGER ::= 91
@@ -573,7 +575,7 @@ maxAdd-GeographicalInformation  INTEGER ::= 91
 
 SubscriberLocationReport-Arg ::= SEQUENCE {
        lcs-Event               LCS-Event,
-       lcs-ClientID    LCS-ClientID,
+       lcs-ClientID    LCS-ClientID, 
        lcsLocationInfo LCSLocationInfo,
        msisdn          [0] ISDN-AddressString  OPTIONAL,
        imsi                    [1] IMSI                OPTIONAL,
@@ -585,7 +587,7 @@ SubscriberLocationReport-Arg ::= SEQUENCE {
        slr-ArgExtensionContainer       [7] SLR-ArgExtensionContainer   OPTIONAL,
        ... ,
        add-LocationEstimate    [8] Add-GeographicalInformation OPTIONAL,
-       deferredmt-lrData       [9] Deferredmt-lrData   OPTIONAL,
+       deferredmt-lrData       [9] Deferredmt-lrData   OPTIONAL, 
        lcs-ReferenceNumber     [10] LCS-ReferenceNumber        OPTIONAL,
        geranPositioningData    [11] PositioningDataInformation OPTIONAL,
        utranPositioningData    [12] UtranPositioningDataInfo   OPTIONAL,
@@ -604,19 +606,19 @@ SubscriberLocationReport-Arg ::= SEQUENCE {
        targetServingNodeForHandover    [26] ServingNodeAddress OPTIONAL }
 
        -- one of msisdn or imsi is mandatory
-       -- a location estimate that is valid for the locationEstimate parameter should
+       -- a location estimate that is valid for the locationEstimate parameter should 
        -- be transferred in this parameter in preference to the add-LocationEstimate.
        -- the deferredmt-lrData parameter shall be included if and only if the lcs-Event
        -- indicates a deferredmt-lrResponse.
-       -- if the lcs-Event indicates a deferredmt-lrResponse then the locationEstimate
-       -- and the add-locationEstimate parameters shall not be sent if the
+       -- if the lcs-Event indicates a deferredmt-lrResponse then the locationEstimate 
+       -- and the add-locationEstimate parameters shall not be sent if the 
        -- supportedGADShapes parameter had been received in ProvideSubscriberLocation-Arg
        -- and the shape encoded in locationEstimate or add-LocationEstimate was not marked
-       -- as supported in supportedGADShapes. In such a case terminationCause
-       -- in deferredmt-lrData shall be present with value
-       -- shapeOfLocationEstimateNotSupported.
-       -- If a lcs event indicates deferred mt-lr response, the lcs-Reference number shall be
-       -- included.
+       -- as supported in supportedGADShapes. In such a case terminationCause 
+       -- in deferredmt-lrData shall be present with value 
+       -- shapeOfLocationEstimateNotSupported. 
+       -- If a lcs event indicates deferred mt-lr response, the lcs-Reference number shall be 
+       -- included. 
        -- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity.
 
 Deferredmt-lrData ::= SEQUENCE {
@@ -624,19 +626,19 @@ Deferredmt-lrData ::= SEQUENCE {
        terminationCause        [0] TerminationCause    OPTIONAL,
        lcsLocationInfo [1] LCSLocationInfo     OPTIONAL,
        ...}
-       -- lcsLocationInfo may be included only if a terminationCause is present
+       -- lcsLocationInfo may be included only if a terminationCause is present 
        -- indicating mt-lrRestart.
 
 LCS-Event ::= ENUMERATED {
        emergencyCallOrigination  (0),
-       emergencyCallRelease  (1),
+       emergencyCallRelease  (1), 
        mo-lr  (2),
        ...,
        deferredmt-lrResponse  (3) ,
        deferredmo-lrTTTPInitiation  (4),
        emergencyCallHandover (5)  }
-       --      deferredmt-lrResponse is applicable to the delivery of a location estimate
-       --      for an LDR initiated earlier by either the network (via an MT-LR activate deferred
+       --      deferredmt-lrResponse is applicable to the delivery of a location estimate 
+       --      for an LDR initiated earlier by either the network (via an MT-LR activate deferred 
        --      location) or the UE (via a deferred MO-LR TTTP initiation)
        --      exception handling:
        --      a SubscriberLocationReport-Arg containing an unrecognized LCS-Event
@@ -653,14 +655,14 @@ TerminationCause ::= ENUMERATED {
        shapeOfLocationEstimateNotSupported (6) ,
        subscriberTermination (7),
        uETermination (8),
-       networkTermination (9)  }
--- mt-lrRestart shall be used to trigger the GMLC to restart the location procedure,
--- either because the sending node knows that the terminal has moved under coverage
+       networkTermination (9)  } 
+-- mt-lrRestart shall be used to trigger the GMLC to restart the location procedure, 
+-- either because the sending node knows that the terminal has moved under coverage 
 -- of another MSC or SGSN (e.g. Send Identification received), or because the subscriber
 -- has been deregistered due to a Cancel Location received from HLR.
 --
 -- exception handling
--- an unrecognized value shall be treated the same as value 1 (errorundefined)
+-- an unrecognized value shall be treated the same as value 1 (errorundefined) 
 
 SequenceNumber ::= INTEGER (1..maxReportingAmount)
 
@@ -670,8 +672,8 @@ ServingNodeAddress ::= CHOICE {
        mme-Number      [2] DiameterIdentity }
 
 SubscriberLocationReport-Res ::= SEQUENCE {
-       extensionContainer      ExtensionContainer      OPTIONAL,
-       ...,
+       extensionContainer      ExtensionContainer      OPTIONAL, 
+       ..., 
        na-ESRK         [0] ISDN-AddressString  OPTIONAL,
        na-ESRD         [1] ISDN-AddressString  OPTIONAL,
        h-gmlc-Address  [2]     GSN-Address     OPTIONAL,
index 40b09dbb2861a8ae086a98bf958925cdc6f4c275..2495ce2a9c1d4f73d928a78af38d3283d8ae0923 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)  
+-- 3GPP TS 29.002 V12.3.0 (2013-12)  
 -- 17.6.8      Location service operations
  
 MAP-LocationServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-LocationServiceOperations (24)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -41,7 +41,7 @@ systemFailure,
        illegalSubscriber
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        RoutingInfoForLCS-Arg,
        RoutingInfoForLCS-Res,
@@ -51,7 +51,7 @@ FROM MAP-Errors {
        SubscriberLocationReport-Res
 FROM MAP-LCS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version13 (13)}
+   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version15 (15)}
 ;
 
 sendRoutingInfoForLCS  OPERATION ::= {                         --Timer m
index 762ed7a8eab6482152d24845291b5434ee02b53b..4e8f15addb331a560187157d6b489d8875eec9d0 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 -- 17.7.1      Mobile Service data types
 
 MAP-MS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)}
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)}
 
 DEFINITIONS
 
@@ -15,7 +15,6 @@ IMPLICIT TAGS
 BEGIN
 
 EXPORTS
-
        -- WS modification: for Ericsson proprietary extensions
        RequestedEquipmentInfo,
        -- End WS modification
@@ -23,14 +22,14 @@ EXPORTS
        UpdateLocationArg,
        UpdateLocationRes,
        CancelLocationArg,
-       CancelLocationRes,
-       PurgeMS-Arg,
+       CancelLocationRes, 
+       PurgeMS-Arg, 
        PurgeMS-Res,
        SendIdentificationArg,
-       SendIdentificationRes,
+       SendIdentificationRes, 
        UpdateGprsLocationArg,
        UpdateGprsLocationRes,
-       IST-SupportIndicator,
+       IST-SupportIndicator, 
        SupportedLCS-CapabilitySets,
        UpdateVcsgLocationArg,
        UpdateVcsgLocationRes,
@@ -42,7 +41,7 @@ EXPORTS
        ForwardAccessSignalling-Arg,
        PrepareHO-Arg,
        PrepareHO-Res,
-       PrepareSubsequentHO-Arg,
+       PrepareSubsequentHO-Arg, 
        PrepareSubsequentHO-Res,
        ProcessAccessSignalling-Arg,
        SendEndSignal-Arg,
@@ -50,12 +49,12 @@ EXPORTS
 
        -- authentication management types
        SendAuthenticationInfoArg,
-       SendAuthenticationInfoRes,
+       SendAuthenticationInfoRes, 
        AuthenticationFailureReportArg,
 AuthenticationFailureReportRes,
 
        -- security management types
-       Kc,
+       Kc, 
        Cksn,
 
        -- equipment management types
@@ -64,22 +63,22 @@ AuthenticationFailureReportRes,
 
        -- subscriber management types
        InsertSubscriberDataArg,
-       InsertSubscriberDataRes,
+       InsertSubscriberDataRes, 
        LSAIdentity,
        DeleteSubscriberDataArg,
        DeleteSubscriberDataRes,
        Ext-QoS-Subscribed,
-       Ext2-QoS-Subscribed,
-       Ext3-QoS-Subscribed,
+       Ext2-QoS-Subscribed, 
+       Ext3-QoS-Subscribed, 
        Ext4-QoS-Subscribed,
        SubscriberData,
        ODB-Data,
        SubscriberStatus,
        ZoneCodeList,
-       maxNumOfZoneCodes,
-       O-CSI,
+       maxNumOfZoneCodes, 
+       O-CSI, 
 D-CSI,
-       O-BcsmCamelTDPCriteriaList,
+       O-BcsmCamelTDPCriteriaList, 
        T-BCSM-CAMEL-TDP-CriteriaList,
        SS-CSI,
        ServiceKey,
@@ -92,12 +91,12 @@ D-CSI,
        OfferedCamel4CSIs,
        OfferedCamel4Functionalities,
        maxNumOfCamelTDPData,
-       CUG-Index,
+       CUG-Index, 
        CUG-Info,
        CUG-Interlock,
        InterCUG-Restrictions,
        IntraCUG-Options,
-       NotificationToMSUser,
+       NotificationToMSUser, 
        QoS-Subscribed,
 IST-AlertTimerValue,
        T-CSI,
@@ -110,8 +109,8 @@ AdditionalInfo,
        RestoreDataArg,
        RestoreDataRes,
 
--- provide subscriber info types
-GeographicalInformation,
+-- provide subscriber info types 
+GeographicalInformation, 
 MS-Classmark2,
 GPRSMSClass,
 
@@ -122,7 +121,7 @@ GPRSMSClass,
        LocationInformation,
        LocationInformationGPRS,
        SubscriberState,
-       GPRSChargingID,
+       GPRSChargingID, 
 MNPInfoRes,
        RouteingNumber,
 
@@ -159,7 +158,7 @@ NoteMM-EventArg,
        PagingArea,
 
        -- VGCS / VBS types types
-GroupId,
+GroupId, 
 Long-GroupId,
 AdditionalSubscriptions
 
@@ -175,29 +174,29 @@ IMPORTS
        CliRestrictionOption
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
        SS-Code
 FROM MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 
        Ext-BearerServiceCode
 FROM MAP-BS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-BS-Code (20) version13 (13)}
+   gsm-Network (1) modules (3) map-BS-Code (20) version15 (15)}
 
        Ext-TeleserviceCode
 FROM MAP-TS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-TS-Code (19) version13 (13)}
+   gsm-Network (1) modules (3) map-TS-Code (19) version15 (15)}
 
        AddressString,
-ISDN-AddressString,
-       ISDN-SubaddressString,
+ISDN-AddressString, 
+       ISDN-SubaddressString, 
        FTN-AddressString,
        AccessNetworkSignalInfo,
-       IMSI,
+       IMSI, 
        IMEI,
        TMSI,
        HLR-List,
@@ -207,7 +206,7 @@ ISDN-AddressString,
        CellGlobalIdOrServiceAreaIdOrLAI,
        Ext-BasicServiceCode,
        NAEA-PreferredCI,
-       EMLPP-Info,
+       EMLPP-Info, 
        MC-SS-Info,
        SubscriberIdentity,
        AgeOfLocationInformation,
@@ -229,22 +228,22 @@ RAIdentity,
 NetworkNodeDiameterAddress
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
        AbsentSubscriberDiagnosticSM
 FROM MAP-ER-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ER-DataTypes (17) version13 (13)}
+   gsm-Network (1) modules (3) map-ER-DataTypes (17) version15 (15)}
 
        TracePropagationList
 FROM MAP-OM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-OM-DataTypes (12) version13 (13)}
+   gsm-Network (1) modules (3) map-OM-DataTypes (12) version15 (15)}
 
 ;
 
@@ -263,7 +262,7 @@ UpdateLocationArg ::= SEQUENCE {
        v-gmlc-Address  [2]     GSN-Address     OPTIONAL,
        add-info                [13] ADD-Info   OPTIONAL,
        pagingArea      [14] PagingArea OPTIONAL,
-       skipSubscriberDataUpdate        [15] NULL               OPTIONAL,
+       skipSubscriberDataUpdate        [15] NULL               OPTIONAL, 
        -- The skipSubscriberDataUpdate parameter in the UpdateLocationArg and the ADD-Info
        -- structures carry the same semantic.
        restorationIndicator    [16]    NULL            OPTIONAL,
@@ -293,7 +292,7 @@ SupportedRAT-Types::= BIT STRING {
        i-hspa-evolution (3),
        e-utran (4)} (SIZE (2..8))
        -- exception handling: bits 5 to 7 shall be ignored if received and not understood
-
+        
 
 
 SuperChargerInfo ::= CHOICE {
@@ -315,13 +314,13 @@ SupportedLCS-CapabilitySets ::= BIT STRING {
        lcsCapabilitySet2 (1),
        lcsCapabilitySet3 (2),
        lcsCapabilitySet4 (3) ,
-       lcsCapabilitySet5 (4) } (SIZE (2..16))
+       lcsCapabilitySet5 (4) } (SIZE (2..16)) 
 -- Core network signalling capability set1 indicates LCS Release98 or Release99 version.
 -- Core network signalling capability set2 indicates LCS Release4.
 -- Core network signalling capability set3 indicates LCS Release5.
 -- Core network signalling capability set4 indicates LCS Release6.
 -- Core network signalling capability set5 indicates LCS Release7 or later version.
--- A node shall mark in the BIT STRING all LCS capability sets it supports.
+-- A node shall mark in the BIT STRING all LCS capability sets it supports. 
 -- If no bit is set then the sending node does not support LCS.
 -- If the parameter is not sent by an VLR then the VLR may support at most capability set1.
 -- If the parameter is not sent by an SGSN then no support for LCS is assumed.
@@ -343,7 +342,7 @@ ADD-Info ::= SEQUENCE {
        ...}
 
 
-PagingArea ::= SEQUENCE SIZE (1..5) OF LocationArea
+PagingArea ::= SEQUENCE SIZE (1..5) OF LocationArea 
 
 
 LocationArea ::= CHOICE {
@@ -352,7 +351,7 @@ LocationArea ::= CHOICE {
 
 
 LAC ::= OCTET STRING (SIZE (2))
-       -- Refers to Location Area Code of the Location Area Identification defined in
+       -- Refers to Location Area Code of the Location Area Identification defined in 
      -- 3GPP TS 23.003 [17].
        -- Location Area Code according to 3GPP TS 24.008 [35]
 
@@ -366,7 +365,8 @@ CancelLocationArg ::= [3] SEQUENCE {
        mtrf-SupportedAndNotAuthorized  [2] NULL                OPTIONAL,
        newMSC-Number   [3] ISDN-AddressString  OPTIONAL,
        newVLR-Number   [4] ISDN-AddressString  OPTIONAL,
-       new-lmsi                [5] LMSI                OPTIONAL
+       new-lmsi                [5] LMSI                OPTIONAL,
+       reattach-Required       [6] NULL                OPTIONAL
         }
        --mtrf-SupportedAndAuthorized and mtrf-SupportedAndNotAuthorized shall not
        -- both be present
@@ -394,7 +394,10 @@ PurgeMS-Arg ::= [3] SEQUENCE {
        vlr-Number      [0] ISDN-AddressString  OPTIONAL,
        sgsn-Number     [1]     ISDN-AddressString      OPTIONAL,
        extensionContainer      ExtensionContainer      OPTIONAL,
-       ...}
+       ...,
+       locationInformation     [2] LocationInformation OPTIONAL,
+       locationInformationGPRS [3] LocationInformationGPRS     OPTIONAL,
+       locationInformationEPS  [4] LocationInformationEPS      OPTIONAL }
 
 PurgeMS-Res ::= SEQUENCE {
        freezeTMSI      [0]     NULL            OPTIONAL,
@@ -406,9 +409,9 @@ PurgeMS-Res ::= SEQUENCE {
 SendIdentificationArg ::= SEQUENCE {
        tmsi                    TMSI,
        numberOfRequestedVectors        NumberOfRequestedVectors        OPTIONAL,
-       -- within a dialogue numberOfRequestedVectors shall be present in
-       -- the first service request and shall not be present in subsequent service requests.
-       -- If received in a subsequent service request it shall be discarded.
+       -- within a dialogue numberOfRequestedVectors shall be present in 
+       -- the first service request and shall not be present in subsequent service requests. 
+       -- If received in a subsequent service request it shall be discarded. 
        segmentationProhibited  NULL                    OPTIONAL,
        extensionContainer      ExtensionContainer      OPTIONAL,
        ...,
@@ -429,7 +432,9 @@ SendIdentificationRes ::= [3] SEQUENCE {
        authenticationSetList   AuthenticationSetList   OPTIONAL,
        currentSecurityContext  [2]CurrentSecurityContext       OPTIONAL,
        extensionContainer      [3] ExtensionContainer  OPTIONAL,
-       ...}
+       ...,
+       lastUsedLtePLMN-Id      [4] PLMN-Id     OPTIONAL,
+       mtCallPendingFlag       [5]     NULL            OPTIONAL }
 
 -- authentication management types
 
@@ -533,7 +538,7 @@ FailureCause ::= ENUMERATED {
 
 UpdateGprsLocationArg ::= SEQUENCE {
        imsi                    IMSI,
-       sgsn-Number     ISDN-AddressString,
+       sgsn-Number     ISDN-AddressString,     
        sgsn-Address    GSN-Address,
        extensionContainer      ExtensionContainer      OPTIONAL,
        ... ,
@@ -549,13 +554,17 @@ UpdateGprsLocationArg ::= SEQUENCE {
        gprsSubscriptionDataNotNeeded   [9] NULL                OPTIONAL,
        nodeTypeIndicator       [10] NULL               OPTIONAL,
        areaRestricted  [11] NULL               OPTIONAL,
-       ue-reachableIndicator   [12]    NULL            OPTIONAL,
+       ue-reachableIndicator   [12]    NULL            OPTIONAL, 
        epsSubscriptionDataNotNeeded    [13] NULL               OPTIONAL,
        ue-srvcc-Capability     [14] UE-SRVCC-Capability        OPTIONAL,
        eplmn-List      [15] EPLMN-List OPTIONAL,
        mmeNumberforMTSMS       [16] ISDN-AddressString OPTIONAL,
        smsRegisterRequest      [17] SMSRegisterRequest OPTIONAL,
-       sms-Only                [18] NULL               OPTIONAL }
+       sms-Only                [18] NULL               OPTIONAL,
+       removalofMMERegistrationforSMS  [22] NULL               OPTIONAL,
+       sgsn-Name               [19] DiameterIdentity   OPTIONAL,
+       sgsn-Realm      [20]    DiameterIdentity        OPTIONAL,
+       lgd-supportIndicator    [21] NULL               OPTIONAL }
 
 SMSRegisterRequest::= ENUMERATED {
        sms-registration-required  (0),
@@ -581,10 +590,10 @@ PDN-GW-Update ::= SEQUENCE{
        contextId               [2] ContextId                     OPTIONAL,
        extensionContainer      [3] ExtensionContainer  OPTIONAL,
        ... }
---     The pdn-gw-update IE shall include the pdn-gw-Identity, and the apn or/and the contextID.
---     The HSS shall ignore the eps-info IE if it includes a pdn-gw-update IE which does not
+--     The pdn-gw-update IE shall include the pdn-gw-Identity, and the apn or/and the contextID. 
+--     The HSS shall ignore the eps-info IE if it includes a pdn-gw-update IE which does not 
 --     include pdn-gw-Identity.
---     The pdn-gw-Identity is defined as OPTIONAL for backward compatility reason with
+--     The pdn-gw-Identity is defined as OPTIONAL for backward compatility reason with  
 --     outdated earlier versions of this specification.
 
 
@@ -593,7 +602,7 @@ ISR-Information::= BIT STRING {
        cancelSGSN  (1),
        initialAttachIndicator  (2)} (SIZE (3..8))
        -- exception handling: reception of unknown bit assignments in the
-       -- ISR-Information data type shall be discarded by the receiver
+       -- ISR-Information data type shall be discarded by the receiver 
 
 SGSN-Capability ::= SEQUENCE{
        solsaSupportIndicator   NULL                    OPTIONAL,
@@ -609,12 +618,14 @@ SGSN-Capability ::= SEQUENCE{
        t-adsDataRetrieval      [10] NULL               OPTIONAL,
        homogeneousSupportOfIMSVoiceOverPSSessions [11] BOOLEAN OPTIONAL,
        --      "true" indicates homogeneous support, "false" indicates homogeneous non-support
-       --      in the complete SGSN area
+       --      in the complete SGSN or MME area
        cancellationTypeInitialAttach   [12]    NULL            OPTIONAL,
-       additionalMsisdnSupport [13]    NULL            OPTIONAL,
-       msisdn-lessOperation-Supported  [14]    NULL            OPTIONAL
+       msisdn-lessOperation-Supported  [14]    NULL            OPTIONAL,
+       updateofHomogeneousSupportOfIMSVoiceOverPSSessions [15] NULL    OPTIONAL
        }
-       --      the supportedFeatures is also applied to the MME/IWF
+                 --    the supportedFeatures , t-adsDataRetrieval and 
+         --    homogeneousSupportOfIMSVoiceOverPSSessions
+         --    /updateofHomogeneousSupportOfIMSVoiceOverPSSessions arealso applied to the MME/IWF
 
 SupportedFeatures::= BIT STRING {
        odb-all-apn (0),
@@ -646,8 +657,11 @@ SupportedFeatures::= BIT STRING {
        localTimeZoneRetrieval (26),
        additionalMsisdn (27),
        smsInMME (28),
-       smsInSGSN (29)
-       } (SIZE (26..40))
+       smsInSGSN (29),
+       ue-Reachability-Notification (30),
+       state-Location-Information-Retrieval (31),
+       partialPurge (32),
+       gddInSGSN (33)} (SIZE (26..40))
        --      the definition and usage of the above features see the 3GPP TS 29.272 [144].
 
 
@@ -705,22 +719,22 @@ AllowedUMTS-Algorithms ::= SEQUENCE {
 
 PermittedIntegrityProtectionAlgorithms ::=
                OCTET STRING (SIZE (1..maxPermittedIntegrityProtectionAlgorithmsLength))
-       -- Octets contain a complete PermittedIntegrityProtectionAlgorithms data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
-       -- mandated by 3GPP TS 25.413.
-       -- Padding bits are included, if needed, in the least significant bits of the
-       -- last octet of the octet string.
+       -- Octets contain a complete PermittedIntegrityProtectionAlgorithms data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
+       -- mandated by 3GPP TS 25.413. 
+       -- Padding bits are included, if needed, in the least significant bits of the 
+       -- last octet of the octet string. 
 
 
 maxPermittedIntegrityProtectionAlgorithmsLength INTEGER ::= 9
 
 PermittedEncryptionAlgorithms ::=
                OCTET STRING (SIZE (1..maxPermittedEncryptionAlgorithmsLength))
-       -- Octets contain a complete PermittedEncryptionAlgorithms data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octets contain a complete PermittedEncryptionAlgorithms data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included, if needed, in the least significant bits of the
-       -- last octet of the octet string.
+       -- Padding bits are included, if needed, in the least significant bits of the 
+       -- last octet of the octet string. 
 
 
 maxPermittedEncryptionAlgorithmsLength INTEGER ::= 9
@@ -735,7 +749,7 @@ KeyStatus ::= ENUMERATED {
 
 PrepareHO-Arg ::= [3] SEQUENCE {
        targetCellId    [0] GlobalCellId        OPTIONAL,
-       ho-NumberNotRequired    NULL                    OPTIONAL,
+       ho-NumberNotRequired    NULL                    OPTIONAL, 
        targetRNCId     [1] RNCId               OPTIONAL,
        an-APDU         [2] AccessNetworkSignalInfo     OPTIONAL,
        multipleBearerRequested [3] NULL                OPTIONAL,
@@ -750,7 +764,7 @@ PrepareHO-Arg ::= [3] SEQUENCE {
        ... ,
        rab-Id          [12] RAB-Id     OPTIONAL,
        bssmap-ServiceHandover  [13]    BSSMAP-ServiceHandover  OPTIONAL,
-       ranap-ServiceHandover   [14]    RANAP-ServiceHandover   OPTIONAL,
+       ranap-ServiceHandover   [14]    RANAP-ServiceHandover   OPTIONAL, 
        bssmap-ServiceHandoverList      [15]    BSSMAP-ServiceHandoverList      OPTIONAL,
        asciCallReference       [20]    ASCI-CallReference      OPTIONAL,
        geran-classmark [16] GERAN-Classmark    OPTIONAL,
@@ -778,7 +792,7 @@ LCLS-Negotiation::= BIT STRING {
        permission-indicator-spare-bit  (1)} (SIZE (2..8))
        --for definition and allowed combination of bits 0 and 1 see 3GPP TS 29.205
        -- exception handling: bits 2 to 7 shall be ignored if received and not understood
-
+        
 
 LCLS-ConfigurationPreference::= BIT STRING {
        forward-data-sending-indicator  (0),
@@ -786,7 +800,7 @@ LCLS-ConfigurationPreference::= BIT STRING {
        forward-data-reception-indicator        (2),
        backward-data-reception-indicator       (3)} (SIZE (4..8))
        -- exception handling: bits 4 to 7 shall be ignored if received and not understood
-
+        
 
 BSSMAP-ServiceHandoverList ::= SEQUENCE SIZE (1.. maxNumOfServiceHandovers) OF
                                BSSMAP-ServiceHandoverInfo
@@ -794,7 +808,7 @@ BSSMAP-ServiceHandoverList ::= SEQUENCE SIZE (1.. maxNumOfServiceHandovers) OF
 BSSMAP-ServiceHandoverInfo ::= SEQUENCE {
        bssmap-ServiceHandover  BSSMAP-ServiceHandover,
        rab-Id          RAB-Id,
-       -- RAB Identity is needed to relate the service handovers with the radio access bearers.
+       -- RAB Identity is needed to relate the service handovers with the radio access bearers. 
        ...}
 
 maxNumOfServiceHandovers  INTEGER ::= 7
@@ -804,10 +818,10 @@ BSSMAP-ServiceHandover ::= OCTET STRING (SIZE (1))
        -- 3GPP TS 48.008.
 
 RANAP-ServiceHandover ::= OCTET STRING (SIZE (1))
-       -- Octet contains a complete Service-Handover data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octet contains a complete Service-Handover data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included in the least significant bits.
+       -- Padding bits are included in the least significant bits. 
 
 
 RadioResourceList ::= SEQUENCE SIZE (1.. maxNumOfRadioResources) OF
@@ -816,7 +830,7 @@ RadioResourceList ::= SEQUENCE SIZE (1.. maxNumOfRadioResources) OF
 RadioResource ::= SEQUENCE {
        radioResourceInformation        RadioResourceInformation,
        rab-Id          RAB-Id,
-       -- RAB Identity is needed to relate the radio resources with the radio access bearers.
+       -- RAB Identity is needed to relate the radio resources with the radio access bearers. 
        ...}
 
 maxNumOfRadioResources  INTEGER ::= 7
@@ -843,16 +857,16 @@ SelectedUMTS-Algorithms ::= SEQUENCE {
        ...}
 
 ChosenIntegrityProtectionAlgorithm ::= OCTET STRING (SIZE (1))
-       -- Octet contains a complete IntegrityProtectionAlgorithm data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octet contains a complete IntegrityProtectionAlgorithm data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included in the least significant bits.
+       -- Padding bits are included in the least significant bits. 
 
 ChosenEncryptionAlgorithm ::= OCTET STRING (SIZE (1))
-       -- Octet contains a complete EncryptionAlgorithm data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octet contains a complete EncryptionAlgorithm data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included in the least significant bits.
+       -- Padding bits are included in the least significant bits. 
 
 ChosenRadioResourceInformation ::= SEQUENCE {
        chosenChannelInfo       [0] ChosenChannelInfo   OPTIONAL,
@@ -864,7 +878,7 @@ ChosenChannelInfo ::= OCTET STRING (SIZE (1))
 
 ChosenSpeechVersion ::= OCTET STRING (SIZE (1))
        -- Octets are coded according the Speech Version (chosen) information element in 3GPP TS
-       -- 48.008
+       -- 48.008 
 
 PrepareSubsequentHO-Arg ::= [3] SEQUENCE {
        targetCellId    [0] GlobalCellId        OPTIONAL,
@@ -971,7 +985,8 @@ RNCId ::= OCTET STRING (SIZE (7))
        -- octet 3 bits 4321    Mobile Network Code 1st digit
        --         bits 8765    Mobile Network Code 2nd digit
        -- octets 4 and 5       Location Area Code according to 3GPP TS 24.008
-       -- octets 6 and 7       RNC Id value according to 3GPP TS 25.413
+       -- octets 6 and 7       RNC Id or Extended RNC Id value according to
+       --                      3GPP TS 25.413
 
 RelocationNumberList ::= SEQUENCE SIZE (1..maxNumOfRelocationNumber) OF
                                RelocationNumber
@@ -981,7 +996,7 @@ MulticallBearerInfo ::= INTEGER (1..maxNumOfRelocationNumber)
 RelocationNumber ::= SEQUENCE {
        handoverNumber  ISDN-AddressString,
        rab-Id          RAB-Id,
-       -- RAB Identity is needed to relate the calls with the radio access bearers.
+       -- RAB Identity is needed to relate the calls with the radio access bearers. 
        ...}
 
 RAB-Id ::= INTEGER (1..maxNrOfRABs)
@@ -994,20 +1009,20 @@ RadioResourceInformation ::= OCTET STRING (SIZE (3..13))
        -- Octets are coded according the Channel Type information element in 3GPP TS 48.008
 
 IntegrityProtectionInformation ::= OCTET STRING (SIZE (18..maxNumOfIntegrityInfo))
-       -- Octets contain a complete IntegrityProtectionInformation data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octets contain a complete IntegrityProtectionInformation data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included, if needed, in the least significant bits of the
-       -- last octet of the octet string.
+       -- Padding bits are included, if needed, in the least significant bits of the 
+       -- last octet of the octet string. 
 
 maxNumOfIntegrityInfo INTEGER ::= 100
 
 EncryptionInformation ::= OCTET STRING (SIZE (18..maxNumOfEncryptionInfo))
-       -- Octets contain a complete EncryptionInformation data type
-       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme
+       -- Octets contain a complete EncryptionInformation data type 
+       -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme 
        -- mandated by 3GPP TS 25.413
-       -- Padding bits are included, if needed, in the least significant bits of the
-       -- last octet of the octet string.
+       -- Padding bits are included, if needed, in the least significant bits of the 
+       -- last octet of the octet string. 
 
 maxNumOfEncryptionInfo INTEGER ::= 100
 
@@ -1024,7 +1039,7 @@ SendAuthenticationInfoArg ::= SEQUENCE {
        requestingNodeType      [3] RequestingNodeType  OPTIONAL,
        requestingPLMN-Id       [4] PLMN-Id     OPTIONAL,
        numberOfRequestedAdditional-Vectors     [5] NumberOfRequestedVectors    OPTIONAL,
-       additionalVectorsAreForEPS      [6] NULL                OPTIONAL }
+       additionalVectorsAreForEPS      [6] NULL                OPTIONAL }      
 
 
 NumberOfRequestedVectors ::= INTEGER (1..5)
@@ -1087,7 +1102,7 @@ RequestedEquipmentInfo::= BIT STRING {
        equipmentStatus  (0),
        bmuef  (1)} (SIZE (2..8))
        -- exception handling: reception of unknown bit assignments in the
-       -- RequestedEquipmentInfo data type shall be discarded by the receiver
+       -- RequestedEquipmentInfo data type shall be discarded by the receiver 
 
 UESBI-Iu ::= SEQUENCE {
        uesbi-IuA       [0] UESBI-IuA                           OPTIONAL,
@@ -1111,12 +1126,12 @@ InsertSubscriberDataArg ::= SEQUENCE {
        imsi                    [0] IMSI                OPTIONAL,
        COMPONENTS OF   SubscriberData,
        extensionContainer      [14] ExtensionContainer OPTIONAL,
-       ... ,
+       ... ,   
        naea-PreferredCI        [15] NAEA-PreferredCI   OPTIONAL,
        -- naea-PreferredCI is included at the discretion of the HLR operator.
        gprsSubscriptionData    [16] GPRSSubscriptionData       OPTIONAL,
-       roamingRestrictedInSgsnDueToUnsupportedFeature [23]     NULL
-                                                       OPTIONAL,
+       roamingRestrictedInSgsnDueToUnsupportedFeature [23]     NULL    
+                                                       OPTIONAL, 
        networkAccessMode       [24] NetworkAccessMode  OPTIONAL,
        lsaInformation  [25] LSAInformation     OPTIONAL,
        lmu-Indicator   [21]    NULL            OPTIONAL,
@@ -1142,14 +1157,16 @@ InsertSubscriberDataArg ::= SEQUENCE {
        additionalMSISDN        [41]    ISDN-AddressString      OPTIONAL,
        psAndSMS-OnlyServiceProvision   [42]    NULL            OPTIONAL,
        smsInSGSNAllowed        [43]    NULL            OPTIONAL }
-       -- If the Network Access Mode parameter is sent, it shall be present only in
+       -- If the Network Access Mode parameter is sent, it shall be present only in 
        -- the first sequence if seqmentation is used
 
 SubscribedPeriodicRAUTAUtimer ::= INTEGER (0..4294967295)
-       -- This parameter carries the subscribed periodic TAU/RAU timer value in seconds.
+       -- This parameter carries the subscribed periodic TAU/RAU timer value in seconds as
+       -- specified in 3GPP TS 24.008 [35].
 
 SubscribedPeriodicLAUtimer ::= INTEGER (0..4294967295)
-       -- This parameter carries the subscribed periodic LAU timer value in seconds.
+       -- This parameter carries the subscribed periodic LAU timer value in seconds as 
+       -- specified in 3GPP TS 24.008 [35].
 
 CSG-SubscriptionDataList ::= SEQUENCE SIZE (1..50) OF
                                CSG-SubscriptionData
@@ -1187,16 +1204,16 @@ EPS-SubscriptionData ::= SEQUENCE {
        mps-CSPriority  [7]     NULL            OPTIONAL,
        mps-EPSPriority [8]     NULL            OPTIONAL,
        subscribed-vsrvcc       [9]     NULL            OPTIONAL }
-       -- mps-CSPriority by its presence indicates that the UE is subscribed to the eMLPP in
+       -- mps-CSPriority by its presence indicates that the UE is subscribed to the eMLPP in 
        -- the CS domain, referring to the 3GPP TS 29.272 [144] for details.
-       -- mps-EPSPriority by its presence indicates that the UE is subscribed to the MPS in
-       -- the EPS domain, referring to the 3GPP TS 29.272 [144] for details.
-       --
-       -- subscribed-vsrvcc by its presence indicates that the UE is subscribed to the vSRVCC in
+       -- mps-EPSPriority by its presence indicates that the UE is subscribed to the MPS in 
+       -- the EPS domain, referring to the 3GPP TS 29.272 [144] for details. 
+       --  
+       -- subscribed-vsrvcc by its presence indicates that the UE is subscribed to the vSRVCC in 
        -- the EPS domain, referring to the 3GPP TS 29.272 [144] for details.
 
 APN-OI-Replacement ::=  OCTET STRING (SIZE (9..100))
-       -- Octets are coded as APN Operator Identifier according to TS 3GPP TS 23.003 [17]
+       -- Octets are coded as APN Operator Identifier according to TS 3GPP TS 23.003 [17] 
 
 RFSP-ID ::=  INTEGER (1..256)
 
@@ -1227,13 +1244,15 @@ APN-Configuration ::= SEQUENCE {
        vplmnAddressAllowed     [7] NULL                OPTIONAL,
        chargingCharacteristics [8] ChargingCharacteristics     OPTIONAL,
        ambr                    [9] AMBR                OPTIONAL,
-       specificAPNInfoList     [10] SpecificAPNInfoList        OPTIONAL,       extensionContainer      [11] ExtensionContainer OPTIONAL,
+       specificAPNInfoList     [10] SpecificAPNInfoList        OPTIONAL,       extensionContainer      [11] ExtensionContainer OPTIONAL, 
        servedPartyIP-IPv6-Address      [12] PDP-Address        OPTIONAL,
        ...,
        apn-oi-Replacement      [13] APN-OI-Replacement OPTIONAL,
        -- this apn-oi-Replacement refers to the APN level apn-oi-Replacement.
        sipto-Permission        [14] SIPTO-Permission   OPTIONAL,
-       lipa-Permission [15] LIPA-Permission    OPTIONAL
+       lipa-Permission [15] LIPA-Permission    OPTIONAL,
+       restoration-Priority    [16] Restoration-Priority       OPTIONAL,
+       sipto-local-network-Permission  [17] SIPTO-Local-Network-Permission     OPTIONAL
  }
 
 PDN-Type ::= OCTET STRING (SIZE (1))
@@ -1271,7 +1290,7 @@ SpecificAPNInfo ::= SEQUENCE {
        extensionContainer      [2] ExtensionContainer  OPTIONAL,
        ... }
 
-Bandwidth ::= INTEGER
+Bandwidth ::= INTEGER 
        -- bits per second
 
 QoS-Class-Identifier ::= INTEGER (1..9)
@@ -1308,11 +1327,13 @@ AccessRestrictionData ::= BIT STRING {
        i-hspa-evolutionNotAllowed (3),
        e-utranNotAllowed (4),
        ho-toNon3GPP-AccessNotAllowed (5) } (SIZE (2..8))
-       -- exception handling:
-       -- access restriction data related to an access type not supported by a node
-       -- shall be ignored
+       -- exception handling: 
+       -- The VLR shall ignore the access restriction data related to an access type not 
+       -- supported by the node.
+       -- The handling of the access restriction data by the SGSN is described in subclause 
+       -- 5.3.19 of TS 23.060, in subclause 7.5.3 of TS 29.060 and subclause 7.3.6 of TS 29.274.
        -- bits 6 to 7 shall be ignored if received and not understood
-
+       
 
 CS-AllocationRetentionPriority ::= OCTET STRING (SIZE (1))
        -- This data type encodes each priority level defined in TS 23.107 as the binary value
@@ -1330,7 +1351,7 @@ LCSInformation ::= SEQUENCE {
        -- present and contains four instances of LCS-PrivacyClass. If the mentioned condition
        -- is not satisfied the receiving node shall discard add-lcs-PrivacyExceptionList.
        -- If an LCS-PrivacyClass is received both in lcs-PrivacyExceptionList and in
-       -- add-lcs-PrivacyExceptionList with the same SS-Code, then the error unexpected
+       -- add-lcs-PrivacyExceptionList with the same SS-Code, then the error unexpected 
        -- data value shall be returned.
 
 GMLC-List ::= SEQUENCE SIZE (1..maxNumOfGMLC) OF
@@ -1361,14 +1382,14 @@ PDP-Context ::= SEQUENCE {
        apn                     [20] APN,
        extensionContainer      [21] ExtensionContainer OPTIONAL,
        ... ,
-       ext-QoS-Subscribed      [0] Ext-QoS-Subscribed  OPTIONAL,
+       ext-QoS-Subscribed      [0] Ext-QoS-Subscribed  OPTIONAL, 
        pdp-ChargingCharacteristics     [1] ChargingCharacteristics     OPTIONAL,
        ext2-QoS-Subscribed     [2] Ext2-QoS-Subscribed OPTIONAL,
        -- ext2-QoS-Subscribed may be present only if ext-QoS-Subscribed is present.
        ext3-QoS-Subscribed     [3] Ext3-QoS-Subscribed OPTIONAL,
        -- ext3-QoS-Subscribed may be present only if ext2-QoS-Subscribed is present.
        ext4-QoS-Subscribed     [4] Ext4-QoS-Subscribed OPTIONAL,
-       -- ext4-QoS-Subscribed may be present only if ext3-QoS-Subscribed is present.
+       -- ext4-QoS-Subscribed may be present only if ext3-QoS-Subscribed is present. 
        apn-oi-Replacement      [5]     APN-OI-Replacement      OPTIONAL,
        -- this apn-oi-Replacement refers to the APN level apn-oi-Replacement and has
        -- higher priority than UE level apn-oi-Replacement.
@@ -1382,15 +1403,27 @@ PDP-Context ::= SEQUENCE {
        -- only if pdp-Address is present; if both are present, each parameter shall
        -- contain a different type of address (IPv4 or IPv6).
        ambr                    [10] AMBR               OPTIONAL,
-       -- this ambr contains the AMBR associated to the APN included in the
+       -- this ambr contains the AMBR associated to the APN included in the 
        -- PDP-Context (APN-AMBR).
        sipto-Permission        [8] SIPTO-Permission    OPTIONAL,
-       lipa-Permission [9] LIPA-Permission     OPTIONAL
+       lipa-Permission [9] LIPA-Permission     OPTIONAL,
+       restoration-Priority    [11] Restoration-Priority       OPTIONAL,
+       sipto-local-network-Permission  [12] SIPTO-Local-Network-Permission     OPTIONAL
         }
 
+Restoration-Priority ::= OCTET STRING (SIZE (1))
+       -- Octet 1:
+       --  Restoration Priority. This octet encodes the Restoration Priority,
+       --  as the binary value of the Restoration-Priority described in 3GPP TS 29.272 [144].
+
 SIPTO-Permission ::= ENUMERATED {
-       siptoAllowed  (0),
-       siptoNotAllowed  (1)
+       siptoAboveRanAllowed  (0),
+       siptoAboveRanNotAllowed  (1)
+       }
+
+SIPTO-Local-Network-Permission ::= ENUMERATED {
+       siptoAtLocalNetworkAllowed  (0),
+       siptoAtLocalNetworkNotAllowed  (1)
        }
 
 LIPA-Permission ::= ENUMERATED {
@@ -1430,10 +1463,10 @@ GPRS-CSI ::= SEQUENCE {
        csi-Active      [4]     NULL            OPTIONAL,
        ...}
 --     notificationToCSE and csi-Active shall not be present when GPRS-CSI is sent to SGSN.
---     They may only be included in ATSI/ATM ack/NSDC message.
---     GPRS-CamelTDPData and  camelCapabilityHandling shall be present in
+--     They may only be included in ATSI/ATM ack/NSDC message. 
+--     GPRS-CamelTDPData and  camelCapabilityHandling shall be present in 
 --     the GPRS-CSI sequence.
---     If GPRS-CSI is segmented, gprs-CamelTDPDataList and camelCapabilityHandling shall be
+--     If GPRS-CSI is segmented, gprs-CamelTDPDataList and camelCapabilityHandling shall be 
 --     present in the first segment
 
 GPRS-CamelTDPDataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF
@@ -1467,11 +1500,11 @@ GPRS-TriggerDetectionPoint ::= ENUMERATED {
        ... }
 -- exception handling:
 -- For GPRS-CamelTDPData sequences containing this parameter with any
--- other value than the ones listed the receiver shall ignore the whole
+-- other value than the ones listed the receiver shall ignore the whole 
 -- GPRS-CamelTDPDatasequence.
 
 APN ::=  OCTET STRING (SIZE (2..63))
-       -- Octets are coded according to TS 3GPP TS 23.003 [17]
+       -- Octets are coded according to TS 3GPP TS 23.003 [17] 
 
 PDP-Type ::= OCTET STRING (SIZE (2))
        -- Octets are coded according to TS 3GPP TS 29.060 [105]
@@ -1490,14 +1523,14 @@ PDP-Address ::= OCTET STRING (SIZE (1..16))
        -- 16  octets  Ipv6 address type
 
 QoS-Subscribed ::= OCTET STRING (SIZE (3))
-       -- Octets are coded according to TS 3GPP TS 24.008 [35] Quality of Service Octets
+       -- Octets are coded according to TS 3GPP TS 24.008 [35] Quality of Service Octets 
        -- 3-5.
 
 Ext-QoS-Subscribed ::= OCTET STRING (SIZE (1..9))
-       -- OCTET 1:
+       -- OCTET 1: 
        --  Allocation/Retention Priority (This octet encodes each priority level defined in
        --     23.107 as the binary value of the priority level, declaration in 29.060)
-       -- Octets 2-9 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets
+       -- Octets 2-9 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 
        -- 6-13.
 
 Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3))
@@ -1623,9 +1656,9 @@ ODB-GeneralData ::= BIT STRING {
        registrationInternationalCF-Barred  (28)} (SIZE (15..32))
        -- exception handling: reception of unknown bit assignments in the
        -- ODB-GeneralData type shall be treated like unsupported ODB-GeneralData
-       -- When the ODB-GeneralData type is removed from the HLR for a given subscriber,
-       -- in NoteSubscriberDataModified operation sent toward the gsmSCF
-       -- all bits shall be set to "O".
+       -- When the ODB-GeneralData type is removed from the HLR for a given subscriber, 
+       -- in NoteSubscriberDataModified operation sent toward the gsmSCF 
+       -- all bits shall be set to \93O\93.
 
 ODB-HPLMN-Data ::= BIT STRING {
        plmn-SpecificBarringType1  (0),
@@ -1633,10 +1666,10 @@ ODB-HPLMN-Data ::= BIT STRING {
        plmn-SpecificBarringType3  (2),
        plmn-SpecificBarringType4  (3)} (SIZE (4..32))
        -- exception handling: reception of unknown bit assignments in the
-       -- ODB-HPLMN-Data type shall be treated like unsupported ODB-HPLMN-Data
-       -- When the ODB-HPLMN-Data type is removed from the HLR for a given subscriber,
+       -- ODB-HPLMN-Data type shall be treated like unsupported ODB-HPLMN-Data 
+       -- When the ODB-HPLMN-Data type is removed from the HLR for a given subscriber, 
        -- in NoteSubscriberDataModified operation sent toward the gsmSCF
-       -- all bits shall be set to "O".
+       -- all bits shall be set to \93O\93.
 
 Ext-SS-InfoList ::= SEQUENCE SIZE (1..maxNumOfSS) OF
                                Ext-SS-Info
@@ -1680,7 +1713,7 @@ Ext-ForwOptions ::= OCTET STRING (SIZE (1..5))
        --      1  notification
 
        --  bit 7: redirecting presentation
-       --      0 no presentation
+       --      0 no presentation  
        --      1  presentation
 
        --  bit 6: notification to calling party
@@ -1814,7 +1847,7 @@ LCS-PrivacyClass ::= SEQUENCE {
        serviceTypeList [5]     ServiceTypeList OPTIONAL
        -- serviceTypeList may be sent only for SS-code serviceType and if the visited node
        -- supports LCS Release 5 or later versions.
-       --
+       -- 
        -- if segmentation is used, the complete LCS-PrivacyClass shall be sent in one segment
 }
 
@@ -1837,7 +1870,7 @@ ExternalClient ::= SEQUENCE {
        clientIdentity  LCSClientExternalID,
        gmlc-Restriction        [0] GMLC-Restriction    OPTIONAL,
        notificationToMSUser    [1] NotificationToMSUser        OPTIONAL,
-       -- If notificationToMSUser is not received, the default value according to
+       -- If notificationToMSUser is not received, the default value according to 
        -- 3GPP TS 23.271 shall be assumed.
        extensionContainer      [2] ExtensionContainer  OPTIONAL,
        ... }
@@ -1869,7 +1902,7 @@ ServiceType ::= SEQUENCE {
        serviceTypeIdentity     LCSServiceTypeID,
        gmlc-Restriction        [0] GMLC-Restriction    OPTIONAL,
        notificationToMSUser    [1] NotificationToMSUser        OPTIONAL,
-       -- If notificationToMSUser is not received, the default value according to
+       -- If notificationToMSUser is not received, the default value according to 
        -- 3GPP TS 23.271 shall be assumed.
        extensionContainer      [2] ExtensionContainer  OPTIONAL,
        ... }
@@ -1953,9 +1986,9 @@ SpecificCSI-Withdraw ::= BIT STRING {
        t-csi (8),
        mt-sms-csi (9),
        mg-csi (10),
-       o-IM-CSI (11),
+       o-IM-CSI (11), 
        d-IM-CSI (12),
-       vt-IM-CSI (13) } (SIZE(8..32))
+       vt-IM-CSI (13) } (SIZE(8..32)) 
 -- exception handling:
 -- bits 11 to 31 shall be ignored if received by a non-IP Multimedia Core Network entity.
 -- bits 0-10 and 14-31 shall be ignored if received by an IP Multimedia Core Network entity.
@@ -2028,7 +2061,7 @@ MT-SMS-TPDU-Type ::= ENUMERATED {
 
 --     exception handling:
 --     For TPDU-TypeCriterion sequences containing this parameter with any
---     other value than the ones listed above the receiver shall ignore
+--     other value than the ones listed above the receiver shall ignore 
 --     the whole TPDU-TypeCriterion sequence.
 --     In CAMEL phase 4, sms-SUBMIT-REPORT shall not be used and a received TPDU-TypeCriterion
 --     sequence containing sms-SUBMIT-REPORT shall be wholly ignored.
@@ -2039,10 +2072,10 @@ D-CSI ::= SEQUENCE {
        extensionContainer      [2] ExtensionContainer  OPTIONAL,
        notificationToCSE       [3]     NULL            OPTIONAL,
        csi-Active      [4]     NULL            OPTIONAL,
-       ...}
+       ...} 
 --     notificationToCSE and csi-Active shall not be present when D-CSI is sent to VLR/GMSC.
 --     They may only be included in ATSI/ATM ack/NSDC message.
---     DP-AnalysedInfoCriteria and  camelCapabilityHandling shall be present in
+--     DP-AnalysedInfoCriteria and  camelCapabilityHandling shall be present in 
 --     the D-CSI sequence.
 --     If D-CSI is segmented, then the first segment shall contain dp-AnalysedInfoCriteriaList
 --     and camelCapabilityHandling. Subsequent segments shall not contain
@@ -2074,7 +2107,7 @@ SS-CSI ::= SEQUENCE {
 SS-CamelData  ::= SEQUENCE {
        ss-EventList    SS-EventList,
        gsmSCF-Address  ISDN-AddressString,
-       extensionContainer      [0] ExtensionContainer  OPTIONAL,
+       extensionContainer      [0] ExtensionContainer  OPTIONAL, 
        ...}
 
 SS-EventList  ::= SEQUENCE SIZE (1..maxNumOfCamelSSEvents) OF SS-Code
@@ -2127,20 +2160,20 @@ O-BcsmTriggerDetectionPoint ::= ENUMERATED {
        routeSelectFailure (4) }
        -- exception handling:
        -- For O-BcsmCamelTDPData sequences containing this parameter with any
-       -- other value than the ones listed the receiver shall ignore the whole
-       -- O-BcsmCamelTDPDatasequence.
+       -- other value than the ones listed the receiver shall ignore the whole 
+       -- O-BcsmCamelTDPDatasequence. 
        -- For O-BcsmCamelTDP-Criteria sequences containing this parameter with any
        -- other value than the ones listed the receiver shall ignore the whole
        -- O-BcsmCamelTDP-Criteria sequence.
 
 O-BcsmCamelTDPCriteriaList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF
-       O-BcsmCamelTDP-Criteria
+       O-BcsmCamelTDP-Criteria 
 
 T-BCSM-CAMEL-TDP-CriteriaList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF
-       T-BCSM-CAMEL-TDP-Criteria
+       T-BCSM-CAMEL-TDP-Criteria 
 
 O-BcsmCamelTDP-Criteria ::= SEQUENCE {
-       o-BcsmTriggerDetectionPoint     O-BcsmTriggerDetectionPoint,
+       o-BcsmTriggerDetectionPoint     O-BcsmTriggerDetectionPoint,    
        destinationNumberCriteria       [0] DestinationNumberCriteria   OPTIONAL,
        basicServiceCriteria    [1] BasicServiceCriteria        OPTIONAL,
        callTypeCriteria        [2] CallTypeCriteria    OPTIONAL,
@@ -2149,7 +2182,7 @@ O-BcsmCamelTDP-Criteria ::= SEQUENCE {
        extensionContainer      [4] ExtensionContainer  OPTIONAL }
 
 T-BCSM-CAMEL-TDP-Criteria ::= SEQUENCE {
-       t-BCSM-TriggerDetectionPoint    T-BcsmTriggerDetectionPoint,
+       t-BCSM-TriggerDetectionPoint    T-BcsmTriggerDetectionPoint,    
        basicServiceCriteria    [0] BasicServiceCriteria        OPTIONAL,
        t-CauseValueCriteria    [1] T-CauseValueCriteria        OPTIONAL,
        ... }
@@ -2158,7 +2191,7 @@ DestinationNumberCriteria  ::= SEQUENCE {
        matchType               [0] MatchType,
        destinationNumberList   [1] DestinationNumberList       OPTIONAL,
        destinationNumberLengthList     [2] DestinationNumberLengthList OPTIONAL,
-       -- one or both of destinationNumberList and destinationNumberLengthList
+       -- one or both of destinationNumberList and destinationNumberLengthList 
        -- shall be present
        ...}
 
@@ -2167,7 +2200,7 @@ DestinationNumberList  ::= SEQUENCE SIZE  (1..maxNumOfCamelDestinationNumbers) OF
        -- The receiving entity shall not check the format of a number in
        -- the dialled number list
 
-DestinationNumberLengthList  ::= SEQUENCE SIZE (1..maxNumOfCamelDestinationNumberLengths) OF
+DestinationNumberLengthList  ::= SEQUENCE SIZE (1..maxNumOfCamelDestinationNumberLengths) OF 
                                        INTEGER(1..maxNumOfISDN-AddressDigits)
 
 BasicServiceCriteria   ::= SEQUENCE SIZE(1..maxNumOfCamelBasicServiceCriteria) OF
@@ -2211,7 +2244,7 @@ DefaultCallHandling ::= ENUMERATED {
        -- reception of values in range 2-31 shall be treated as "continueCall"
        -- reception of values greater than 31 shall be treated as "releaseCall"
 
-CamelCapabilityHandling ::= INTEGER(1..16)
+CamelCapabilityHandling ::= INTEGER(1..16) 
        -- value 1 = CAMEL phase 1,
        -- value 2 = CAMEL phase 2,
        -- value 3 = CAMEL Phase 3,
@@ -2222,24 +2255,24 @@ SupportedCamelPhases ::= BIT STRING {
        phase1 (0),
        phase2 (1),
        phase3 (2),
-       phase4 (3)} (SIZE (1..16))
+       phase4 (3)} (SIZE (1..16)) 
 -- A node shall mark in the BIT STRING all CAMEL Phases it supports.
 -- Other values than listed above shall be discarded.
 
-OfferedCamel4CSIs ::= BIT STRING {
+OfferedCamel4CSIs ::= BIT STRING {     
        o-csi           (0),
        d-csi           (1),
        vt-csi          (2),
        t-csi           (3),
        mt-sms-csi      (4),
        mg-csi          (5),
-       psi-enhancements        (6)
+       psi-enhancements        (6) 
 } (SIZE (7..16))
--- A node supporting Camel phase 4 shall mark in the BIT STRING all Camel4 CSIs
+-- A node supporting Camel phase 4 shall mark in the BIT STRING all Camel4 CSIs 
 -- it offers.
 -- Other values than listed above shall be discarded.
 
-OfferedCamel4Functionalities ::= BIT STRING {
+OfferedCamel4Functionalities ::= BIT STRING {  
        initiateCallAttempt     (0),
        splitLeg                (1),
        moveLeg         (2),
@@ -2261,7 +2294,7 @@ OfferedCamel4Functionalities ::= BIT STRING {
        serviceChangeDP (18),
        collectInformation      (19)
 } (SIZE (15..64))
--- A node supporting Camel phase 4 shall mark in the BIT STRING all CAMEL4
+-- A node supporting Camel phase 4 shall mark in the BIT STRING all CAMEL4 
 -- functionalities it offers.
 -- Other values than listed above shall be discarded.
 
@@ -2275,9 +2308,9 @@ SMS-CSI ::= SEQUENCE {
 --     notificationToCSE and csi-Active shall not be present
 --     when MO-SMS-CSI or MT-SMS-CSI is sent to VLR or SGSN.
 --     They may only be included in ATSI/ATM ack/NSDC message.
---     SMS-CAMEL-TDP-Data and  camelCapabilityHandling shall be present in
+--     SMS-CAMEL-TDP-Data and  camelCapabilityHandling shall be present in 
 --     the SMS-CSI sequence.
---     If SMS-CSI is segmented, sms-CAMEL-TDP-DataList and camelCapabilityHandling shall be
+--     If SMS-CSI is segmented, sms-CAMEL-TDP-DataList and camelCapabilityHandling shall be 
 --     present in the first segment
 
 SMS-CAMEL-TDP-DataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF
@@ -2300,7 +2333,7 @@ SMS-TriggerDetectionPoint ::= ENUMERATED {
        sms-DeliveryRequest (2)
        }
 --     exception handling:
---     For SMS-CAMEL-TDP-Data and MT-smsCAMELTDP-Criteria sequences containing this
+--     For SMS-CAMEL-TDP-Data and MT-smsCAMELTDP-Criteria sequences containing this 
 --     parameter with any other value than the ones listed the receiver shall ignore
 --     the whole sequence.
 --
@@ -2370,7 +2403,7 @@ MM-Code ::= OCTET STRING (SIZE (1))
 --                             MM-Code ::= '10000010'B
 --     GPRS-Attach     MM-Code ::= '10000011'B
 --     MS-initiated-GPRS-Detach        MM-Code ::= '10000100'B
---     Network-initiated-GPRS-Detach   MM-Code ::= '10000101'B
+--     Network-initiated-GPRS-Detach   MM-Code ::= '10000101'B 
 --     Network-initiated-transfer-to-MS-not-reachable-for-paging
 --                             MM-Code ::= '10000110'B
 --
@@ -2396,8 +2429,8 @@ T-BcsmCamelTDPDataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF
        --- T-BcsmCamelTDPDataList shall not contain more than one instance of
        --- T-BcsmCamelTDPData containing the same value for t-BcsmTriggerDetectionPoint.
        --- For CAMEL Phase 2, this means that only one instance of T-BcsmCamelTDPData is allowed
-       --- with t-BcsmTriggerDetectionPoint being equal to DP12.
-       --- For CAMEL Phase 3, more TDP's are allowed.
+       --- with t-BcsmTriggerDetectionPoint being equal to DP12. 
+       --- For CAMEL Phase 3, more TDP\92s are allowed.
 
 T-BcsmCamelTDPData ::= SEQUENCE {
        t-BcsmTriggerDetectionPoint     T-BcsmTriggerDetectionPoint,
@@ -2421,7 +2454,7 @@ T-BcsmTriggerDetectionPoint ::= ENUMERATED {
 
 SendRoutingInfoForGprsArg ::= SEQUENCE {
        imsi                            [0] IMSI,
-       ggsn-Address            [1] GSN-Address OPTIONAL,
+       ggsn-Address            [1] GSN-Address OPTIONAL, 
        ggsn-Number             [2]     ISDN-AddressString,
        extensionContainer              [3] ExtensionContainer  OPTIONAL,
        ...}
@@ -2479,7 +2512,7 @@ RestoreDataArg ::= SEQUENCE {
        extensionContainer      ExtensionContainer      OPTIONAL,
        ... ,
        vlr-Capability  [6] VLR-Capability      OPTIONAL,
-       restorationIndicator    [7]     NULL            OPTIONAL
+       restorationIndicator    [7]     NULL            OPTIONAL 
  }
 
 RestoreDataRes ::= SEQUENCE {
@@ -2500,8 +2533,8 @@ maxNumOfVBSGroupIds  INTEGER ::= 50
 maxNumOfVGCSGroupIds  INTEGER ::= 50
 
 VoiceGroupCallData  ::= SEQUENCE {
-       groupId         GroupId,
-       -- groupId shall be filled with six TBCD fillers (1111)if the longGroupId is present
+       groupId         GroupId, 
+       -- groupId shall be filled with six TBCD fillers (1111)if the longGroupId is present  
        extensionContainer      ExtensionContainer      OPTIONAL,
        ...,
        additionalSubscriptions AdditionalSubscriptions OPTIONAL,
@@ -2509,11 +2542,11 @@ VoiceGroupCallData  ::= SEQUENCE {
        longGroupId     [1] Long-GroupId        OPTIONAL }
 
        -- VoiceGroupCallData containing a longGroupId shall not be sent to VLRs that did not
-       -- indicate support of long Group IDs within the Update Location or Restore Data
+       -- indicate support of long Group IDs within the Update Location or Restore Data 
        -- request message
 
 AdditionalInfo ::= BIT STRING (SIZE (1..136))
---      Refers to Additional Info as specified in 3GPP TS 43.068
+--      Refers to Additional Info as specified in 3GPP TS 43.068 
 
 AdditionalSubscriptions ::= BIT STRING {
        privilegedUplinkRequest (0),
@@ -2522,27 +2555,27 @@ AdditionalSubscriptions ::= BIT STRING {
 -- Other bits than listed above shall be discarded.
 
 VoiceBroadcastData ::= SEQUENCE {
-       groupid         GroupId,
+       groupid         GroupId, 
        -- groupId shall be filled with six TBCD fillers (1111)if the longGroupId is present
        broadcastInitEntitlement        NULL                    OPTIONAL,
        extensionContainer      ExtensionContainer      OPTIONAL,
        ...,
        longGroupId     [0] Long-GroupId        OPTIONAL }
-
+       
 -- VoiceBroadcastData containing a longGroupId shall not be sent to VLRs that did not
--- indicate support of long Group IDs within the Update Location or Restore Data
+-- indicate support of long Group IDs within the Update Location or Restore Data 
        -- request message
 
 GroupId  ::= TBCD-STRING (SIZE (3))
        -- When Group-Id is less than six characters in length, the TBCD filler (1111)
        -- is used to fill unused half octets.
-       -- Refers to the Group Identification as specified in 3GPP TS 23.003
+       -- Refers to the Group Identification as specified in 3GPP TS 23.003 
        -- and 3GPP TS 43.068/ 43.069
 
 Long-GroupId  ::= TBCD-STRING (SIZE (4))
        -- When Long-Group-Id is less than eight characters in length, the TBCD filler (1111)
        -- is used to fill unused half octets.
-       -- Refers to the Group Identification as specified in 3GPP TS 23.003
+       -- Refers to the Group Identification as specified in 3GPP TS 23.003 
        -- and 3GPP TS 43.068/ 43.069
 
 
@@ -2612,8 +2645,8 @@ MNPInfoRes ::= SEQUENCE {
        numberPortabilityStatus [3] NumberPortabilityStatus     OPTIONAL,
        extensionContainer      [4] ExtensionContainer  OPTIONAL,
        ... }
---     The IMSI parameter contains a generic IMSI, i.e. it is not tied necessarily to the
---     Subscriber. MCC and MNC values in this IMSI shall point to the Subscription Network of
+--     The IMSI parameter contains a generic IMSI, i.e. it is not tied necessarily to the 
+--     Subscriber. MCC and MNC values in this IMSI shall point to the Subscription Network of 
 --     the Subscriber. See 3GPP TS 23.066 [108].
 
 RouteingNumber ::= TBCD-STRING (SIZE (1..5))
@@ -2627,14 +2660,14 @@ NumberPortabilityStatus ::= ENUMERATED {
        ownNumberNotPortedOut   (4),
        foreignNumberPortedIn   (5)
        }
-       --      exception handling:
-       --  reception of other values than the ones listed the receiver shall ignore the
+       --      exception handling: 
+       --  reception of other values than the ones listed the receiver shall ignore the 
        --  whole NumberPortabilityStatus;
-       --  ownNumberNotPortedOut or foreignNumberPortedIn may only be included in Any Time
+       --  ownNumberNotPortedOut or foreignNumberPortedIn may only be included in Any Time 
        --  Interrogation message.
 
 MS-Classmark2 ::= OCTET STRING (SIZE (3))
-       -- This parameter carries the value part of the MS Classmark 2 IE defined in
+       -- This parameter carries the value part of the MS Classmark 2 IE defined in 
        -- 3GPP TS 24.008 [35].
 
 GPRSMSClass ::= SEQUENCE {
@@ -2643,9 +2676,9 @@ GPRSMSClass ::= SEQUENCE {
        }
 
 MSNetworkCapability ::= OCTET STRING (SIZE (1..8))
-       -- This parameter carries the value part of the MS Network Capability IE defined in
+       -- This parameter carries the value part of the MS Network Capability IE defined in 
        -- 3GPP TS 24.008 [35].
-
+       
 MSRadioAccessCapability ::= OCTET STRING (SIZE (1..50))
        -- This parameter carries the value part of the MS Radio Access Capability IE defined in
        -- 3GPP TS 24.008 [35].
@@ -2654,7 +2687,7 @@ RequestedInfo ::= SEQUENCE {
        locationInformation     [0] NULL                OPTIONAL,
        subscriberState [1] NULL                OPTIONAL,
        extensionContainer      [2] ExtensionContainer  OPTIONAL,
-       ...,
+       ..., 
        currentLocation [3] NULL                OPTIONAL,
        requestedDomain [4] DomainType  OPTIONAL,
        imei                    [6] NULL                OPTIONAL,
@@ -2667,7 +2700,7 @@ RequestedInfo ::= SEQUENCE {
        localTimeZoneRequest    [12] NULL               OPTIONAL
  }
 
---     currentLocation and locationInformationEPS-Supported shall be absent if
+--     currentLocation and locationInformationEPS-Supported shall be absent if 
 --     locationInformation is absent
 --     t-adsData shall be absent in messages sent to the VLR
 --     requestedNodes shall be absent if requestedDomain is "cs-Domain"
@@ -2698,19 +2731,19 @@ LocationInformation ::= SEQUENCE {
        ... ,
        selectedLSA-Id  [5] LSAIdentity OPTIONAL,
        msc-Number      [6] ISDN-AddressString  OPTIONAL,
-       geodeticInformation     [7] GeodeticInformation OPTIONAL,
+       geodeticInformation     [7] GeodeticInformation OPTIONAL, 
        currentLocationRetrieved        [8] NULL                OPTIONAL,
        sai-Present     [9] NULL                OPTIONAL,
        locationInformationEPS  [10] LocationInformationEPS     OPTIONAL,
        userCSGInformation      [11] UserCSGInformation OPTIONAL }
 -- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains
 -- a Service Area Identity.
--- currentLocationRetrieved shall be present
+-- currentLocationRetrieved shall be present 
 -- if the location information were retrieved after a successfull paging.
 -- if the locationinformationEPS IE is present then the cellGlobalIdOrServiceAreaIdOrLAI IE,
 -- the ageOfLocationInformation IE, the geographicalInformation IE, the geodeticInformation IE
 -- and the currentLocationRetrieved IE (outside the locationInformationEPS IE) shall be
--- absent. As an exception, both the cellGlobalIdOrServiceAreaIdOrLAI IE including an LAI and
+-- absent. As an exception, both the cellGlobalIdOrServiceAreaIdOrLAI IE including an LAI and 
 -- the locationinformationEPS IE may be present in a MAP-NOTE-MM-EVENT.
 -- UserCSGInformation contains the CSG ID, Access mode, and the CSG Membership Indication in
 -- the case the Access mode is Hybrid Mode.
@@ -2749,7 +2782,7 @@ LocationInformationGPRS ::= SEQUENCE {
 -- currentLocationRetrieved shall be present if the location information
 -- was retrieved after successful paging.
 -- UserCSGInformation contains the CSG ID, Access mode, and the CSG Membership Indication in
--- the case the Access mode is Hybrid Mode.
+-- the case the Access mode is Hybrid Mode. 
 
 
 UserCSGInformation ::= SEQUENCE {
@@ -2840,7 +2873,7 @@ PDP-ContextInfo ::= SEQUENCE {
        qos4-Requested  [26] Ext4-QoS-Subscribed        OPTIONAL,
        -- qos4-Requested may be present only if qos3-Requested is present.
        qos4-Negotiated [27] Ext4-QoS-Subscribed        OPTIONAL,
-       -- qos4-Negotiated may be present only if qos3-Negotiated is present.
+       -- qos4-Negotiated may be present only if qos3-Negotiated is present. 
        ext-pdp-Type    [28] Ext-PDP-Type       OPTIONAL,
        -- contains the value IPv4v6 defined in 3GPP TS 29.060 [105], if the PDP can be
        -- accessed by dual-stack UEs.
@@ -2857,17 +2890,17 @@ NSAPI ::= INTEGER (0..15)
 --     This type is used to indicate the Network layer Service Access Point
 
 TransactionId ::= OCTET STRING (SIZE (1..2))
---     This type carries the value part of the transaction identifier which is used in the
---     session management messages on the access interface. The encoding is defined in
+--     This type carries the value part of the transaction identifier which is used in the 
+--     session management messages on the access interface. The encoding is defined in 
 --     3GPP TS 24.008
 
 TEID ::= OCTET STRING (SIZE (4))
---     This type carries the value part of the Tunnel Endpoint Identifier which is used to
---     distinguish between different tunnels between the same pair of entities which communicate
+--     This type carries the value part of the Tunnel Endpoint Identifier which is used to 
+--     distinguish between different tunnels between the same pair of entities which communicate 
 --     using the GPRS Tunnelling Protocol The encoding is defined in 3GPP TS 29.060.
 
 GPRSChargingID ::= OCTET STRING (SIZE (4))
---     The Charging ID is a unique four octet value generated by the GGSN when
+--     The Charging ID is a unique four octet value generated by the GGSN when 
 --     a PDP Context is activated. A Charging ID is generated for each activated context.
 --     The encoding is defined in 3GPP TS 29.060.
 
@@ -2913,7 +2946,7 @@ AnyTimeSubscriptionInterrogationRes ::= SEQUENCE {
        offeredCamel4CSIsInVLR  [8] OfferedCamel4CSIs   OPTIONAL,
        offeredCamel4CSIsInSGSN [9] OfferedCamel4CSIs   OPTIONAL,
        msisdn-BS-List  [10] MSISDN-BS-List     OPTIONAL,
-       csg-SubscriptionDataList        [11] CSG-SubscriptionDataList   OPTIONAL,
+       csg-SubscriptionDataList        [11] CSG-SubscriptionDataList   OPTIONAL, 
        cw-Data         [12]    CallWaitingData OPTIONAL,
        ch-Data         [13]    CallHoldData    OPTIONAL,
        clip-Data       [14] ClipData   OPTIONAL,
@@ -2929,7 +2962,7 @@ Ext-CwFeatureList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF
                                Ext-CwFeature
 
 Ext-CwFeature ::= SEQUENCE {
-       basicService    [1] Ext-BasicServiceCode,
+       basicService    [1] Ext-BasicServiceCode, 
        ss-Status               [2] Ext-SS-Status,
        ... }
 
@@ -2937,7 +2970,7 @@ ClipData ::= SEQUENCE {
        ss-Status               [1] Ext-SS-Status,
        overrideCategory        [2] OverrideCategory,
        notificationToCSE       [3] NULL                OPTIONAL,
-       ... }
+       ... }           
 
 ClirData ::= SEQUENCE {
        ss-Status               [1] Ext-SS-Status,
@@ -2981,7 +3014,7 @@ maxNumOfMSISDN  INTEGER ::= 50
 
 
 MSISDN-BS ::= SEQUENCE {
-       msisdn                  ISDN-AddressString,
+       msisdn                  ISDN-AddressString,     
        basicServiceList        [0]     BasicServiceList        OPTIONAL,
        extensionContainer      [1]     ExtensionContainer      OPTIONAL,
        ...}
@@ -3030,7 +3063,7 @@ ODB-Info ::= SEQUENCE {
 
 CAMEL-SubscriptionInfo ::= SEQUENCE {
        o-CSI           [0]     O-CSI   OPTIONAL,
-       o-BcsmCamelTDP-CriteriaList     [1]     O-BcsmCamelTDPCriteriaList      OPTIONAL,
+       o-BcsmCamelTDP-CriteriaList     [1]     O-BcsmCamelTDPCriteriaList      OPTIONAL, 
        d-CSI           [2]     D-CSI   OPTIONAL,
        t-CSI           [3]     T-CSI   OPTIONAL,
        t-BCSM-CAMEL-TDP-CriteriaList   [4]     T-BCSM-CAMEL-TDP-CriteriaList   OPTIONAL,
index f741fce02bfbff3cfd8eebd84f9d814c0f5ae04a..ef7f8114495c52365c27dbac8aec10db85add492 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 -- 17.6.1      Mobile Service Operations
 
 MAP-MobileServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-MobileServiceOperations (5)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -114,7 +114,7 @@ joint-iso-itu-t remote-operations(4)
 
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        UpdateLocationArg,
        UpdateLocationRes,
@@ -173,7 +173,7 @@ PrepareSubsequentHO-Res,
 
 FROM MAP-MS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)}
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)}
 
 ;
 
index 7c43d35e370b8afd90a53bdd34fb32d40ff9a85a..8529dbedc83a96cda215fb8faeb74df35f162e5e 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
 -- 17.7.2      Operation and maintenance data types
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
  
 MAP-OM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-OM-DataTypes (12) version13 (13)}
+   gsm-Network (1) modules (3) map-OM-DataTypes (12) version15 (15)}
 
 DEFINITIONS
 
@@ -33,12 +33,12 @@ IMPORTS
        LAIFixedLength
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
 ;
 
@@ -70,7 +70,53 @@ MDT-Configuration ::= SEQUENCE {
        loggingInterval [3] LoggingInterval     OPTIONAL,
        loggingDuration [4] LoggingDuration     OPTIONAL,
        extensionContainer      [5] ExtensionContainer  OPTIONAL,
-       ... }
+       ...,
+       measurementPeriodUMTS   [6] PeriodUMTS  OPTIONAL,
+       measurementPeriodLTE    [7] PeriodLTE   OPTIONAL,
+       collectionPeriodRRM-UMTS        [8] PeriodUMTS  OPTIONAL,
+       collectionPeriodRRM-LTE [9] PeriodLTE   OPTIONAL,
+       positioningMethod       [10] PositioningMethod  OPTIONAL,
+       measurementQuantity     [11] MeasurementQuantity        OPTIONAL,
+       eventThreshold1F        [12] EventThreshold1F   OPTIONAL,
+       eventThreshold1I        [13] EventThreshold1I   OPTIONAL }
+
+PeriodUMTS ::= ENUMERATED {
+       d250ms (0),
+       d500ms (1),
+       d1000ms (2),
+       d2000ms (3),
+       d3000ms (4),
+       d4000ms (5),
+       d6000ms (6),
+       d8000ms (7),
+       d12000ms (8),
+       d16000ms (9),
+       d20000ms (10),
+       d24000ms (11),
+       d28000ms (12),
+       d32000ms (13),
+       d64000ms (14)}
+
+PeriodLTE ::= ENUMERATED {
+       d1024ms (0),
+       d1280ms (1),
+       d2048ms (2),
+       d2560ms (3),
+       d5120ms (4),
+       d10240ms (5),
+       d1min (6)}
+
+PositioningMethod ::= OCTET STRING (SIZE (1))
+       -- Octet is coded as described in 3GPP TS 32.422 [132].
+
+MeasurementQuantity ::= OCTET STRING (SIZE (1))
+       -- Octet is coded as described in 3GPP TS 32.422 [132].
+
+EventThreshold1F ::= INTEGER
+       (-120..165)
+
+EventThreshold1I ::= INTEGER
+       (-120..-25)
 
 JobType ::= ENUMERATED {
        immediate-MDT-only (0),
@@ -101,6 +147,7 @@ LocationAreaId-List ::= SEQUENCE SIZE (1..8) OF
 
 TrackingAreaId-List ::= SEQUENCE SIZE (1..8) OF
                                TA-Id
+
 ListOfMeasurements ::= OCTET STRING (SIZE (4))
        -- Octets are coded as described in 3GPP TS 32.422.
 
index 87f826033a7972172174faa80953e976a2192679..667d27fefbfe49fbeaf36bd7c686adc44ad5e1b4 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 --17.6.2       Operation and Maintenance Operations
 MAP-OperationAndMaintenanceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-OperationAndMaintenanceOperations (6)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -33,7 +33,7 @@ joint-iso-itu-t remote-operations(4)
        tracingBufferFull
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        ActivateTraceModeArg,
        ActivateTraceModeRes,
@@ -41,13 +41,13 @@ FROM MAP-Errors {
        DeactivateTraceModeRes
 FROM MAP-OM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-OM-DataTypes (12) version13 (13)}
+   gsm-Network (1) modules (3) map-OM-DataTypes (12) version15 (15)}
 
        ISDN-AddressString,
        IMSI
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 ;
 
 
index 62083bd6a2a13c3620c4ab88d9fdd9c7ba1c3cf7..957649ec0377e3b37f607c99426f305304d3aacd 100644 (file)
@@ -1,9 +1,9 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 --17.5 MAP operation and error codes
 MAP-Protocol {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Protocol (4) version13 (13)}
+   gsm-Network (1) modules (3) map-Protocol (4) version15 (15)}
 
 DEFINITIONS
 
@@ -50,7 +50,7 @@ authenticationFailureReport,
 FROM MAP-MobileServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-MobileServiceOperations (5)
-   version13 (13)}
+   version15 (15)}
 
        activateTraceMode,
        deactivateTraceMode,
@@ -58,7 +58,7 @@ FROM MAP-MobileServiceOperations {
 FROM MAP-OperationAndMaintenanceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-OperationAndMaintenanceOperations (6)
-   version13 (13)}
+   version15 (15)}
 
        sendRoutingInfo,
        provideRoamingNumber,
@@ -72,7 +72,7 @@ FROM MAP-OperationAndMaintenanceOperations {
 FROM MAP-CallHandlingOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-CallHandlingOperations (7)
-   version13 (13)}
+   version15 (15)}
 
        registerSS,
        eraseSS,
@@ -90,7 +90,7 @@ FROM MAP-CallHandlingOperations {
 FROM MAP-SupplementaryServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-SupplementaryServiceOperations (8)
-   version13 (13)}
+   version15 (15)}
 
        sendRoutingInfoForSM,
        mo-ForwardSM,
@@ -103,7 +103,7 @@ FROM MAP-SupplementaryServiceOperations {
 FROM MAP-ShortMessageServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-ShortMessageServiceOperations (9)
-   version13 (13)}
+   version15 (15)}
 
        prepareGroupCall,
        processGroupCallSignalling,
@@ -113,7 +113,7 @@ FROM MAP-ShortMessageServiceOperations {
 FROM MAP-Group-Call-Operations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-Group-Call-Operations (22)
-   version13 (13)}
+   version15 (15)}
 
        provideSubscriberLocation,
        sendRoutingInfoForLCS,
@@ -121,7 +121,7 @@ FROM MAP-Group-Call-Operations {
 FROM MAP-LocationServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-LocationServiceOperations (24)
-   version13 (13)}
+   version15 (15)}
 
 
 ;
index db881d8abbad2aa22c50ceb7d192b3f691ad8e43..7c04b3467ff6cb793466063aafcd3e72de0f06c4 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002  V10.4.0 (2011-09)  
+-- 3GPP TS 29.002  V12.3.0 (2013-12)  
 -- 17.7.6      Short message data types
 
 MAP-SM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SM-DataTypes (16) version13 (13)}
+   gsm-Network (1) modules (3) map-SM-DataTypes (16) version15 (15)}
 
 DEFINITIONS
 
@@ -42,21 +42,22 @@ IMPORTS
        LMSI,
        ASCI-CallReference,
        Time,
-       NetworkNodeDiameterAddress
+       NetworkNodeDiameterAddress,
+       HLR-Id
 
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        AbsentSubscriberDiagnosticSM
 FROM MAP-ER-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ER-DataTypes (17) version13 (13)}
+   gsm-Network (1) modules (3) map-ER-DataTypes (17) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 ;
 
 
@@ -73,7 +74,10 @@ RoutingInfoForSM-Arg ::= SEQUENCE {
        sm-RP-SMEA      [9] SM-RP-SMEA  OPTIONAL,
        sm-deliveryNotIntended  [10] SM-DeliveryNotIntended     OPTIONAL,
        ip-sm-gwGuidanceIndicator       [11] NULL               OPTIONAL,
-       imsi                    [12] IMSI               OPTIONAL }
+       imsi                    [12] IMSI               OPTIONAL,
+       t4-Trigger-Indicator    [14] NULL               OPTIONAL,
+       singleAttemptDelivery   [13]    NULL            OPTIONAL,
+       correlationID   [15] CorrelationID      OPTIONAL }
 
 SM-DeliveryNotIntended ::= ENUMERATED {
        onlyIMSI-requested  (0),
@@ -137,7 +141,10 @@ MO-ForwardSM-Arg ::= SEQUENCE {
        sm-RP-UI                SignalInfo,
        extensionContainer      ExtensionContainer      OPTIONAL,
        ... ,
-       imsi                    IMSI            OPTIONAL }
+       imsi                    IMSI            OPTIONAL,
+       correlationID   [0] CorrelationID       OPTIONAL,
+       sm-DeliveryOutcome      [1] SM-DeliveryOutcome  OPTIONAL
+ }
 
 MO-ForwardSM-Res ::= SEQUENCE {
        sm-RP-UI                SignalInfo      OPTIONAL,
@@ -153,9 +160,18 @@ MT-ForwardSM-Arg ::= SEQUENCE {
        ...,
        smDeliveryTimer SM-DeliveryTimerValue   OPTIONAL,
        smDeliveryStartTime     Time                    OPTIONAL,
-       smsOverIP-OnlyIndicator [0] NULL                OPTIONAL }
+       smsOverIP-OnlyIndicator [0] NULL                OPTIONAL,
+       correlationID   [1] CorrelationID       OPTIONAL }
        -- SM-DeliveryTimerValue contains the value used by the SMS-GMSC
 
+CorrelationID ::= SEQUENCE {
+       hlr-id          [0] HLR-Id              OPTIONAL,
+       sip-uri-A               [1] SIP-URI             OPTIONAL,
+       sip-uri-B               [2] SIP-URI}
+
+SIP-URI ::= OCTET STRING 
+-- octets are coded as defined in IETF RFC 3261 
+
 MT-ForwardSM-Res ::= SEQUENCE {
        sm-RP-UI                SignalInfo      OPTIONAL,
        extensionContainer      ExtensionContainer      OPTIONAL,
@@ -206,7 +222,9 @@ ReportSM-DeliveryStatusArg ::= SEQUENCE {
        -- If received ip-sm-gw-sm-absentSubscriberDiagnosticSM is for delivery via IMS
        -- If ip-sm-gw-Indicator is set, then ip-sm-gw-sm-absentSubscriberDiagnosticSM 
        -- shall be absent
-       imsi                    [9] IMSI                OPTIONAL
+       imsi                    [9] IMSI                OPTIONAL,
+       singleAttemptDelivery   [10] NULL               OPTIONAL,
+       correlationID   [11]    CorrelationID   OPTIONAL
 }
 
 SM-DeliveryOutcome ::= ENUMERATED {
@@ -223,7 +241,8 @@ AlertServiceCentreArg ::= SEQUENCE {
        msisdn          ISDN-AddressString,
        serviceCentreAddress    AddressString,
        ...,
-       imsi                    IMSI                    OPTIONAL }
+       imsi                    IMSI                    OPTIONAL,
+       correlationID   CorrelationID   OPTIONAL }
 
 InformServiceCentreArg ::= SEQUENCE {
        storedMSISDN    ISDN-AddressString      OPTIONAL,
index 0c3d4b701a9ca152064f3c3edd68f08042787f93..1d789e50668cfb95459a303ee28bcbdbf461758c 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 -- 17.7.5      Supplementary service codes
 
 MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 
 DEFINITIONS
 
index e64acffba5c7aba7b821fe93c8f06be29167ec79..908c0423adbcc86b218cf08bc61488bfe2f375c1 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)
+-- 3GPP TS 29.002 V12.3.0 (2013-12)
 -- 17.7.4      Supplementary service data types
  
 MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
 DEFINITIONS
 
@@ -58,17 +58,17 @@ IMPORTS
        ExternalSignalInfo
 FROM MAP-CommonDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)}
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version15 (15)}
 
        ExtensionContainer
 FROM MAP-ExtensionDataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)}
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version15 (15)}
 
        SS-Code
 FROM MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 ;
 
 
index 121507a96cad632448d563fbd25dd2e391bc97d2..52d0f151cd8a6dbaa02b10e0f8587933f71a3e21 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)  
+-- 3GPP TS 29.002 V12.3.0 (2013-12)  
 -- 17.6.5      Short message service operations
  
 MAP-ShortMessageServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-ShortMessageServiceOperations (9)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -46,7 +46,7 @@ joint-iso-itu-t remote-operations(4)
        absentSubscriberSM
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        RoutingInfoForSM-Arg,
        RoutingInfoForSM-Res,
@@ -64,7 +64,7 @@ FROM MAP-Errors {
        MT-ForwardSM-VGCS-Res
 FROM MAP-SM-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SM-DataTypes (16) version13 (13)}
+   gsm-Network (1) modules (3) map-SM-DataTypes (16) version15 (15)}
 
 ;
 
index 65bc47ed050ae41a0fbe55d7f38f882c51c1fd9a..ca06cd2db3a0f6ca6276ca51774497eb4b2b1960 100644 (file)
@@ -1,11 +1,11 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12)  
+-- 3GPP TS 29.002 V12.3.0 (2013-12)  
 --17.6.4       Supplementary service operations
 
 MAP-SupplementaryServiceOperations {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
    gsm-Network (1) modules (3) map-SupplementaryServiceOperations (8)
-   version13 (13)}
+   version15 (15)}
 
 DEFINITIONS
 
@@ -60,7 +60,7 @@ joint-iso-itu-t remote-operations(4)
        facilityNotSupported
 FROM MAP-Errors {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-Errors (10) version13 (13)}
+   gsm-Network (1) modules (3) map-Errors (10) version15 (15)}
 
        RegisterSS-Arg,
        SS-Info,
@@ -78,12 +78,12 @@ FROM MAP-Errors {
        EraseCC-EntryRes
 FROM MAP-SS-DataTypes {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-DataTypes (14) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-DataTypes (14) version15 (15)}
 
        SS-Code
 FROM MAP-SS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-SS-Code (15) version13 (13)}
+   gsm-Network (1) modules (3) map-SS-Code (15) version15 (15)}
 ;
 
 
index 2e62040286343e3bf04433402c13bbc0c2f737f0..09e8cc76a2287240b7dcc0902db232769d98feb9 100644 (file)
@@ -1,10 +1,10 @@
 -- $Id$
--- 3GPP TS 29.002 V11.5.0 (2012-12) 
+-- 3GPP TS 29.002 V12.3.0 (2013-12) 
 -- 17.7.9      Teleservice Codes
  
 MAP-TS-Code {
    itu-t identified-organization (4) etsi (0) mobileDomain (0)
-   gsm-Network (1) modules (3) map-TS-Code (19) version13 (13)}
+   gsm-Network (1) modules (3) map-TS-Code (19) version15 (15)}
 
 DEFINITIONS
 
index 993563b5ba74668e0680fd38c755f2a8023821f7..435b029ee613909b989978b1a7df1c56351b6b40 100644 (file)
@@ -885,7 +885,7 @@ if (!actx->value_ptr)
 
     length = tvb_length(parameter_tvb);
     name_len = tvb_get_guint8(parameter_tvb, 0);
-       apn_str = tvb_get_string(wmem_packet_scope(), parameter_tvb, 1, length - 1);
+    apn_str = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 1, length - 1, ENC_ASCII|ENC_NA);
     if (name_len < length-1) {
                for (;;) {
                        if (name_len >= length - 1)
index cad3e6c2ff467568888bb5769b0c735699399515..68006f3e2ee19ddea2990e2738f26d20fd560972 100644 (file)
@@ -66,7 +66,7 @@ PasswordPolicyResponseValue   B "1.3.6.1.4.1.42.2.27.8.5.1"  "passwordPolicy"
        if (!parameter_tvb)
                return offset;
 
-       object_identifier_id = tvb_get_string(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0));
+       object_identifier_id = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), ENC_UTF_8|ENC_NA);
        name = oid_resolved_from_string(object_identifier_id);
 
        if(name){
@@ -195,7 +195,7 @@ char *mechanism = NULL;
      * different type and/or mechanism.
      */
     if(!actx->pinfo->fd->flags.visited) {
-        mechanism = tvb_get_string(NULL, parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0));
+        mechanism = tvb_get_string_enc(NULL, parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), ENC_UTF_8|ENC_NA);
         ldap_info->first_auth_frame = 0;       /* not known until we see the bind reply */
         /*
          * If the mechanism in this request is an empty string (which is
@@ -331,7 +331,7 @@ ldap_conv_info_t *ldap_info;
      ldap_do_protocolop(actx->pinfo);
 
      if(parameter_tvb)
-        ldapstring = tvb_get_string(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0));
+        ldapstring = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0), ENC_UTF_8|ENC_NA);
 
      if(hf_index == hf_ldap_baseObject) {
        /* this is search - put it on the scanline */
@@ -486,7 +486,7 @@ ldap_conv_info_t *ldap_info;
         break;
 
     if(i == len) {
-      string = tvb_get_string(wmem_packet_scope(), next_tvb, 0, tvb_length_remaining(next_tvb, 0));
+      string = tvb_get_string_enc(wmem_packet_scope(), next_tvb, 0, tvb_length_remaining(next_tvb, 0), ENC_ASCII|ENC_NA);
       proto_item_set_text(actx->created_item, "AttributeValue: %%s", string);
     }
   }
index 43d2be91954fc68a00eeb90972a4c38240243fae..4a56d8d38aa98805d2269e69e37fbe53ba0f9750 100644 (file)
@@ -1680,7 +1680,7 @@ dissect_ldap_oid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
  *       proto_tree_add_oid() instead.
  */
 
-       oid=tvb_get_string(wmem_packet_scope(), tvb, 0, tvb_length(tvb));
+       oid=tvb_get_string_enc(wmem_packet_scope(), tvb, 0, tvb_length(tvb), ENC_UTF_8|ENC_NA);
        if(!oid){
                return;
        }
index 65240555bae46ad98b29669d7656e98a95e0dc74..12ab434bce37789263b11342c93d19ca2d9b4894 100644 (file)
@@ -1092,9 +1092,19 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
 
   col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
 
-#.FN_HDR SecurityModeFailure
+#.FN_BODY SecurityModeFailure
+  mac_lte_info *p_mac_lte_info;
+%(DEFAULT_BODY)s
+  /* Look for UE identifier */
+  p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
+
+  if (p_mac_lte_info != NULL) {
+    /* Inform PDCP that the UE failed to execute the securityModeCommand */
+    set_pdcp_lte_security_algorithms_failed(p_mac_lte_info->ueid);
+  }
 
   col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
+  
 
 #.FN_HDR UECapabilityInformation
 
@@ -1510,6 +1520,7 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
     /* We do release the configuration here instead of RRC Connection Release message */
     /* as the UE could have locally dropped the previous RRC Connection */
     set_mac_lte_drx_config_release(p_mac_lte_info->ueid, actx->pinfo);
+    /* TODO: also release PDCP security config here */
   }
 %(DEFAULT_BODY)s
 
@@ -1520,6 +1531,10 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
 %(DEFAULT_BODY)s
   p_security_algorithms = private_data_pdcp_security_algorithms(actx);
   p_security_algorithms->configuration_frame = actx->pinfo->fd->num;
+  p_security_algorithms->previous_configuration_frame = 0;
+  p_security_algorithms->previous_integrity = eia0;
+  p_security_algorithms->previous_ciphering = eea0;
+
   /* Look for UE identifier */
   p_pdcp_lte_info = (pdcp_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_pdcp_lte, 0);
   if (p_pdcp_lte_info != NULL) {
index 0ac58427aeab6a3890b3f0b124d48fa75f536161..f7e6c4b7ad52dddc8b50c57de3426366fc69b8fc 100644 (file)
@@ -1973,7 +1973,7 @@ dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree
     cb_data_page_tvb = tvb_new_subset(warning_msg_seg_tvb, offset, length, length);
     cb_data_tvb = dissect_cbs_data(dataCodingScheme, cb_data_page_tvb, tree, pinfo, 0);
     if (cb_data_tvb) {
-      str = tvb_get_string(wmem_packet_scope(), cb_data_tvb, 0, tvb_length(cb_data_tvb));
+      str = tvb_get_string_enc(wmem_packet_scope(), cb_data_tvb, 0, tvb_length(cb_data_tvb), ENC_UTF_8|ENC_NA);
       proto_tree_add_string_format(tree, hf_lte_rrc_warningMessageSegment_decoded_page, warning_msg_seg_tvb, offset, 83,
                                    str, "Decoded Page %u: %s", i+1, str);
     }
index 261a5cdd88f480c979a2d79941ea1ea9c767560b..e0130579d2c9be7feb87563bdabc2b43ef3f5482 100644 (file)
@@ -2,6 +2,10 @@
  * Routines for PKCS#12: Personal Information Exchange packet dissection
  * Graeme Lunt 2006
  *
+ * See "PKCS #12 v1.1: Personal Information Exchange Syntax":
+ *
+ *    http://www.emc.com/emc-plus/rsa-labs/pkcs/files/h11301-wp-pkcs-12v1-1-personal-information-exchange-syntax.pdf
+ *
  * $Id$
  *
  * Wireshark - Network traffic analyzer
@@ -111,7 +115,7 @@ generate_key_or_iv(unsigned int id, tvbuff_t *salt_tvb, unsigned int iter,
   cur_keylen = 0;
 
   salt_size = tvb_length(salt_tvb);
-  salt_p = tvb_get_string(wmem_packet_scope(), salt_tvb, 0, salt_size);
+  salt_p = (char *)tvb_memdup(wmem_packet_scope(), salt_tvb, 0, salt_size);
 
   if (pw == NULL)
     pwlen = 0;
@@ -140,70 +144,77 @@ generate_key_or_iv(unsigned int id, tvbuff_t *salt_tvb, unsigned int iter,
   else
     memset (p, 0, 64);
 
-  for (;;){
+  for (;;) {
       err = gcry_md_open(&md, GCRY_MD_SHA1, 0);
-      if (gcry_err_code(err)) {
-                 return FALSE;
-         }
-      for (i = 0; i < 64; i++) {
-                 unsigned char lid = id & 0xFF;
-                 gcry_md_write (md, &lid, 1);
-         }
+      if (gcry_err_code(err))
+        {
+          return FALSE;
+        }
+      for (i = 0; i < 64; i++)
+        {
+          unsigned char lid = id & 0xFF;
+          gcry_md_write (md, &lid, 1);
+       }
 
-         gcry_md_write(md, buf_i, pw ? 128 : 64);
+      gcry_md_write(md, buf_i, pw ? 128 : 64);
 
       gcry_md_final (md);
       memcpy (hash, gcry_md_read (md, 0), 20);
 
-         gcry_md_close (md);
+      gcry_md_close (md);
 
-         for (i = 1; i < iter; i++)
-                 gcry_md_hash_buffer (GCRY_MD_SHA1, hash, hash, 20);
+      for (i = 1; i < iter; i++)
+        gcry_md_hash_buffer (GCRY_MD_SHA1, hash, hash, 20);
 
       for (i = 0; i < 20 && cur_keylen < req_keylen; i++)
-                 keybuf[cur_keylen++] = hash[i];
+        keybuf[cur_keylen++] = hash[i];
 
-         if (cur_keylen == req_keylen) {
-                 gcry_mpi_release (num_b1);
-                 return TRUE;          /* ready */
-         }
+      if (cur_keylen == req_keylen)
+      {
+        gcry_mpi_release (num_b1);
+        return TRUE;           /* ready */
+      }
 
       /* need more bytes. */
       for (i = 0; i < 64; i++)
-                 buf_b[i] = hash[i % 20];
+        buf_b[i] = hash[i % 20];
 
-         n = 64;
+      n = 64;
 
-         rc = gcry_mpi_scan (&num_b1, GCRYMPI_FMT_USG, buf_b, n, &n);
+      rc = gcry_mpi_scan (&num_b1, GCRYMPI_FMT_USG, buf_b, n, &n);
 
-         if (rc != 0) {
-                 return FALSE;
-         }
+      if (rc != 0)
+        {
+          return FALSE;
+        }
 
-         gcry_mpi_add_ui (num_b1, num_b1, 1);
+      gcry_mpi_add_ui (num_b1, num_b1, 1);
 
-         for (i = 0; i < 128; i += 64) {
-                 gcry_mpi_t num_ij;
+      for (i = 0; i < 128; i += 64)
+        {
+          gcry_mpi_t num_ij;
 
-                 n = 64;
-                 rc = gcry_mpi_scan (&num_ij, GCRYMPI_FMT_USG, buf_i + i, n, &n);
+          n = 64;
+          rc = gcry_mpi_scan (&num_ij, GCRYMPI_FMT_USG, buf_i + i, n, &n);
 
-                 if (rc != 0) {
-                         return FALSE;
-                 }
+          if (rc != 0)
+            {
+              return FALSE;
+            }
 
-                 gcry_mpi_add (num_ij, num_ij, num_b1);
-                 gcry_mpi_clear_highbit (num_ij, 64 * 8);
+          gcry_mpi_add (num_ij, num_ij, num_b1);
+          gcry_mpi_clear_highbit (num_ij, 64 * 8);
 
-                 n = 64;
+          n = 64;
 
-                 rc = gcry_mpi_print (GCRYMPI_FMT_USG, buf_i + i, n, &n, num_ij);
-                 if (rc != 0){
-                         return FALSE;
-                 }
+          rc = gcry_mpi_print (GCRYMPI_FMT_USG, buf_i + i, n, &n, num_ij);
+          if (rc != 0)
+            {
+              return FALSE;
+            }
 
-                 gcry_mpi_release (num_ij);
-         }
+          gcry_mpi_release (num_ij);
+        }
   }
 }
 
@@ -241,7 +252,7 @@ int PBE_decrypt_data(const char *object_identifier_id_param, tvbuff_t *encrypted
                return FALSE;
        }
 
-       encryption_algorithm = actx->external.direct_reference;
+       encryption_algorithm = x509af_get_last_algorithm_id();
 
        /* these are the only encryption schemes we understand for now */
        if(!strcmp(encryption_algorithm, PKCS12_PBE_3DES_SHA1_OID)) {
@@ -307,7 +318,7 @@ int PBE_decrypt_data(const char *object_identifier_id_param, tvbuff_t *encrypted
        datalen = tvb_length(encrypted_tvb);
        clear_data = (char *)g_malloc(datalen);
 
-       err = gcry_cipher_decrypt (cipher, clear_data, datalen, tvb_get_string(wmem_packet_scope(), encrypted_tvb, 0, datalen), datalen);
+       err = gcry_cipher_decrypt (cipher, clear_data, datalen, (char *)tvb_memdup(wmem_packet_scope(), encrypted_tvb, 0, datalen), datalen);
        if (gcry_err_code (err)) {
 
                proto_item_append_text(item, " [Failed to decrypt with password preference]");
@@ -413,7 +424,7 @@ static void dissect_AuthenticatedSafe_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info
   if((offset = strip_octet_string(tvb)) > 0)
     dissect_pkcs12_AuthenticatedSafe(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkcs12_AuthenticatedSafe_PDU);
   else
-       proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
+    proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
 }
 
 static void dissect_SafeContents_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -444,7 +455,7 @@ void proto_register_pkcs12(void) {
 
   /* List of fields */
   static hf_register_info hf[] = {
-       { &hf_pkcs12_X509Certificate_PDU,
+    { &hf_pkcs12_X509Certificate_PDU,
       { "X509Certificate", "pkcs12.X509Certificate",
         FT_NONE, BASE_NONE, NULL, 0,
         "pkcs12.X509Certificate", HFILL }},
index 83717116d1a6b96105b02e1af556adbcc904c8df..6375ab29322fcfe41a788fb5c84393900fbe331a 100644 (file)
@@ -272,6 +272,9 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
                        /* ROS won't do this for us */
                        session->ros_op = (ROS_OP_INVOKE | ROS_OP_ARGUMENT);
                        /*offset=*/dissect_ber_external_type(FALSE, tree, next_tvb, 0, &asn1_ctx, -1, call_rtse_external_type_callback);
+                       top_tree = NULL;
+                       /* Return other than 0 to indicate that we handled this packet */
+                       return 1;
                } else {
                        offset = tvb_length (tvb);
                }
index 59c09ed0d364f6bb7da32f5f95d1c47fa87a0709..a1a3cf7857cfda34d8bf07ab79adfa2d6773d86e 100644 (file)
@@ -158,7 +158,7 @@ dissect_sabp_cb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                if (unpacked_tvb != NULL){
                        if (tree != NULL){
                                proto_tree *cbs_page_subtree = proto_item_add_subtree(cbs_page_item, ett_sabp_cbs_page_content);
-                               proto_tree_add_string(cbs_page_subtree, hf_sabp_cbs_page_content, unpacked_tvb, 0, len, tvb_get_string(wmem_packet_scope(), unpacked_tvb, 0, len));
+                               proto_tree_add_item(cbs_page_subtree, hf_sabp_cbs_page_content, unpacked_tvb, 0, len, ENC_UTF_8|ENC_NA);
                        }
                }
 
index ee588e18c6a5d379d9f4cd2dc8f59df804ccb28a..d47581a528cdc1a67f27024d1e962598882addf6 100644 (file)
@@ -430,7 +430,7 @@ dissect_snmp_variable_date_and_time(proto_tree *tree,int hfid, tvbuff_t *tvb, in
              minutes,
              seconds,
              deci_seconds,
-             tvb_get_string(wmem_packet_scope(),tvb,offset+8,1),
+             tvb_get_string_enc(wmem_packet_scope(),tvb,offset+8,1,ENC_ASCII|ENC_NA),
              hour_from_utc,
              min_from_utc);
     }else{
index 7062ca7ac88fbaad59a5478d312cce269ba94120..438fd39aef0d07cba40448b21b7127f07c33b411 100644 (file)
@@ -154,7 +154,7 @@ RegistryAllocateHandleResponse/result       AllocateHandleResponseResult
 
        if(next_tvb) {
 
-       ns = tvb_get_string(NULL, t124NSIdentifier, 0, tvb_length(t124NSIdentifier));
+       ns = tvb_get_string_enc(NULL, t124NSIdentifier, 0, tvb_length(t124NSIdentifier), ENC_ASCII|ENC_NA);
        if(ns != NULL) {
                dissector_try_string(t124_ns_dissector_table, ns, next_tvb, actx->pinfo, top_tree, NULL);
                g_free(ns);
index 7d20220a68badc10557757eb4b4a8f8336342c64..9641aa9bcc845c3cfbddf2fb9139217cc2b006b5 100644 (file)
@@ -53,8 +53,14 @@ static int hf_x509af_extension_id = -1;
 /* Initialize the subtree pointers */
 static gint ett_pkix_crl = -1;
 #include "packet-x509af-ett.c"
+static const char *algorithm_id;
 #include "packet-x509af-fn.c"
 
+const char *x509af_get_last_algorithm_id(void) {
+  return algorithm_id;
+}
+
+
 static int
 dissect_pkix_crl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
 {
index 15fa07af4eb9cb3c3d6178c31b3bbd07d1a3124e..41d0dd8612650bb3227327e07c5ae83b72502d84 100644 (file)
@@ -28,5 +28,7 @@
 
 #include "packet-x509af-exp.h"
 
+extern const char* x509af_get_last_algorithm_id(void);
+
 #endif  /* PACKET_X509AF_H */
 
index 1c092bd21e747bdda3b62f87b9797be4e0dcf028..b532a45b9fcbbc70c9f5b14f130f6211848fdb3d 100644 (file)
@@ -72,6 +72,8 @@ CertificateList/signedCertificateList/revokedCertificates/_item/userCertificate
 
   %(DEFAULT_BODY)s
 
+  algorithm_id = actx->external.direct_reference;
+
   if(actx->external.direct_reference) {
     name = oid_resolved_from_string(actx->external.direct_reference);
 
index 1e6b5fece1985e08c0dbdb84b07dc341f0c5c46a..c3de1f74161660f675453b275b956c4f2159c92a 100644 (file)
@@ -410,15 +410,7 @@ time_string(time_t timer, capture_info *cf_info, gboolean want_lf)
       g_snprintf(time_string_buf, 20, "%lu%s", (unsigned long)timer, lf);
       return time_string_buf;
     } else {
-#if (defined _WIN32) && (_MSC_VER < 1500)
-      /* calling localtime(), and thus ctime(), on MSVC 2005 with huge values causes it to crash */
-      /* XXX - find the exact value that still does work */
-      /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-      if (timer > 2000000000) {
-        time_string_ctime = NULL;
-      } else
-#endif
-        time_string_ctime = ctime(&timer);
+      time_string_ctime = ctime(&timer);
       if (time_string_ctime == NULL) {
         g_snprintf(time_string_buf, 20, "Not representable%s", lf);
         return time_string_buf;
index 81cbb1204f72eaaed92123f34b9983244e821210..01717e673439e24e41011eaf1a03b8338d5ebd54 100644 (file)
@@ -1793,15 +1793,17 @@ sync_pipe_input_cb(gint source, gpointer user_data)
         /* (an error message doesn't mean we have to stop capturing) */
         break;
     case SP_BAD_FILTER: {
-        char *ch;
-        int indx;
+        char *ch=NULL;
+        int indx=0;
 
         ch = strtok(buffer, ":");
-        indx = (int)strtol(ch, NULL, 10);
-        ch = strtok(NULL, ":");
+        if (ch) {
+           indx = (int)strtol(ch, NULL, 10);
+           ch = strtok(NULL, ":");
+        }
         capture_input_cfilter_error_message(cap_session, indx, ch);
-         /* the capture child will close the sync_pipe, nothing to do for now */
-         break;
+        /* the capture child will close the sync_pipe, nothing to do for now */
+        break;
         }
     case SP_DROPS:
         capture_input_drops(cap_session, (guint32)strtoul(buffer, NULL, 10));
index 7c746c7660c2e3fd2ecec15e36c3cae45e7c6d8b..c3735e0ba5ac0c1a109c6146261640c3a301dcd6 100644 (file)
@@ -104,4 +104,3 @@ MACRO( ASCIIDOC2PDF _output _asciidocsource _conffile _paper )
             ${_otherdependencies}
     )
 ENDMACRO()
-
diff --git a/cmake/modules/FindChocolatey.cmake b/cmake/modules/FindChocolatey.cmake
new file mode 100644 (file)
index 0000000..d523ad6
--- /dev/null
@@ -0,0 +1,36 @@
+# FindChocolatey
+# ----------
+#
+# this module looks for Cygwin
+
+# This code was copied from
+# http://cmake.org/gitweb?p=cmake.git;a=blob_plain;f=Modules/FindCygwin.cmake;hb=HEAD
+# and modified.
+#
+# Its toplevel COPYING file starts with:
+#=============================================================================
+# Copyright 2001-2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+if (WIN32)
+  find_path(CHOCOLATEY_INSTALL_PATH
+    choco.bat
+    PATH "C:/Chocolatey" ENV ChocolateyInstall
+    PATH_SUFFIXES bin
+    DOC "Chocolatey installation path"
+    NO_DEFAULT_PATH
+  )
+
+  mark_as_advanced(
+    CHOCOLATEY_INSTALL_PATH
+  )
+endif ()
index 955ae3849a0f6d20141f6f8187c536aa6fad317f..f463e3b7a6d7f55bc1c4855b39b387cb282b61c7 100644 (file)
@@ -5,13 +5,22 @@
 #
 
 INCLUDE(FindCygwin)
+#INCLUDE(FindChocolatey)
+
+# Chocolatey's C:\Chocolatey\bin\win_flex and -\win_bison are
+# currently unusable without some manual adjustments to the
+# win_flex and win_bison wrapper scripts. Calling the executables
+# directly should work.
 
 FIND_PROGRAM(LEX_EXECUTABLE
   NAMES
     flex
+    win_flex
     lex
   PATHS
     ${CYGWIN_INSTALL_PATH}/bin
+#    ${CHOCOLATEY_INSTALL_PATH}/bin
+#    ${CHOCOLATEY_INSTALL_PATH}/lib/winflexbison.2.4.1.20140103/tools
     /bin
     /usr/bin
     /usr/local/bin
diff --git a/cmake/modules/FindSETCAP.cmake b/cmake/modules/FindSETCAP.cmake
new file mode 100644 (file)
index 0000000..4c77120
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# $Id$
+#
+# Look for the Linux setcap command (capabilities)
+#
+
+find_program( SETCAP_EXECUTABLE
+  NAMES
+    setcap
+  PATHS
+    /bin
+    /usr/bin
+    /usr/local/bin
+    /sbin
+)
+
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( SETCAP DEFAULT_MSG SETCAP_EXECUTABLE )
+
+mark_as_advanced( SETCAP_EXECUTABLE )
+
index f71650b0367508539e4e34a6e73e4b4741628151..1f374d274a8f3dce3438a29a173e89d426abb5e7 100644 (file)
@@ -6,13 +6,22 @@
 #
 
 INCLUDE(FindCygwin)
+#INCLUDE(FindChocolatey)
+
+# Chocolatey's C:\Chocolatey\bin\win_flex and -\win_bison are
+# currently unusable without some manual adjustments to the
+# win_flex and win_bison wrapper scripts. Calling the executables
+# directly should work.
 
 FIND_PROGRAM(YACC_EXECUTABLE
   NAMES
     bison
+    win_bison
     yacc
   PATHS
     ${CYGWIN_INSTALL_PATH}/bin
+#    ${CHOCOLATEY_INSTALL_PATH}/bin
+#    ${CHOCOLATEY_INSTALL_PATH}/lib/winflexbison.2.4.1.20140103/tools
     /bin
     /usr/bin
     /usr/local/bin
index aa2097ae1c027a987705965bd265893f129c627b..e25c554d283cf0fd4ff314e18ad01d059e578fb7 100644 (file)
@@ -100,20 +100,6 @@ PROCESSOR_ARCHITECTURE=amd64
 # For the different Studios, see: http://en.wikipedia.org/wiki/Microsoft_Visual_Studio
 # Only one of the following MSVC_VARIANT settings should be used
 
-# "Microsoft Visual Studio 2005"
-# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll
-#MSVC_VARIANT=MSVC2005
-
-# "Microsoft Visual C++ 2005 Express Edition"
-# needs additional Platform SDK installation
-# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll
-#MSVC_VARIANT=MSVC2005EE
-
-# "Microsoft .Net Framework 2.0 SDK"
-# needs additional Platform SDK installation
-# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll
-#MSVC_VARIANT=DOTNET20
-
 # "Microsoft Visual Studio 2008"
 # Visual C++ 9.0, _MSC_VER 1500, msvcr90.dll
 #MSVC_VARIANT=MSVC2008
@@ -299,6 +285,7 @@ GDK_DLL=libgdk-3-0.dll
 GTK_DLL=libgtk-3-0.dll
 PKG_SUFIX=ws
 GTK_PKG=3.4.4-2.1
+#GTK_PKG=3.6.1-1.1
 !ENDIF
 
 #
@@ -311,6 +298,7 @@ GTK_PKG=3.4.4-2.1
 GTK_INST_VERSION=2.24
 !ELSE
 GTK_INST_VERSION=3.4
+#GTK_INST_VERSION=3.6
 !ENDIF
 
 #
@@ -543,6 +531,7 @@ GDK_DLL=libgdk-3-0.dll
 GTK_DLL=libgtk-3-0.dll
 PKG_SUFIX=ws
 GTK_PKG=3.4.4-2.1
+#GTK_PKG=3.6.1-1.1
 !ENDIF
 
 #
@@ -555,7 +544,8 @@ GTK_PKG=3.4.4-2.1
 #GTK_INST_VERSION=2.16
 GTK_INST_VERSION=2.24
 !ELSE
-GTK_INST_VERSION=3.4
+#GTK_INST_VERSION=3.4
+GTK_INST_VERSION=3.6
 !ENDIF
 
 #
@@ -788,15 +778,25 @@ POD2HTML=$(SH) pod2html
 # command for sed (cygwin's sed recommended)
 SED=sed
 
-# command for lex/flexx. Cygwin's flex recommended. Chocolatey has a
-# "Win flex-bison" package but it is currently unusable without some
-# manual adjustments to the win_flex and win_bison wrapper scripts.
-# This is called by tools/runlex.sh and must be a UNIX-style path
+# Command for lex/flexx. Cygwin's flex or Chocolatey's win_flex
+# recommended.
+# Absolute or relative paths must be Windows-style
+
+# Chocolatey's C:\Chocolatey\bin\win_flex and -\win_bison are
+# currently unusable without some manual adjustments to the
+# win_flex and win_bison wrapper scripts. Calling the executables
+# directly should work.
+
 #LEX=win_flex
+#LEX=C:\Chocolatey\lib\winflexbison.2.4.1.20140103\tools\win_flex
 LEX=flex
 
-# command for yacc/bison (Cygwin's bison recommended, see flex comments above)
+# Command for yacc/bison. Cygwin's bison or Chocolatey's win_bison
+# recommended.
+# Absolute or relative paths must be Windows-style
+
 #YACC=win_bison
+#YACC=C:\Chocolatey\lib\winflexbison.2.4.1.20140103\tools\win_bison
 YACC=bison
 
 # Commands to convert UNIX line endings to DOS/Windows
@@ -1352,7 +1352,7 @@ NEED_JPEG_DLL=USE
 NEED_TIFF_DLL=USE
 NEED_LZMA_DLL=USE
 
-!ELSEIF "$(GTK_INST_VERSION)" == "3.4"
+!ELSEIF "$(GTK_INST_VERSION)" == "3.4" || "$(GTK_INST_VERSION)" == "3.6"
 
 # GTK+
 ## Note: If Wireshark is ever to be built with Gtk >= 3.10
index 26dad520b31ea90b8547529107870c25b1f496c1..3843403a4ab00cab85c53201e37668a54010bb5d 100644 (file)
@@ -835,7 +835,6 @@ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
-AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
index 57bd54a819e265154380fbbbc0d23a691cf716a5..3aa30068b11351dd2ca9fae7c91bda11d4ce9493 100644 (file)
@@ -22,7 +22,6 @@
        <!ENTITY gqpolicy               SYSTEM "gqpolicy.xml">
        <!ENTITY etsie2e4               SYSTEM "etsie2e4.xml">
        <!ENTITY Ericsson               SYSTEM "Ericsson.xml">
-       <!ENTITY Tango                  SYSTEM "Tango.xml">
        <!ENTITY mobileipv6             SYSTEM "mobileipv6.xml">
        <!ENTITY Cisco                  SYSTEM "Cisco.xml">
        <!ENTITY Vodafone               SYSTEM "Vodafone.xml">
                        <type type-name="UTF8String"/>
                </avp>
                <avp name="QoS-Subscribed" code="1404" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
-                       <type type-name="UTF8String"/>
+                       <type type-name="OctetString"/>
                </avp>
                <avp name="ULR-Flags" code="1405" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                                <gavp name="KASME"/>
                        </grouped>
                </avp>
-               <avp name="UMTS-Vector" code="1415" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="UTRAN-Vector" code="1415" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Item-Number"/>
                                <gavp name="RAND"/>
                        <enum name="FALSE" code="0"/>
                        <enum name="TRUE" code="1"/>
                </avp>
-               <avp name="IMS-Voice-Over-PSSessions-Supported" code="1492"  vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="IMS-Voice-Over-PS-Sessions-Supported" code="1492"  mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="NOT_SUPPORTED" code="0"/>
                        <enum name="SUPPORTED" code="1"/>
                </avp>
-               <avp name="Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions" code="1493" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="Homogeneous-Support-of-IMS-Voice-Over-PS-Sessions" code="1493"  mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="NOT_SUPPORTED" code="0"/>
                        <enum name="SUPPORTED" code="1"/>
                </avp>
-               <avp name="Last-UE-Activity-Time" code="1494" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="Last-UE-Activity-Time" code="1494" mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <type type-name="Time"/>
                </avp>
-               <avp name="EPS-User-State" code="1495" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="EPS-User-State" code="1495"  mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <grouped>
                                <gavp name="MME-User-State"/>
                                <gavp name="SGSN-User-State"/>
                        </grouped>
                </avp>
-               <avp name="EPS-Location-Information" code="1496" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="EPS-Location-Information" code="1496" mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <grouped>
                                <gavp name="MME-Location-Information"/>
                                <gavp name="SGSN-Location-Information"/>
                        </grouped>
                </avp>
-               <avp name="MME-User-State" code="1497" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="MME-User-State" code="1497" mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <grouped>
                                <gavp name="User-State"/>
                        </grouped>
                </avp>
-               <avp name="SGSN-User-State" code="1498" mandatory="must" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="SGSN-User-State" code="1498" mandatory="mustnot" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
                        <grouped>
                                <gavp name="User-State"/>
                        </grouped>
                </avp>
-               <avp name="User-State" code="1499" vendor-bit="must" may-encrypt="no" vendor-id="TGPP">
+               <avp name="User-State" code="1499" vendor-bit="mustnot" may-encrypt="no" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="DETACHED" code="0"/>
                        <enum name="ATTACHED_NOT_REACHABLE_FOR_PAGING" code="1"/>
                Note: The AVP codes from 1508 to 1599 are reserved for TS 29.273
                -->
 
-               <avp name="MME-Location-Information" code="1600" vendor-bit="must" vendor-id="TGPP">
+               <avp name="MME-Location-Information" code="1600" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="E-UTRAN-Cell-Global-Identity"/>
                                <gavp name="Tracking-Area-Identity"/>
                                <gavp name="Age-Of-Location-Information"/>
                        </grouped>
                </avp>
-               <avp name="SGSN-Location-Information" code="1601" vendor-bit="must" vendor-id="TGPP">
+               <avp name="SGSN-Location-Information" code="1601" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Cell-Global-Identity"/>
                                <gavp name="Location-Area-Identity"/>
                                <gavp name="Age-Of-Location-Information"/>
                        </grouped>
                </avp>
-               <avp name="E-UTRAN-Cell-Global-Identity" code="1602" vendor-bit="must" vendor-id="TGPP">
+               <avp name="E-UTRAN-Cell-Global-Identity" code="1602" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Tracking-Area-Identity" code="1603" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Tracking-Area-Identity" code="1603" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Cell-Global-Identity" code="1604" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Cell-Global-Identity" code="1604" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Routing-Area-Identity" code="1605" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Routing-Area-Identity" code="1605" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Location-Area-Identity" code="1606" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Location-Area-Identity" code="1606" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Service-Area-Identity" code="1607" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Service-Area-Identity" code="1607" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Geographical-Information" code="1608" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Geographical-Information" code="1608" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Geodetic-Information" code="1609" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Geodetic-Information" code="1609" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Current-Location-Retrieved" code="1610" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Current-Location-Retrieved" code="1610" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="ACTIVE-LOCATION-RETRIEVAL" code="0"/>
                </avp>
-               <avp name="Age-Of-Location-Information" code="1611" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Age-Of-Location-Information" code="1611" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Active-APN" code="1612" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Active-APN" code="1612" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Context-Identifier"/>
                                <gavp name="Service-Selection"/>
                                <gavp name="Specific-APN-Info"/>
                        </grouped>
                </avp>
-               <avp name="SIPTO-Permission" code="1613" vendor-bit="must" vendor-id="TGPP">
+               <avp name="SIPTO-Permission" code="1613" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="SIPTO_ALLOWED" code="0"/>
                        <enum name="SIPTO_NOTALLOWED" code="1"/>
                </avp>
-               <avp name="Error-Diagnostic" code="1614" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Error-Diagnostic" code="1614" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="GPRS_DATA_SUBSCRIBED" code="0"/>
                        <enum name="NO_GPRS_DATA_SUBSCRIBED" code="1"/>
                        <enum name="ODB-HPLMN-APN" code="3"/>
                        <enum name="ODB-VPLMN-APN" code="4"/>
                </avp>
-               <avp name="UE-SRVCC-Capability" code="1615" vendor-bit="must" vendor-id="TGPP">
+               <avp name="UE-SRVCC-Capability" code="1615" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="UE-SRVCC-NOT-SUPPORTED" code="0"/>
                        <enum name="UE-SRVCC-SUPPORTED" code="1"/>
                </avp>
-               <avp name="MPS-Priority" code="1616" vendor-bit="must" vendor-id="TGPP">
+               <avp name="MPS-Priority" code="1616" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="VPLMN-LIPA-Allowed" code="1617" vendor-bit="must" vendor-id="TGPP">
+               <avp name="VPLMN-LIPA-Allowed" code="1617" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="LIPA-NOTALLOWED" code="0"/>
                        <enum name="LIPA-ALLOWED" code="1"/>
                </avp>
-               <avp name="LIPA-Permission" code="1618" vendor-bit="must" vendor-id="TGPP">
+               <avp name="LIPA-Permission" code="1618" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="LIPA-PROHIBITED" code="0"/>
                        <enum name="LIPA-ONLY" code="1"/>
                        <enum name="LIPA-CONDITIONAL" code="2"/>
                </avp>
-               <avp name="Subscribed-Periodic-RAU-TAU-Timer" code="1619" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Subscribed-Periodic-RAU-TAU-Timer" code="1619" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Ext-PDP-Type" code="1620" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Ext-PDP-Type" code="1620" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="OctetString"/>
                </avp>
-               <avp name="Ext-PDP-Address" code="1621" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Ext-PDP-Address" code="1621" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="IPAddress"/>
                </avp>
-               <avp name="MDT-Configuration" code="1622" vendor-bit="must" vendor-id="TGPP">
+               <avp name="MDT-Configuration" code="1622" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Job-Type"/>
                                <gavp name="Area-Scope"/>
                                <gavp name="Logging-Duration"/>
                        </grouped>
                </avp>
-               <avp name="Job-Type" code="1623" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Job-Type" code="1623" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="Immediate-MDT-only" code="0"/>
                        <enum name="Logged-MDT-only" code="1"/>
                        <enum name="Immediate-MDT-and-Trace" code="3"/>
                        <enum name="RLF-reports-only" code="4"/>
                </avp>
-               <avp name="Area-Scope" code="1624" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Area-Scope" code="1624" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Cell-Global-Identity"/>
                                <gavp name="E-UTRAN-Cell-Global-Identity"/>
                                <gavp name="Tracking-Area-Identity"/>
                        </grouped>
                </avp>
-               <avp name="List-Of-Measurements" code="1625" vendor-bit="must" vendor-id="TGPP">
+               <avp name="List-Of-Measurements" code="1625" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Reporting-Trigger" code="1626" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Reporting-Trigger" code="1626" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Report-Interval" code="1627" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Report-Interval" code="1627" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="UMTS_250_ms" code="0"/>
                        <enum name="UMTS_500_ms" code="1"/>
                        <enum name="LTE_1800000_ms" code="26"/>
                        <enum name="LTE_3600000_ms" code="27"/>
                </avp>
-               <avp name="Report-Amount" code="1628" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Report-Amount" code="1628" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="1" code="0"/>
                        <enum name="2" code="1"/>
                        <enum name="64" code="6"/>
                        <enum name="infinity" code="7"/>
                </avp>
-               <avp name="Event-Threshold-RSRP" code="1629" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Event-Threshold-RSRP" code="1629" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Event-Threshold-RSRQ" code="1630" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Event-Threshold-RSRQ" code="1630" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Logging-Interval" code="1631" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Logging-Interval" code="1631" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="1.28" code="0"/>
                        <enum name="2.56" code="1"/>
                        <enum name="40.96" code="6"/>
                        <enum name="61.44" code="7"/>
                </avp>
-               <avp name="Logging-Duration" code="1632" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Logging-Duration" code="1632" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="600_sec" code="0"/>
                        <enum name="1200_sec" code="1"/>
                        <enum name="NOT_RELAY_NODE" code="0"/>
                        <enum name="RELAY_NODE" code="1"/>
                </avp>
-               <avp name="MDT-User-Consent" code="1634" vendor-bit="must" vendor-id="TGPP">
+               <avp name="MDT-User-Consent" code="1634" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="CONSENT_NOT_GIVEN" code="0"/>
                        <enum name="CONSENT_GIVEN" code="1"/>
                </avp>
-               <avp name="PUR-Flags" code="1635" vendor-bit="must" vendor-id="TGPP">
+               <avp name="PUR-Flags" code="1635" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Unsigned32"/>
                </avp>
-               <avp name="Subscribed-VSRVCC" code="1636" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Subscribed-VSRVCC" code="1636" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <type type-name="Enumerated"/>
                        <enum name="VSRVCC_SUBSCRIBED" code="0"/>
                </avp>
-               <avp name="Equivalent-PLMN-List" code="1637" vendor-bit="must" vendor-id="TGPP">
+               <avp name="Equivalent-PLMN-List" code="1637" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
                        <grouped>
                                <gavp name="Visited-PLMN-Id"/>
                        </grouped>
                </avp>
-    <avp name="CLR-Flags" code="1638" vendor-bit="must" vendor-id="TGPP">
+    <avp name="CLR-Flags" code="1638" mandatory="mustnot" vendor-bit="must" vendor-id="TGPP">
       <type type-name="Unsigned32"/>
     </avp>
     <avp name="UVR-Flags" code="1639" vendor-bit="must" vendor-id="TGPP">
index 2596661d3bf5fa01d3363c046b01e7fd1247588b..e2e9ae2b68d29516644ee7bec16c3a39c105f8ee 100644 (file)
@@ -1631,13 +1631,6 @@ proto_tree_add_text()
 ---------------------
 proto_tree_add_text() is used to add a label to the GUI tree.  It will
 contain no value, so it is not searchable in the display filter process.
-This function was needed in the transition from the old-style proto_tree
-to this new-style proto_tree so that Wireshark would still decode all
-protocols w/o being able to filter on all protocols and fields.
-Otherwise we would have had to cripple Wireshark's functionality while we
-converted all the old-style proto_tree calls to the new-style proto_tree
-calls.  In other words, you should not use this in new code unless you've got
-a specific reason (see below).
 
 This can (and should only) be used for items with subtrees, which may not
 have values themselves - the items in the subtree are the ones with values.
index e26b16ea4ddeb91ba153b8dc7319e9531c4d67c0..a50bc8424031d6b7b289e93fe00d39a8989791b7 100644 (file)
@@ -27,8 +27,8 @@ distribution. This is available online at
 
 2. Licensing.
 
-Wireshark is released under the GNU General Public License version 2.
-Make sure your package complies with this license.
+Wireshark is released under the GNU General Public License version 2 or
+newer.  Make sure your package complies with this license.
 
 3. Privileges.
 
index c99e4e58cf6797d3d28acb04495df34308e76341..3fe51898c906054f3fd7230817fec51e6c74a5cb 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 #
 
+find_package( FOP ) # Call before XSLTPROC
+find_package( LYNX )
+find_package( XSLTPROC )
+find_package( XMLLINT )
+find_package( ASCIIDOC )
 
 set(WSUG_FILES
        wsug_src/WSUG_app_files.xml
@@ -180,18 +185,25 @@ set(WSDG_FILES
        wsdg_src/WSDG_chapter_build_intro.xml
        wsdg_src/WSDG_chapter_capture.xml
        wsdg_src/WSDG_chapter_dissection.xml
-       wsdg_src/WSDG_chapter_env_intro.xml
+       wsdg_generated_src/WSDG_chapter_env_intro.xml
        wsdg_src/WSDG_chapter_libraries.xml
-       wsdg_src/WSDG_chapter_quick_setup.xml
-       wsdg_src/WSDG_chapter_sources.xml
+       wsdg_generated_src/WSDG_chapter_quick_setup.xml
+       wsdg_generated_src/WSDG_chapter_sources.xml
        wsdg_src/WSDG_chapter_tools.xml
        wsdg_src/WSDG_chapter_userinterface.xml
        wsdg_src/WSDG_chapter_works.xml
        wsdg_src/WSDG_meta_info.xml
-       wsdg_src/WSDG_preface.xml
+       wsdg_generated_src/WSDG_preface.xml
        ws.css
 )
 
+set(WSDG_ASCIIDOC_FILES
+       wsdg_src/WSDG_chapter_env_intro.asciidoc
+       wsdg_src/WSDG_chapter_quick_setup.xml
+       wsdg_src/WSDG_chapter_sources.asciidoc
+       wsdg_src/WSDG_preface.asciidoc
+)
+
 set(WSDG_GRAPHICS
        wsdg_graphics/ws-capture-sync.dia
        wsdg_graphics/ws-capture-sync.png
@@ -208,18 +220,63 @@ set(WSDG_GRAPHICS
 # user-guide.xml must be first in the list
 set(WSUG_SOURCE
        user-guide.xml
-       svn_version.xml
+       git_version.xml
        wsluarm
        ${WSUG_FILES}
        ${WSUG_GRAPHICS}
 )
 
+SET( WSDG_GENERATED_FILES )
+# Convert an AsciiDoc document to a Docbook chapter
+# .asciidoc -> whole book (.dbk) -> chapter (.xml)
+MACRO( ASCIIDOC2CHAPTER _asciidocsource _conffile )
+       GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
+       set( A2X_HTML_OPTS --stylesheet=ws.css )
+       set( _output_xml ${_source_base_name}.xml )
+       set( _output_dbk ${_source_base_name}.dbk )
+       ADD_CUSTOM_TARGET(${_output_xml}
+               # XXX - Output to a specific directory, e.g. wsdg_generated_src
+               WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+               COMMAND ${A2X_EXECUTABLE}
+                       --verbose
+                       --destination-dir=${CMAKE_CURRENT_BINARY_DIR}
+                       --asciidoc-opts="--conf-file=${CMAKE_CURRENT_SOURCE_DIR}/${_conffile}"
+                       --no-xmllint
+                       --fop
+                       --format=docbook --doctype=book
+                       ${A2X_HTML_OPTS}
+                       ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+               COMMAND mv
+                       ${_output_xml}
+                       ${_output_dbk}
+               COMMAND ${XMLLINT_EXECUTABLE}
+                       --xpath '//chapter | //preface'
+                       ${_output_dbk}
+                       > ${_output_xml}
+               DEPENDS
+                       ${_outptudir}
+       ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+       ${CMAKE_CURRENT_SOURCE_DIR}/${_conffile}
+       )
+LIST( APPEND WSDG_GENERATED_FILES ${CMAKE_CURRENT_BINARY_DIR}/${_output_xml} )
+ENDMACRO()
+
+FOREACH(ASCIIDOCFILE ${WSDG_ASCIIDOC_FILES})
+       ASCIIDOC2CHAPTER(
+               ${ASCIIDOCFILE}
+               asciidoc.conf
+       )
+ENDFOREACH()
+
+ADD_CUSTOM_TARGET( wsdg_generated_src DEPENDS ${WSDG_GENERATED_FILES} )
+
 # developer-guide.xml must be first in the list
 set(WSDG_SOURCE
        developer-guide.xml
-       svn_version.xml
+       git_version.xml
        ${WSDG_FILES}
        ${WSDG_GRAPHICS}
+        wsdg_generated_src
 )
 
 set(WSLUA_MODULES
@@ -234,19 +291,13 @@ set(WSLUA_MODULES
        ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_util.c
 )
 
-find_package( FOP ) # Call before XSLTPROC
-find_package( LYNX )
-find_package( XSLTPROC )
-find_package( XMLLINT )
-find_package( ASCIIDOC )
-
 ADD_CUSTOM_COMMAND(
        OUTPUT
-               svn_version.xml
+               git_version.xml
        COMMAND ${SH}
-               ${CMAKE_CURRENT_SOURCE_DIR}/check_svn_version.sh
+               ${CMAKE_CURRENT_SOURCE_DIR}/check_git_version.sh
        DEPENDS
-               ${CMAKE_CURRENT_SOURCE_DIR}/check_svn_version.sh
+               ${CMAKE_CURRENT_SOURCE_DIR}/check_git_version.sh
 )
 
 add_custom_target(
index fc0d0b4a0b4ff5160417a1390c697b2e8ab6bea0..1ff11bde2485491fbcdb0b8e3b670a4f8de37272 100644 (file)
@@ -55,12 +55,22 @@ else
        @false
 endif
 
+# Convert an AsciiDoc document to a Docbook chapter
+# .asciidoc -> whole book (.dbk) -> chapter (.xml)
+.asciidoc.xml:
+       $(A2X) --verbose \
+               --asciidoc-opts="--conf-file=asciidoc.conf" \
+               --no-xmllint \
+               --format=docbook --doctype=book \
+               $<
+       mv $*.xml $*.dbk
+       xmllint --xpath '//chapter | //preface' $*.dbk > $@
 
 if HAVE_XSLTPROC
-ALL_TARGETS=svn_version_check wsug wsdg release_notes
+ALL_TARGETS=git_version_check wsug wsdg release_notes
 else
 # if we don't have XSLTPROC, there's nothing to do...
-ALL_TARGETS=svn_version_check
+ALL_TARGETS=git_version_check
 endif
 
 all: $(ALL_TARGETS)
@@ -71,10 +81,10 @@ all: $(ALL_TARGETS)
 # FORCE is the portable version of .PHONY
 FORCE:
 
-svn_version_check: FORCE
-       cat $(srcdir)/check_svn_version.sh | tr -d '\015' | /bin/bash
+git_version_check: FORCE
+       cat $(srcdir)/check_git_version.sh | tr -d '\015' | /bin/bash
 
-svn_version.xml: svn_version_check
+git_version.xml: git_version_check
 
 # Wireshark User Guide
 if HAVE_FOP
@@ -233,6 +243,8 @@ release-notes.txt: $(RELEASE_NOTES_SOURCE)
 news: release-notes.txt
        cp release-notes.txt ../NEWS
 
+# Apparently we can only run one instance of a2x at a time.
+.NOTPARALLEL: release-notes-us.pdf release-notes-a4.pdf
 # create pdf file, portrait pages on US letter paper
 release-notes-us.pdf: $(RELEASE_NOTES_SOURCE) custom_layer_pdf.xsl
        @ echo --- RELEASE NOTES - PDF US LETTER PAPER ---
@@ -256,9 +268,9 @@ clean-local:
 
 EXTRA_DIST = \
        $(WSUG_SOURCE)          \
-       $(WSDG_SOURCE)          \
+       $(WSDG_DIST)            \
        $(RELEASE_NOTES_SOURCE) \
-       check_svn_version.sh    \
+       check_git_version.sh    \
        docbook.vcproj          \
        dfilter2xml.pl          \
        make-wsluarm.pl         \
index 587feb6a88190346b180a3f5e9c1102f67f8db76..30d7519d6ab12a9b722831c07b3d168afc841e94 100644 (file)
@@ -162,17 +162,23 @@ WSDG_FILES =      \
        wsdg_src/WSDG_chapter_build_intro.xml   \
        wsdg_src/WSDG_chapter_capture.xml       \
        wsdg_src/WSDG_chapter_dissection.xml    \
-       wsdg_src/WSDG_chapter_env_intro.xml     \
+       wsdg_src/WSDG_chapter_env_intro.asciidoc        \
        wsdg_src/WSDG_chapter_libraries.xml     \
-       wsdg_src/WSDG_chapter_quick_setup.xml   \
-       wsdg_src/WSDG_chapter_sources.xml       \
+       wsdg_src/WSDG_chapter_quick_setup.asciidoc      \
+       wsdg_src/WSDG_chapter_sources.asciidoc          \
        wsdg_src/WSDG_chapter_tools.xml         \
        wsdg_src/WSDG_chapter_userinterface.xml \
        wsdg_src/WSDG_chapter_works.xml         \
        wsdg_src/WSDG_meta_info.xml             \
-       wsdg_src/WSDG_preface.xml               \
+       wsdg_src/WSDG_preface.asciidoc                  \
        ws.css
 
+WSDG_GENERATED_SOURCE = \
+       wsdg_src/WSDG_chapter_env_intro.xml     \
+       wsdg_src/WSDG_chapter_quick_setup.xml   \
+       wsdg_src/WSDG_chapter_sources.xml       \
+       wsdg_src/WSDG_preface.xml
+
 WSDG_GRAPHICS =        \
        wsdg_graphics/ws-capture-sync.dia       \
        wsdg_graphics/ws-capture-sync.png       \
@@ -189,7 +195,7 @@ WSDG_GRAPHICS =     \
 # user-guide.xml must be first in the list (to match $<)
 WSUG_SOURCE =  \
        user-guide.xml          \
-       svn_version.xml         \
+       git_version.xml         \
        GPL_appendix.xml        \
        custom_layer_pdf.xsl    \
        Makefile.common         \
@@ -197,15 +203,17 @@ WSUG_SOURCE =     \
        $(WSUG_GRAPHICS)
 
 # developer-guide.xml must be first in the list (to match $<)
-WSDG_SOURCE =  \
+WSDG_DIST =    \
        developer-guide.xml     \
-       svn_version.xml         \
+       git_version.xml         \
        GPL_appendix.xml        \
        custom_layer_pdf.xsl    \
        Makefile.common         \
        $(WSDG_FILES)           \
        $(WSDG_GRAPHICS)
 
+WSDG_SOURCE = $(WSDG_DIST) $(WSDG_GENERATED_SOURCE)
+
 RELEASE_NOTES_SOURCE = \
        release-notes.asciidoc  \
        Makefile.common         \
@@ -218,6 +226,8 @@ CLEANFILES =        \
        *.hhp                   \
        *.pdf                   \
        *.validated             \
+       $(WSDG_GENERATED_SOURCE) \
+       wsdg_src/*.dbk          \
        wsdg_chm                \
        wsdg_html.zip           \
        wsdg_html_chunked.zip   \
@@ -228,7 +238,7 @@ CLEANFILES =        \
        release_notes_chm       \
        release-notes.html      \
        release-notes.txt       \
-       svn_version.xml         \
+       git_version.xml         \
        user-guide.zip          \
        wsluarm
 
index 2bcc015f05f9cbf12937c4777c20654c20bd00ed..aaf55a9aeca40d3870fef3a3e896ad6c11a50124 100644 (file)
@@ -32,13 +32,21 @@ A2X_TEXT_OPTS=$(A2X_TEXT_OPTS) --lynx
 
 .SUFFIXES: .fo .pdf
 
-# On every build, record the working copy revision string
-#   in svn_version.xml (if the svn version has changed).
-# This is done during nmake "preprocessing" so that it's done *before*
-#  nmake gets the date/time of the dependency file(s)].
-!IF [$(SH) ./check_svn_version.sh]
-!ENDIF
+# Convert an AsciiDoc document to a Docbook chapter
+# .asciidoc -> whole book (.dbk) -> chapter (.xml)
+.asciidoc.xml:
+       $(SH) <<
+       PATH=/usr/bin
+       $(A2X) --verbose \
+               --asciidoc-opts="--conf-file=asciidoc.conf" \
+               --no-xmllint \
+               --format=docbook --doctype=book \
+               $<
+<<
+       mv $*.xml $*.dbk
+       xmllint --xpath "//chapter | //preface" $*.dbk > $@
 
+.SUFFIXES: .asciidoc .xml
 
 # -- (Public) targets -------------------------------------------------------
 
@@ -66,6 +74,17 @@ maintainer-clean: distclean
 
 all_x: wsug.validated wsdg.validated wsug_x wsdg_x release_notes_x
 
+# -- Documentation version ------------------------------------------------------------------------
+
+# On every build, record the working copy revision string
+#   in git_version.xml (if the svn version has changed).
+# This is done during nmake "preprocessing" so that it's done *before*
+#  nmake gets the date/time of the dependency file(s)].
+git_version_check: _FORCE_
+       $(SH) ./check_git_version.sh
+
+git_version.xml: git_version_check
+
 # -- User Guide ------------------------------------------------------------------------
 
 wsug_x: wsug_html_chunked wsug_html user-guide-a4.pdf user-guide-us.pdf user-guide.chm
@@ -252,3 +271,5 @@ release-notes-a4.pdf: $(RELEASE_NOTES_SOURCE) custom_layer_pdf.xsl
 <<
        mv release-notes.pdf $@
 
+_FORCE_:  ## Assumption: no file named _FORCE_ exists in the current directory
+
index 51c70e63f693b5d7b0096cec1d9f2d29e778cc83..7477e914fb3a767195acc4438074bdf78e30efa5 100644 (file)
@@ -3,8 +3,32 @@
 
 [replacements]
 
-# Yes, this is a fake macro.
+# Yes, these are fake macros.
+# We should probably replace some or all of them with attributes.
 wireshark-version:\[\]=1.11.3
+wireshark-major-minor-version:\[\]=1.11
+
+wireshark-authors-url:\[\]=http://www.wireshark.org/about.html#authors
+wireshark-bugs-site:\[\]=https://bugs.wireshark.org/
+wireshark-code-browse-url:\[\]=https://code.wireshark.org/review/gitweb?p=wireshark.git
+wireshark-code-review-url:\[\]=https://code.wireshark.org/review
+wireshark-dev-list-email:\[\]=wireshark-dev&#91;AT&#93;wireshark.org
+wireshark-developers-guide-url:\[\]=http://www.wireshark.org/docs/
+wireshark-download-page:\[\]=http://www.wireshark.org/download/
+wireshark-faq-url:\[\]=http://www.wireshark.org/faq.html
+wireshark-git-anonhttp-url:\[\]=https://code.wireshark.org/review/wireshark
+wireshark-git-http-url:\[\]=https://your.username@code.wireshark.org/review/wireshark
+wireshark-git-ssh-url:\[\]=ssh://your.username@code.wireshark.org:29418/wireshark
+wireshark-mailing-lists-url:\[\]=http://www.wireshark.org/lists/
+wireshark-qa-url:\[\]=http://ask.wireshark.org/
+wireshark-users-guide-url:\[\]=http://www.wireshark.org/docs/
+wireshark-web-site:\[\]=http://www.wireshark.org/
+wireshark-wiki-site:\[\]=http://wiki.wireshark.org/
+
+# Make a document attribute after we fully convert to AsciiDoc
+wsdg-author-email:\[\]=ulf.lamping&#91;AT&#93;web.de
+
+gpl-url:\[\]=http://www.gnu.org/licenses/gpl-2.0.html
 
 [macros]
 
similarity index 69%
rename from docbook/check_svn_version.sh
rename to docbook/check_git_version.sh
index b6c840eac9f90b3017108bfb17fd373a78d26a4e..c26c1e7812500750a91251bac1083c21974dd47d 100755 (executable)
 # 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.
-# 
+#
+
+#if [ -d ../.git ] ; then
+#    GIT_VERSION=`git describe --tags --dirty`
+#fi
+#echo '<!ENTITY GitVersion "'${GIT_VERSION}'">' > git_version_tmp.xml
 
-echo -n '<!ENTITY SvnVersion "' > svn_version_tmp.xml
-[ -x svnversion ] && svnversion -n .                   >> svn_version_tmp.xml
-echo '">'   >> svn_version_tmp.xml
+echo -n '<!ENTITY GitVersion "' > git_version_tmp.xml
+[ -x svnversion ] && svnversion -n .                   >> git_version_tmp.xml
+echo '">'   >> git_version_tmp.xml
 
 # /dev/null buries the output of the "cmp" command.
-diff svn_version.xml svn_version_tmp.xml &> /dev/null
+diff git_version.xml git_version_tmp.xml &> /dev/null
 
 if [ $? -ne 0 ]
 then
-  cp svn_version_tmp.xml svn_version.xml
+    cp git_version_tmp.xml git_version.xml
 fi
 
-rm svn_version_tmp.xml
+rm git_version_tmp.xml
 
index 7d284fd6475bf682175077d4b1455a902dd70584..235883967839b361179a05b05b508727462a2efe 100644 (file)
@@ -28,7 +28,7 @@ DOCUMENT SECTION
 -->
 
   <!ENTITY DocumentTitle "<application>Wireshark</application> Developer's Guide">
-  <!ENTITY DocumentSubTitle "&SvnVersion; for Wireshark &WiresharkCurrentVersion;">
+  <!ENTITY DocumentSubTitle "&GitVersion; for Wireshark &WiresharkCurrentVersion;">
   <!ENTITY DocumentTitleAbbreviation "WSDG">
 
   <!ENTITY DocumentCopyrightHolder "Ulf Lamping">
@@ -37,8 +37,8 @@ DOCUMENT SECTION
   <!ENTITY DocumentEdition "Draft">
   <!ENTITY DocumentVersion "Draft 0.0.3">
   <!ENTITY DocumentPubDate "2008">
-  <!ENTITY % SvnVersionFile SYSTEM "svn_version.xml">
-  %SvnVersionFile;
+  <!ENTITY % GitVersionFile SYSTEM "git_version.xml">
+  %GitVersionFile;
 
 <!ENTITY DocumentLegalNotice "<para>Permission is granted to copy, distribute
   and/or modify this document under the terms of the GNU General Public
index 910986b4af872cd599ded777345249511f6f3196..114a80ee4b483fa391736ab85506a8b3289d5132 100644 (file)
                        </File>
                </Filter>
                <File
-                       RelativePath=".\check_svn_version.sh"
+                       RelativePath=".\check_git_version.sh"
                        >
                </File>
                <File
index e93754f1d43f76e8f4e3ff6d4fabe3f243e23d0a..2289a74982d2be0d30f206a9185d9df92113de74 100644 (file)
@@ -61,7 +61,7 @@ DOCUMENT SECTION
 -->
 
   <!ENTITY DocumentTitle "<application>Wireshark</application> User's Guide">
-  <!ENTITY DocumentSubTitle "&SvnVersion; for Wireshark &WiresharkCurrentVersion;">
+  <!ENTITY DocumentSubTitle "&GitVersion; for Wireshark &WiresharkCurrentVersion;">
   <!ENTITY DocumentTitleAbbreviation "WSUG">
 
   <!ENTITY DocumentCopyrightHolder1 "Ulf Lamping ">
@@ -73,8 +73,8 @@ DOCUMENT SECTION
   <!ENTITY DocumentVersion "V3.0.2">
   <!ENTITY DocumentPubDate "2008">
 
-  <!ENTITY % SvnVersionFile SYSTEM "svn_version.xml">
-  %SvnVersionFile;
+  <!ENTITY % GitVersionFile SYSTEM "git_version.xml">
+  %GitVersionFile;
   <!ENTITY DocumentLegalNotice "<para>Permission is granted to copy, distribute
     and/or modify this document under the terms of the GNU General Public
     License, Version 2 or any later version published by the Free Software
diff --git a/docbook/wsdg_src/WSDG_chapter_env_intro.asciidoc b/docbook/wsdg_src/WSDG_chapter_env_intro.asciidoc
new file mode 100644 (file)
index 0000000..efc9c5a
--- /dev/null
@@ -0,0 +1,583 @@
+++++++++++++++++++++++++++++++++++++++
+<!-- WSDG Chapter Introduction -->
+++++++++++++++++++++++++++++++++++++++
+
+++++++++++++++++++++++++++++++++++++++
+<!-- $Id$ -->
+++++++++++++++++++++++++++++++++++++++
+    
+[[ChapterIntroduction]]
+
+== Introduction
+
+[[ChIntroIntro]]
+
+=== Introduction
+
+This chapter will provide you with information about Wireshark
+development in general.
+
+[[ChIntroWhatIs]]
+
+=== What is Wireshark?
+
+Well, if you want to start Wireshark development, you might already
+know what Wireshark is doing. If not, please have a look at the
+wireshark-users-guide-url:[][Wireshark User's Guide],
+which will provide a lot of general information about it.
+
+[[ChIntroPlatforms]]
+
+=== Supported Platforms
+
+Wireshark currently runs on most UNIX platforms and various Windows
+platforms. It requires GTK+, GLib, libpcap and some other libraries in
+order to run.
+
+As Wireshark is developed in a platform independent way and uses libraries
+(such as the GTK+ GUI library) which are available for a lot of different platforms,
+it's thus available on a wide variety of platforms.
+
+If a binary package is not available for your platform, you should
+download the source and try to build it. Please report your experiences
+to mailto:wireshark-dev-list-email:[][wireshark-dev-list-email:[]].
+
+Binary packages are available for at least the following platforms:
+
+==== Unix
+
+* Apple Mac OS X
+
+* BeOS
+
+* FreeBSD
+
+* HP-UX
+
+* IBM AIX
+
+* NetBSD
+
+* OpenBSD
+
+* SCO UnixWare/OpenUnix
+
+* SGI Irix
+
+* Sun Solaris/Intel
+
+* Sun Solaris/Sparc
+
+* Tru64 UNIX (formerly Digital UNIX)
+
+==== Linux
+
+* Debian GNU/Linux
+
+* Ubuntu
+
+* Gentoo Linux
+
+* IBM S/390 Linux (Red Hat)
+
+* Mandrake Linux
+
+* PLD Linux
+
+* Red Hat Linux
+
+* Rock Linux
+
+* Slackware Linux
+
+* Suse Linux
+
+==== Microsoft Windows
+
+Thanks to the Win32 API, development on all Windows platforms will be
+done in a very similar way. All Windows platforms referred to as Win32,
+Win or Windows may be used with the same meaning.
+Older Windows versions are no longer supported by Wireshark.
+As Windows CE differs a lot compared to the other Windows platforms
+mentioned, Wireshark will not run on Windows CE and there are no plans to
+support it.
+
+Also the 64 bit Windows version are now supported by Wireshark. Although
+not all libraries are made 64 bit ready yet, basic operations are all
+available.
+
+* Windows 8.1 / Windows Server 2012 R2
+
+* Windows 8 / Windows Server 2012
+
+* Windows 7 / Windows Server 2008 R2
+
+* Windows Vista / Windows Server 2008
+
+* Windows XP / Windows Server 2003
+
+[[ChIntroDevelopment]]
+
+===  Development and maintenance of Wireshark 
+
+Wireshark was initially developed by Gerald Combs. Ongoing development
+and maintenance of Wireshark is handled by the Wireshark core developers,
+a loose group of individuals who fix bugs and provide new functionality.
+
+There have also been a large number of people who have contributed protocol
+dissectors and other improvements to Wireshark, and it is expected that this
+will continue. You can find a list of the people who have contributed code to
+Wireshark by checking the About dialog box of Wireshark, or have a look at the
+wireshark-authors-url:[] page on the Wireshark web site.
+
+The communication between the developers is usually done through the developer
+mailing list, which can be joined by anyone interested in the development
+activities. At the time this document was written, more than 500 persons were
+subscribed to this mailing list!
+
+It is strongly recommended to join the developer mailing list, if you are going
+to do any Wireshark development. See <<ChIntroMailingLists>> about the different
+Wireshark mailing lists available.
+
+==== Programming languages used
+
+Most of Wireshark is implemented in plain ANSI C. A notable exception is
+the code in 'ui/qt', which is written in $$C++$$.
+
+The typical task for a new Wireshark developer is to extend an existing,
+or write a new dissector for a specific network protocol. As (almost) any
+dissector is written in plain old ANSI C, a good knowledge about ANSI C
+will be sufficient for Wireshark development in almost any case.
+
+So unless you are going to change the build process of Wireshark
+itself, you won't come in touch with any other programming language than
+ANSI C (such as Perl or Python, which are used only in the Wireshark build
+process).
+
+Beside the usual tools for developing a program in C (compiler, make, ...),
+the build process uses some additional helper tools (Perl, Python, Sed,
+...), which are needed for the build process when Wireshark
+is to be build and installed from the released source packages. If Wireshark
+is installed from a binary package, none of these helper tools are needed on
+the target system.
+
+==== Open Source Software
+
+Wireshark is an open source software (OSS) project, and is released under
+the gpl-url:[][GNU General Public License] (GPL).
+You can freely use Wireshark on any number of computers you like, without
+worrying about license keys or fees or such. In addition, all source
+code is freely available under the GPL. Because of that, it is very easy
+for people to add new protocols to Wireshark, either as plugins, or built
+into the source, and they often do!
+
+You are welcome to modify Wireshark to suit your own needs, and it would be
+appreciated if you contribute your improvements back to the Wireshark community.
+
+
+You gain three benefits by contributing your improvements back to the
+community:
+
+* Other people who find your contributions useful will appreciate them, and you
+  will know that you have helped people in the same way that the developers of
+  Wireshark have helped you and other people.
+
+* The developers of Wireshark might improve your changes even more, as there's
+  always room for improvement. Or they may implement some advanced things on top
+  of your code, which can be useful for yourself too.
+
+* The maintainers and developers of Wireshark will maintain your code as well,
+  fixing it when API changes or other changes are made, and generally keeping it
+  in tune with what is happening with Wireshark. So if Wireshark is updated
+  (which is done often), you can get a new Wireshark version from the website
+  and your changes will already be included without any effort for you.
+
+
+The Wireshark source code and binary packages for some platforms are all
+available on the download page of the Wireshark website:
+wireshark-download-page:[].
+
+
+[[ChIntroReleases]]
+
+=== Releases and distributions
+
+The officially released files can be found at: wireshark-download-page:[].  A new Wireshark version is released after
+significant changes compared to the last release are completed or a
+serious security issue is encountered. The typical release schedule is
+about every 4-8 weeks (although this may vary).
+
+There are two kinds of distributions: binary and source; both have their
+advantages and disadvantages.
+
+[[ChIntroReleaseBinary]]
+
+==== Binary distributions
+
+Binary distributions are usually easy to install (as simply starting
+the appropriate file is usually the only thing to do). They are available
+for the following systems:
+
+* Windows (.exe file). The typical Windows end user is used to get a setup.exe
+  file which will install all the required things for him.
+
+* Win32 PAF (.paf.exe file). Another Windows end user method is to get a
+  portable application file which will install all the required things for him.
+
+* Debian (.deb file). A user of a Debian Package Manager (DPKG) based system
+  obtains a .deb file from which the package manager checks the dependencies and
+  installs the software.
+
+* Red Hat (.rpm file). A user of a Red Hat Package Manager (RPM) based system
+  obtains an .rpm file from which the package manager checks the dependencies
+  and installs the software.
+
+* MAC OS X (.dmg file). The typical MAC OS X end user is used to get a .dmg file
+  which will install all the required things for him. The other requirement is
+  to have the X11.app installed.
+
+* Solaris. A Solaris user obtains a file from which the package manager (PKG)
+  checks the dependencies and installs the software.
+
+However, if you want to start developing with Wireshark, the binary
+distributions won't be too helpful, as you need the source files, of
+course.
+
+For details about how to build these binary distributions yourself,
+e.g. if you need a distribution for a special audience, see
+<<ChSrcBinary>>.
+
+[[ChIntroReleaseSource]]
+
+==== Source code distributions
+
+It's still common for UNIX developers to give the end user a source
+tarball and let the user compile it on their target machine (configure,
+make, make install). However, for different UNIX (Linux) distributions
+it's becoming more common to release binary packages (e.g. .deb or .rpm
+files) these days.
+
+You should use the released sources if you want to build Wireshark from
+source on your platform for productive use. However, if you going to
+develop changes to the Wireshark sources, it might be better to use the
+latest SVN sources. For details about the different ways to get the
+Wireshark source code see <<ChSrcObtain>>.
+
+Before building Wireshark from a source distribution, make sure you have
+all the tools and libraries required to build. The following chapters will
+describe the required tools and libraries in detail.
+
+[[ChIntroAutomated]]
+
+=== Automated Builds (Buildbot)
+
+The Wireshark Buildbot automatically rebuilds Wireshark on every
+change of the source code repository and indicates problematic changes.
+This frees the developers from repeating (and annoying) work, so time can
+be spent on more interesting tasks.
+
+==== Advantages
+
+* Recognizing (cross platform) build problems - early. Compilation problems can
+  be narrowed down to a few commits, making a fix much easier.
+
+* "Health status" overview of the sources. A quick look at:
+  http://buildbot.wireshark.org/trunk/[] gives a good "feeling" if the sources
+  are currently "well". On the other hand, if all is "red", an update of a
+  personal source tree might better be done later ...
+
+* "Up to date" binary packages are available. After a change was committed to
+  the repository, a binary package / installer is usually available within a few
+  hours at: http://www.wireshark.org/download/automated/[]. This can be quite
+  helpful, e.g. a bug reporter can easily verify a bugfix by installing a recent
+  build.
+
+* Automated regression tests. In particular, the fuzz tests often indicate "real
+  life" problems that are otherwise hard to find.
+
+==== What does the Buildbot do?
+
+The Buildbot will do the following (to a different degree on the different
+platforms):
+
+* Check out from the source repository
+
+* Build
+
+* Create binary packages and installers
+
+* Create source packages and run distribution checks
+
+* Run regression tests
+
+Each step is represented at the status page by a rectangle, green if it
+succeeded or red if it failed. Most steps provide a link to the corresponding
+console logfile, to get additional information.
+
+The Buildbot runs on a platform collection that represents the different
+"platform specialties" quite well:
+
+* Windows XP x86 (Win32, little endian, Visual Studion 2010)
+
+* Windows 7 x86-64 (Win64, little endian, VS 2010)
+
+* Ubuntu x86-64 (Linux, little endian, gcc)
+
+* Solaris SPARC (Solaris, big endian, gcc)
+
+* Mac OS-X PPC (BSD, big endian, gcc)
+
+* Mac OS-X x86 (BSD, little endian, Clang)
+
+* Mac OS-X x86-64 (BSD, little endian, Clang)
+
+Each platform is represented at the status page by a single column, the
+most recent entries are at the top.
+
+[[ChIntroHelp]]
+
+
+=== Reporting problems and getting help
+
+If you have problems, or need help with Wireshark, there are several
+places that may be of interest to you (well, beside this guide of
+course).
+
+[[ChIntroHomepage]]
+
+==== Website
+
+You will find lot's of useful information on the Wireshark homepage at
+wireshark-web-site:[].
+
+
+[[ChIntroWiki]]
+
+
+==== Wiki
+
+The Wireshark Wiki at wireshark-wiki-site:[] provides a wide range
+of information related to Wireshark and packet capturing in general.
+You will find a lot of information not part of this developer's guide. For
+example, there is an explanation how to capture on a switched network,
+an ongoing effort to build a protocol reference and a lot more.
+
+And best of all, if you would like to contribute your knowledge on a
+specific topic (maybe a network protocol you know well), you can edit the
+wiki pages by simply using your webbrowser.
+
+[[ChIntroFAQ]]
+
+
+==== FAQ
+
+The "Frequently Asked Questions" will list often asked questions and
+the corresponding answers.
+
+Before sending any mail to the mailing lists below, be sure to read the
+FAQ, as it will often answer any questions you might have. This will save
+yourself and others a lot of time. Keep in mind that a lot of people are
+subscribed to the mailing lists.
+
+You will find the FAQ inside Wireshark by clicking the menu item
+Help/Contents and selecting the FAQ page in the upcoming dialog.
+
+An online version is available at the Wireshark website: wireshark-faq-url:[].
+You might prefer this online version as it's typically more up to date and the
+HTML format is easier to use.
+
+[[ChIntroOtherSources]]
+
+==== Other sources
+
+If you don't find the information you need inside this book, there are
+various other sources of information:
+
+* The file 'doc/README.developer' and all the other README.xxx files in the
+  source code. These are various documentation files on different topics
+
+[NOTE]
+.Read the README
+====
+'README.developer' is packed full with all kinds of details relevant
+to the developer of Wireshark source code. It advices you around common
+pitfalls, shows you basic layout of dissector code, shows details of the
+APIs available to the dissector developer, etc.
+====
+
+* The Wireshark source code
+
+* Tool documentation of the various tools used
+(e.g. manpages of sed, gcc, etc.)
+
+* The different mailing lists. See <<ChIntroMailingLists>>
+
+[[ChIntroMailingLists]]
+
+==== Mailing Lists
+
+There are several mailing lists available on specific Wireshark topics:
+
+wireshark-announce:: This mailing list will inform you about new program
+releases, which usually appear about every 4-8 weeks.
+
+wireshark-users:: This list is for users of Wireshark. People post
+questions about building and using Wireshark, others (hopefully)
+provide answers.
+
+wireshark-dev:: This list is for Wireshark developers. People post questions about
+the development of Wireshark, others (hopefully) provide answers.
+If you want to start developing a protocol dissector, join this list.
+
+wireshark-bugs:: This list is for Wireshark developers. Every time a change to the bug
+database occurs, a mail to this mailing list is generated.
+If you want to be notified about all the changes to the bug
+database, join this list. Details about the bug database can be
+found in <<ChIntroBugDatabase>>.
+
+wireshark-commits:: This list is for Wireshark developers. Every time a change to the SVN
+repository is checked in, a mail to this mailing list is generated.
+If you want to be notified about all the changes to the SVN
+repository, join this list. Details about the SVN repository can be
+found in <<ChSrcGitRepository>>.
+
+You can subscribe to each of these lists from the Wireshark web site:
+wireshark-mailing-lists-url:[]. From there, you can choose which mailing list you
+want to subscribe to by clicking on the Subscribe/Unsubscribe/Options button
+under the title of the relevant list. The links to the archives are included on
+that page as well.
+
+[TIP]
+.The archives are searchable
+====
+You can search in the list archives to see if someone previously asked the same
+question and maybe already got an answer. That way you don't have to wait until
+someone answers your question.
+====
+
+[[ChIntroBugDatabase]]
+
+==== Bug database (Bugzilla)
+
+The Wireshark community collects bug reports in a Bugzilla database at
+wireshark-bugs-site:[]. This database is filled with manually filed bug reports,
+usually after some discussion on wireshark-dev, and automatic bug reports from
+the buildbot tools.
+
+[[ChIntroQA]]
+
+==== Q&amp;A Site
+
+The Wireshark Q and A site at wireshark-qa-url:[] offers a resource where
+questions and answers come together. You have the option to search what
+questions were asked before and what answers were given by people who knew about
+the issue. Answers are graded, so you can pick out the best ones easily. If your
+issue isn't discussed before you can post one yourself.
+
+[[ChIntroReportProblems]]
+
+==== Reporting Problems
+
+[NOTE]
+.Test with the latest version
+====
+Before reporting any problems, please make sure you have installed the
+latest version of Wireshark. Reports on older maintenance releases are
+usually met with an upgrade request.
+====
+
+If you report problems, provide as much information as possible. In general,
+just think about what you would need to find that problem, if someone else sends
+you such a problem report. Also keep in mind that people compile/run Wireshark
+on a lot of different platforms.
+
+When reporting problems with Wireshark, it is helpful if you supply the
+following information:
+
+. The version number of Wireshark and the dependent libraries linked with
+it, e.g. Qt, GTK+, etc. You can obtain this with the command
+`wireshark -v`.
+
+. Information about the platform you run Wireshark on.
+
+. A detailed description of your problem.
+
+. If you get an error/warning message, copy the text of that message (and
+also a few lines before and after it, if there are some), so others may
+find the build step where things go wrong.
+Please don't give something like: "I get a warning when compiling x"
+as this won't give any direction to look at.
+
+[NOTE]
+.Don't send large files
+====
+Do not send large files (&gt;100KB) to the mailing lists, just place a note
+that further data is available on request. Large files will only annoy a
+lot of people on the list who are not interested in your specific problem.
+If required, you will be asked for further data by the persons who really
+can help you.
+====
+
+[WARNING]
+.Don't send confidential information
+====
+If you send captured data to the mailing lists, or add it to your bug report,
+be sure it doesn't contain any sensitive or confidential information,
+such as passwords.  Visibility of such files can be limited to certain
+groups in the Bugzilla database though.
+====
+
+==== Reporting Crashes on UNIX/Linux platforms
+
+When reporting crashes with Wireshark, it is helpful if you supply the
+traceback information (besides the information mentioned in
+<<ChIntroReportProblems>>).
+
+You can obtain this traceback information with the following commands:
+
+----
+$ gdb `whereis wireshark | cut -f2 -d: | cut -d' ' -f2` core >& bt.txt
+backtrace
+^D
+$
+----
+
+[NOTE]
+.Using GDB
+====
+Type the characters in the first line verbatim. Those are
+back-tics there.
+
+`backtrace` is a `gdb` command. You should
+enter it verbatim after the first line shown above, but it will not be
+echoed. The ^D
+(Control-D, that is, press the Control key and the D key
+together) will cause `gdb` to exit. This will
+leave you with a file called
+'bt.txt' in the current directory.
+Include the file with your bug report.
+
+If you do not have `gdb` available, you
+will have to check out your operating system's debugger.
+====
+
+You should mail the traceback to the
+mailto:wireshark-dev-list-email:[][wireshark-dev mailing list], or attach it to your bug report.
+
+==== Reporting Crashes on Windows platforms
+
+You can download Windows debugging symbol files (.pdb) from the following locations:
+
+* 32-bit Windows: http://www.wireshark.org/download/win32/all-versions/
+
+* 64-bit Windows: http://www.wireshark.org/download/win64/all-versions/
+
+Files are named "Wireshark-pdb-win__bits__-_x_._y_._z_.zip" to match their
+corresponding "Wireshark-win__bits__-_x_._y_._z_.exe" installer packages.
+
+// XXX Show how to use the Visual Studio debugger
+
+++++++++++++++++++++++++++++++++++++++
+<!-- End of WSDG Chapter Introduction -->
+++++++++++++++++++++++++++++++++++++++
+    
diff --git a/docbook/wsdg_src/WSDG_chapter_env_intro.xml b/docbook/wsdg_src/WSDG_chapter_env_intro.xml
deleted file mode 100644 (file)
index 24936de..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-<!-- WSDG Chapter Introduction -->
-<!-- $Id$ -->
-
-<chapter id="ChapterIntroduction">
-  <title>Introduction</title>
-
-  <section id="ChIntroIntro">
-    <title>Introduction</title>
-    <para>
-       This chapter will provide you with information about Wireshark
-       development in general.
-    </para>
-  </section>
-
-  <section id="ChIntroWhatIs">
-    <title>What is <application>Wireshark?</application></title>
-    <para>
-       Well, if you want to start Wireshark development, you might already
-       know what Wireshark is doing. If not, please have a look at the
-       <ulink url="&WiresharkUsersGuidePage;">Wireshark User's Guide</ulink>,
-       which will provide a lot of general information about it.
-    </para>
-
-  </section>
-
-  <section id="ChIntroPlatforms">
-    <title>Platforms Wireshark runs on</title>
-    <para>
-      Wireshark currently runs on most UNIX platforms and various Windows
-      platforms. It requires GTK+, GLib, libpcap and some other libraries in
-         order to run.
-    </para>
-    <para>
-       As Wireshark is developed in a platform independent way and uses libraries
-       (such as the GTK+ GUI library) which are available for a lot of different platforms,
-        it's thus available on a wide variety of platforms.
-    </para>
-    <para>
-      If a binary package is not available for your platform, you should
-      download the source and try to build it. Please report your experiences
-         to <ulink url="mailto:&WiresharkDevMailList;">&WiresharkDevMailList;</ulink>.
-    </para>
-    <para>
-      Binary packages are available for at least the following platforms:
-    </para>
-
-       <section><title>Unix</title>
-       <para>
-       <itemizedlist>
-       <listitem><para>Apple Mac OS X</para></listitem>
-       <listitem><para>BeOS</para></listitem>
-       <listitem><para>FreeBSD</para></listitem>
-       <listitem><para>HP-UX</para></listitem>
-       <listitem><para>IBM AIX</para></listitem>
-       <listitem><para>NetBSD</para></listitem>
-       <listitem><para>OpenBSD</para></listitem>
-       <listitem><para>SCO UnixWare/OpenUnix</para></listitem>
-       <listitem><para>SGI Irix</para></listitem>
-       <listitem><para>Sun Solaris/Intel</para></listitem>
-       <listitem><para>Sun Solaris/Sparc</para></listitem>
-       <listitem><para>Tru64 UNIX (formerly Digital UNIX)</para></listitem>
-       </itemizedlist>
-       </para>
-       </section>
-
-       <section><title>Linux</title>
-       <para>
-       <itemizedlist>
-       <listitem><para>Debian GNU/Linux</para></listitem>
-       <listitem><para>Ubuntu</para></listitem>
-       <listitem><para>Gentoo Linux</para></listitem>
-       <listitem><para>IBM S/390 Linux (Red Hat)</para></listitem>
-       <listitem><para>Mandrake Linux</para></listitem>
-       <listitem><para>PLD Linux</para></listitem>
-       <listitem><para>Red Hat Linux</para></listitem>
-       <listitem><para>Rock Linux</para></listitem>
-       <listitem><para>Slackware Linux</para></listitem>
-       <listitem><para>Suse Linux</para></listitem>
-       </itemizedlist>
-       </para>
-       </section>
-
-       <section><title>Microsoft Windows</title>
-    <para>
-       Thanks to the Win32 API, development on all Windows platforms will be
-       done in a very similar way. All Windows platforms referred to as Win32,
-       Win or Windows may be used with the same meaning.
-       Older Windows versions are no longer supported by Wireshark.
-       As Windows CE differs a lot compared to the other Windows platforms
-       mentioned, Wireshark will not run on Windows CE and there are no plans to
-       support it.
-       </para>
-       <para>
-       Also the 64 bit Windows version are now supported by Wireshark. Although
-       not all libraries are made 64 bit ready yet, basic operations are all
-       available.
-       </para>
-       <para>
-       <itemizedlist>
-       <listitem><para>Windows Server 2000</para></listitem>
-       <listitem><para>Windows XP</para></listitem>
-       <listitem><para>Windows Server 2003</para></listitem>
-       <listitem><para>Windows Vista</para></listitem>
-       <listitem><para>Windows 7</para></listitem>
-       <listitem><para>Windows Server 2008</para></listitem>
-       </itemizedlist>
-    </para>
-       </section>
-
-  </section>
-
-  <section id="ChIntroDevelopment">
-    <title>
-       Development and maintenance of <application>Wireshark</application>
-    </title>
-    <para>
-      Wireshark was initially developed by Gerald Combs. Ongoing development
-      and maintenance of Wireshark is handled by the Wireshark core developers,
-      a loose group of individuals who fix bugs and provide new functionality.
-    </para>
-    <para>
-      There have also been a large number of people who have contributed
-      protocol dissectors and other improvements to Wireshark, and it is
-      expected that this will continue.  You can find a list of the people who
-      have contributed code to Wireshark by checking the About dialog box of
-      Wireshark, or have a look at the <ulink url="&WiresharkAuthorsPage;"/>
-      page on the Wireshark web site.
-    </para>
-    <para>
-       The
-       communication between the developers is usually done through the developer
-       mailing list, which can be joined by anyone interested in the development
-       activities. At the time this document was written, more than 500 persons were
-       subscribed to this mailing list!
-    </para>
-    <para>
-       It is strongly recommended to join the developer mailing list, if you
-       are going to do any Wireshark development. See
-       <xref linkend="ChIntroMailingLists"/> about the different Wireshark
-       mailing lists available.
-    </para>
-
-       <section><title>Programming language(s) used</title>
-    <para>
-       Almost any part of Wireshark is implemented in plain ANSI C.
-    </para>
-    <para>
-       The typical task for a new Wireshark developer is to extend an existing,
-       or write a new dissector for a specific network protocol. As (almost) any
-       dissector is written in plain old ANSI C, a good knowledge about ANSI C
-       will be sufficient for Wireshark development in almost any case.
-    </para>
-    <para>
-       So unless you are going to change the build process of Wireshark
-       itself, you won't come in touch with any other programming language than
-       ANSI C (such as Perl or Python, which are used only in the Wireshark build
-       process).
-    </para>
-    <para>
-       Beside the usual tools for developing a program in C (compiler, make, ...),
-       the build process uses some additional helper tools (Perl, Python, Sed,
-       ...), which are needed for the build process when Wireshark
-       is to be build and installed from the released source packages. If Wireshark
-       is installed from a binary package, none of these helper tools are needed on
-       the target system.
-       </para>
-       </section>
-
-
-       <section><title>Open Source Software</title>
-    <para>
-      Wireshark is an open source software (OSS) project, and is released under
-      the <ulink url="&GPLWebsite;">GNU General Public License</ulink> (GPL).
-         You can freely use Wireshark on any number of computers you like, without
-         worrying about license keys or fees or such. In addition, all source
-         code is freely available under the GPL. Because of that, it is very easy
-         for people to add new protocols to Wireshark, either as plugins, or built
-         into the source, and they often do!
-    </para>
-    <para>
-         You are welcome to
-      modify Wireshark to suit your own needs, and it would be appreciated
-      if you contribute your improvements back to the Wireshark community.
-    </para>
-    <para>
-      You gain three benefits by contributing your improvements back to the
-      community:
-      <itemizedlist>
-       <listitem>
-         <para>
-           Other people who find your contributions useful will appreciate
-           them, and you will know that you have helped people in the
-           same way that the developers of Wireshark have helped you and other
-           people.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           The developers of Wireshark might improve your changes even more,
-               as there's always room for improvement. Or they may implement some
-               advanced things on top of your code, which can be useful for yourself
-               too.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           The maintainers and developers of Wireshark will maintain your
-           code as well, fixing it when API changes or other changes are
-           made, and generally keeping it in tune with what is happening
-           with Wireshark. So if Wireshark is updated (which is done often),
-               you can get a new Wireshark version from the website and your changes
-               will already be included without any effort for you.
-         </para>
-       </listitem>
-      </itemizedlist>
-    </para>
-    <para>
-      The Wireshark source code and binary packages for some platforms are all
-      available on the download page of the Wireshark website:
-      <ulink url="&WiresharkDownloadPage;">&WiresharkDownloadPage;</ulink>.
-    </para>
-
-       </section>
-
-  </section>
-
-  <section id="ChIntroReleases">
-    <title>Releases and distributions</title>
-    <para>
-       The officially released files can be found at: <ulink
-       url="&WiresharkDownloadPage;"/>.  A new Wireshark version is released after
-       significant changes compared to the last release are completed or a
-       serious security issue is encountered. The typical release schedule is
-       about every 4-8 weeks (although this may vary).
-    </para>
-    <para>
-       There are two kinds of distributions: binary and source; both have their
-       advantages and disadvantages.
-    </para>
-
-       <section id="ChIntroReleaseBinary">
-    <title>Binary distributions</title>
-    <para>
-       Binary distributions are usually easy to install (as simply starting
-       the appropriate file is usually the only thing to do). They are available
-       for the following systems:
-       <itemizedlist>
-       <listitem>
-    <para>
-       Windows (.exe file). The typical Windows end user is used to get a setup.exe
-       file which will install all the required things for him.
-    </para>
-       </listitem>
-       <listitem>
-    <para>
-       Win32 PAF (.paf.exe file). Another Windows end user method is to get a portable
-       application file which will install all the required things for him.
-    </para>
-       </listitem>
-       <listitem>
-    <para>
-       Debian (.deb file). A user of a Debian Package Manager (DPKG) based system
-       obtains a .deb file from which the package manager checks the
-       dependencies and installs the software.
-    </para>
-       </listitem>
-       <listitem>
-    <para>
-       Red Hat (.rpm file). A user of a Red Hat Package Manager (RPM) based system
-       obtains an .rpm file from which the package manager checks the
-       dependencies and installs the software.
-    </para>
-       </listitem>
-       <listitem>
-    <para>
-       MAC OS X (.dmg file). The typical MAC OS X end user is used to get a .dmg
-       file which will install all the required things for him. The other
-       requirement is to have the X11.app installed.
-    </para>
-       </listitem>
-       <listitem>
-    <para>
-       Solaris. A Solaris user obtains a file from which the package manager
-       (PKG) checks the dependencies and installs the software.
-    </para>
-       </listitem>
-       </itemizedlist>
-       However, if you want to start developing with Wireshark, the binary
-       distributions won't be too helpful, as you need the source files, of
-       course.
-    </para>
-    <para>
-       For details about how to build these binary distributions yourself,
-       e.g. if you need a distribution for a special audience, see
-       <xref linkend="ChSrcBinary"/>.
-    </para>
-       </section>
-
-       <section id="ChIntroReleaseSource">
-       <title>Source code distributions</title>
-    <para>
-       It's still common for UNIX developers to give the end user a source
-       tarball and let the user compile it on their target machine (configure,
-       make, make install). However, for different UNIX (Linux) distributions
-       it's becoming more common to release binary packages (e.g. .deb or .rpm
-       files) these days.
-    </para>
-    <para>
-       You should use the released sources if you want to build Wireshark from
-       source on your platform for productive use. However, if you going to
-       develop changes to the Wireshark sources, it might be better to use the
-       latest SVN sources. For details about the different ways to get the
-       Wireshark source code see <xref linkend="ChSrcObtain"/>.
-    </para>
-    <para>
-       Before building Wireshark from a source distribution, make sure you have
-       all the tools and libraries required to build. The following chapters will
-       describe the required tools and libraries in detail.
-    </para>
-       </section>
-  </section>
-
-  <section id="ChIntroAutomated">
-    <title>Automated Builds (Buildbot)</title>
-    <para>
-       The Wireshark Buildbot automatically rebuilds Wireshark on every
-       change of the source code repository and indicates problematic changes.
-       This frees the developers from repeating (and annoying) work, so time can
-       be spent on more interesting tasks.
-    </para>
-       <section>
-       <title>Advantages</title>
-       <itemizedlist>
-       <listitem><para>
-       Recognizing (cross platform) build problems - early. Compilation problems
-       can be narrowed down to a few commits, making a fix much easier.
-       </para></listitem>
-       <listitem><para>
-       "Health status" overview of the sources. A quick look at: <ulink
-       url="http://buildbot.wireshark.org/trunk/" /> gives a good "feeling" if
-       the sources are currently "well".
-       On the other hand, if all is "red", an update of a personal source tree
-       might better be done later ...
-       </para></listitem>
-       <listitem><para>
-       "Up to date" binary packages are available.
-       After a change was committed to the repository, a binary package /
-       installer is usually available within a few hours at: <ulink
-       url="http://www.wireshark.org/download/automated/" />.
-       This can be quite helpful, e.g. a bug reporter can easily verify a bugfix
-       by installing a recent build.
-       </para></listitem>
-       <listitem><para>
-       Automated regression tests. In particular, the fuzz tests often indicate
-       "real life" problems that are otherwise hard to find.
-       </para></listitem>
-       </itemizedlist>
-       </section>
-       <section>
-       <title>What does the Buildbot do?</title>
-    <para>
-       The Buildbot will do the following (to a different degree on the different
-       platforms):
-       <itemizedlist>
-       <listitem><para>
-       checkout from the source repository
-       </para></listitem>
-       <listitem><para>
-       build
-       </para></listitem>
-       <listitem><para>
-       create binary package(s) / installer
-       </para></listitem>
-       <listitem><para>
-       create source package (and check completeness)
-       </para></listitem>
-       <listitem><para>
-       run regression tests
-       </para></listitem>
-       </itemizedlist>
-       Each step is represented at the status page by a rectangle, green if it
-       succeeded or red if it failed. Most steps provide a link to the corresponding
-       console logfile, to get additional information.
-    </para>
-    <para>
-       The Buildbot runs on a platform collection that represents the different
-       "platform specialties" quite well:
-       <itemizedlist>
-       <listitem><para>
-       Windows XP x86 (Win32, little endian, VS 9)
-       </para></listitem>
-       <listitem><para>
-       Windows XP x86-64 (Win64, little endian, VS 9)
-       </para></listitem>
-       <listitem><para>
-       Ubuntu x86-64 (Linux, little endian, gcc)
-       </para></listitem>
-       <listitem><para>
-       Solaris SPARC (Solaris, big endian, gcc)
-       </para></listitem>
-       <listitem><para>
-       Mac OS-X PPC (BSD, big endian, gcc)
-       </para></listitem>
-       <listitem><para>
-       Mac OS-X x86 (BSD, little endian, gcc)
-       </para></listitem>
-       </itemizedlist>
-       Each platform is represented at the status page by a single column, the
-       most recent entries are at the top.
-    </para>
-       </section>
-  </section>
-
-  <section id="ChIntroHelp">
-    <title>Reporting problems and getting help</title>
-       <para>
-      If you have problems, or need help with Wireshark, there are several
-      places that may be of interest to you (well, beside this guide of
-         course).
-       </para>
-
-        <section id="ChIntroHomepage"><title>Website</title>
-    <para>
-        You will find lot's of useful information on the Wireshark homepage at
-        <ulink url="&WiresharkWebSite;">&WiresharkWebSite;</ulink>.
-        </para>
-        </section>
-
-        <section id="ChIntroWiki"><title>Wiki</title>
-    <para>
-        The Wireshark Wiki at <ulink
-        url="&WiresharkWikiSite;">&WiresharkWikiSite;</ulink> provides a wide range
-        of information related to Wireshark and packet capturing in general.
-        You will find a lot of information not part of this developer's guide. For
-        example, there is an explanation how to capture on a switched network,
-        an ongoing effort to build a protocol reference and a lot more.
-        </para>
-        <para>
-        And best of all, if you would like to contribute your knowledge on a
-        specific topic (maybe a network protocol you know well), you can edit the
-        wiki pages by simply using your webbrowser.
-        </para>
-        </section>
-
-       <section id="ChIntroFAQ"><title>FAQ</title>
-    <para>
-       The "Frequently Asked Questions" will list often asked questions and
-       the corresponding answers.
-       </para>
-       <para>
-       Before sending any mail to the mailing lists below, be sure to read the
-       FAQ, as it will often answer the question(s) you might have. This will save
-       yourself and others a lot of time (keep in mind that a lot of people are
-       subscribed to the mailing lists).
-    </para>
-       <para>
-       You will find the FAQ inside Wireshark by clicking the menu item
-       Help/Contents and selecting the FAQ page in the upcoming dialog.
-    </para>
-    <para>
-       An online version is available at the Wireshark website:
-       <ulink url="&WiresharkFAQPage;">&WiresharkFAQPage;</ulink>. You might
-       prefer this online version, as it's typically more up to date and the HTML
-       format is easier to use.
-    </para>
-       </section>
-
-    <section id="ChIntroOtherSources"><title>Other sources</title>
-    <para>
-       If you don't find the information you need inside this book, there are
-       various other sources of information:
-       <itemizedlist>
-       <listitem>
-       <para>
-       the file <filename>doc/README.developer</filename> and
-       all the other README.xxx files in the source code - these are various
-       documentation files on different topics
-       </para>
-       <note><title>Read the README!</title>
-       <para>
-       The README.developer is packed full with all kinds of details relevant
-       to the developer of Wireshark source code. It advices you around common
-       pitfalls, shows you basic layout of dissector code, shows details of the
-       API's available to the dissector developer, etc.  
-       </para>
-       </note>
-       </listitem>
-       <listitem>
-       <para>
-       the Wireshark source code
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       tool documentation of the various tools used
-       (e.g. manpages of sed, gcc, ...)
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       the different mailing lists: see <xref linkend="ChIntroMailingLists"/>
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       ...
-       </para>
-       </listitem>
-       </itemizedlist>
-    </para>
-    </section>
-
-    <section id="ChIntroMailingLists"><title>Mailing Lists</title>
-    <para>
-      There are several mailing lists available on specific Wireshark topics:
-      <variablelist>
-       <varlistentry><term><command>wireshark-announce</command></term>
-         <listitem>
-           <para>
-             This mailing list will inform you about new program
-             releases, which usually appear about every 4-8 weeks.
-           </para>
-         </listitem>
-       </varlistentry>
-       <varlistentry><term><command>wireshark-users</command></term>
-         <listitem>
-           <para>
-             This list is for users of Wireshark. People post
-             questions about building and using Wireshark, others (hopefully)
-             provide answers.
-           </para>
-         </listitem>
-       </varlistentry>
-       <varlistentry><term><command>wireshark-dev</command></term>
-         <listitem>
-           <para>
-             This list is for Wireshark developers. People post questions about
-             the development of Wireshark, others (hopefully) provide answers.
-             If you want to start developing a protocol dissector, join this list.
-           </para>
-         </listitem>
-       </varlistentry>
-       <varlistentry><term><command>wireshark-bugs</command></term>
-         <listitem>
-           <para>
-             This list is for Wireshark developers. Every time a change to the bug
-             database occurs, a mail to this mailing list is generated.
-             If you want to be notified about all the changes to the bug
-             database, join this list. Details about the bug database can be
-             found in <xref linkend="ChIntroBugDatabase"/>.
-           </para>
-         </listitem>
-       </varlistentry>
-       <varlistentry><term><command>wireshark-commits</command></term>
-         <listitem>
-           <para>
-             This list is for Wireshark developers. Every time a change to the SVN
-             repository is checked in, a mail to this mailing list is generated.
-             If you want to be notified about all the changes to the SVN
-             repository, join this list. Details about the SVN repository can be
-             found in <xref linkend="ChSrcSVNServer"/>.
-           </para>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-      You can subscribe to each of these lists from the Wireshark web site:
-      <ulink url="&WiresharkListsPage;">&WiresharkListsPage;</ulink>.
-      From there, you can choose which mailing list you want to subscribe to
-      by clicking on the Subscribe/Unsubscribe/Options button under the title
-      of the relevant list. The links to the archives are included on that
-      page as well.
-
-      <tip><title>Tip!</title>
-      <para>
-       You can search in the list archives to see if someone previously asked the same
-       question and maybe already got an answer. That way you
-       don't have to wait until someone answers your question.
-      </para>
-      </tip>
-    </para>
-    </section>
-
-    <section id="ChIntroBugDatabase"><title>Bug database (Bugzilla)</title>
-    <para>
-      The Wireshark community collects bug reports in a Bugzilla database at
-      <ulink url="&WiresharkBugsSite;">&WiresharkBugsSite;</ulink>.
-      This database is filled with manually filed bug reports, usually after some
-      discussion on wireshark-dev, and automatic bug reports from the buildbot tools.
-    </para>
-    </section>
-
-    <section id="ChIntroQA"><title>Q&amp;A Forum</title>
-    <para>
-      The Wireshark Q and A forum at
-      <ulink url="&WiresharkQASite;">&WiresharkQASite;</ulink> offers a resource
-      where questions and answers come together. You have the option to search
-      what questions were asked before and what answers were given by people who
-      knew about the issue. Answers are graded, so you can pick out the best ones
-      easily. If your issue isn't discussed before you can post one yourself.
-    </para>
-    </section>
-
-    <section id="ChIntroReportProblems"><title>Reporting Problems</title>
-    <note><title>Note!</title>
-    <para>
-      Before reporting any problems, please make sure you have installed the
-      latest version of Wireshark. Reports on older maintenance releases are
-      usually met with an upgrade request.
-    </para>
-    </note>
-    <para>
-      If you report problems, provide as much
-      information as possible. In general, just think about what
-      you would need to find that problem, if someone else sends you such a
-      problem report. Also keep in mind that people compile/run Wireshark on a lot of different
-      platforms.
-    </para>
-    <para>
-      When reporting problems with Wireshark, it is helpful if you supply the
-      following information:
-      <orderedlist>
-       <listitem>
-         <para>
-           The version number of Wireshark and the dependent libraries linked with
-               it, e.g. GTK+, etc. You can obtain this with the command
-           <command>wireshark -v</command>.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           Information about the platform you run Wireshark on.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           A detailed description of your problem.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-               If you get an error/warning message, copy the text of that message (and
-               also a few lines before and after it, if there are some), so others may
-               find the build step where things go wrong.
-               Please don't give something like: "I get a warning when compiling x"
-               as this won't give any direction to look at.
-         </para>
-       </listitem>
-      </orderedlist>
-    </para>
-       <note><title>Don't send large files!</title>
-       <para>
-       Do not send large files (>100KB) to the mailing lists, just place a note
-       that further data is available on request. Large files will only annoy a
-       lot of people on the list who are not interested in your specific problem.
-       If required, you will be asked for further data by the persons who really
-       can help you.
-       </para>
-       </note>
-       <note><title>Don't send confidential information!</title>
-       <para>
-       If you send captured data to the mailing lists, or add it to your bug report,
-       be sure it doesn't contain any sensitive or confidential information,
-       such as passwords.  Visibility of such files can be limited to certain
-       groups in the Bugzilla database though. 
-       </para>
-       </note>
-  </section>
-
-  <section><title>Reporting Crashes on UNIX/Linux platforms</title>
-    <para>
-      When reporting crashes with Wireshark, it is helpful if you supply the
-      traceback information (besides the information mentioned in
-         <xref linkend="ChIntroReportProblems"/>).
-    </para>
-         <para>
-           You can obtain this traceback information with the following commands:
-           <programlisting>
-<![CDATA[
-$ gdb `whereis wireshark | cut -f2 -d: | cut -d' ' -f2` core >& bt.txt
-backtrace
-^D
-$
-]]>
-               </programlisting>
-           <note>
-             <para>
-               Type the characters in the first line verbatim! Those are
-               back-tics there!
-             </para>
-           </note>
-           <note>
-             <para>
-               backtrace is a <command>gdb</command> command. You should
-               enter it verbatim after the first line shown above, but it will not be
-               echoed. The ^D
-               (Control-D, that is, press the Control key and the D key
-               together) will cause <command>gdb</command> to exit. This will
-               leave you with a file called
-               <filename>bt.txt</filename> in the current directory.
-               Include the file with your bug report.
-             </para>
-           </note>
-           <note>
-             <para>
-               If you do not have <command>gdb</command> available, you
-               will have to check out your operating system's debugger.
-             </para>
-           </note>
-         </para>
-         <para>
-           You should mail the traceback to the
-               <ulink url="mailto:&WiresharkDevMailList;">&WiresharkDevMailList;</ulink>
-           mailing list, or attach it to your bug report.
-         </para>
-  </section>
-
-  <section><title>Reporting Crashes on Windows platforms</title>
-    <para>
-       The Windows distributions don't contain the symbol files (.pdb), because
-       they are very large. For this reason it's not possible to create
-       a meaningful backtrace file from it. You should report your crash just
-       like other problems, using the mechanism from
-       <xref linkend="ChIntroReportProblems"/>.
-    </para>
-  </section>
-  </section>
-
-</chapter>
-<!-- End of WSDG Chapter Introduction -->
diff --git a/docbook/wsdg_src/WSDG_chapter_quick_setup.asciidoc b/docbook/wsdg_src/WSDG_chapter_quick_setup.asciidoc
new file mode 100644 (file)
index 0000000..ad300f4
--- /dev/null
@@ -0,0 +1,565 @@
+++++++++++++++++++++++++++++++++++++++
+<!-- WSDG Chapter Setup -->
+++++++++++++++++++++++++++++++++++++++
+
+++++++++++++++++++++++++++++++++++++++
+<!-- $Id$ -->
+++++++++++++++++++++++++++++++++++++++
+    
+[[ChapterSetup]]
+
+== Quick Setup
+
+[[ChSetupUNIX]]
+
+=== UNIX: Installation
+
+All the tools required are usually installed on a UNIX developer machine.
+
+If a tool is not already installed on your system, you can usually install it
+using the package in your distribution: aptitude, yum, Synaptic, etc.
+
+If an install package is not available or you have a
+reason not to use it (maybe because it's simply too old), you
+can install that tool from source code. The following sections
+will provide you with the webpage addresses where you can get
+these sources.
+
+[[ChSetupWin32]]
+
+=== Win32/64: Step-by-Step Guide
+
+A quick setup guide for Win32 and Win64 with recommended
+configuration.
+
+[WARNING]
+====
+Unless you know exactly what you are doing, you
+should strictly follow the recommendations below.
+====
+
+[[ChSetupMSVC]]
+
+==== Install Microsoft C compiler and SDK
+
+You need to install, in exactly this order:
+
+. C compiler:
+http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express[Download]
+and install "Microsoft Visual $$C++$$ 2010 Express Edition." This is a very
+large download.
+
+. Windows SDK for Windows 7, if you want to build 64-bit binaries for Windows 7:
+http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx[Download] and
+install "Microsoft Windows SDK for Windows 7."
++
+In case the install of the SDK fails go to software management and
+remove the $$VC++$$ 2010 runtime and redist packages (don't worry, they
+will be added back via the service pack later). If installation of
+the SDK still fails, there may be a permission problem. See
+http://ctrlf5.net/?p=184[here] for a solution.
+
+. C compiler service pack:
+http://www.microsoft.com/en-us/download/details.aspx?id=23691[Download] and
+install "Microsoft Visual Studio 2010 Service Pack 1." This is a very large
+download.
+
+. Microsoft Visual $$C++$$ 2010 Service Pack 1 Compiler Update for the Windows
+SDK 7.1, if you want to build 64-bit binaries for Windows 7:
+http://www.microsoft.com/en-us/download/details.aspx?id=4422[Download] and
+install "Microsoft Visual $$C++$$ 2010 Service Pack 1 Compiler Update for the
+Windows SDK 7.1."
+
+If you will be building 64-bit binaries those items must be
+installed in that order as installing the Microsoft Visual Studio
+2010 Service Pack 1 can, if you've installed the Microsoft Windows
+SDK for Windows 7, remove the 64-bit compilers, as per
+http://support.microsoft.com/?kbid=2519277[the Microsoft Knowledge Base article "FIX: Visual C++ compilers are removed when you upgrade Visual Studio 2010 Professional or Visual Studio 2010 Express to Visual Studio 2010 SP1 if Windows SDK v7.1 is installed"].  The release notes for the Microsoft Visual
+$$C++$$ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1
+say that, to ensure that your system has a supported
+configuration, you must install the items in the order specified
+above.  If you have Microsoft Update installed, so that the
+Windows update process will update software other than components
+of Windows, and thus will update Visual Studio, you may need to
+disable it until after all of the above are installed, to make
+sure it doesn't install Visual Studio 2010 SP1 out of order.
+
+[TIP]
+.You can use other Microsoft C compiler variants
+====
+It's possible to compile Wireshark with a wide range
+of Microsoft C compiler variants. For details see
+<<ChToolsMSChain>>!
+====
+
+
+[WARNING]
+.Don't use gcc or Clang
+====
+Compiling with gcc or Clang is not recommended and will
+certainly not work (at least without a lot of advanced
+tweaking). For further details on this topic, see
+<<ChToolsGNUChain>>.
+====
+
+// XXX - mention the compiler and PSDK web installers -
+// which significantly reduce download size - and find out the
+// required components
+
+Why is this recommended? While this is a huge download,
+the 2010 Express Edition is the only free (as in beer)
+version that includes the Visual Studio integrated
+debugger. Visual $$C++$$ 2010 is also used to create official
+Wireshark builds, so it will likely have fewer development-related
+problems.
+
+[[ChSetupCygwin]]
+
+
+==== Install Cygwin
+
+http://www.cygwin.com/setup.exe[Download the Cygwin installer] and start it.
+
+At the "Select Packages" page, you'll need to select
+some additional packages which are not installed by default.
+Navigate to the required Category/Package row and, if the package
+has a "Skip" item in the "New" column, click on the "Skip" item
+so it shows a version number for:
+
+* Archive/unzip
+
+* Base/dos2unix
+
+* Devel/bison
+
+* Devel/flex
+
+* Devel/git (recommended - see discussion about using Git below)
+
+* Interpreters/perl
+
+* Utils/patch (optional)
+
+* Web/wget
+
+After clicking the Next button several times, the setup
+will then download and install the selected packages (this
+may take a while).
+
+Why is this recommended? Cygwin's bash version is required, as no native Win32
+version is available. As additional packages can easily be added, Perl and
+other packages are also used.
+
+[[ChSetupPython]]
+
+==== Install Python
+
+Get the Python 2.7 installer from http://python.org/download/[] and install
+Python into the default location ('C:\Python27').
+
+Why is this recommended? Cygwin's Python package doesn't work on some machines,
+so the Win32 native package is recommended.
+
+[[ChSetupsubversion]]
+
+==== Install Git
+
+Please note that the following is not required to build Wireshark but can be
+quite helpful when working with the sources.
+
+Working with the Git source repositories is highly recommended, see
+<<ChSrcObtain>>. It is much easier to update a personal source tree with Git
+rather than downloading a zip file and merging new sources into a personal
+source tree by hand. It also makes first-time setup easy and enables the
+Wireshark build process to determine your current source code revision.
+
+There are several ways in which Git can be installed. Most packages are
+available at the URLs below or via the http://chocolatey.org/[Chocolatey package manager].
+Note that many of the GUI interfaces depend on the command line version.
+
+===== The Official Windows Installer
+
+The official command-line installer is available at http://msysgit.github.io/.
+
+===== From Cygwin
+
+Cygwin comes with a port of git. To install it, run Cygwin's setup.exe, navigate
+to Devel/git, and if the package has a "Skip" item in the "New" column, click on
+the "Skip" item so it shows a version number.
+
+===== Git Extensions
+
+Git Extensions is a native Windows graphical Git client for
+Windows.  You can download the installer from
+http://code.google.com/p/gitextensions/.
+
+===== TortoiseGit
+
+TortoiseGit is a native Windows graphical Git 
+similar to TortoiseSVN. You can download the installer from
+http://code.google.com/p/tortoisegit/.
+
+===== Others
+
+A list of other GUI interfaces for Git can be found at
+http://git-scm.com/downloads/guis
+
+==== Install and Prepare Sources
+
+[TIP]
+.Make sure everything works
+====
+It's a good idea to make sure Wireshark compiles and runs at least once before
+you start hacking the Wireshark sources for your own project. This example uses
+Git Extensions but any other Git client should work as well.
+====
+
+// XXX -
+
+. *Download sources*. Download Wireshark sources into
+'C:\Development\wireshark' using Git Extensions:
+
+.. Open the Git Extensions application. By default Git Extensions
+   will show a validation checklist at startup. If anything needs to
+   be fixed do so now. You can bring up the checklist at any time
+   via _Tools -> Settings_.
+
+.. In the main screen select _Clone repository_. Fill in the following:
++
+Repository to clone: `https://code.wireshark.org/review/wireshark`
++
+Destination: Your top-level development directory, e.g. `C:\Development`.
++
+Subdirectory to create: Anything you'd like. Usually `wireshark`.
++
+[TIP]
+.Check your paths
+====
+Make sure your repository path doesn't contain spaces.
+====
+
+.. Click the _Clone_ button. Git Extensions should start cloning the
+   Wireshark repository.
+
+. Navigate to your newly cloned directory and open 'config.nmake' in an editor.
+  Edit the following settings:
+
+.. `VERSION_EXTRA`: Give Wireshark your "private" version info, e.g.
+`-myprotocol123` to distinguish it from official releases.
+
+.. `WIRESHARK_TARGET_PLATFORM`: Change to `win64` if you're building
+a 64-bit package. You can also define this in the system environment.
+
+.. `PROGRAM_FILES`: Where your programs reside, usually just keep the default:
+_C:\Program Files_ footnote:[International Windows might use different values
+here, e.g. a German version uses 'C:\Programme' -- take this also in account
+where 'C:\Program Files' appears elsewhere.]
+
+.. `MSVC_VARIANT`: Make sure the variant for your compiler is uncommented, and
+that all others are commented out. For example, if you're using Visual $$C++$$
+2010 Express Edition, find the line
++
+--
+----
+#MSVC_VARIANT=MSVC2010EE
+----
+and remove the comment character (#) from the beginning of the line. Then, find
+the line
+----
+MSVC_VARIANT=MSVC2010
+----
+and comment it out, by prefixing a hash (#). footnote:[Compiler dependent: This
+step depends on the compiler you are using. For compilers other than Visual
+$$C++$$ 2010, see the table at <<ChToolsMSChain>>.]
+--
+
+[[ChSetupPrepareCommandCom]]
+
+==== Prepare cmd.exe
+
+Prepare `cmd.exe` -- set its environment and current directory.
+
+. Start `cmd.exe`.
+
+. Set environment variables for Visual $$C++$$ 2010 Express Edition.
+footnote:[International Windows might use different values here, e.g. a German
+version uses 'C:\Programme' -- take this also in account where 'C:\Program
+Files' appears elsewhere. Note: You need to repeat steps 1 - 4 each time you
+open a new cmd.exe.] footnote:[Compiler dependent: This step depends on the
+compiler variant used. For variants other than the recommended Visual $$C++$$
+2010 Express Edition see the table at <<ChToolsMSChain>>]
++
+--
+To build 32-bit binaries call
+----
+> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x86'
+----
+and to build 64-bit binaries call
+----
+> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x64
+----
+If your version of the compiler does not have `SetEnv.Cmd` you may need to use
+`vcvarsall.bat` or `vcvars32.bat` which do much the same thing as `SetEnv.cmd`.
+For example, on some 64-bit installations, one would build a 32-bit version by
+invoking
+----
+> "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
+----
+and one would build a 64-bit version using the command
+----
+> "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Vcvarsall.bat" amd64
+----
+Consult your compiler's documentation to learn which version applies to your
+installation.
+--
+
+. Set environment variable to select target platform.
++
+--
+To build 32-bit binaries execute
+----
+> set WIRESHARK_TARGET_PLATFORM=win32
+----
+and to build 64-bit binaries execute
+----
+> set WIRESHARK_TARGET_PLATFORM=win64
+----
+--
+
+
+. Run
++
+--
+----
+> cd C:\Development\wireshark
+----
+to jump into the source directory
+--
+
+Wireshark development depends on several additional environment variables,
+particularly PATH. You can use a batch script to fill these in, along with the
+Visual $$C++$$ variables; for example:
+
+----
+@echo off
+
+if "%1" == "" goto x86
+if /i %1 == x86       goto x86
+if /i %1 == x64      goto x64
+goto usage
+
+:usage
+echo Error in script usage. The correct usage is:
+echo     %0 [option]
+echo where [option] is: x86 ^| x64 
+echo:
+echo For example:
+echo     %0 x86
+goto :eof
+
+:x64
+echo Adding things to the path...
+set PATH=%PATH%;c:\cygwin\bin
+set WIRESHARK_TARGET_PLATFORM=win64
+call "c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x64
+title Command Prompt (VC++ 2010 x64)
+goto :eof
+
+:x86
+echo Adding things to the path...
+set PATH=%PATH%;c:\cygwin\bin
+set WIRESHARK_TARGET_PLATFORM=win32
+call "c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x86
+title Command Prompt (VC++ 2010 -x86)
+goto :eof
+----
+
+[[ChToolsWin32Verify]]
+
+==== Verify installed tools
+
+After you've installed the Wireshark sources (see <<ChSrcObtain>>), you can
+check the correct installation of all tools by using the `verify_tools` target of
+the `Makefile.nmake` from the source package.
+
+[WARNING]
+.Dependencies ahead
+====
+You will need the Wireshark sources and some tools
+(nmake, bash) installed, before this verification is able
+to work.
+====
+
+Enter at the command line (cmd.exe, not Cygwin's bash):
+
+----
+> nmake -f Makefile.nmake verify_tools
+----
+
+This will check for the various tools needed to build Wireshark:
+
+----
+Checking for required applications:
+        cl: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/cl
+        link: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/link
+        nmake: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/nmake
+        bash: /usr/bin/bash
+        bison: /usr/bin/bison
+        flex: /usr/bin/flex
+        env: /usr/bin/env
+        grep: /usr/bin/grep
+        /usr/bin/find: /usr/bin/find
+        peflags: /usr/bin/peflags
+        perl: /usr/bin/perl
+        C:\Python27\python.exe: /cygdrive/c/Python27/python.exe
+        sed: /usr/bin/sed
+        unzip: /usr/bin/unzip
+        wget: /usr/bin/wget
+----
+
+If you have problems with all the first three items (cl, link, nmake), check
+that you called `SetEnv.Cmd` as mentioned in <<ChSetupPrepareCommandCom>>(which
+will "fix" your PATHsettings). However, the exact text will be slightly
+different depending on the MSVC version used.
+
+Unfortunately, the `link` command is defined both in Cygwin and in MSVC, each
+with completely different functionality. You'll need the MSVC link. If your link
+command looks something like: `/usr/bin/link` the link command of Cygwin takes
+precedence over the MSVC one. To fix this, you can change your `PATH` environment
+setting or simply rename `link.exe` in Cygwin. If you rename it, make sure to
+remember that a Cygwin update may provide a new version of it.
+
+Make sure that the other tools found are the Cygwin versions. Some build
+problems have been caused by incompatible versions of `grep` and `unzip`.
+
+==== Install Libraries
+
+. If you've closed `cmd.exe` prepare it again.
+
+. Run
++
+--
+----
+> nmake -f Makefile.nmake setup
+----
+to download and install libraries using `wget`. This may take a while.
+--
+
+. If the download fails you may be behind a restrictive firewall. See the proxy
+comment in <<ChToolsWget>>.
+
+Note that 32-bit versions of the software require 32-bit versions of the
+libraries and that 64-bit versions require 64-bit libraries. The build process
+creates independent directories for each as needed. See
+<<ChSetupPrepareCommandCom>>for how to use `SetEnv.Cmd` and
+`WIRESHARK_TARGET_PLATFORM` to select either a 32- or 64-bit build.
+
+==== Distclean Sources
+
+The released Wireshark sources contain files that are
+prepared for a UNIX build (e.g. 'config.h').
+
+You must distclean your sources before building the first time.
+
+. If you've closed `cmd.exe` prepare it again.
+
+. Run
++
+--
+----
+> nmake -f Makefile.nmake distclean
+----
+to cleanup the Wireshark sources.
+--
+
+==== Build Wireshark
+
+Now it's time to build Wireshark!
+
+. If you've closed `cmd.exe` prepare it again.
+
+. Run
++
+--
+----
+> nmake -f Makefile.nmake all
+----
+to build Wireshark.
+--
+
+. Wait for Wireshark to compile. This will take a while.
+
+. Run `C:\wireshark\wireshark-gtk2\wireshark.exe` and make sure it starts. s
+
+. Open 'Help -> About'. If it shows your "private" program
+version, e.g.: Version wireshark-major-minor-version:[].x-myprotocol123
+congratulations! You have compiled your own version of Wireshark!
+
+TIP: If compilation fails for suspicious
+reasons after you changed some source files try to "distclean"
+the sources and make "all" again
+
+==== Debug Environment Setup
+
+****
+Unfortunately this section hasn't been written. You should be able
+to use the Visual Studio debugger to attach to a running executable.
+****
+
+==== Optional: Create User's and Developer's Guide
+
+Detailed information to build these guides can be found in the file
+'docbook/README.txt' in the Wireshark sources.
+
+==== Optional: Create a Wireshark Installer
+
+Note: You should have successfully built Wireshark
+before doing the following.
+
+If you want to build your own
+'wireshark-win32-wireshark-major-minor-version:[].x-myprotocol123.exe',
+you'll need NSIS.
+
+. NSIS:
+http://nsis.sourceforge.net[Download] and install NSIS
++
+You may check the `MAKENSIS` setting in the file 'config.nmake' in the Wireshark
+sources. Note that the 32-bit version of NSIS will work for both 32-bit and
+64-bit versions of Wireshark.
+
+. Runtime redistributable: To build a 32-bit version you will need
+'$$vcredist_x86.exe$$':
+http://www.microsoft.com/en-us/download/details.aspx?id=8328[Download] the
+C-Runtime redistributable for Visual
+$$C++$$ 2010 Express Edition SP1 (__$$vcredist_x86.exe$$__)
+and copy it into 'C:\wireshark-win32-libs'.footnoteref:[compilerdependent,Compiler dependent: This step
+depends on the compiler variant used. For variants other than
+the recommended Visual $$C++$$ 2010 Express Edition SP1 see the table
+at <<ChToolsMSChain>>.]
++
+To build a 64-bit version, you will need 
+_$$vcredist_x64.exe$$_: 
+http://www.microsoft.com/en-us/download/details.aspx?id=13523[Download] the 64-bit redistributable for Visual $$C++$$ 2010 Express
+Edition SP1 (__$$vcredist_x64.exe$$__) and copy it into 
+__C:\Wireshark-win64-libs__.footnoteref:[compilerdependent]
+
+. If you've closed `cmd.exe` prepare it again.
+
+. Run
++
+--
+----
+> nmake -f Makefile.nmake packaging
+----
+to build Wireshark installer.
+--
+
+. Run
++
+--
+----
+> C:\wireshark\packaging\nsis\wireshark-win32-wireshark-major-minor-version:[].x-myprotocol123.exe
+----
+to test your new installer. It's a good idea to test on a different machine
+than the developer machine.
+--
diff --git a/docbook/wsdg_src/WSDG_chapter_quick_setup.xml b/docbook/wsdg_src/WSDG_chapter_quick_setup.xml
deleted file mode 100644 (file)
index 7ca8bf0..0000000
+++ /dev/null
@@ -1,595 +0,0 @@
-<!-- WSDG Chapter Setup -->
-<!-- $Id$ -->
-
-<chapter id="ChapterSetup">
-  <title>Quick Setup</title>
-  <section id="ChSetupUNIX">
-    <title>UNIX: Installation</title>
-    <para>All the tools required are usually installed on a UNIX
-    developer machine.</para>
-    <para>If a tool is not already installed on your system, you
-    will typically use the installation package from your
-    distribution (by your favourite package manager: aptitude, yum,
-    synaptics, ...).</para>
-    <para>If an install package is not available, or you have a
-    reason not to use it (maybe because it's simply too old), you
-    can install that tool from source code. The following sections
-    will provide you with the webpage addresses where you can get
-    these sources.</para>
-  </section>
-  <section id="ChSetupWin32">
-    <title>Win32/64: Step-by-Step Guide</title>
-    <para>A quick setup guide for Win32 and Win64 with recommended
-    configuration.</para>
-    <warning>
-      <title>Warning!</title>
-      <para>
-        <command>Unless you know exactly what you are doing, you
-        should strictly follow the recommendations!</command>
-      </para>
-    </warning>
-    <section id="ChSetupMSVC">
-      <title>Install Microsoft C compiler and SDK</title>
-      <para>You need to install, in exactly this order:
-      <orderedlist>
-        <listitem>
-          <para>C compiler:
-          <ulink url="http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express">
-          Download</ulink> and install "Microsoft Visual C++
-                   2010 Express Edition." (This is a very large download.)</para>
-        </listitem>
-        <listitem>
-          <para>Windows SDK for Windows 7, if you want to build 64-bit
-                binaries for Windows 7:
-          <ulink url="http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx">
-          Download</ulink> and install "Microsoft Windows SDK for
-                 Windows 7."</para>
-          <para>In case the install of the SDK fails go to software management and
-                remove the vc++2010 runtime and redist packages (don't worry, they
-                will be added back via the service pack later). If installation of
-                the SDK still fails, there may be a permission problem. See
-                <ulink url="http://ctrlf5.net/?p=184">here</ulink> how to resolve
-                that.</para>
-        </listitem>
-        <listitem>
-          <para>C compiler service pack:
-          <ulink url="http://www.microsoft.com/en-us/download/details.aspx?id=23691">
-          Download</ulink> and install "Microsoft Visual Studio 2010
-                  Service Pack 1." (This is a very large download.)</para>
-        </listitem>
-        <listitem>
-          <para>Microsoft Visual C++ 2010 Service Pack 1 Compiler Update
-          for the Windows SDK 7.1, if you want to build 64-bit
-                binaries for Windows 7:
-          <ulink url="http://www.microsoft.com/en-us/download/details.aspx?id=4422">
-          Download</ulink> and install "Microsoft Visual C++ 2010
-                  Service Pack 1 Compiler Update for the Windows SDK 7.1."</para>
-        </listitem>
-        <!--
-        <listitem>
-          <para>Platform SDK :
-          <ulink url="http://www.microsoft.com/downloads/details.aspx?familyid=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;displaylang=en">
-          Download</ulink>(420MB) and install "Microsoft Platform
-                 SDK Server 2003 R2"</para>
-        </listitem>
-        -->
-      </orderedlist></para>
-      <para>If you will be building 64-bit binaries, those items must be
-      installed in that order, as installing the Microsoft Visual Studio
-      2010 Service Pack 1 can, if you've installed the Microsoft Windows
-      SDK for Windows 7, remove the 64-bit compilers, as per
-      <ulink url="http://support.microsoft.com/?kbid=2519277">the
-      Microsoft Knowledge Base article "FIX: Visual C++ compilers are
-      removed when you upgrade Visual Studio 2010 Professional or Visual
-      Studio 2010 Express to Visual Studio 2010 SP1 if Windows SDK v7.1
-      is installed"</ulink>.  The release notes for the Microsoft Visual
-      C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1
-      say that, to ensure that your system has a supported
-      configuration, you must install the items in the order specified
-      above.  If you have Microsoft Update installed, so that the
-      Windows update process will update software other than components
-      of Windows, and thus will update Visual Studio, you may need to
-      disable it until after all of the above are installed, to make
-      sure it doesn't install Visual Studio 2010 SP1 out of order.</para>
-      <tip>
-        <title>You can use other Microsoft C compiler variants!</title>
-        <para>It's possible to compile Wireshark with a wide range
-        of Microsoft C compiler variants. For details see
-        <xref linkend="ChToolsMSChain" />!</para>
-      </tip>
-      <warning>
-        <title>Don't use Cygwin's gcc!</title>
-        <para>Using Cygwin's gcc is not recommended and will
-        certainly not work (at least without a lot of advanced
-        tweaking). For further details on this topic, see
-        <xref linkend="ChToolsGNUChain" />.</para>
-      </warning>
-      <para>XXX - mention the compiler and PSDK web installers -
-      which significantly reduce download size - and find out the
-      required components</para>
-      <para>Why is this recommended? While this is a huge download,
-      the 2010 Express Edition is the only free (as in beer)
-      version that includes the Visual Studio integrated
-      debugger. Visual C++ 2010 is also used to create official
-      Wireshark builds, so it will likely have fewer development-related
-      problems.</para>
-    </section>
-    <section id="ChSetupCygwin">
-      <title>Install Cygwin</title>
-      <para>
-      <ulink url="http://www.cygwin.com/setup.exe">
-      Download</ulink> the Cygwin installer and start it.</para>
-      <para>At the "Select Packages" page, you'll need to select
-      some additional packages which are not installed by default.
-      Navigate to the required Category/Package row and, if the package
-      has a "Skip" item in the "New" column, click on the "Skip" item
-      so it shows a version number for:
-      <itemizedlist>
-        <listitem>
-          <para>Archive/unzip</para>
-        </listitem>
-        <listitem>
-          <para>Base/dos2unix</para>
-        </listitem>
-        <listitem>
-          <para>Devel/bison</para>
-        </listitem>
-        <listitem>
-          <para>Devel/flex</para>
-        </listitem>
-        <listitem>
-          <para>Devel/subversion (optional - see discussion about using Subversion below)</para>
-        </listitem>
-        <listitem>
-          <para>Interpreters/perl</para>
-        </listitem>
-        <listitem>
-          <para>Utils/patch</para>
-        </listitem>
-        <listitem>
-          <para>Web/wget</para>
-        </listitem>
-      </itemizedlist></para>
-      <para>After clicking the Next button several times, the setup
-      will then download and install the selected packages (this
-      may take a while).</para>
-      <para>Why this is recommended: Cygwin's bash version is
-      required, as no native Win32 version is available. As
-      additional packages can easily be added, the perl and alike
-      packages are also used.</para>
-    </section>
-    <section id="ChSetupPython">
-      <title>Install Python</title>
-      <para>Get the Python 2.7 installer from:
-      <ulink url="http://python.org/download/" /> and install Python
-      into the default location (C:\Python27).</para>
-      <para>Why this is recommended: Cygwin's Python package
-      doesn't work on some machines, so the Win32 native package is
-      recommended.</para>
-    </section>
-    <section id="ChSetupsubversion">
-      <title>Install Subversion Client</title>
-      <para>Please note that the following is not required to build
-      Wireshark, but can be quite helpful when working with the
-      sources.</para>
-      <para>Working with the Subversion source repositories is highly
-      recommended, see <xref linkend="ChSrcObtain" />. It is much easier
-      to update a personal source tree with Subversion rather than downloading
-      a zip file and merging new sources into a personal source tree
-      "by hand."  It also makes first-time setup easy and enables
-      the Wireshark build process to determine your current source code
-      revision.</para>
-      <para>There are several ways in which Subversion can be
-      installed:</para>
-      <section>
-        <title>Subversion from Cygwin</title>
-        <para>Cygwin comes with a command-line Subversion client.  To install
-       it, run Cygwin's setup.exe, navigate to Devel/subversion, and 
-       if the package has a "Skip" item in the "New" column, click on the
-       "Skip" item so it shows a version number.</para>
-      </section>
-      <section>
-        <title>Subversion from apache.org</title>
-        <para>There are several binary-distribution Subversion clients
-       available from apache.org.  Go to
-        <ulink url="http://subversion.apache.org/" /> and simply
-        install one.</para>
-      </section>
-      <section>
-        <title>TortoiseSVN</title>
-        <para>TortoiseSVN is a native Windows graphical Subversion client for
-       Windows.  You can download the setup from
-        <ulink url="http://tortoisesvn.net/" /> and simply
-        install it.</para>
-      </section>
-    </section>
-    <section>
-      <title>Install and Prepare Sources</title>
-      <para>
-      <tip> <title>Tip</title>
-      <para>It's a good idea to successfully compile and run
-      Wireshark at least once before you start hacking the
-      Wireshark sources for your own project! This example uses TortoiseSVN
-      but another Subversion client would work as well.</para>
-      </tip>
-      <orderedlist>
-        <listitem>
-          <para>Download sources : Download Wireshark sources into:
-          <filename>C:\wireshark</filename> using TortoiseSVN</para>
-          <para>
-            <orderedlist>
-              <listitem>
-                <para>right click on the C:\ drive in Windows
-                Explorer</para>
-              </listitem>
-              <listitem>
-                <para>in the upcoming context menu select "SVN
-                checkout..." and then set:</para>
-              </listitem>
-              <listitem>
-                <para>
-                  <orderedlist>
-                    <listitem>
-                      <para>URL of repository: "
-                      <literal>
-                      http://anonsvn.wireshark.org/wireshark/trunk/</literal>"</para>
-                    </listitem>
-                    <listitem>
-                      <para>Checkout directory:
-                      <filename>C:\wireshark</filename></para>
-                    </listitem>
-                  </orderedlist>
-                </para>
-              </listitem>
-              <listitem>
-                <para>TortoiseSVN might ask you to create this
-                directory - say yes</para>
-              </listitem>
-              <listitem>
-                <para>TortoiseSVN starts downloading the sources</para>
-              </listitem>
-              <listitem>
-                <para>if the download fails you may be behind a
-                restrictive firewall, see
-                <xref linkend="ChSrcObtain" /> for alternative
-                download methods</para>
-              </listitem>
-            </orderedlist>
-          </para>
-        </listitem>
-        <listitem>
-          <para>Edit config.nmake: edit the settings in
-          <filename>C:\wireshark\config.nmake</filename>, especially:</para>
-          <para>
-            <orderedlist>
-              <listitem>
-                <para><varname>VERSION_EXTRA</varname> : Give Wireshark your "private"
-                version info, e.g.: -myprotocol123 - to distinguish
-                it from an official release!</para>
-              </listitem>
-              <listitem>
-                <para><varname>PROGRAM_FILES</varname> : Where your programs reside,
-                usually just keep the default: <filename>C:\Program Files</filename>
-                <superscript>1</superscript></para>
-              </listitem>
-              <listitem>
-                <para><varname>MSVC_VARIANT</varname> : Make sure the variant for
-                your compiler is
-                uncommented, and that all others are commented out. For example,
-                if you're using Visual C++ 2010 Express Edition, find the line
-                <programlisting>
-<![CDATA[#MSVC_VARIANT=MSVC2010EE]]>
-                </programlisting>
-                and remove the comment character (#)
-                from the beginning of the line. Then, find the line
-                <programlisting>
-<![CDATA[MSVC_VARIANT=MSVC2010]]>
-                </programlisting>
-                and comment it out, by prefixing a hash (#).
-                <superscript>2</superscript></para>
-              </listitem>
-            </orderedlist>
-          </para>
-        </listitem>
-      </orderedlist>
-      <superscript>1</superscript>International Windows might use
-      different values here, e.g. a German version uses
-      <filename>C:\Programme</filename> - take this also in account where
-      <filename>C:\Program Files</filename> appears elsewhere.</para>
-      <para>
-      <superscript>2</superscript>Compiler dependent: This step
-      depends on the compiler you are using. For compilers other than
-      Visual C++ 2010, see the table at
-      <xref linkend="ChToolsMSChain" />.</para>
-    </section>
-    <section id="ChSetupPrepareCommandCom">
-      <title>Prepare cmd.exe</title>
-      <para>Prepare <filename>cmd.exe</filename> - set environment and current dir.
-      <orderedlist>
-        <listitem>
-          <para>start <command>cmd.exe</command></para>
-        </listitem>
-        <!--
-        <listitem>
-          <para>call "C:\Program Files\Microsoft Platform SDK for
-          Windows Server 2003 R2\SetEnv.Cmd" to set environment
-          variables of Platform SDK Server 2003 R2
-          <superscript>1,2</superscript></para>
-        </listitem>
-        -->
-        <listitem>
-          <para>set environment variables for Visual C++ 2010 Express
-          Edition:<superscript>1,2</superscript></para>
-         <para>to build 32-bit binaries call
-         <command>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x86</command>
-         and to build 64-bit binaries call
-         <command>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x64</command></para>
-         <para>If your version of the compiler does not have <filename>SetEnv.Cmd</filename>, you
-         may need to use <filename>vcvarsall.bat</filename> or <filename>vcvars32.bat</filename>
-         which do much the same thing as <filename>SetEnv.cmd</filename>.</para>
-         <para>
-         For example, on some 64-bit installations, one would build a 32-bit version
-         by invoking 
-         <command>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</command>
-         and one would build a 64-bit version using the command
-         <command>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Vcvarsall.bat amd64</command>
-         Consult your compiler's documentation to learn which version applies to your installation.</para>
-        </listitem>
-        <listitem>
-         <para>set environment variable to select target platform</para>
-         <para>to build 32-bit binaries execute
-         <command>set WIRESHARK_TARGET_PLATFORM=win32</command>
-         and to build 64-bit binaries execute
-         <command>set WIRESHARK_TARGET_PLATFORM=win64</command></para>
-        </listitem>
-        <listitem>
-          <para><command>cd C:\wireshark</command> to jump into the source
-          directory</para>
-        </listitem>
-      </orderedlist>
-      <superscript>1</superscript>International Windows might use
-      different values here, e.g. a German version uses
-      <filename>C:\Programme</filename> - take this also in account where
-      <filename>C:\Program Files</filename> appears elsewhere. Note: You need
-      to repeat steps 1 - 4 each time you open a new cmd.exe!</para>
-      <para><superscript>2</superscript>Compiler dependent: This step
-      depends on the compiler variant used, for other variants than
-      the recommended Visual C++ 2010 Express Edition see the table
-      at
-      <xref linkend="ChToolsMSChain" />!</para>
-
-      <para>Wireshark development depends on several additional
-      environment variables, particularly <varname>PATH</varname>.
-      You can use a batch script to fill these in, along with the Visual
-      C++ variables; for example:
-
-        <programlisting>
-<![CDATA[@echo off
-
-if "%1" == "" goto x86
-if /i %1 == x86       goto x86
-if /i %1 == x64      goto x64
-goto usage
-
-:usage
-echo Error in script usage. The correct usage is:
-echo     %0 [option]
-echo where [option] is: x86 ^| x64 
-echo:
-echo For example:
-echo     %0 x86
-goto :eof
-
-:x64
-echo Adding things to the path...
-set PATH=%PATH%;c:\cygwin\bin
-set WIRESHARK_TARGET_PLATFORM=win64
-call "c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x64
-title Command Prompt (VC++ 2010 x64)
-goto :eof
-
-:x86
-echo Adding things to the path...
-set PATH=%PATH%;c:\cygwin\bin
-set WIRESHARK_TARGET_PLATFORM=win32
-call "c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x86
-title Command Prompt (VC++ 2010 -x86)
-goto :eof]]>
-
-        </programlisting>
-      </para>
-    </section>
-    <section id="ChToolsWin32Verify">
-      <title>Verify installed tools</title>
-      <para>After you've installed the Wireshark sources (see
-      <xref linkend="ChSrcObtain" />), you can check the correct
-      installation of all tools by using the <parameter>verify_tools</parameter>
-      target of the
-      <filename>Makefile.nmake</filename> from the source package.</para>
-      <warning>
-        <title>Warning!</title>
-        <para>You will need the Wireshark sources and some tools
-        (nmake, bash) installed, before this verification is able
-        to work.</para>
-      </warning>
-      <para>Enter at the command line (cmd.exe, not Cygwin's bash!):</para>
-      <para>
-        <prompt>&gt;</prompt>
-        <userinput>nmake -f Makefile.nmake verify_tools</userinput>
-      </para>
-      <para>This will check for the various tools needed to build Wireshark:</para>
-      <para>
-        <programlisting>
-<![CDATA[Checking for required applications:
-        cl: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/cl
-        link: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/link
-        nmake: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64/nmake
-        bash: /usr/bin/bash
-        bison: /usr/bin/bison
-        flex: /usr/bin/flex
-        env: /usr/bin/env
-        grep: /usr/bin/grep
-        /usr/bin/find: /usr/bin/find
-        peflags: /usr/bin/peflags
-        perl: /usr/bin/perl
-        C:\Python27\python.exe: /cygdrive/c/Python27/python.exe
-        sed: /usr/bin/sed
-        unzip: /usr/bin/unzip
-        wget: /usr/bin/wget]]>
-        </programlisting>
-      </para>
-      <para>If you have problems with all the first three items (cl, link, nmake),
-      check that you called <command>SetEnv.Cmd</command>
-      as mentioned in
-      <xref linkend="ChSetupPrepareCommandCom" /> (which will "fix"
-      your <varname>PATH</varname> settings). However, the exact text will be slightly
-      different depending on the MSVC version used.</para>
-      <para>Unfortunately, the link command is defined both in
-      Cygwin and in MSVC each with completely different functionality;
-      you'll need the MSVC link. If your link command looks
-      something like: <command>/usr/bin/link</command>, the link command of Cygwin
-      takes precedence over the MSVC one. To fix this, you can
-      change your <varname>PATH</varname> environment setting or simply rename the
-      <filename>link.exe</filename> in Cygwin. If you rename it, make sure to remember
-      that a Cygwin update may provide a new version of it.</para>
-      <para>Make sure that the other tools found are the Cygwin versions.  Some build
-      problems have been caused by incompatible versions of <command>grep</command> and
-      <command>unzip</command>.</para>
-    </section>
-    <section>
-      <title>Install Libraries</title>
-      <orderedlist>
-        <listitem>
-          <para>If you've closed <command>cmd.exe</command> in the meantime,
-          prepare <command>cmd.exe</command> again.</para>
-        </listitem>
-        <listitem>
-          <para><command>nmake -f Makefile.nmake setup</command> downloads libraries
-          using <command>wget</command> and installs them - this may take a while
-          ...</para>
-        </listitem>
-        <listitem>
-          <para>If the download fails you may be behind a
-          restrictive firewall, see the proxy comment in
-          <xref linkend="ChToolsWget"/>.</para>
-        </listitem>
-      </orderedlist>
-      <para>Note that 32-bit versions of the software require 32-bit versions of the 
-      libraries and that 64-bit versions require 64-bit libraries.  The build process
-      creates independent directories for each as needed.  See 
-      <xref linkend="ChSetupPrepareCommandCom" /> for how to use 
-      <command>SetEnv.Cmd</command> and <varname>WIRESHARK_TARGET_PLATFORM</varname>
-      to select either a 32- or 64-bit build.</para>
-    </section>
-    <section>
-      <title>Distclean Sources</title>
-      <para>The released Wireshark sources contain files that are
-      prepared for a UNIX build (e.g. <filename>config.h</filename>).</para>
-      <para>You must distclean your sources before building the
-      first time!
-      <orderedlist>
-        <listitem>
-          <para>If you've closed <command>cmd.exe</command> in the meantime,
-          prepare <command>cmd.exe</command> again</para>
-        </listitem>
-        <listitem>
-          <para><command>nmake -f Makefile.nmake distclean</command>
-          to cleanup the Wireshark sources</para>
-        </listitem>
-      </orderedlist></para>
-    </section>
-    <section>
-      <title>Build Wireshark</title>
-      <para>Now it's time to build Wireshark ...
-      <orderedlist>
-        <listitem>
-          <para>If you've closed <command>cmd.exe</command> in the meantime,
-          prepare <command>cmd.exe</command> again</para>
-        </listitem>
-        <listitem>
-          <para><command>nmake -f Makefile.nmake all</command>
-          to build Wireshark</para>
-        </listitem>
-        <listitem>
-          <para>wait for Wireshark to compile - this may take a
-          while!</para>
-        </listitem>
-        <listitem>
-          <para>run <command>C:\wireshark\wireshark-gtk2\wireshark.exe</command>
-          and check if it starts</para>
-        </listitem>
-        <listitem>
-          <para>check Help/About if it shows your "private" program
-          version, e.g.: Version &WiresharkCurrentVersion;.x-myprotocol123
-          - you might run a release version previously installed!</para>
-        </listitem>
-      </orderedlist>Tip: If compilation fails for suspicious
-      reasons after you changed some source files try to "distclean"
-      the sources and make "all" again</para>
-    </section>
-    <section>
-      <title>Debug Environment Setup (XXX)</title>
-      <para>XXX - debug needs to be written, e.g. an idea is the
-      create a simple MSVC workspace/project(s) to ease Visual
-      Studio debugging</para>
-    </section>
-    <section>
-      <title>Optional: Create User's and Developer's Guide</title>
-      <para>Detailed information to build these guides can be found in the file
-      <filename>docbook/README.txt</filename> in the Wireshark sources.</para>
-    </section>
-    <section>
-      <title>Optional: Create a Wireshark Installer</title>
-      <para>Note: You should have successfully built Wireshark
-      before doing the following!</para>
-      <para>If you want to build your own
-      <filename>wireshark-win32-&WiresharkCurrentVersion;.x-myprotocol123.exe</filename>,
-      you'll need NSIS.
-      <orderedlist>
-        <listitem>
-          <para>NSIS:
-          <ulink url="http://nsis.sourceforge.net">
-          Download</ulink> and install NSIS</para>
-          <para>You may check the <varname>MAKENSIS</varname> setting in the file
-          <filename>config.nmake</filename> of the Wireshark sources.  Note that the
-         32-bit version of NSIS will work for both 32-bit and 64-bit versions of
-         Wireshark.</para>
-        </listitem>
-        <listitem>
-          <para>Runtime redistributable: to build a 32-bit version you will need 
-         <filename>vcredist_x86.exe</filename> :
-          <ulink url="http://www.microsoft.com/en-us/download/details.aspx?id=8328">
-          Download</ulink> the C-Runtime redistributable for Visual
-          C++ 2010 Express Edition SP1 (<filename>vcredist_x86.exe</filename>)
-          and copy it into <filename>C:\wireshark-win32-libs</filename>
-          <superscript>1</superscript></para>
-         <para>To build a 64-bit version, you will need 
-         <filename>vcredist_x64.exe</filename> : 
-         <ulink url="http://www.microsoft.com/en-us/download/details.aspx?id=13523">
-         Download</ulink> the 64-bit redistributable for Visual C++ 2010 Express 
-         Edition SP1 (<filename>vcredist_x64.exe</filename>) and copy it into 
-         <filename>C:\Wireshark-win64-libs</filename><superscript>1</superscript>
-          </para>
-        </listitem>
-        <listitem>
-          <para>If you've closed <command>cmd.exe</command> in the meantime,
-          prepare <command>cmd.exe</command> again</para>
-        </listitem>
-        <listitem>
-          <para><command>nmake -f Makefile.nmake packaging</command>
-          build Wireshark installer</para>
-        </listitem>
-        <listitem>
-          <para>run
-          <command>C:\wireshark\packaging\nsis\wireshark-win32-&WiresharkCurrentVersion;.x-myprotocol123.exe</command>
-          and test it - it's a good idea to test also on a different machine
-          than the developer machine.</para>
-        </listitem>
-      </orderedlist>
-      <superscript>1</superscript>Compiler dependent: This step
-      depends on the compiler variant used; for other variants than
-      the recommended Visual C++ 2010 Express Edition SP1 see the table
-      at <xref linkend="ChToolsMSChain" />!</para>
-    </section>
-  </section>
-</chapter>
diff --git a/docbook/wsdg_src/WSDG_chapter_sources.asciidoc b/docbook/wsdg_src/WSDG_chapter_sources.asciidoc
new file mode 100644 (file)
index 0000000..a732c42
--- /dev/null
@@ -0,0 +1,1139 @@
+
+++++++++++++++++++++++++++++++++++++++
+<!-- WSDG Chapter Sources -->
+++++++++++++++++++++++++++++++++++++++
+
+++++++++++++++++++++++++++++++++++++++
+<!-- $Id$ -->
+++++++++++++++++++++++++++++++++++++++
+    
+[[ChapterSources]]
+
+== Work with the Wireshark sources
+
+[[ChSrcIntro]]
+
+=== Introduction
+
+This chapter will explain how to work with the Wireshark source code.
+It will show you how to:
+
+* Get the source
+
+* Compile it on your machine
+
+* Submit changes for inclusion in the official release
+
+This chapter will not explain the source file contents in detail,
+such as where to find specific functionality. This is done in
+<<ChCodeOverview>>.
+
+[[ChSrcGitRepository]]
+
+=== The Wireshark Git repository
+
+http://git-scm.com/[Git] is used to keep track of the changes made to the
+Wireshark source code. The code is stored inside Wireshark project's Git
+repository located at a server at the wireshark.org domain.
+
+
+// Why Git?
+//
+// - Allows much more flexible development
+//
+// Why Gerrit?
+//
+// - Easy to contribute. Sign in with any OpenID provider and push your changes.
+// - Usable from the web and command line.
+// - Integrated with many popular tools.
+
+
+// To quote the Subversion book about "What is Subversion?":
+
+// "Subversion is a free/open-source version control system. That is,
+//     Subversion manages files and directories over time. A tree of files is
+//     placed into a central repository. The repository is much like an ordinary
+//     file server, except that it remembers every change ever made to your files
+//     and directories. This allows you to recover older versions of your data,
+//     or examine the history of how your data changed. In this regard, many
+//     people think of a version control system as a sort of "time machine".
+//     "
+
+.Git is our *third* revision conrol system
+[NOTE]
+====
+Wireshark originally used http://www.nongnu.org/cvs/[Concurrent Versions System]
+(CVS) and migrated to http://subversion.apache.org/[Subversion] in July 2004.
+The Subversion repository was subsequently migrated to Git in January 2014.
+====
+
+Using Wireshark's Git repository you can:
+
+* Keep your private sources up to date with very little effort
+
+* Get a mail notification when the official source code changes
+
+* Get the source files from any previous release (or any other point in time)
+
+* Have a quick look at the sources using a web interface
+
+* See which person changed a specific piece of code
+
+* and much more
+
+Changes to the official repository are managed using the
+https://code.google.com/p/gerrit/[Gerrit] code review sytem. Gerrit
+makes it easy to test and disucss changes before they are pushed to the
+main repository. For an overview of Gerrit see the
+https://code.wireshark.org/review/Documentation/intro-quick.html[Quick Introduction].
+
+// Subversion is divided into a client and a server part.
+// Thanks to Gerald Combs (the maintainer of the Subversion server),
+// no user has to deal with the maintenance of the Subversion server.
+// You will only need a Subversion client, which is available as
+// both a command-line and a GUI tool for many different platforms.
+//
+// For further reference about Subversion, have a look at the homepage of the
+// Subversion project: http://subversion.apache.org/[]. There
+// is a good and free book about it available at: http://svnbook.red-bean.com/[].
+//
+// Please note that Wireshark's public (anonymous) Subversion repository is
+// separate from the main repository.
+// It may take several minutes for committed changes to appear in the
+// public repository - so please be patient for a few minutes if you
+// desperately need a code change that was committed to the repository
+// very recently.
+
+[[ChSrcWebInterface]]
+
+==== The web interface to the Git repository
+
+If you need a quick look at the Wireshark source code you can
+browse the most recent file versions in the master branch using Gitweb:
+
+https://code.wireshark.org/review/gitweb?p=wireshark.git;a=tree
+
+You can also view commit logs, branches, tags, and past revisions:
+
+https://code.wireshark.org/review/gitweb?p=wireshark.git
+
+Like most revision control systems, Git uses
+http://en.wikipedia.org/wiki/Branching_%28revision_control%29[branching] to
+manange different copies of the source code and allow parallel development.
+Wireshark uses the following branches for official releases:
+
+* 'master': Main feature development and odd-numbered "feature" releases.
+* 'master-x.y': Stable release maintenance. For example, master-1.10 is used
+  to manage the 1.10.x official releases.
+
+// wireshark-code-browse-url:[]
+//
+// you only need a Web browser.
+//
+// A _simple view_ of the latest developer version can be
+// found at:
+//
+// http://anonsvn.wireshark.org/wireshark/trunk/[].
+//
+// A _comprehensive view_ of all source versions
+// (e.g. including the capability to show differences between versions)
+// is available at:
+//
+// http://anonsvn.wireshark.org/viewvc/viewvc.cgi/[].
+//
+// Of special interest might be the subdirectories:
+//
+// * 'trunk': the very latest source files
+//
+// * 'releases': the source files of all released versions
+
+[[ChSrcObtain]]
+
+=== Obtain the Wireshark sources
+
+There are several ways to obtain the sources from Wireshark's Git
+repository.
+
+[TIP]
+.Check out from the master branch using Git.
+====
+Using Git is much easier than synchronizing your source tree by hand
+using any of the zip file methods mentioned below.
+Git merges of changes into your personal source tree in a
+very comfortable and quick way. So you can update your source tree several
+times a day without much effort.
+====
+
+
+[NOTE]
+.Keep your sources up to date
+====
+The following ways to retrieve the Wireshark sources are sorted in
+decreasing source timeliness.
+If you plan to commit changes you've made to the sources,
+it's a good idea to keep your private source tree as current as possible.
+====
+
+The age mentioned in the following sections indicates the age of the
+most recent change in that set of the sources.
+
+
+[[ChSrcAnon]]
+
+
+==== Git over HTTPS or SSH
+
+Recommended for development purposes.
+
+Age: a few minutes.
+
+You can use a Git client to download the source code from Wireshark's code
+review system. Anyone can clone from the anonymous URL:
+
+* wireshark-git-anonhttp-url:[]
+
+If you create a Gerrit account you can clone from an authenticated URL:
+
+* wireshark-git-http-url:[]
+* wireshark-git-ssh-url:[]
+
+SSH lets you use Gerrit on the
+https://code.wireshark.org/review/Documentation/cmd-index.html#_server[command line].
+HTTP lets you access the repository in environments that block the Gerrit SSH
+port (29418). Command line access isn't available over HTTP.
+
+See <<ChToolsSubversion>> for information on installing and configuring a Git
+client.
+
+For example, to check out using the command-line Git client you
+would type:
+
+----
+$ git clone wireshark-git-anonhttp-url:[]
+----
+
+The checkout has to be only done once. This will copy all the sources of the
+latest version (including directories) from the server to your machine. This
+may take some time, depending on the speed of your internet connection.
+
+[[ChSrcSVNWeb]]
+
+==== Anonymous Subversion web interface
+
+Recommended for informational purposes only, as only individual files can
+be downloaded.
+
+
+Age: a few minutes (same as anonymous Subversion access).
+
+
+The entire source tree of the Subversion repository is available via a
+web interface at:
+wireshark-code-browse-url:[].
+You can view each revision of a particular file, as well as diffs between
+different revisions.
+You can also download individual files but not entire directories.
+
+
+[[ChSrcBuildbot]]
+
+
+==== Buildbot Snapshots
+
+Recommended for development purposes, if direct Subversion access isn't
+possible (e.g. because of a restrictive firewall).
+
+
+Age: some number of minutes (a bit older than the anonymous Subversion access).
+
+
+The buildbot server will automatically start to generate a snapshot of
+Wireshark's source tree after a source code change is committed.
+These snapshots can be found at: wireshark-download-page:[]automated/src/[].
+
+
+If anonymous Subversion access isn't possible, e.g. if the connection to
+the server isn't possible because of a corporate firewall, the sources
+can be obtained by downloading the buildbot snapshots. However, if you are
+going to maintain your sources in parallel to the "official" sources
+for some time, it's recommended to use the anonymous Subversion access if
+possible (believe it, it will save you a lot of time).
+
+
+[[ChSrcReleased]]
+
+
+==== Released sources
+
+Recommended for productive purposes.
+
+
+Age: from days to weeks.
+
+
+The officially released source files can be found at: wireshark-download-page:[][].
+You should use these sources if you want to build Wireshark on your
+platform for productive use.
+
+
+The differences between the released sources and the sources stored at
+the Subversion repository will keep on growing until the next release is
+done (at the release time, the released and latest Subversion repository
+versions are then identical again :-).
+
+
+[[ChSrcUpdating]]
+
+
+=== Update the Wireshark sources
+
+After you've obtained the Wireshark sources for the first time, you
+might want to keep them in sync with the sources at the Subversion
+repository.
+
+
+
+[TIP]
+.Take a look at the buildbot first!
+====
+As development evolves, the Wireshark sources are compilable most of the
+time - but not always.
+You may take a look at the <<ChIntroAutomated>>first,
+to see if the sources are currently in a good shape.
+
+
+====
+
+[[ChSrcAnonUpdate]]
+
+
+==== ... with Anonymous Subversion access
+
+After the first time checkout is done, updating your
+sources is simply done by typing (in the Wireshark source dir):
+
+
+$**`svn update`**
+
+This will only take a few seconds, even on a slow internet connection. It will
+replace old file versions by new ones. If you and someone else have
+changed the same file since the last update, Subversion will try to merge
+the changes into your private file (this works remarkably well).
+
+
+[[ChSrcZipUpdate]]
+
+
+==== ... from zip files
+
+Independent of the way you retrieve the zip file of the Wireshark sources
+(as described in <<ChSrcObtain>>), the way to
+bring the changes from the official sources into your personal source tree
+is identical.
+
+
+First of all, you will download the new zip file of the official sources
+the way you did it the first time.
+
+
+If you haven't changed anything in the sources, you could simply throw
+away your old sources and reinstall everything just like the first time.
+But be sure, that you really haven't changed anything. It might be a good
+idea to simply rename the "old" dir to have it around, just in case you
+remember later that you really did change something before.
+
+
+Well, if you did change something in your source tree, you have to merge
+the official changes
+since the last update into your source tree. You will install the content
+of the zip file into a new directory and use a good merge tool (e.g.
+http://winmerge.sourceforge.net/[]for Win32) to bring
+your personal source tree in sync with the official sources again.
+
+
+[[ChSrcBuildFirstTime]]
+
+
+=== Build Wireshark
+
+The sources contain several documentation files. It's a good idea to read these
+files first. After obtaining the sources, tools and libraries, the first place
+to look at is 'doc/README.developer'. Inside you will find the latest
+information for Wireshark development for all supported platforms.
+
+.Build Wireshark before changing anything
+[TIP]
+====
+It is a very good idea to first test your complete build environment
+(including running and debugging Wireshark) before making any changes
+to the source code (unless otherwise noted).
+====
+
+Building Wireshark for the first time depends on your platform.
+
+==== Building on Unix
+
+Run the `autogen.sh` script at the top-level wireshark directory to configure
+your build directory.
+
+----
+$ ./autogen.sh
+$ ./configure
+$ make
+----
+
+If you need to build with a non-standard configuration, you can run
+
+----
+$ ./configure --help
+----
+
+to see what options you have.
+
+==== Win32 native
+
+First, check the file 'config.nmake' to determine if it reflects your
+configuration. The settings in this file are well documented but there are a lot
+of them so please look closely. If you've installed the libraries and tools as
+recommended there should be no need to change anything.
+
+Many of the file and directory names used in the build process go past the old
+8.3 naming limitations. As a result you should use the `cmd.exe` command
+interpreter instead of the old `command.com`.
+
+Be sure that your command-line environment is set up to compile
+and link with MSV$$C++$$. When installing MSV$$C++$$, you can have your
+system's environment set up to always allow compiling from the
+command line, or you can invoke the vcvars32.bat script, which can
+usually be found in the _VC98\Bin_subdirectory of the
+directory in which Visual Studio was installed.
+
+
+You should then cleanup any intermediate files, which are shipped for
+convenience of Unix users, by typing at the command line prompt (cmd.exe):
+
+----
+> nmake -f Makefile.nmake distclean
+----
+
+After doing this, typing at the command line prompt (cmd.exe):
+
+----
+> nmake -f Makefile.nmake all
+----
+
+will start the whole Wireshark build process.
+
+
+After the build process has successfully finished, you should find a
+`wireshark.exe` and some other files
+in the root directory.
+
+
+[[ChSrcRunFirstTime]]
+
+
+=== Run generated Wireshark
+
+
+[TIP]
+.Tip!
+====
+An already installed Wireshark may interfere with your newly generated
+version in various ways. If you have any problems getting your Wireshark
+running the first time, it might be a good idea to remove the previously
+installed version first.
+====
+
+[[ChSrcRunFirstTimeUnix]]
+
+==== Unix/Linux
+
+After a successful build you can run Wireshark right from the build
+directory. Still the program would need to know that it's being run from
+the build directory and not from its install location. This has inpact
+on the directories where the program can find the other parts and
+relevant data files.
+
+
+In order to run the Wireshark from the build directory set the environment
+variable `WIRESHARK_RUN_FROM_BUILD_DIRECTORY` and run
+Wireshark. If your platform is properly setup, your build directory and
+current working directory are not in your PATH, so the
+commandline to launch Wireshark would be:
+
+----
+$ WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ./wireshark
+----
+
+There's no need to run Wireshark as root user, you just won't be able to
+capture. When you opt to run Wireshark this way, your terminal output can
+be informative when things don't work as expected.
+
+
+[[ChSrcRunFirstTimeWin32]]
+
+
+==== Win32 native
+
+During the build all relevant program files are collected in a subdirectory
+'wireshark-gtk2'. You can run the program from there by
+launching the wireshark.exe executable.
+
+
+[[ChSrcDebug]]
+
+
+=== Debug your generated Wireshark
+
+[[ChSrcUnixDebug]]
+
+
+==== Unix/Linux
+
+When you want to investigate a problem with Wireshark you want to load
+the program into your debugger. But loading wireshark into debugger fails
+because of the libtool build environment. You'll have to wrap loading
+wireshark into a libtool command:
+
+----
+$ libtool --mode=execute gdb wireshark
+----
+
+If you prefer a graphic debugger you can use the Data Display Debugger
+(ddd) instead of GNU debugger (gdb).
+
+
+Additional traps can be set on GLib by setting the `G_DEBUG` environment variable:
+
+----
+$ G_DEBUG=fatal_criticals libtool --mode=execute ddd wireshark
+----
+
+See http://library.gnome.org/devel/glib/stable/glib-running.html[]
+
+[[ChSrcWin32Debug]]
+
+
+==== Win32 native
+
+****
+To be written
+****
+
+[[ChSrcChange]]
+
+
+=== Make changes to the Wireshark sources
+
+As the Wireshark developers are working on many different platforms, a lot of
+editors are used to develop Wireshark (emacs, vi, Microsoft Visual Studio
+and many many others). There's no "standard" or "default" development
+environment.
+
+There are several reasons why you might want to change the Wireshark
+sources:
+
+* Add support for a new protocol (a new dissector)
+
+* Change or extend an existing dissector
+
+* Fix a bug
+
+* Implement a glorious new feature
+
+The internal structure of the Wireshark sources will be described in
+<<PartDevelopment>>.
+
+.Ask the _wireshark-dev_ mailing list before you start a new development task.
+[TIP]
+====
+If you have an idea what you want to add or change it's a good idea to
+contact the developer mailing list
+(see <<ChIntroMailingLists>>)
+and explain your idea. Someone else might already be working on the same
+topic, so a duplicated effort can be reduced. Someone might also give you tips that
+should be thought about (like side effects that are sometimes very
+hard to see).
+====
+
+// XXX - Add a section on branching.
+
+[[ChSrcContribute]]
+
+
+=== Contribute your changes
+
+If you have finished changing the Wireshark sources to suit your needs, you
+might want to contribute your changes back to the Wireshark community. You gain
+the following benefits by contributing your improvements:
+
+* _It's the right thing to do._ Other people who find your contributions useful
+  will appreciate them, and you will know that you have helped people in the
+  same way that the developers of Wireshark have helped you.
+
+* _You get free enhancements._ By making your code public, other developers have
+  a chance to make improvements, as there's always room for improvements. In
+  addition someone may implement advanced features on top of your code, which
+  can be useful for yourself too.
+
+* _You save time and effort._ The maintainers and developers of Wireshark will
+  maintain your code as well, updating it when API changes or other changes are
+  made, and generally keeping it in tune with what is happening with Wireshark.
+  So if Wireshark is updated (which is done often), you can get a new Wireshark
+  version from the website and your changes will already be included without any
+  effort for you.
+
+There's no direct way to push changes to the Git repository. Only a few people
+are authorised to actually make changes to the source code (check-in changed
+files). If you want to submit your changes, you should push them to the code
+review system.
+
+[[ChSrcDiffWhat]]
+//
+// ==== What is a diff file (a patch)?
+//
+// A http://en.wikipedia.org/wiki/Diff[diff file]is a plain text file containing the differences between a pair of files
+// (or a multiple of such file pairs).
+//
+// .A diff file is often also called a patch.
+// [TIP]
+// ====
+// No matter what the name it can be used to patch an existing source file or tree with changes
+// from somewhere else.
+// ====
+//
+// The Wireshark community is using patches to transfer source code changes
+// between the authors.
+//
+// A patch is both readable by humans and (as it is specially formatted) by
+// some dedicated tools.
+//
+// Here is a small example of a patch for _file.h_that
+// makes the second argument in cf_continue_tail()volatile.  It was created using _svn diff _,
+// described below:
+//
+// [source,Diff]
+// ----
+// Index: file.h
+// ===================================================================
+// --- file.h      (revision 21134)
+// +++ file.h      (revision 22401)
+// @@ -142,7 +142,7 @@
+//   * @param err the error code, if an error had occurred
+//   * @return one of cf_read_status_t
+//   */
+// -cf_read_status_t cf_continue_tail(capture_file *cf, int to_read, int *err);
+// +cf_read_status_t cf_continue_tail(capture_file *cf, volatile int to_read, int *err);
+//
+//  /**
+//   * Finish reading from "end" of a capture file.
+// ----
+//
+// The plus sign at the start of a line indicates an added line, a minus
+// sign indicates a deleted line compared to the original sources.
+//
+// We prefer to use so called "unified" diff files in Wireshark development,
+// three unchanged lines before and after the actual changed parts are
+// included. This makes it much easier for a merge/patch tool to find
+// the right place(s) to change in the existing sources.
+
+[[ChSrcGeneratePatch]]
+
+// ==== Generate a patch
+//
+// There are several ways to generate patches. The preferred way is to
+// generate them from an updated Subversion tree, since it avoids
+// unnecessary integration work.
+
+[[ChSrcSVNDiff]]
+
+//
+// ===== Using the svn command-line client
+//
+// ----
+// $ svn diff [changed_files] > svn.diff
+// ----
+//
+// Use the command line svn client to generate a patch in the required format
+// from the changes you've made to your working copy. If you leave out the
+// name of the changed file the svn client searches for all changes in the
+// working copy and usually produces a patch containing more than just the
+// change you want to send. Therefore you should always check the produced
+// patch file.
+//
+// If you've added a new file, e.g.
+// 'packet-myprotocol.c', you can use `svn add` to add it to your local tree before generating the patch.
+// Similarly, you can use `svn rm` for files that shouldbe removed.
+
+[[ChSrcSVNGUIDiff]]
+
+// ===== Using the diff feature of the GUI Subversion clients
+//
+// Most (if not all) of the GUI Subversion clients (RapidSVN, TortoiseSVN, ...)
+// have a built-in "diff" feature.
+//
+// If you use TortoiseSVN:
+//
+// TortoiseSVN (to be precise Subversion) keeps track of the files you have
+// changed in the directories it controls, and will generate for you a
+// unified diff file compiling the differences. To do so - after updating
+// your sources from the SVN repository if needed - just right-click on the
+// highest level directory and choose "TortoiseSVN" -> "Create patch...".
+// You will be asked for a name and then the diff file will be created. The
+// names of the files in the patch will be relative to the directory you have
+// right-clicked on, so it will need to be applied on that level too.
+//
+// When you create the diff file, it will include any difference TortoiseSVN
+// finds in files in and under the directory you have right-clicked on, and
+// nothing else. This means that changes you might have made for your
+// specific configuration - like modifying 'config.nmake' so that it uses
+// your lib directory - will also be included, and you will need to remove
+// these lines from the diff file. It also means that only changes will be
+// recorded, i.e. if you have created new files -- say, a new
+// 'packet-xxx.c' for a
+// new protocol dissector -- it will not be included in the diff, you need to
+// add it separately. And, of course, if you have been working separately in
+// two different patches, the .diff file will include both topics, which is
+// probably not a good idea.
+
+[[ChSrcDiff]]
+
+// ===== Using the diff tool
+//
+// A diff file is generated, by comparing two files or directories between
+// your own working copy and the "official" source tree. So to be able to
+// do a diff, you should
+// have two source trees on your computer, one with your working copy
+// (containing your changes), and one with the "official" source tree
+// (hopefully the latest SVN files) from wireshark-web-site:[].
+//
+// If you have only changed a single file, you could type something like
+// this:
+//
+// ----
+// $ diff -r -u --strip-trailing-cr svn-file.c work-file.c > foo.diff
+// ----
+//
+// To get a diff file for your complete directory (including
+// subdirectories), you could type something like this:
+//
+// ----
+// $ diff -N -r -u --strip-trailing-cr ./svn-dir ./working-dir > foo.diff
+// ----
+//
+// It's a good idea to run `make distclean` before the
+// actual diff call, as this will remove a lot
+// of temporary files which might be otherwise included in the diff. After
+// doing the diff, you should edit the _foo.diff_ file and remove unnecessary
+// things, like your private changes to the
+// 'config.nmake' file.
+//
+//
+// .Some useful diff options
+// [options="header"]
+// |===============
+// |Option|Purpose
+// |-N|Add new files when used in conjunction with -r.
+// |-r|Recursively compare any subdirectories found.
+// |-u|Output unified context.
+// |--strip-trailing-cr|Strip trailing carriage return on input. This is useful for Win32
+//
+// |-x PAT|Exclude files that match PAT.
+//       This could be something like -x *.obj to exclude all win32 object files.
+// |===============
+//
+//
+// The diff tool has a lot options; they can be listed with:
+//
+// ----
+// diff --help
+// ----
+
+[[ChSrcGoodPatch]]
+
+==== Some tips for a good patch
+
+Some tips that will make the merging of your changes into Git much more likely
+(and you want exactly that, don't you?):
+
+* 'Use the latest Git sources.' It's a good idea to work with the same
+  sources that are used by the other developers. This usuall makes it much
+  easier to apply your patch. For information about the different ways to get
+  the sources, see <<ChSrcObtain>>.
+
+* 'Update your sources just before making a patch.' For the same reasons as the
+  previous point.
+
+* 'Inspect your patch carefully.' Run `git diff` and make sure you aren't
+  adding, removing, or omitting anything you shouldn't.
+
+// * 'Do a "make clean" before generating the patch.' This removes a lot of
+//   unneeded intermediate files (like object files) which can confuse the diff
+//   tool generating a lot of unneeded stuff which you have to remove by hand from
+//   the patch again.
+
+// XXX - What *are* good topic names?
+* 'Find a good descriptive topic name for your patch.' Short, specific
+  names are preferred. 'snowcone-machine-protocol' is good, your name or
+  your company name isn't.
+
+* 'Don't put unrelated things into one large patch.' A few smaller patches are
+  usually easier to apply (but also don't put every changed line into a separate
+  patch.
+
+In general, making it easier to understand and apply your patch by one of the
+maintainers will make it much more likely (and faster) that it will actually be
+applied.
+
+.Please remember
+[NOTE]
+====
+Wireshark is a volunteer effort. You aren't paying to have your code reviewed
+and integrated.
+====
+
+[[ChSrcCodeRequirements]]
+
+==== Code Requirements
+
+The core maintainers have done a lot of work fixing bugs and making code
+compile on the various platforms Wireshark supports.
+
+To ensure Wireshark's source code quality, and to reduce the workload of the
+core maintainers, there are some things you should think about _before_
+submitting a patch.
+
+.Pay attention to the coding guidelines
+[WARNING]
+====
+Ignoring the code requirements will make it very likely that your patch will
+be rejected.
+====
+
+* 'Follow the Wireshark source code style guide.' Just because something
+  compiles on your platform, that doesn't mean it'll compile on all of the other
+  platforms for which Wireshark is built. Wireshark runs on many platforms, and
+  can be compiled with a number of different compilers. See <<ChCodeStyle>>for
+  details.
+
+* 'Submit dissectors as built-in whenever possible.' Developing a new dissector
+as a plugin is a good idea because compiling and testing is quicker, but it's
+best to convert dissectors to the built-in style before submitting for checkin.
+This reduces the number of files that must be installed with Wireshark and
+ensures your dissector will be available on all platforms.
++
+This is no hard-and-fast rule though. Many dissectors are straightforward so they
+can easily be put into "the big pile", while some are ASN.1 based which takes a
+different approach, and some multiple sourcefile dissectors are more suitable to
+be placed separate as plugin.
+
+* 'Verify that your dissector code does not use prohibited or deprecated APIs.'
+  This can be done as follows:
++
+----
+$ perl <wireshark_root>/tools/checkAPIs.pl <source filename(s)>
+----
+
+* 'Fuzz test your changes!' Fuzz testing is a very
+effective way to automatically find a lot of dissector related bugs.
+You'll take a capture file containing packets affecting your dissector
+and the fuzz test will randomly change bytes in this file, so that unusual
+code paths in your dissector are checked. There are tools available to
+automatically do this on any number of input files, see:
+wireshark-wiki-site:[]/FuzzTesting[] for details.
+
+[[ChSrcUpload]]
+
+==== Uploading your changes
+
+When you're satisfied with your changes (and obtained any necessary approval
+from your organization) you can upload them for review. Changes should be
+pushed to a
+http://test.code.wireshark.org/review/Documentation/user-upload.html#push_create[magical "refs/for" branch]
+in Gerrit. For example, to upload your new Snowcone Machine Protocol dissector
+you could push to refs/for/master with the topic "snowcone-machine":
+
+----
+$ git push ssh://my.username@code.wireshark.org:29418/wireshark HEAD:refs/for/master/snowcone-machine
+----
+
+You can push using any Git client. Many clients have support for Gerrit, either
+built in or via an additional module.
+
+// XXX - Talk about Gerrit change IDs
+
+// To submit a patch, open a new ticket in the Wireshark bug database at wireshark-bugs-site:[]/bugzilla/enter_bug.cgi?product=Wireshark[].
+// You must first create a bug, then attach your patch or patches.
+//
+// * Set the Product, Priority, and Severity as needed.
+//
+// * Add a Summary and Description, and create a bug using the
+// Commitbutton. If your code has passed fuzz
+// testing, please say so in the description.
+//
+// * Once the bug has been created, select Create a New Attachmentand upload your
+// patch or patches. Set the +review_for_checkin+ flag to *?*. If you skip
+// this step, your patch won't show up in the patch request queue.
+//
+// * If possible and applicable, attach a capture file that demonstrates
+// your new feature or protocol.
+//
+// * Don't set the bug's status to ASSIGNED and don't assign the bug to
+// yourself -- if you do the latter, the core developers won't see the
+// updates made to the bug.
+
+You might get one of the following responses to your patch request:
+
+* Your patch is checked into the SVN repository. Congratulations!
+
+* You are asked to provide additional information, capture files, or other
+  material. If you haven't fuzzed your code, you may be asked to do so.
+
+* Your patch is rejected. You should get a response with the reason for
+  rejection. Common reasons include not following the style guide, buggy or
+  insecure code, and code that won't compile on other platforms. In each case
+  you'll have to fix each problem and upload another patch.
+
+* You don't get any response to your patch. Possible reason: All
+  the core developers are busy (e.g., with their day jobs or family or other commitments) and
+  haven't had time to look at your patch. Don't worry, if
+  your patch is in the review system it won't get lost.
++
+If you're concerned, feel free to add a comment to the patch or send an email
+to the developer's list asking for status. But please be patient: most if not
+all of us do this in our spare time.
+
+[[ChSrcPatchApply]]
+
+=== Apply a patch from someone else
+
+Sometimes you need to apply a patch to your private source tree. Maybe
+because you want to try a patch from someone on the developer mailing
+list, or you want to check your own patch before submitting.
+
+
+.Beware line endings
+[WARNING]
+====
+If you have problems applying a patch, make sure the line endings (CR/LF)
+of the patch and your source files match.
+====
+
+[[ChSrcPatchUse]]
+
+
+==== Using patch
+
+Given the file 'new.diff' containing a unified diff,
+the right way to call the patch tool depends on what the pathnames in
+'new.diff' look like.
+If they're relative to the top-level source directory (for example, if a
+patch to 'prefs.c' just has 'prefs.c' as the file name) you'd run it as:
+
+----
+$ patch -p0 < new.diff
+----
+
+If they're relative to a higher-level directory, you'd replace 0 with the
+number of higher-level directories in the path, e.g. if the names are
+'wireshark.orig/prefs.c' and
+'wireshark.mine/prefs.c', you'd run it with:
+
+----
+$ patch -p1 < new.diff
+----
+
+If they're relative to a 'subdirectory' of the top-level
+directory, you'd run `patch` in 'that' directory and run it with `-p0`.
+
+If you run it without `-pat` all, the patch tool
+flattens path names, so that if you
+have a patch file with patches to 'Makefile.am' and
+'wiretap/Makefile.am',
+it'll try to apply the first patch to the top-level
+'Makefile.am' and then apply the
+'wiretap/Makefile.am' patch to the top-level
+'Makefile.am' as well.
+
+At which position in the filesystem should the patch tool be called?
+
+If the pathnames are relative to the top-level source directory, or to a
+directory above that directory, you'd run it in the top-level source
+directory.
+
+If they're relative to a *subdirectory* -- for example,
+if somebody did a patch to 'packet-ip.c' and ran `diff` or `svn diff` in
+the 'epan/dissectors' directory -- you'd run it in that subdirectory.
+It is preferred that people *not* submit patches like
+that, especially if they're only patching files that exist in multiple
+directories such as 'Makefile.am'.
+
+[[ChSrcAdd]]
+
+=== Add a new file to the Subversion repository
+
+The recommended way to commit new files is described in <<ChSrcContribute>>.
+However, the following might be of interest for contributing developers as well.
+
+[NOTE]
+====
+These actions can only be performed by the Wireshark core developers who
+have write access to the Subversion repository. It is put in here to have
+all information in one place.
+====
+
+If you (as a core developer) need to add a file to the SVN repository,
+then you need to perform the following steps:
+
+. Verify that that file is complete (has Wireshark boilerplate, `$Id$`, etc).
+
+. Add the new file(s) to the repository:
++
+----
+$ svn add new_file
+----
+
+. Set the line ending property to 'native' for the new file(s):
++
+----
+$ svn propset svn:eol-style native new_file
+----
+
+. Set version keyword to 'Id' for the new file(s):
++
+----
+$ svn propset svn:keywords Id new_file
+----
+
+. Commit your changes, including the added file(s).
++
+----
+$ svn commit new_file other_files_you_modified
+----
+
+Don't forget a brief description of the reason for the commit so other
+developers don't need to read the diff in order to know what has changed.
+
+[[ChSrcBinary]]
+
+=== Binary packaging
+
+Delivering binary packages makes it much easier for the end-users to
+install Wireshark on their target system. This section will explain how
+the binary packages are made.
+
+
+[[ChSrcDeb]]
+
+
+==== Debian: .deb packages
+
+The Debian Package is built using dpkg-buildpackage, based on information
+found in the source tree under _debian_. See
+http://www.debian-administration.org/articles/336[]for a
+more in-depth discussion of the build process.
+
+
+In the wireshark directory, type:
+
+----
+$ make debian-package
+----
+
+to build the Debian Package.
+
+[[ChSrcRpm]]
+
+==== Red Hat: .rpm packages
+
+The RPM is built using rpmbuild (http://www.rpm.org/), which comes as standard on many flavours of Linux, including
+Red Hat and Fedora. The process creates a clean build environment in _packaging/rpm/BUILD_every
+time the RPM is built. The settings controlling the build are in _packaging/rpm/SPECS/wireshark.spec.in_.
+After editing the settings in this file, _./configure_must be run again in the wireshark directory to
+generate the actual specification script.
+
+
+.Careful with that `configure` setting
+[NOTE]
+====
+The SPEC file contains settings for the _configure_ used to set the RPM build
+environment. These are completely independent of any settings passed to the
+usual Wireshark `./configure`. The exception to this rule is that the _prefix_
+given to `configure --prefix` is passed to rpmbuild.
+====
+
+In the wireshark directory, type:
+
+----
+$ make rpm-package
+----
+
+to build the RPM and source RPM. Once it is done, there will be a message stating where the built RPM can be found.
+
+.This might take a while
+[TIP]
+====
+Because this does a clean build as well as constructing the package this can
+take quite a long time.
+====
+
+.Build requirements differ from run requirements
+[TIP]
+====
+Building the RPM requires building a source distribution which itself requires
+the Qt development tools `uic` and `moc`. These can usually be obtained by
+installing the _qt-devel_ package.
+====
+
+[[ChSrcOSX]]
+
+==== MAC OS X: .dmg packages
+
+The MAC OS X Package is built using OS X packaging tools, based on information
+found in the source tree under 'packaging/macosx'.
+
+In the wireshark directory, type:
+
+----
+$ make osx-package
+----
+
+to build the MAC OS X Package.
+
+[[ChSrcNSIS]]
+
+==== Win32: NSIS .exe installer
+
+The _Nullsoft Install System_ is a free installer generator for Win32
+based systems; instructions how to install it can be found in <<ChToolsNSIS>>.
+NSIS is script based, you will find the Wireshark installer
+generation script at: 'packaging/nsis/wireshark.nsi'.
+
+You will probably have to modify the MAKENSIS setting in the
+'config.nmake' file to specify where the NSIS binaries
+are installed.
+
+In the wireshark directory, type:
+
+----
+> nmake -f makefile.nmake packaging
+----
+
+to build the installer.
+
+.This might take a while
+[TIP]
+====
+Please be patient while the package is compressed.
+It might take some time, even on fast machines.
+====
+
+If everything went well, you will now find something like:
+'wireshark-setup-wireshark-version:[].exe' in
+the 'packaging/nsis' directory.
+
+++++++++++++++++++++++++++++++++++++++
+<!-- End of WSDG Chapter Sources -->
+++++++++++++++++++++++++++++++++++++++
+    
diff --git a/docbook/wsdg_src/WSDG_chapter_sources.xml b/docbook/wsdg_src/WSDG_chapter_sources.xml
deleted file mode 100644 (file)
index e6a1bf4..0000000
+++ /dev/null
@@ -1,1214 +0,0 @@
-<!-- WSDG Chapter Sources -->
-<!-- $Id$ -->
-
-<chapter id="ChapterSources">
-  <title>Work with the Wireshark sources</title>
-
-  <section id="ChSrcIntro">
-       <title>Introduction</title>
-       <para>
-       This chapter will explain how to work with the Wireshark source code.
-       It will show you how to:
-       <itemizedlist>
-       <listitem><para>
-       get the source
-       </para></listitem>
-       <listitem><para>
-       compile the source
-       </para></listitem>
-       <listitem><para>
-       submit changes
-       </para></listitem>
-       <listitem><para>
-       ...
-       </para></listitem>
-       </itemizedlist>
-       However, this chapter will not explain the source file contents in detail,
-       such as where to find a specific functionality. This is done in
-       <xref linkend="ChCodeOverview"/>.
-       </para>
-  </section>
-
-  <section id="ChSrcSVNServer">
-       <title>The Wireshark Subversion repository</title>
-       <para>
-       Subversion is used to keep track of the changes made to the Wireshark
-       source code. The Wireshark source code is stored inside Wireshark project's
-       Subversion repository located at a server at the wireshark.org domain.
-       </para>
-       <para>
-       To quote the Subversion book about "What is Subversion?":
-       </para>
-       <para>
-       <quote>Subversion is a free/open-source version control system. That is,
-       Subversion manages files and directories over time. A tree of files is
-       placed into a central repository. The repository is much like an ordinary
-       file server, except that it remembers every change ever made to your files
-       and directories. This allows you to recover older versions of your data,
-       or examine the history of how your data changed. In this regard, many
-       people think of a version control system as a sort of "time machine".
-       </quote>
-       </para>
-       <tip><title>Tip: Subversion and SVN is the same!</title>
-       <para>
-       Subversion is often abbreviated as SVN, as the command-line tools are
-       abbreviated that way. You will find both terms with the same meaning in
-       this book, in mailing list discussions and elsewhere.
-       </para>
-       </tip>
-       <para>
-       Using Wireshark's Subversion repository you can:
-       <itemizedlist>
-       <listitem><para>
-       keep your private sources up to date with very little effort
-       </para></listitem>
-       <listitem><para>
-       get a mail notification if someone changes the latest sources
-       </para></listitem>
-       <listitem><para>
-       get the source files from any previous release (or any other point in time)
-       </para></listitem>
-       <listitem><para>
-       have a quick look at the sources using a web interface
-       </para></listitem>
-       <listitem><para>
-       see which person changed a specific piece of code
-       </para></listitem>
-       <listitem><para>
-       ... and a lot more things related to the history of the Wireshark source
-       code development
-       </para></listitem>
-       </itemizedlist>
-       </para>
-       <para>
-       Subversion is divided into a client and a server part.
-       Thanks to Gerald Combs (the maintainer of the Subversion server),
-       no user has to deal with the maintenance of the Subversion server.
-       You will only need a Subversion client, which is available as
-       both a command-line and a GUI tool for many different platforms.
-       </para>
-       <para>
-       For further reference about Subversion, have a look at the homepage of the
-       Subversion project: <ulink url="http://subversion.apache.org/"/>. There
-       is a good and free book about it available at: <ulink
-       url="http://svnbook.red-bean.com/"/>.
-       </para>
-       <para>
-       Please note that Wireshark's public (anonymous) Subversion repository is
-       separate from the main repository.
-       It may take several minutes for committed changes to appear in the
-       public repository - so please be patient for a few minutes if you
-       desperately need a code change that was committed to the repository
-       very recently.
-       </para>
-
-  <section id="ChSrcWebInterface">
-       <title>The web interface to the Subversion repository</title>
-       <para>
-       If you need a quick look at the Wireshark source code,
-       you will only need a Web browser.
-       </para>
-       <para>
-       A <literal>simple view</literal> on the latest developer version can be
-       found at:
-       </para>
-       <para>
-       <ulink url="http://anonsvn.wireshark.org/wireshark/trunk/"/>.
-       </para>
-       <para>
-       A <literal>comprehensive view</literal> of all source versions
-       (e.g. including the capability to show differences between versions)
-       is available at:
-       </para>
-       <para>
-       <ulink url="http://anonsvn.wireshark.org/viewvc/viewvc.cgi/"/>.
-       </para>
-       <para>
-       Of special interest might be the subdirectories:
-       <itemizedlist>
-       <listitem><para>
-       <filename>trunk</filename> - the very latest source files
-       </para></listitem>
-       <listitem><para>
-       <filename>releases</filename> - the source files of all released versions
-       </para></listitem>
-       </itemizedlist>
-       </para>
-  </section>
-  </section>
-
-  <section id="ChSrcObtain">
-       <title>Obtain the Wireshark sources</title>
-       <para>
-       There are several ways to obtain the sources from Wireshark's Subversion
-       server.
-       </para>
-       <tip><title>Anonymous Subversion access is recommended!</title>
-       <para>
-       It can make your life much easier, compared to updating your source tree by
-       using any of the zip file methods mentioned below.
-       Subversion handles merging of changes into your personal source tree in a
-       very comfortable and quick way. So you can update your source tree several
-       times a day without much effort.
-       </para>
-       </tip>
-       <note><title>Keep your sources "up to date"!</title>
-       <para>
-       The following ways to retrieve the Wireshark sources are sorted in
-       decreasing source timeliness.
-       If you plan to commit changes you've made to the sources,
-       it's a good idea to keep your private source tree as current as possible.
-       </para>
-       </note>
-       <para>
-       The age mentioned in the following sections indicates the age of the
-       most recent change in that set of the sources.
-       </para>
-
-       <section id="ChSrcAnon">
-       <title>Anonymous Subversion access</title>
-       <para>
-       Recommended for development purposes.
-       </para>
-       <para>
-       Age: a few minutes.
-       </para>
-       <para>
-       You can use a Subversion client to download the source code from
-       Wireshark's anonymous Subversion repository. The URL for the repository
-       trunk is:
-       <ulink url="&WiresharkRepositorySite;/wireshark/trunk/"/>.
-       </para>
-       <para>
-       See <xref linkend="ChToolsSubversion"/> on how to install a Subversion client.
-       </para>
-       <para>
-       For example, to check out using the command-line Subversion client, you
-       would type:
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn checkout &WiresharkRepositorySite;/wireshark/trunk wireshark</userinput>
-       </para>
-       <para>
-       The checkout has to be only done once. This will copy all the sources of
-       the latest version (including directories) from the server to your machine.
-       This will take some time, depending on the speed of your internet connection.
-       </para>
-       </section>
-
-       <section id="ChSrcSVNWeb">
-       <title>Anonymous Subversion web interface</title>
-       <para>
-       Recommended for informational purposes only, as only individual files can
-       be downloaded.
-       </para>
-       <para>
-       Age: a few minutes (same as anonymous Subversion access).
-       </para>
-       <para>
-        The entire source tree of the Subversion repository is available via a
-        web interface at:
-        <ulink url="&WiresharkRepositorySite;/viewvc/viewvc.cgi/"/>.
-        You can view each revision of a particular file, as well as diffs between
-        different revisions.
-        You can also download individual files but not entire directories.
-       </para>
-       </section>
-
-       <section id="ChSrcBuildbot">
-       <title>Buildbot Snapshots</title>
-       <para>
-       Recommended for development purposes, if direct Subversion access isn't
-       possible (e.g. because of a restrictive firewall).
-       </para>
-       <para>
-       Age: some number of minutes (a bit older than the anonymous Subversion access).
-       </para>
-       <para>
-       The buildbot server will automatically start to generate a snapshot of
-       Wireshark's source tree after a source code change is committed.
-       These snapshots can be found at: <ulink
-       url="&WiresharkDownloadPage;automated/src/"/>.
-       </para>
-       <para>
-       If anonymous Subversion access isn't possible, e.g. if the connection to
-       the server isn't possible because of a corporate firewall, the sources
-       can be obtained by downloading the buildbot snapshots. However, if you are
-       going to maintain your sources in parallel to the "official" sources
-       for some time, it's recommended to use the anonymous Subversion access if
-       possible (believe it, it will save you a lot of time).
-       </para>
-       </section>
-
-
-       <section id="ChSrcReleased">
-       <title>Released sources</title>
-       <para>
-       Recommended for productive purposes.
-       </para>
-       <para>
-       Age: from days to weeks.
-       </para>
-       <para>
-       The officially released source files can be found at: <ulink
-       url="&WiresharkDownloadPage;"/>.
-       You should use these sources if you want to build Wireshark on your
-       platform for productive use.
-       </para>
-       <para>
-       The differences between the released sources and the sources stored at
-       the Subversion repository will keep on growing until the next release is
-       done (at the release time, the released and latest Subversion repository
-       versions are then identical again :-).
-       </para>
-       </section>
-
-  </section>
-
-  <section id="ChSrcUpdating">
-       <title>Update the Wireshark sources</title>
-       <para>
-       After you've obtained the Wireshark sources for the first time, you
-       might want to keep them in sync with the sources at the Subversion
-       repository.
-       </para>
-       <tip><title>Take a look at the buildbot first!</title>
-       <para>
-       As development evolves, the Wireshark sources are compilable most of the
-       time - but not always.
-       You may take a look at the <xref linkend="ChIntroAutomated"/> first,
-       to see if the sources are currently in a good shape.
-       </para>
-       </tip>
-
-       <section id="ChSrcAnonUpdate">
-       <title>... with Anonymous Subversion access</title>
-       <para>
-       After the first time checkout is done, updating your
-       sources is simply done by typing (in the Wireshark source dir):
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn update</userinput>
-       </para>
-       <para>
-       This will only take a few seconds, even on a slow internet connection. It will
-       replace old file versions by new ones. If you and someone else have
-       changed the same file since the last update, Subversion will try to merge
-       the changes into your private file (this works remarkably well).
-       </para>
-       </section>
-
-       <section id="ChSrcZipUpdate">
-       <title>... from zip files</title>
-       <para>
-       Independent of the way you retrieve the zip file of the Wireshark sources
-       (as described in <xref linkend="ChSrcObtain"/> ), the way to
-       bring the changes from the official sources into your personal source tree
-       is identical.
-       </para>
-       <para>
-       First of all, you will download the new zip file of the official sources
-       the way you did it the first time.
-       </para>
-       <para>
-       If you haven't changed anything in the sources, you could simply throw
-       away your old sources and reinstall everything just like the first time.
-       But be sure, that you really haven't changed anything. It might be a good
-       idea to simply rename the "old" dir to have it around, just in case you
-       remember later that you really did change something before.
-       </para>
-       <para>
-       Well, if you did change something in your source tree, you have to merge
-       the official changes
-       since the last update into your source tree. You will install the content
-       of the zip file into a new directory and use a good merge tool (e.g.
-       <ulink url="http://winmerge.sourceforge.net/"/> for Win32) to bring
-       your personal source tree in sync with the official sources again.
-       </para>
-       </section>
-
-  </section>
-
-  <section id="ChSrcBuildFirstTime">
-       <title>Build Wireshark</title>
-       <para>
-       The sources contain several documentation files, it's a good idea to
-       look at these files first.
-       </para>
-       <para>
-       So after obtaining the sources, tools and libraries, the
-       first place to look at is <filename>doc/README.developer</filename>,
-       here you will get the latest infos for Wireshark development for all
-       supported platforms.
-       </para>
-       <tip><title>Tip!</title>
-       <para>
-       It is a very good idea, to first test your complete build environment
-       (including running and debugging Wireshark) before doing any changes
-       to the source code (unless otherwise noted).
-       </para>
-       </tip>
-       <para>
-       The following steps for the first time generation differ on the two
-       major platforms.
-       </para>
-
-       <section>
-       <title>Unix</title>
-       <para>
-       Run the autogen.sh script at the top-level wireshark directory to configure
-       your build directory.
-       <programlisting>
-./autogen.sh
-./configure
-make
-       </programlisting>
-       </para>
-       <para>
-       If you need to build with a non-standard configuration, you can use:
-       <programlisting>
-./configure --help
-       </programlisting>
-       to see what options you have.
-       </para>
-       </section>
-
-       <section>
-       <title>Win32 native</title>
-       <para>
-       The first thing to do will be to check the file
-       <filename>config.nmake</filename> to determine if it reflects your configuration.
-       The settings in this file are well documented, so please have a look at
-       that file.
-       However, if you've installed the libraries and tools as recommended there
-       should be no need to edit things here.
-       </para>
-       <para>
-       Many of the file and directory names used in the build process go past the
-       old 8.3 naming limitations.
-       As a result, you should use the <command>cmd.exe</command> command interpreter
-       instead of the old <command>command.com</command>.
-       </para>
-       <para>
-       Be sure that your command-line environment is set up to compile
-       and link with MSVC++. When installing MSVC++, you can have your
-       system's environment set up to always allow compiling from the
-       command line, or you can invoke the vcvars32.bat script, which can
-       usually be found in the <filename>VC98\Bin</filename> subdirectory of the
-       directory in which Visual Studio was installed.
-       </para>
-       <para>
-       You should then cleanup any intermediate files, which are shipped for
-       convenience of Unix users, by typing at the command line prompt (cmd.exe):
-       </para>
-       <para>
-       <prompt>&gt;</prompt> <userinput>nmake -f Makefile.nmake distclean</userinput>
-       </para>
-       <para>
-       After doing this, typing at the command line prompt (cmd.exe):
-       </para>
-       <para>
-       <prompt>&gt;</prompt> <userinput>nmake -f Makefile.nmake all</userinput>
-       </para>
-       <para>
-       will start the whole Wireshark build process.
-       </para>
-       <para>
-       After the build process has successfully finished, you should find a
-       <filename>wireshark.exe</filename> and some other files
-       in the root directory.
-       </para>
-       </section>
-
-  </section>
-
-  <section id="ChSrcRunFirstTime">
-       <title>Run generated Wireshark</title>
-       <tip><title>Tip!</title>
-       <para>
-       An already installed Wireshark may interfere with your newly generated
-       version in various ways. If you have any problems getting your Wireshark
-       running the first time, it might be a good idea to remove the previously
-       installed version first.
-       </para>
-       </tip>
-       <section id="ChSrcRunFirstTimeUnix">
-       <title>Unix/Linux</title>
-       <para>
-       After a successful build you can run Wireshark right from the build
-       directory. Still the program would need to know that it's being run from
-       the build directory and not from its install location. This has inpact
-       on the directories where the program can find the other parts and
-       relevant data files.
-       </para>
-       <para>
-       In order to run the Wireshark from the build directory set the environment
-       variable <varname>WIRESHARK_RUN_FROM_BUILD_DIRECTORY</varname> and run
-       Wireshark. If your platform is properly setup, your build directory and
-       current working directory are not in your <varname>PATH</varname>, so the
-       commandline to launch Wireshark would be:
-       <command>WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ./wireshark</command>.
-       </para>
-       <para>
-       There's no need to run Wireshark as root user, you just won't be able to
-       capture. When you opt to run Wireshark this way, your terminal output can
-       be informative when things don't work as expected.
-       </para>
-       </section>
-       <section id="ChSrcRunFirstTimeWin32">
-       <title>Win32 native</title>
-       <para>
-       During the build all relevant program files are collected in a subdirectory
-       <command>wireshark-gtk2</command>. You can run the program from there by
-       launching the wireshark.exe executable.
-       </para>
-       </section>
-  </section>
-
-  <section id="ChSrcDebug">
-       <title>Debug your generated Wireshark</title>
-       <section id="ChSrcUnixDebug">
-       <title>Unix/Linux</title>
-       <para>
-       When you want to investigate a problem with Wireshark you want to load
-       the program into your debugger. But loading wireshark into debugger fails
-       because of the libtool build environment. You'll have to wrap loading
-       wireshark into a libtool command:
-       <command>libtool --mode=execute gdb wireshark</command>
-       </para>
-       <para>
-       If you prefer a graphic debugger you can use the Data Display Debugger
-       (ddd) instead of GNU debugger (gdb).
-       </para>
-       <para>
-       Additional traps can be set on GLib by setting the <varname>G_DEBUG</varname>
-       environment variable:<command>G_DEBUG=fatal_criticals libtool --mode=execute
-       ddd wireshark</command>.
-       See <ulink url="http://library.gnome.org/devel/glib/stable/glib-running.html"/>
-       </para>
-       </section>
-
-       <section id="ChSrcWin32Debug">
-       <title>Win32 native</title>
-       <para>
-       XXX - add more info here.
-       </para>
-       </section>
-  </section>
-
-  <section id="ChSrcChange">
-       <title>Make changes to the Wireshark sources</title>
-       <para>
-       As the Wireshark developers are working on many different platforms, a lot of
-       editors are used to develop Wireshark (emacs, vi, Microsoft Visual Studio
-       and many many others). There's no "standard" or "default" development
-       environment.
-       </para>
-       <para>
-       There are several reasons why you might want to change the Wireshark
-       sources:
-       <itemizedlist>
-         <listitem><para>add your own new dissector</para></listitem>
-         <listitem><para>change/extend an existing dissector</para></listitem>
-         <listitem><para>fix a bug</para></listitem>
-         <listitem><para>implement a new glorious feature :-)</para></listitem>
-       </itemizedlist>
-       The internal structure of the Wireshark sources will be described in
-       <xref linkend="PartDevelopment"/>.
-       </para>
-       <tip><title>Tip!</title>
-       <para>
-       <literal>Ask the developer mailing list before you really start a new
-       development task.</literal>
-       If you have an idea what you want to add/change, it's a good idea to
-       contact the developer mailing list
-       (see <xref linkend="ChIntroMailingLists"/>)
-       and explain your idea. Someone else might already be working on the same
-       topic, so double effort can be reduced, or someone can give you some tips that
-       should be thought about (like side effects that are sometimes very
-       hard to see).
-       </para>
-       </tip>
-  </section>
-
-  <section id="ChSrcContribute">
-       <title>Contribute your changes</title>
-       <para>
-       If you have finished changing the Wireshark sources to suit your needs,
-       you might want to contribute your changes back to the Wireshark
-       community. You gain the following benefits by contributing your improvements:
-       <itemizedlist>
-       <listitem><para>
-       It's the right thing to do. Other people who find your contributions
-       useful will appreciate them, and you will know that you have helped
-       people in the same way that the developers of Wireshark have helped
-       you.
-       </para></listitem>
-       <listitem><para>
-       You get free enhancements. By making your code public, other developers
-       have a chance to make improvements, as there's always room for
-       improvements. In addition someone may implement advanced features on top of
-       your code, which can be useful for yourself too.
-       </para></listitem>
-       <listitem><para>
-       You save time and effort. The maintainers and developers of Wireshark
-       will maintain your code as well, updating it when API changes or other
-       changes are made, and generally keeping it in tune with what is
-       happening with Wireshark. So if Wireshark is updated (which is done
-       often), you can get a new Wireshark version from the website and your
-       changes will already be included without any effort for you.
-       </para></listitem>
-       </itemizedlist>
-       There's no direct way to commit changes to the SVN repository. Only a few
-       people are authorised to actually
-       make changes to the source code (check-in changed files). If you want
-       to submit your changes, you should make a diff file (a patch) and upload it to the bug tracker.
-       </para>
-
-       <section id="ChSrcDiffWhat">
-       <title>What is a diff file (a patch)?</title>
-       <para>
-       A <ulink url="http://en.wikipedia.org/wiki/Diff">diff file</ulink>
-       is a plain text file containing the differences between a pair of files
-       (or a multiple of such file pairs).
-       <tip><title>Tip!</title>
-       <para>A diff file is often also called a patch,
-       as it can be used to patch an existing source file or tree with changes
-       from somewhere else.
-       </para>
-       </tip>
-       </para>
-       <para>
-       The Wireshark community is using patches to transfer source code changes
-       between the authors.
-       </para>
-       <para>
-       A patch is both readable by humans and (as it is specially formatted) by
-       some dedicated tools.
-       </para>
-       <para>
-       Here is a small example of a patch for <filename>file.h</filename> that
-       makes the second argument in <function>cf_continue_tail()</function>
-       <type>volatile</type>.  It was created using <command>svn diff</command>,
-       described below:
-       <programlisting>
-<![CDATA[
-Index: file.h
-===================================================================
---- file.h      (revision 21134)
-+++ file.h      (revision 22401)
-@@ -142,7 +142,7 @@
-  * @param err the error code, if an error had occurred
-  * @return one of cf_read_status_t
-  */
--cf_read_status_t cf_continue_tail(capture_file *cf, int to_read, int *err);
-+cf_read_status_t cf_continue_tail(capture_file *cf, volatile int to_read, int *err);
-
- /**
-  * Finish reading from "end" of a capture file.
-]]>
-       </programlisting>
-       The plus sign at the start of a line indicates an added line, a minus
-       sign indicates a deleted line compared to the original sources.
-       </para>
-       <para>
-       We prefer to use so called "unified" diff files in Wireshark development,
-       three unchanged lines before and after the actual changed parts are
-       included. This makes it much easier for a merge/patch tool to find
-       the right place(s) to change in the existing sources.
-       </para>
-       </section>
-
-
-       <section id="ChSrcGeneratePatch">
-       <title>Generate a patch</title>
-       <para>
-       There are several ways to generate patches. The preferred way is to
-       generate them from an updated Subversion tree, since it avoids
-       unnecessary integration work.
-       </para>
-
-       <section id="ChSrcSVNDiff">
-       <title>Using the svn command-line client</title>
-       <para>
-       <userinput>svn diff [changed_files] > svn.diff</userinput>
-       </para>
-       <para>
-       Use the command line svn client to generate a patch in the required format
-       from the changes you've made to your working copy. If you leave out the
-       name of the changed file the svn client searches for all changes in the
-       working copy and usually produces a patch containing more than just the
-       change you want to send. Therefore you should always check the produced
-       patch file.
-       </para>
-       <para>
-       If you've added a new file, e.g.
-       <filename>packet-myprotocol.c</filename>, you can use <command>svn
-       add</command> to add it to your local tree before generating the patch.
-       Similarly, you can use <command>svn rm</command> for files that should
-       be removed.
-       </para>
-       </section>
-
-       <section id="ChSrcSVNGUIDiff">
-       <title>Using the diff feature of the GUI Subversion clients</title>
-       <para>
-       Most (if not all) of the GUI Subversion clients (RapidSVN, TortoiseSVN, ...)
-       have a built-in "diff" feature.
-       </para>
-       <para>
-       If you use TortoiseSVN:
-       </para>
-       <para>
-       TortoiseSVN (to be precise Subversion) keeps track of the files you have
-       changed in the directories it controls, and will generate for you a
-       unified diff file compiling the differences. To do so - after updating
-       your sources from the SVN repository if needed - just right-click on the
-       highest level directory and choose "TortoiseSVN" -> "Create patch...".
-       You will be asked for a name and then the diff file will be created. The
-       names of the files in the patch will be relative to the directory you have
-       right-clicked on, so it will need to be applied on that level too.
-       </para>
-       <para>
-       When you create the diff file, it will include any difference TortoiseSVN
-       finds in files in and under the directory you have right-clicked on, and
-       nothing else. This means that changes you might have made for your
-       specific configuration - like modifying <filename>config.nmake</filename>
-       so that it uses
-       your lib directory - will also be included, and you will need to remove
-       these lines from the diff file. It also means that only changes will be
-       recorded, i.e. if you have created new files -say, a new
-       <filename>packet-xxx.c</filename> for a
-       new protocol dissector- it will not be included in the diff, you need to
-       add it separately. And, of course, if you have been working separately in
-       two different patches, the .diff file will include both topics, which is
-       probably not a good idea.
-       </para>
-       </section>
-
-       <section id="ChSrcDiff">
-       <title>Using the diff tool</title>
-       <para>
-       A diff file is generated, by comparing two files or directories between
-       your own working copy and the "official" source tree. So to be able to
-       do a diff, you should
-       have two source trees on your computer, one with your working copy
-       (containing your changes), and one with the "official" source tree
-       (hopefully the latest SVN files) from &WiresharkWebSite;.
-       </para>
-       <para>
-       If you have only changed a single file, you could type something like
-       this:
-       </para>
-       <para>
-       <userinput>diff -r -u --strip-trailing-cr svn-file.c work-file.c &gt; foo.diff</userinput>
-       </para>
-       <para>
-       To get a diff file for your complete directory (including
-       subdirectories), you could type something like this:
-       </para>
-       <para>
-       <userinput>diff -N -r -u --strip-trailing-cr ./svn-dir ./working-dir &gt; foo.diff</userinput>
-       </para>
-       <para>
-       It's a good idea to do a <userinput>make distclean</userinput> before the
-       actual diff call, as this will remove a lot
-       of temporary files which might be otherwise included in the diff. After
-       doing the diff, you should edit the <filename>foo.diff</filename>
-       file and remove unnecessary things, like your private changes to the
-       <filename>config.nmake</filename> file.
-       </para>
-       <para>
-       <table frame='all'><title>Some useful diff options</title>
-       <tgroup cols='2' align='left' colsep='1' rowsep='1'>
-       <colspec colname='c1'/>
-       <colspec colname='c2'/>
-       <thead>
-       <row>
-         <entry>Option</entry>
-         <entry>Purpose</entry>
-       </row>
-       </thead>
-       <tbody>
-       <row>
-         <entry>-N</entry>
-         <entry>Add new files when used in conjunction with -r.</entry>
-       </row>
-       <row>
-         <entry>-r</entry>
-         <entry>Recursively compare any subdirectories found.</entry>
-       </row>
-       <row>
-         <entry>-u</entry>
-         <entry>Output unified context.</entry>
-       </row>
-       <row>
-         <entry>--strip-trailing-cr</entry>
-         <entry>Strip trailing carriage return on input. This is useful for Win32
-         </entry>
-       </row>
-       <row>
-         <entry>-x PAT</entry>
-         <entry>Exclude files that match PAT.
-         This could be something like -x *.obj to exclude all win32 object files.
-         </entry>
-       </row>
-       </tbody>
-       </tgroup>
-       </table>
-       </para>
-       <para>
-       The diff tool has a lot options; they can be listed with:
-       </para>
-       <para>
-       <userinput>diff --help</userinput>
-       </para>
-       </section>
-
-       </section>
-
-       <section id="ChSrcGoodPatch">
-       <title>Some tips for a good patch</title>
-       <para>
-       Some tips that will make the merging of your changes into the
-       SVN tree much more likely (and you want exactly that, don't you :-):
-       <itemizedlist>
-         <listitem><para>
-         <command>Use the latest SVN sources, or alike.</command>
-         It's a good idea to work with the same sources that are used by the
-         other developer's, this makes it usually much easier to apply your
-         patch. For information about the different ways to get the sources,
-         see <xref linkend="ChSrcObtain"/>.
-         </para></listitem>
-         <listitem><para>
-         <command>Update your SVN sources just before making a patch.
-         </command> For the same reasons as the previous point.
-         </para></listitem>
-         <listitem><para>
-         <command>Do a "make clean" before generating the patch.</command>
-         This removes a lot of unneeded intermediate files (like object files)
-         which can confuse the diff tool generating a lot of unneeded stuff which
-         you have to remove by hand from the patch again.
-         </para></listitem>
-         <listitem><para>
-         <command>Find a good descriptive filename for your patch.</command>
-         Think a moment to find a proper name for your patch file. Often a
-         filename like <filename>wireshark.diff</filename> is used, which isn't
-         really helpful if keeping several of these files and find the right
-         one later. For example: If you want to commit changes to the datatypes
-         of dissector foo, a good filename might be:
-         <filename>packet-foo-datatypes.diff</filename>.
-         </para></listitem>
-         <listitem><para>
-         <command>Don't put unrelated things into one large patch.
-         </command> A few smaller patches are usually easier to apply (but also
-         don't put every changed line into a separate patch :-).
-         </para></listitem>
-         <listitem><para>
-         <command>Remove any parts of the patch not related to the
-         changes you want to submit.</command> You can use a text editor for this.
-         A common example for win32 developers are the differences in your private
-         <filename>config.nmake</filename> file.
-         </para></listitem>
-       </itemizedlist>
-       In general: making it easier to understand and apply your patch by one
-       of the maintainers will make it much more likely (and faster) that it
-       will actually be applied.
-       </para>
-       <para>
-       Please remember: you don't pay the person "on the
-       other side of the mail" for his/her effort applying your patch!
-       </para>
-       </section>
-
-       <section id="ChSrcCodeRequirements">
-       <title>Code Requirements</title>
-       <para>
-       The core maintainers have done a lot of work fixing bugs and making code
-       compile on the various platforms Wireshark supports.
-       </para>
-       <para>
-       To ensure Wireshark's source code quality, and to reduce the workload of
-       the core maintainers, there are some things you should
-       think about <command>before</command> submitting a patch.
-       <warning><title>Warning!</title>
-       <para>
-       <command>Ignoring the code requirements will make it very likely
-       that your patch will be rejected!</command>
-       </para>
-       </warning>
-       <itemizedlist>
-         <listitem><para>
-         <command>Follow the Wireshark source code style guide.</command>
-         Just because something compiles on your platform, that doesn't
-         mean it'll compile on all of the other platforms for which Wireshark is
-         built.
-         Wireshark runs on many platforms, and can be compiled with a number of
-         different compilers. See <xref linkend="ChCodeStyle"/> for details.
-         </para>
-         </listitem>
-         <listitem><para>
-         <command>Submit dissectors as built-in whenever possible.</command>
-         Developing a new dissector as a plugin is a good idea because compiling is
-         quicker, but it's best to convert dissectors to the built-in style before
-         submitting for checkin. This reduces the number of files that must be installed
-         with Wireshark and ensures your dissector will be available on all platforms.
-         </para><para>
-         This is no hard-n-fast rule though. Many dissectors are straightforward so they
-         can easily be put into 'the big pile', while some are ASN.1 based which takes a
-         different approach, and some multiple sourcefile dissectors are more suitable to
-         be placed separate as plugin.
-         </para>
-         </listitem>
-         <listitem><para>
-         <command>Verify that your dissector code does not use prohibited or deprecated APIs</command>
-         This can be done as follows:
-         </para>
-         <para>
-         <userinput>perl &lt;wireshark_root&gt;/tools/checkAPIs.pl &lt;source-filename(s)&gt;</userinput>
-         </para>
-         </listitem>
-         <listitem><para>
-         <command>Fuzz test your changes!</command> Fuzz testing is a very
-         effective way to automatically find a lot of dissector related bugs.
-         You'll take a capture file containing packets affecting your dissector
-         and the fuzz test will randomly change bytes in this file, so that unusual
-         code paths in your dissector are checked. There are tools available to
-         automatically do this on any number of input files, see:
-         <ulink url="&WiresharkWikiSite;/FuzzTesting"/> for details.
-         </para>
-         </listitem>
-       </itemizedlist>
-       </para>
-       </section>
-
-       <section id="ChSrcSend">
-       <title>Sending your patch for inclusion</title>
-       <para>
-       After generating a patch of your changes, you might want to have your
-       changes included into the SVN repository.
-       </para>
-       <para>
-       To submit a patch, open a new ticket in the Wireshark bug database at <ulink
-       url="&WiresharkBugsSite;/bugzilla/enter_bug.cgi?product=Wireshark"/>.
-       You must first create a bug, then attach your patch or patches.
-       <itemizedlist>
-         <listitem><para>
-         Set the Product, Priority, and Severity as needed.
-         </para></listitem>
-         <listitem><para>
-         Add a Summary and Description, and create a bug using the
-         <guibutton>Commit</guibutton> button. If your code has passed fuzz
-         testing, please say so in the description.
-         </para></listitem>
-         <listitem><para>
-         Once the bug has been created, select <guibutton>Create a New Attachment</guibutton>
-         and upload your patch or patches.  Set the <command>review_for_checkin</command>
-         flag to <command>?</command>.  If you skip this step, your patch won't show up in the
-         patch request queue.
-         </para></listitem>
-         <listitem><para>
-         If possible and applicable, attach a capture file that demonstrates
-         your new feature or protocol.
-         </para></listitem>
-         <listitem><para>
-         Don't set the bug's status to ASSIGNED and don't assign the bug to
-         yourself--if you do the latter, the core developers won't see the
-         updates made to the bug.
-         </para></listitem>
-       </itemizedlist>
-       </para>
-       <!--
-       <tip><title>Tip!</title>
-       <para>
-       Setting the <command>review_for_checkin</command> is important.
-       Without it, your patch won't show up in the <ulink url="http://bugs.wireshark.org/bugzilla/request.cgi?action=queue&amp;requester=&amp;product=&amp;type=review_for_checkin&amp;requestee=&amp;component=&amp;group=type">pending
-       patch request queue</ulink>.
-       </para>
-       </tip>
-       -->
-       <para>
-       You might get one of the following responses to your patch request:
-       <itemizedlist>
-         <listitem><para>
-         Your patch is checked into the SVN repository. Congratulations!
-         </para></listitem>
-         <listitem><para>
-         You are asked to provide additional information, capture files, or
-         other material. If you haven't fuzzed your code, you may be asked
-         to do so.
-         </para></listitem>
-         <listitem><para>
-         Your patch is rejected. You should get a response with the reason
-         for rejection.  Common reasons include not following the style
-         guide, buggy or insecure code, and code that won't compile on other
-         platforms. In each case you'll have to fix each problem and upload
-         another patch.
-         </para></listitem>
-         <listitem><para>
-         You don't get any response to your patch.
-         Possible reason: Don't worry, if your patch is in the bug tracker, it
-         won't get lost.  But it may be that all the core developers are busy
-         (e.g., with their day jobs or family or...) and haven't had time to
-         look at your patch.  If you're concerned, feel free to add a comment
-         to the patch or send an email to the developer's list asking for
-         status.  But please be patient: most if not all of us do this in our
-         "spare" time.
-         </para></listitem>
-       </itemizedlist>
-       </para>
-       </section>
-  </section>
-
-  <section id="ChSrcPatchApply">
-       <title>Apply a patch from someone else</title>
-       <para>
-       Sometimes you need to apply a patch to your private source tree. Maybe
-       because you want to try a patch from someone on the developer mailing
-       list, or you want to check your own patch before submitting.
-       </para>
-       <warning><title>Warning!</title>
-       <para>
-       If you have problems applying a patch, make sure the line endings (CR/NL)
-       of the patch and your source files match.
-       </para>
-       </warning>
-       <section id="ChSrcPatchUse">
-       <title>Using patch</title>
-       <para>
-       Given the file <filename>new.diff</filename> containing a unified diff,
-       the right way to call the patch tool depends on what the pathnames in
-       <filename>new.diff</filename> look like.
-       If they're relative to the top-level source directory - for example, if a
-       patch to <filename>prefs.c</filename> just has <filename>prefs.c</filename>
-       as the file name - you'd run it as:
-       </para>
-       <para>
-    <userinput>patch -p0 &lt;new.diff</userinput>
-       </para>
-       <para>
-       If they're relative to a higher-level directory, you'd replace 0 with the
-       number of higher-level directories in the path, e.g. if the names are
-       <filename>wireshark.orig/prefs.c</filename> and
-       <filename>wireshark.mine/prefs.c</filename>, you'd run it with:
-       </para>
-       <para>
-    <userinput>patch -p1 &lt;new.diff</userinput>
-       </para>
-       <para>
-       If they're relative to a <literal>subdirectory</literal> of the top-level
-       directory, you'd run <command>patch</command> in <literal>that</literal>
-       directory and run it with <parameter>-p0</parameter>.
-       </para>
-       <para>
-       If you run it without <parameter>-p</parameter> at all, the patch tool
-       flattens path names, so that if you
-       have a patch file with patches to <filename>Makefile.am</filename> and
-       <filename>wiretap/Makefile.am</filename>,
-       it'll try to apply the first patch to the top-level
-       <filename>Makefile.am</filename> and then apply the
-       <filename>wiretap/Makefile.am</filename> patch to the top-level
-       <filename>Makefile.am</filename> as well.
-       </para>
-       <para>
-       At which position in the filesystem should the patch tool be called?
-       </para>
-       <para>
-       If the pathnames are relative to the top-level source directory, or to a
-       directory above that directory, you'd run it in the top-level source
-       directory.
-       </para>
-       <para>
-       If they're relative to a <literal>subdirectory</literal> - for example,
-       if somebody did a patch to "packet-ip.c" and ran "diff" or "svn diff" in
-       the "epan/dissectors" directory - you'd run it in that subdirectory.
-       It is preferred that people <literal>NOT</literal> submit patches like
-       that - especially if they're only patching files that exist in multiple
-       directories, such as <filename>Makefile.am</filename>.
-       </para>
-       </section>
-  </section>
-
-  <section id="ChSrcAdd">
-       <title>Add a new file to the Subversion repository</title>
-       <para>
-       The "usual" way to commit new files is described in <xref
-       linkend="ChSrcContribute"/>. However, the following might be of
-       interest for the "normal" developer as well.
-       </para>
-       <note><title>Note!</title>
-       <para>
-       This action is only possible/allowed by the Wireshark core developers who
-       have write access to the Subversion repository. It is put in here to have
-       all information in one place.
-       </para>
-       </note>
-       <para>
-       If you (as a core developer) need to add a file to the SVN repository,
-       then you need to perform the following steps:
-       <orderedlist>
-       <listitem>
-       <para>
-       Verify that that file is complete (has Wireshark boilerplate, $Id$, etc).
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       Add the new file(s) to the repository:
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn add new_file</userinput>
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       Set the line ending property to "native" for the new file(s):
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn propset svn:eol-style native new_file</userinput>
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       Set version keyword to "Id" for the new file(s):
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn propset svn:keywords Id new_file</userinput>
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-       Commit your changes, including the added file(s).
-       </para>
-       <para>
-       <prompt>$</prompt>
-       <userinput>svn commit new_file other_files_you_modified</userinput>
-       </para>
-       </listitem>
-       </orderedlist>
-       Don't forget a brief description of the reason for the commit so other
-       developers don't need to read the diff in order to know what has changed.
-       </para>
-  </section>
-  <section id="ChSrcBinary">
-       <title>Binary packaging</title>
-       <para>
-       Delivering binary packages makes it much easier for the end-users to
-       install Wireshark on their target system. This section will explain how
-       the binary packages are made.
-       </para>
-
-       <section id="ChSrcDeb">
-       <title>Debian: .deb packages</title>
-       <para>
-       The Debian Package is built using dpkg-buildpackage, based on information
-       found in the source tree under <filename>debian</filename>. See
-       <ulink url="http://www.debian-administration.org/articles/336"/> for a
-       more in-depth discussion of the build process.
-       </para>
-       <para>
-       In the wireshark directory, type:
-       </para>
-       <para>
-       <prompt>$</prompt> <userinput>make debian-package</userinput>
-       </para>
-       <para>
-       to build the Debian Package.
-       </para>
-       </section>
-
-       <section id="ChSrcRpm">
-       <title>Red Hat: .rpm packages</title>
-       <para>
-       The RPM is built using rpmbuild (http://www.rpm.org/), which comes as standard on many flavours of Linux, including
-       Red Hat and Fedora. The process creates a clean build environment in <filename>packaging/rpm/BUILD</filename> every
-       time the RPM is built. The settings controlling the build are in <filename>packaging/rpm/SPECS/wireshark.spec.in</filename>.
-       After editing the settings in this file, <filename>./configure</filename> must be run again in the wireshark directory to
-       generate the actual specification script.
-       </para>
-       <warning><title>Warning!</title><para>
-       The SPEC file contains settings for the <filename>configure</filename> used to set the RPM build environment. These are
-       completely independent of any settings passed to the usual Wireshark <filename>./configure</filename>.  The exception to
-       this rule is that the prefix given to <filename>configure</filename> (<userinput>--prefix</userinput>) is passed to
-       rpmbuild.</para></warning>
-       <para>
-       In the wireshark directory, type:
-       </para>
-       <para>
-       <prompt>$</prompt> <userinput>make rpm-package</userinput>
-       </para>
-       <para>
-       to build the RPM and source RPM. Once it is done, there will be a message stating where the built RPM can be found.
-       </para>
-       <tip><title>Tip!</title>
-       <para>Because this does a clean build, as well as constructing the package, this can take quite a long time.</para>
-       </tip>
-       <tip><title>Tip!</title>
-       <para>Building the RPM requires building a source distribution which itself requires the Qt development tools
-       <filename>uic</filename> and <filename>moc</filename>.  These can usually be obtained by installing the
-       <filename>qt-devel</filename> package.</para>
-       </tip>
-       </section>
-
-       <section id="ChSrcOSX">
-       <title>MAC OS X: .dmg packages</title>
-       <para>
-       The MAC OS X Package is built using OS X packaging tools, based on information
-       found in the source tree under <filename>packaging/macosx</filename>.
-       </para>
-       <para>
-       In the wireshark directory, type:
-       </para>
-       <para>
-       <prompt>$</prompt> <userinput>make osx-package</userinput>
-       </para>
-       <para>
-       to build the MAC OS X Package.
-       </para>
-       </section>
-
-       <section id="ChSrcNSIS">
-       <title>Win32: NSIS .exe installer</title>
-       <para>
-       The "Nullsoft Install System" is a free installer generator for Win32
-       based systems; instructions how to install it can be found in <xref
-       linkend="ChToolsNSIS"/>.
-       NSIS is script based, you will find the Wireshark installer
-       generation script at: <filename>packaging/nsis/wireshark.nsi</filename>.
-       </para>
-       <para>
-       You will probably have to modify the MAKENSIS setting in the
-       <filename>config.nmake</filename> file to specify where the NSIS binaries
-       are installed.
-       </para>
-       <para>
-       In the wireshark directory, type:
-       </para>
-       <para>
-       <prompt>&gt;</prompt> <userinput>nmake -f makefile.nmake packaging</userinput>
-       </para>
-       <para>
-       to build the installer.
-       </para>
-       <tip><title>Tip!</title>
-       <para>
-       Please be patient while the compression is
-       done, it will take some time (a few minutes!) even on fast machines.
-       </para>
-       </tip>
-       <para>
-       If everything went well, you will now find something like:
-       <filename>wireshark-setup-&WiresharkCurrentVersion;.exe</filename> in
-       the <filename>packaging/nsis</filename> directory.
-       </para>
-       </section>
-
-  </section>
-
-</chapter>
-<!-- End of WSDG Chapter Sources -->
index 4c3eaf7406e4bc65e3d244f629ac8dce76feb62f..d6ba39055b0d843f1f713a95026e1fe605a7e810 100644 (file)
@@ -591,7 +591,7 @@ PARTICULAR PURPOSE.]]>
       <para>
         The following table gives an overview of the possible
         Microsoft toolchain variants and their specific C compiler
-        versions ordered by release date. 
+        versions ordered by release date.
       </para>
       <informaltable frame="all">
         <tgroup cols="4">
@@ -1455,7 +1455,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.]]>
     SVN) server to keep track of all the changes done to the source
     code. Details about the usage of Subversion in the Wireshark
     project can be found in
-    <xref linkend="ChSrcSVNServer" />.</para>
+    <xref linkend="ChSrcGitRepository" />.</para>
     <para>If you want to work with the source code and are planning to
     commit your changes back to the Wireshark community, it is
     recommended to use a SVN client to get the latest source files.
@@ -1542,6 +1542,7 @@ Copyright (C) 2000-2006 CollabNet.
       nicely integrate into the Windows Explorer window.</para>
     </section>
   </section>
+  <!--
   <section id="ChToolsDiff">
     <title>diff (optional)</title>
     <para>Diff is used to get a file of all differences between two
@@ -1569,7 +1570,7 @@ Copyright (C) 2000-2006 CollabNet.
       bash command line prompt:</para>
       <para>
         <prompt>$</prompt>
-        <userinput>diff --version</userinput>
+        <userinput>diff - --><!-- -version</userinput>
       </para>
       <para>should result in something like:
       <programlisting>
@@ -1595,6 +1596,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.]]>
       can use them.</para>
     </section>
   </section>
+    -->
   <section id="ChToolsPatch">
     <title>patch (optional)</title>
     <para>The patch utility is used to merge a diff file into your
diff --git a/docbook/wsdg_src/WSDG_preface.asciidoc b/docbook/wsdg_src/WSDG_preface.asciidoc
new file mode 100644 (file)
index 0000000..1fdc7b8
--- /dev/null
@@ -0,0 +1,112 @@
+
+
+++++++++++++++++++++++++++++++++++++++
+<!-- $Id$ -->
+++++++++++++++++++++++++++++++++++++++
+    
+[[Preface]]
+
+[preface]
+== Preface
+
+[[PreForeword]]
+
+=== Foreword
+
+This book tries to give you a guide to start your own experiments into 
+the wonderful world of Wireshark development.
+
+Developers who are new to Wireshark often have a hard time getting 
+their development environment up and running. This is
+especially true for Win32 developers, as a lot of the tools and methods
+used when building Wireshark are much more common in the UNIX world than
+on Win32.
+
+The first part of this book will describe how to set up the environment 
+needed to develop Wireshark.
+
+The second part of this book will describe how to change the Wireshark 
+source code.
+
+We hope that you find this book useful, and look forward to your comments.
+
+[[PreAudience]]
+
+=== Who should read this document?
+
+The intended audience of this book is anyone going into the development of 
+Wireshark.
+
+This book is not intended to explain the usage of Wireshark in general. 
+Please refer the 
+wireshark-users-guide-url:[][Wireshark User's Guide] about Wireshark usage.
+
+By reading this book, you will learn how to develop Wireshark. It will 
+hopefully guide you around some common problems that frequently appear for 
+new (and sometimes even advanced) developers of Wireshark.
+
+[[PreAck]]
+
+=== Acknowledgements
+
+The authors would like to thank the whole Wireshark team for their 
+assistance. In particular, the authors would like to thank:
+
+* Gerald Combs, for initiating the Wireshark project.
+
+* Guy Harris, for many helpful hints and his effort in maintaining
+the various contributions on the mailing lists.
+
+The authors would also like to thank the following people for their 
+helpful feedback on this document:
+
+* XXX - Please give feedback :-)
+
+And of course a big thank you to the many, many contributors of the 
+Wireshark development community!
+
+[[PreAbout]]
+
+=== About this document
+
+// XXX - Convert to document attribute
+This book was developed by mailto:wsdg-author-email:[][Ulf Lamping].
+
+It is written in AsciiDoc.
+
+You will find some specially marked parts in this book:
+
+[WARNING]
+.This is a warning
+====
+You should pay attention to a warning, as otherwise data loss might occur.
+====
+
+[NOTE]
+.This is a note
+====
+A note will point you to common mistakes and things that might not be 
+obvious.
+====
+
+[TIP]
+.This is a tip
+====
+Tips will be helpful for your everyday work developing Wireshark.
+====
+
+[[PreDownload]]
+
+=== Where to get the latest copy of this document?
+
+The latest copy of this documentation can always be found at: 
+wireshark-developers-guide-url:[] in A4 PDF, US letter PDF, single HTML, and chunked HTML.
+
+[[PreFeedback]]
+
+=== Providing feedback about this document
+
+Should you have any feedback about this document, please send it 
+to the authors through mailto:wireshark-dev-list-email:[][wireshark-dev-list-email:[]].
+
+
diff --git a/docbook/wsdg_src/WSDG_preface.xml b/docbook/wsdg_src/WSDG_preface.xml
deleted file mode 100644 (file)
index 7c8cded..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-<!-- $Id$ -->
-
-<preface id="Preface">
-  <title>Preface</title>
-  <section id="PreForeword">
-  <title>Foreword</title>
-  <para>
-       This book tries to give you a guide to start your own experiments into 
-       the wonderful world of Wireshark development.
-  </para>
-  <para>
-       Developers who are new to Wireshark often have a hard time getting 
-       their development environment up and running. This is
-       especially true for Win32 developers, as a lot of the tools and methods
-       used when building Wireshark are much more common in the UNIX world than
-       on Win32.
-  </para>
-  <para>
-       The first part of this book will describe how to set up the environment 
-       needed to develop Wireshark.
-  </para>
-  <para>
-       The second part of this book will describe how to change the Wireshark 
-       source code.
-  </para>
-  <para>
-    We hope that you find this book useful, and look forward to your comments.
-  </para>
-  </section>
-
-  <section id="PreAudience">
-  <title>Who should read this document?</title>
-  <para>
-  The intended audience of this book is anyone going into the development of 
-  Wireshark.
-  </para>
-  <para>
-  This book is not intended to explain the usage of Wireshark in general. 
-  Please refer the 
-  <ulink url="&WiresharkUsersGuidePage;">Wireshark User's Guide</ulink> 
-  about Wireshark usage.
-  </para>
-  <para>
-  By reading this book, you will learn how to develop Wireshark. It will 
-  hopefully guide you around some common problems that frequently appear for 
-  new (and sometimes even advanced) developers of Wireshark.
-  </para>
-  </section>
-
-  <section id="PreAck">
-  <title>Acknowledgements</title>
-  <para>
-    The authors would like to thank the whole Wireshark team for their 
-       assistance. In particular, the authors would like to thank:
-    <itemizedlist>
-      <listitem>
-       <para>
-         Gerald Combs, for initiating the Wireshark project.
-       </para>
-      </listitem>
-      <listitem>
-       <para>
-      Guy Harris, for many helpful hints and his effort in maintaining
-      the various contributions on the mailing lists.
-       </para>
-      </listitem>
-    </itemizedlist>
-  </para>
-  <para>
-    The authors would also like to thank the following people for their 
-       helpful feedback on this document:
-    <itemizedlist>
-      <listitem>
-      <para>XXX - Please give feedback :-)
-      </para>
-      </listitem>
-    </itemizedlist>
-       And of course a big thank you to the many, many contributors of the 
-       Wireshark development community!
-  </para>
-  </section>
-
-  <section id="PreAbout">
-    <title>About this document</title>
-    <para>
-      This book was developed by 
-      <ulink url="mailto:&AuthorEmail;">Ulf Lamping</ulink>.
-    </para>
-    <para>
-      It is written in DocBook/XML.
-    </para>
-    <para>
-       You will find some specially marked parts in this book:
-    </para>
-    <warning><title>This is a warning!</title>
-       <para>
-       You should pay attention to a warning, as otherwise data loss might occur.
-       </para>
-    </warning>
-    <note><title>This is a note!</title>
-       <para>
-       A note will point you to common mistakes and things that might not be 
-       obvious.
-       </para>
-    </note>
-    <tip><title>This is a tip!</title>
-       <para>
-       Tips will be helpful for your everyday work developing Wireshark.
-       </para>
-    </tip>
-  </section>
-  
-  <section id="PreDownload">
-    <title>Where to get the latest copy of this document?</title>
-    <para>
-      The latest copy of this documentation can always be found at: 
-      <ulink url="&WiresharkDevsGuidePage;">&WiresharkDevsGuidePage;</ulink>
-         in PDF (A4 and US letter), HTML (single and chunked) and CHM format.
-    </para>
-  </section>
-
-  <section id="PreFeedback">
-    <title>Providing feedback about this document</title>
-    <para>
-      Should you have any feedback about this document, please send it 
-      to the authors through <ulink url="mailto:&WiresharkDevMailList;">&WiresharkDevMailList;</ulink>.
-    </para>
-  </section>
-</preface>
index d53013f22a6b3dc24879b2d00b30062088e985fb..fed35de3a0073f4fd7988090a78e257c2a013cad 100644 (file)
--- a/dumpcap.c
+++ b/dumpcap.c
@@ -180,7 +180,7 @@ static void cap_pipe_close(int pipe_fd, gboolean from_socket _U_);
  * and not continue to capture, should we report it as a warning, or
  * what?
  */
-void
+static void
 enable_kernel_bpf_jit_compiler(void)
 {
     int fd;
@@ -1353,7 +1353,7 @@ print_machine_readable_interfaces(GList *if_list)
         else
             printf("\t");
 
-        printf("%u\t", if_info->type);
+        printf("%i\t", if_info->type);
 
         for (addr = g_slist_nth(if_info->addrs, 0); addr != NULL;
                     addr = g_slist_next(addr)) {
@@ -1379,7 +1379,7 @@ print_machine_readable_interfaces(GList *if_list)
                 }
                 break;
             default:
-                printf("<type unknown %u>", if_addr->ifat_type);
+                printf("<type unknown %i>", if_addr->ifat_type);
             }
         }
 
index a208bd70aa9a29ae6135d2b95361f6b78dc6e2e5..8c8cee9fb4e83f743f9f1973b9ef2104da341299 100644 (file)
--- a/editcap.c
+++ b/editcap.c
@@ -176,15 +176,7 @@ abs_time_to_str_with_sec_resolution(const nstime_t *abs_time)
     struct tm *tmp;
     gchar     *buf = (gchar *)g_malloc(16);
 
-#if (defined _WIN32) && (_MSC_VER < 1500)
-    /* calling localtime() on MSVC 2005 with huge values causes it to crash */
-    /* XXX - find the exact value that still does work */
-    /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-    if (abs_time->secs > 2000000000)
-        tmp = NULL;
-    else
-#endif
-        tmp = localtime(&abs_time->secs);
+    tmp = localtime(&abs_time->secs);
 
     if (tmp) {
         g_snprintf(buf, 16, "%d%02d%02d%02d%02d%02d",
@@ -762,7 +754,7 @@ usage(gboolean is_error)
     fprintf(output, "  -v                     verbose output.\n");
     fprintf(output, "                         If -v is used with any of the 'Duplicate Packet\n");
     fprintf(output, "                         Removal' options (-d, -D or -w) then Packet lengths\n");
-    fprintf(output, "                         and MD5 hashes are printed to standard-out.\n");
+    fprintf(output, "                         and MD5 hashes are printed to standard-error.\n");
     fprintf(output, "\n");
 }
 
@@ -1348,7 +1340,7 @@ main(int argc, char *argv[])
                                  * situation since trace files usually have packets in
                                  * chronological order (oldest to newest).
                                  */
-                                /* printf("++out of order, need to adjust this packet!\n"); */
+                                /* fprintf(stderr, "++out of order, need to adjust this packet!\n"); */
                                 snap_phdr = *phdr;
                                 snap_phdr.ts.secs = previous_time.secs + strict_time_adj.tv.tv_sec;
                                 snap_phdr.ts.nsecs = previous_time.nsecs;
@@ -1421,24 +1413,24 @@ main(int argc, char *argv[])
                 if (dup_detect) {
                     if (is_duplicate(buf, phdr->caplen)) {
                         if (verbose) {
-                            fprintf(stdout, "Skipped: %u, Len: %u, MD5 Hash: ",
+                            fprintf(stderr, "Skipped: %u, Len: %u, MD5 Hash: ",
                                     count, phdr->caplen);
                             for (i = 0; i < 16; i++)
-                                fprintf(stdout, "%02x",
+                                fprintf(stderr, "%02x",
                                         (unsigned char)fd_hash[cur_dup_entry].digest[i]);
-                            fprintf(stdout, "\n");
+                            fprintf(stderr, "\n");
                         }
                         duplicate_count++;
                         count++;
                         continue;
                     } else {
                         if (verbose) {
-                            fprintf(stdout, "Packet: %u, Len: %u, MD5 Hash: ",
+                            fprintf(stderr, "Packet: %u, Len: %u, MD5 Hash: ",
                                     count, phdr->caplen);
                             for (i = 0; i < 16; i++)
-                                fprintf(stdout, "%02x",
+                                fprintf(stderr, "%02x",
                                         (unsigned char)fd_hash[cur_dup_entry].digest[i]);
-                            fprintf(stdout, "\n");
+                            fprintf(stderr, "\n");
                         }
                     }
                 }
@@ -1447,29 +1439,29 @@ main(int argc, char *argv[])
                 if (dup_detect_by_time) {
                     nstime_t current;
 
-                    current.secs = phdr->ts.secs;
+                    current.secs  = phdr->ts.secs;
                     current.nsecs = phdr->ts.nsecs;
 
                     if (is_duplicate_rel_time(buf, phdr->caplen, &current)) {
                         if (verbose) {
-                            fprintf(stdout, "Skipped: %u, Len: %u, MD5 Hash: ",
+                            fprintf(stderr, "Skipped: %u, Len: %u, MD5 Hash: ",
                                     count, phdr->caplen);
                             for (i = 0; i < 16; i++)
-                                fprintf(stdout, "%02x",
+                                fprintf(stderr, "%02x",
                                         (unsigned char)fd_hash[cur_dup_entry].digest[i]);
-                            fprintf(stdout, "\n");
+                            fprintf(stderr, "\n");
                         }
                         duplicate_count++;
                         count++;
                         continue;
                     } else {
                         if (verbose) {
-                            fprintf(stdout, "Packet: %u, Len: %u, MD5 Hash: ",
+                            fprintf(stderr, "Packet: %u, Len: %u, MD5 Hash: ",
                                     count, phdr->caplen);
                             for (i = 0; i < 16; i++)
-                                fprintf(stdout, "%02x",
+                                fprintf(stderr, "%02x",
                                         (unsigned char)fd_hash[cur_dup_entry].digest[i]);
-                            fprintf(stdout, "\n");
+                            fprintf(stderr, "\n");
                         }
                     }
                 }
@@ -1529,11 +1521,27 @@ main(int argc, char *argv[])
                     case WTAP_ERR_UNSUPPORTED_ENCAP:
                         /*
                          * This is a problem with the particular frame we're
-                         * writing; note that, and give the frame number.
+                         * writing and the file type and subtype we're
+                         * writing; note that, and report the frame number
+                         * and file type/subtype.
+                         */
+                        fprintf(stderr,
+                                "editcap: Frame %u of \"%s\" has a network type that can't be saved in a \"%s\" file\n.",
+                                read_count, argv[optind],
+                                wtap_file_type_subtype_string(out_file_type_subtype));
+                        break;
+
+                    case WTAP_ERR_PACKET_TOO_LARGE:
+                        /*
+                         * This is a problem with the particular frame we're
+                         * writing and the file type and subtype we're
+                         * writing; note that, and report the frame number
+                         * and file type/subtype.
                          */
                         fprintf(stderr,
-                                "editcap: Frame %u of \"%s\" has a network type that can't be saved in a file with that format\n.",
-                                read_count, argv[optind]);
+                                "editcap: Frame %u of \"%s\" is too large for a \"%s\" file\n.",
+                                read_count, argv[optind],
+                                wtap_file_type_subtype_string(out_file_type_subtype));
                         break;
 
                     default:
@@ -1596,11 +1604,11 @@ main(int argc, char *argv[])
     }
 
     if (dup_detect) {
-        fprintf(stdout, "%u packet%s seen, %u packet%s skipped with duplicate window of %u packets.\n",
+        fprintf(stderr, "%u packet%s seen, %u packet%s skipped with duplicate window of %i packets.\n",
                 count - 1, plurality(count - 1, "", "s"), duplicate_count,
                 plurality(duplicate_count, "", "s"), dup_window);
     } else if (dup_detect_by_time) {
-        fprintf(stdout, "%u packet%s seen, %u packet%s skipped with duplicate time window equal to or less than %ld.%09ld seconds.\n",
+        fprintf(stderr, "%u packet%s seen, %u packet%s skipped with duplicate time window equal to or less than %ld.%09ld seconds.\n",
                 count - 1, plurality(count - 1, "", "s"), duplicate_count,
                 plurality(duplicate_count, "", "s"),
                 (long)relative_time_window.secs,
index 38a62d54ecf4942fa0835fb3754947aea598d97c..d3e40f23c3fede51e5233b7e526593eb74cce94d 100644 (file)
@@ -878,6 +878,7 @@ set(DISSECTOR_SRC
        dissectors/packet-lsc.c
        dissectors/packet-ltp.c
        dissectors/packet-lwapp.c
+  dissectors/packet-lwm.c
        dissectors/packet-lwres.c
        dissectors/packet-m2pa.c
        dissectors/packet-m2tp.c
index 408156bae09f30d866e338b6997bc67c7a945deb..90bd167866ecfa039e546b6e8a257fdfc82334e4 100644 (file)
@@ -74,7 +74,7 @@ string_walk(GList* arg1list, GList **retval, gchar(*conv_func)(gchar))
                 }
 
                 new_ft_string = fvalue_new(FT_STRING);
-                fvalue_set(new_ft_string, s, FALSE);
+                fvalue_set_string(new_ft_string, s);
                 *retval = g_list_append(*retval, new_ft_string);
                 break;
 
index 0b8275f9f85a680d435c9c81ee3aa3cc188d3c60..4296b083affc16a4b8429de76bd0391fb8beb622 100644 (file)
@@ -800,6 +800,7 @@ DISSECTOR_SRC = \
        packet-lsc.c            \
        packet-ltp.c            \
        packet-lwapp.c          \
+  packet-lwm.c         \
        packet-lwres.c          \
        packet-m2pa.c           \
        packet-m2tp.c           \
@@ -1476,6 +1477,7 @@ DISSECTOR_INCLUDES =      \
        packet-lpp.h            \
        packet-lte-rrc.h        \
        packet-mac-lte.h                \
+       packet-mbim.h   \
        packet-mbtcp.h  \
        packet-mgcp.h           \
        packet-mms.h    \
index 5dbe636c4cb9bfeec8ec4f43dadb70bf9fce0043..14cbff8482aae6eea904e2d94fbff7d8c33f087d 100644 (file)
@@ -220,7 +220,8 @@ dissect_mp4_box(guint32 parent_box_type _U_,
         return -1;
 
     box_type = tvb_get_ntohl(tvb, offset+4);
-    box_type_str = tvb_get_string(wmem_packet_scope(), tvb, offset+4, 4);
+    box_type_str = tvb_get_string_enc(wmem_packet_scope(), tvb,
+            offset+4, 4, ENC_ASCII|ENC_NA);
 
     type_pi = proto_tree_add_text(tree, tvb, offset, -1, "%s (%s)",
             val_to_str_const(box_type, box_types, "unknown"), box_type_str);
index fce4b2fb5f2919ffb9b8a63577404ed24b54253c..848c1df7cfc13fa03f533b3fbb8e61d527d9398c 100644 (file)
@@ -1,4 +1,4 @@
-/* packet-9P.c
+/* packet-9p.c
  * Routines for 9P dissection
  * Copyright 2005, Nils O. Selaasdal
  *
@@ -1005,7 +1005,7 @@ static gint _9p_hash_equal(gconstpointer k1, gconstpointer k2) {
 
 static guint _9p_hash_hash(gconstpointer k)
 {
-       const struct _9p_hashkey *key = (struct _9p_hashkey *)k;
+       const struct _9p_hashkey *key = (const struct _9p_hashkey *)k;
 
        return (key->conv_index ^ key->tag ^ key->fid);
 }
@@ -1275,7 +1275,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                proto_tree_add_item(sub_tree, hf_9P_parmsz, tvb, offset, 2, ENC_LITTLE_ENDIAN);
 
                if (firstpass) {
-                       tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                       tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
 
                        if (!strncmp(tvb_s, "9P2000.L", _9p_len)) {
                                u32 = _9P2000_L;
@@ -1365,7 +1365,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                sub_tree = proto_item_add_subtree(ti, ett_9P_aname);
                proto_tree_add_item(sub_tree, hf_9P_parmsz, tvb, offset, 2, ENC_LITTLE_ENDIAN);
                if(firstpass) {
-                       tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                       tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
                        conv_set_fid(pinfo, fid, tvb_s, _9p_len+1);
                        g_free(tvb_s);
                }
@@ -1411,7 +1411,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                        }
 
                        if (firstpass) {
-                               tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                               tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
                                wmem_strbuf_append_c(tmppath, '/');
                                wmem_strbuf_append(tmppath, tvb_s);
                                g_free(tvb_s);
@@ -1486,7 +1486,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                        tmppath = wmem_strbuf_sized_new(wmem_packet_scope(), 0, MAXPATHLEN);
                        wmem_strbuf_append(tmppath, fid_path);
                        wmem_strbuf_append_c(tmppath, '/');
-                       tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                       tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
                        wmem_strbuf_append(tmppath, tvb_s);
                        g_free(tvb_s);
                }
@@ -1521,7 +1521,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                        tmppath = wmem_strbuf_sized_new(wmem_packet_scope(), 0, MAXPATHLEN);
                        wmem_strbuf_append(tmppath, fid_path);
                        wmem_strbuf_append_c(tmppath, '/');
-                       tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                       tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
                        wmem_strbuf_append(tmppath, tvb_s);
                        g_free(tvb_s);
                }
@@ -1937,7 +1937,7 @@ static int dissect_9P(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
                        wmem_strbuf_append(tmppath, conv_get_fid(pinfo, dfid));
                        wmem_strbuf_append_c(tmppath, '/');
 
-                       tvb_s = tvb_get_string(NULL, tvb, offset+2, _9p_len);
+                       tvb_s = tvb_get_string_enc(NULL, tvb, offset+2, _9p_len, ENC_UTF_8|ENC_NA);
                        wmem_strbuf_append(tmppath, tvb_s);
                        g_free(tvb_s);
 
index d5b11e19c8e0ca43a92ee1f928362539caf33eba..a1c958ceed224c6b50312e014354ca2b161ea023 100644 (file)
@@ -217,7 +217,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
                 proto_tree_add_item(subtree, hf_a_length, tvb, 4, 1, ENC_NA);
                 proto_tree_add_item(subtree, hf_a_text, tvb, 5, -1, ENC_ASCII|ENC_NA);
 
-                pstr = tvb_get_string(wmem_packet_scope(), tvb, 5, tvb_get_guint8(tvb, 4));
+                pstr = tvb_get_string_enc(wmem_packet_scope(), tvb, 5, tvb_get_guint8(tvb, 4), ENC_ASCII|ENC_NA);
                 if(pstr)
                 {
                     proto_item_append_text(ti, ": '%s'", pstr);
@@ -283,7 +283,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
                         ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
                         infotree = proto_item_add_subtree(ti, ett_a_item);
                         proto_tree_add_item(infotree, hf_a_weekday, tvb, i+2, len, ENC_ASCII|ENC_NA);
-                        pstr = tvb_get_string(wmem_packet_scope(), tvb, i+2, len);
+                        pstr = tvb_get_string_enc(wmem_packet_scope(), tvb, i+2, len, ENC_ASCII|ENC_NA);
                         if(pstr)
                             proto_item_append_text(ti, ", Weekday: '%s'", pstr);
 
@@ -296,7 +296,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
                         ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
                         infotree = proto_item_add_subtree(ti, ett_a_item);
                         proto_tree_add_item(infotree, hf_a_month_name, tvb, i+2, len, ENC_ASCII|ENC_NA);
-                        pstr = tvb_get_string(wmem_packet_scope(), tvb, i+2, len);
+                        pstr = tvb_get_string_enc(wmem_packet_scope(), tvb, i+2, len, ENC_ASCII|ENC_NA);
                         if(pstr)
                             proto_item_append_text(ti, ", Month name: '%s'", pstr);
                         i += len +2;
@@ -308,7 +308,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
                         ti = proto_tree_add_item(subtree, hf_a_item, tvb, i, len+2, ENC_NA);
                         infotree = proto_item_add_subtree(ti, ett_a_item);
                         proto_tree_add_item(infotree, hf_a_weekofyear_prefix, tvb, i+2, len, ENC_ASCII|ENC_NA);
-                        pstr = tvb_get_string(wmem_packet_scope(), tvb, i+2, len);
+                        pstr = tvb_get_string_enc(wmem_packet_scope(), tvb, i+2, len, ENC_ASCII|ENC_NA);
                         if(pstr)
                             proto_item_append_text(ti, ", Week of the year prefix: '%s'", pstr);
                         i += len +2;
@@ -355,7 +355,7 @@ dissect_a_binary_command(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
                 proto_tree_add_item(subtree, hf_a_length, tvb, 2, 1, ENC_NA);
                 proto_tree_add_item(subtree, hf_a_cdpn, tvb, 3, -1, ENC_ASCII|ENC_NA);
 
-                pstr = tvb_get_string(wmem_packet_scope(), tvb, 3, tvb_get_guint8(tvb, 2));
+                pstr = tvb_get_string_enc(wmem_packet_scope(), tvb, 3, tvb_get_guint8(tvb, 2), ENC_ASCII|ENC_NA);
                 if(pstr)
                     proto_item_append_text(ti, ": '%s'", pstr);
             }
index ffa6417db492f2aad8140ac1431954fea36d42a1..cd5e46ef88897970c070de25f13901b8b177d549 100644 (file)
@@ -206,15 +206,15 @@ dissect_UDPExtStatus(tvbuff_t *tvb, proto_tree *adwin_tree)
        proto_tree_add_item(adwin_tree, hf_adwin_config_revision, tvb, 56,  8, ENC_LITTLE_ENDIAN);
 
        /* add the processor type raw values to the tree, to allow filtering */
-       proto_tree_add_item(adwin_tree, hf_adwin_config_processor_type, tvb, 64, 2, ENC_LITTLE_ENDIAN);
+       proto_tree_add_item(adwin_tree, hf_adwin_config_processor_type, tvb, 64, 2, ENC_ASCII|ENC_NA);
        /* add the processor type as a pretty printed string */
-       processor_type = tvb_get_string(wmem_packet_scope(), tvb, 64, 2);
+       processor_type = tvb_get_string_enc(wmem_packet_scope(), tvb, 64, 2, ENC_ASCII|ENC_NA);
        processor_type = str_to_str(processor_type, processor_type_mapping, "Unknown (%s)");
        proto_tree_add_text(adwin_tree, tvb, 64, 2, "Processor Type: %s", processor_type);
 
        /* add system type as raw value and pretty printed string */
-       proto_tree_add_item(adwin_tree, hf_adwin_config_system_type, tvb, 66, 2, ENC_LITTLE_ENDIAN);
-       system_type = tvb_get_string(wmem_packet_scope(), tvb, 66, 2);
+       proto_tree_add_item(adwin_tree, hf_adwin_config_system_type, tvb, 66, 2, ENC_ASCII|ENC_NA);
+       system_type = tvb_get_string_enc(wmem_packet_scope(), tvb, 66, 2, ENC_ASCII|ENC_NA);
        system_type = str_to_str(system_type, system_type_mapping, "Unknown (%s)");
        proto_tree_add_text(adwin_tree, tvb, 66, 2, "System Type: %s", system_type);
 
@@ -249,15 +249,15 @@ dissect_UDPMessage(tvbuff_t *tvb, proto_tree *adwin_tree)
        proto_tree_add_item(adwin_tree, hf_adwin_config_revision, tvb, 88,  8, ENC_LITTLE_ENDIAN);
 
        /* add the processor type raw values to the tree, to allow filtering */
-       proto_tree_add_item(adwin_tree, hf_adwin_config_processor_type, tvb, 96,  2, ENC_LITTLE_ENDIAN);
+       proto_tree_add_item(adwin_tree, hf_adwin_config_processor_type, tvb, 96,  2, ENC_ASCII|ENC_NA);
        /* add the processor type as a pretty printed string */
-       processor_type = tvb_get_string(wmem_packet_scope(), tvb, 96, 2);
+       processor_type = tvb_get_string_enc(wmem_packet_scope(), tvb, 96, 2, ENC_ASCII|ENC_NA);
        processor_type = str_to_str(processor_type, processor_type_mapping, "Unknown");
        proto_tree_add_text(adwin_tree, tvb, 96, 2, "Processor Type: %s", processor_type);
 
        /* add system type as raw value and pretty printed string */
-       proto_tree_add_item(adwin_tree, hf_adwin_config_system_type, tvb, 98,  2, ENC_LITTLE_ENDIAN);
-       system_type = tvb_get_string(wmem_packet_scope(), tvb, 98, 2);
+       proto_tree_add_item(adwin_tree, hf_adwin_config_system_type, tvb, 98,  2, ENC_ASCII|ENC_NA);
+       system_type = tvb_get_string_enc(wmem_packet_scope(), tvb, 98, 2, ENC_ASCII|ENC_NA);
        system_type = str_to_str(system_type, system_type_mapping, "Unknown");
        proto_tree_add_text(adwin_tree, tvb, 98, 2, "System Type: %s", system_type);
 }
@@ -337,7 +337,7 @@ dissect_TCPFlashUpdate(tvbuff_t *tvb,  packet_info *pinfo _U_, proto_tree *tree,
        proto_tree_add_item(adwin_tree, hf_adwin_config_stream_length, tvb, 0, 4, ENC_BIG_ENDIAN);
        offset = 4;
        length = tvb_strnlen(tvb, offset, -1) + 1;
-       filename = tvb_get_string(wmem_packet_scope(), tvb, offset, length);
+       filename = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII|ENC_NA);
        if (strncmp(filename, "eeprom_on", length) == 0) {
                proto_tree_add_text(adwin_tree, tvb, offset, length,
                                    "Enable EEPROM Support");
index 362d648842c0efbf5a6ba4e4501d84cbf87c1b86..77f0e739446a115e7e69d9eeb4ccdfdf926410c7 100644 (file)
@@ -1716,7 +1716,8 @@ name_in_bitmap(tvbuff_t *tvb, gint offset, guint16 bitmap, int isdir)
                        tp_ofs = nameoff +org_offset;
                        len = tvb_get_guint8(tvb, tp_ofs);
                        tp_ofs++;
-                       name = tvb_get_string(wmem_packet_scope(), tvb, tp_ofs, len);
+                       /* XXX - code page,, e.g. Mac{Roman,Japanese,etc.} */
+                       name = tvb_get_string_enc(wmem_packet_scope(), tvb, tp_ofs, len, ENC_ASCII|ENC_NA);
                        return name;
                }
                offset += 2;
@@ -1754,7 +1755,7 @@ name_in_bitmap(tvbuff_t *tvb, gint offset, guint16 bitmap, int isdir)
                        tp_ofs = nameoff +org_offset +4;
                        len16 = tvb_get_ntohs(tvb, tp_ofs);
                        tp_ofs += 2;
-                       name = tvb_get_string(wmem_packet_scope(), tvb, tp_ofs, len16);
+                       name = tvb_get_string_enc(wmem_packet_scope(), tvb, tp_ofs, len16, ENC_UTF_8|ENC_NA);
                        return name;
                }
        }
@@ -2522,7 +2523,7 @@ dissect_query_afp_login(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
        proto_tree_add_item(tree, hf_afp_Version, tvb, offset, 1, ENC_UTF_8|ENC_BIG_ENDIAN);
        offset += len +1;
        len_uam = tvb_get_guint8(tvb, offset);
-       uam = tvb_get_string(wmem_packet_scope(), tvb, offset +1, len_uam);
+       uam = tvb_get_string_enc(wmem_packet_scope(), tvb, offset +1, len_uam, ENC_UTF_8|ENC_NA);
        proto_tree_add_item(tree, hf_afp_UAM, tvb, offset, 1, ENC_UTF_8|ENC_BIG_ENDIAN);
        offset += len_uam +1;
 
@@ -2555,7 +2556,7 @@ dissect_query_afp_login_ext(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
        offset += len +1;
 
        len_uam = tvb_get_guint8(tvb, offset);
-       uam = tvb_get_string(wmem_packet_scope(), tvb, offset +1, len_uam);
+       uam = tvb_get_string_enc(wmem_packet_scope(), tvb, offset +1, len_uam, ENC_UTF_8|ENC_NA);
        proto_tree_add_item(tree, hf_afp_UAM, tvb, offset, 1, ENC_UTF_8|ENC_BIG_ENDIAN);
        offset += len_uam +1;
 
@@ -4254,7 +4255,7 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
                                                                 "%s, toc index: %u, string: '%s'",
                                                                 spotlight_get_cpx_qtype_string(complex_query_type),
                                                                 toc_index + 1,
-                                                                tvb_get_string(wmem_packet_scope(), tvb, offset + 16, query_length - 8));
+                                                                tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 16, query_length - 8, ENC_UTF_8|ENC_NA));
                                break;
                        case SQ_CPX_TYPE_UTF16_STRING:
                                /*
@@ -4348,7 +4349,7 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
                        switch (cpx_query_type) {
                        case SQ_CPX_TYPE_STRING:
                                proto_tree_add_text(tree, tvb, offset, query_length, "string: '%s'",
-                                                   tvb_get_string(wmem_packet_scope(), tvb, offset + 8, query_length - 8));
+                                                   tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 8, query_length - 8, ENC_UTF_8|ENC_NA));
                                break;
                        case SQ_CPX_TYPE_UTF16_STRING: {
                                /* description see above */
@@ -4421,7 +4422,7 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offs
        proto_item *item_toc;
        proto_tree *sub_tree_toc;
 
-       if (strncmp(tvb_get_string(wmem_packet_scope(), tvb, offset, 8), "md031234", 8) == 0)
+       if (strncmp(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 8, ENC_UTF_8|ENC_NA), "md031234", 8) == 0)
                encoding = ENC_BIG_ENDIAN;
        else
                encoding = ENC_LITTLE_ENDIAN;
@@ -4431,7 +4432,7 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offs
                            8,
                            "Endianness: %s",
                            encoding == ENC_BIG_ENDIAN ?
-                           "Big Endian" : "Litte Endian");
+                           "Big Endian" : "Little Endian");
        offset += 8;
 
        toc_offset = (spotlight_ntoh64(tvb, offset, encoding) >> 32) * 8;
@@ -4585,7 +4586,7 @@ dissect_query_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
        switch (request_val->spotlight_req_command) {
 
        case SPOTLIGHT_CMD_GET_VOLPATH:
-               tvb_get_stringz(wmem_packet_scope(), tvb, offset, &len);
+               tvb_get_stringz_enc(wmem_packet_scope(), tvb, offset, &len, ENC_UTF_8|ENC_NA);
                proto_tree_add_item(tree, hf_afp_spotlight_volpath_client, tvb, offset, len, ENC_UTF_8|ENC_NA);
                offset += len;
                break;
@@ -4801,7 +4802,7 @@ dissect_reply_afp_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
                proto_tree_add_item(tree, hf_afp_spotlight_reply_reserved, tvb, offset, 4, ENC_BIG_ENDIAN);
                offset += 4;
 
-               tvb_get_stringz(wmem_packet_scope(), tvb, offset, &len);
+               tvb_get_stringz_enc(wmem_packet_scope(), tvb, offset, &len, ENC_UTF_8|ENC_NA);
                proto_tree_add_item(tree, hf_afp_spotlight_volpath_server, tvb, offset, len, ENC_UTF_8|ENC_NA);
                offset += len;
                break;
index ef837b56bef973796f9885a9436a5952fc99f3ca..cdde3b6b47ad28bcdae91ca44e2c5dd94cea32c8 100644 (file)
@@ -1,4 +1,4 @@
-/* packet-aim.c
+/* packet-aim-chatnav.c
  * Routines for AIM Instant Messenger (OSCAR) dissection
  * Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
  *
index 505b4822a5b37a032fb537df70e045eed82d2534..ac7fffd155320396af1d2d6efe72809846e324f2 100644 (file)
@@ -133,7 +133,7 @@ static int dissect_aim_snac_location_request_user_information(tvbuff_t *tvb, pac
        offset += 1;
 
        /* Buddy name */
-       proto_tree_add_item(tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+       proto_tree_add_item(tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
        offset += buddyname_length;
 
        return offset;
@@ -150,7 +150,7 @@ static int dissect_aim_snac_location_user_information(tvbuff_t *tvb, packet_info
        offset += 1;
 
        /* Buddy name */
-       proto_tree_add_item(tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+       proto_tree_add_item(tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
        offset += buddyname_length;
 
        /* Warning level */
index 365b64e739eb54531036307c68625b21dbd7e421..f2dfc47a43f17d53483921d3aec8ae46aa1dffe5 100644 (file)
@@ -507,7 +507,7 @@ dissect_aim_rendezvous_extended_message(tvbuff_t *tvb, proto_tree *msg_tree)
        proto_tree_add_item(msg_tree, hf_aim_rendezvous_extended_data_message_priority_code, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
        text_length = tvb_get_letohs(tvb, offset);
        proto_tree_add_item(msg_tree, hf_aim_rendezvous_extended_data_message_text_length, tvb, offset, 2, ENC_BIG_ENDIAN); offset+=2;
-       text = tvb_get_string(wmem_packet_scope(), tvb, offset, text_length);
+       text = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, text_length, ENC_ASCII|ENC_NA);
        proto_tree_add_text(msg_tree, tvb, offset, text_length, "Text: %s", text); /* offset+=text_length; */
 
        offset = tvb_length(tvb);
index 5706d60f47dbe599c406ddc28947bcdf5bc83e0b..ca7278ee8a9da07eed42db6a9a23e26470764b2e 100644 (file)
@@ -1,4 +1,4 @@
-/* packet-aim.c
+/* packet-aim-oft.c
  * Routines for AIM Instant Messenger (OSCAR) dissection
  * Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
  *
index afd4c7058e7b4024fad0126202838380f3322e2b..a9c577d03e0f40acb431547303e3b3e49405c756 100644 (file)
@@ -1,4 +1,4 @@
-/* packet-aim.c
+/* packet-aim-popup.c
  * Routines for AIM Instant Messenger (OSCAR) dissection
  * Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
  *
index 12b989148d660e42ba3f833afab5cf5335df3078..54b9f367a8e26eaef5f87bd5c60bfe9cd43a9c07 100644 (file)
@@ -110,7 +110,7 @@ static int dissect_aim_snac_signon_signon_reply(tvbuff_t *tvb,
        offset += 2;
 
        /* Challenge */
-       proto_tree_add_item(tree, hf_aim_signon_challenge, tvb, offset, challenge_length, ENC_ASCII|ENC_NA);
+       proto_tree_add_item(tree, hf_aim_signon_challenge, tvb, offset, challenge_length, ENC_UTF_8|ENC_NA);
        offset += challenge_length;
        return offset;
 }
index 062be49ceee9c442725588e6c4b3fe19862cebba..67ca0f409474bcd079d1bc4770c77e2db3daf4b8 100644 (file)
@@ -117,7 +117,7 @@ static int dissect_ssi_item(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, p
 
        /* Buddy Name */
        if (buddyname_length > 0) {
-               proto_tree_add_item(ssi_entry, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(ssi_entry, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
                offset += buddyname_length;
        }
 
@@ -242,7 +242,7 @@ static int dissect_aim_snac_ssi_auth_request(tvbuff_t *tvb, packet_info *pinfo _
 
        /* show buddy name */
        if (buddyname_length > 0) {
-               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
                offset += buddyname_length;
        }
        /* get reason message length (2 bytes) */
@@ -252,7 +252,7 @@ static int dissect_aim_snac_ssi_auth_request(tvbuff_t *tvb, packet_info *pinfo _
 
        /* show reason message if present */
        if (reason_length > 0) {
-               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_reason_str, tvb, offset, reason_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_reason_str, tvb, offset, reason_length, ENC_UTF_8|ENC_NA);
                offset += reason_length;
        }
 
@@ -276,7 +276,7 @@ static int dissect_aim_snac_ssi_auth_reply(tvbuff_t *tvb, packet_info *pinfo _U_
 
        /* show buddy name */
        if (buddyname_length > 0) {
-               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
                offset += buddyname_length;
        }
 
@@ -291,7 +291,7 @@ static int dissect_aim_snac_ssi_auth_reply(tvbuff_t *tvb, packet_info *pinfo _U_
 
        /* show reason message if present */
        if (reason_length > 0) {
-               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_reason_str, tvb, offset, reason_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(tree, hf_aim_fnac_subtype_ssi_reason_str, tvb, offset, reason_length, ENC_UTF_8|ENC_NA);
                offset += reason_length;
        }
 
index f9af86d54570c7a0a27edee44d04a030ec4c7295..dac7ef0811b0eb38f290930eab7bcc0cdef6ea03 100644 (file)
@@ -46,7 +46,7 @@ static gint ett_aim_userlookup = -1;
 
 static int dissect_aim_userlookup_search(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *lookup_tree)
 {
-       proto_tree_add_item(lookup_tree, hf_aim_userlookup_email, tvb, 0, tvb_length(tvb), ENC_ASCII|ENC_NA);
+       proto_tree_add_item(lookup_tree, hf_aim_userlookup_email, tvb, 0, tvb_length(tvb), ENC_UTF_8|ENC_NA);
        return tvb_length(tvb);
 }
 
index 49ca186914478a1338aa84dedf9d45e77bb1ca33..8c293f51fc6ac3888903497e4de81fc7213b59f5 100644 (file)
@@ -827,7 +827,7 @@ dissect_aim_buddyname(tvbuff_t *tvb, packet_info *pinfo _U_, int offset,
                                         tvb_format_text(tvb, offset, buddyname_length));
                buddy_tree = proto_item_add_subtree(ti, ett_aim_buddyname);
                proto_tree_add_item(buddy_tree, hf_aim_buddyname_len, tvb, offset-1, 1, ENC_BIG_ENDIAN);
-               proto_tree_add_item(buddy_tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_ASCII|ENC_NA);
+               proto_tree_add_item(buddy_tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA);
        }
 
        return offset+buddyname_length;
@@ -1154,7 +1154,7 @@ dissect_aim_tlv_value_string (proto_item *ti, guint16 valueid _U_, tvbuff_t *tvb
        gint string_len;
 
        string_len = tvb_length(tvb);
-       buf = tvb_get_string(wmem_packet_scope(), tvb, 0, string_len);
+       buf = tvb_get_string_enc(wmem_packet_scope(), tvb, 0, string_len, ENC_UTF_8|ENC_NA);
        proto_item_set_text(ti, "Value: %s", format_text(buf, string_len));
 
        return string_len;
@@ -1171,7 +1171,7 @@ dissect_aim_tlv_value_string08_array (proto_item *ti, guint16 valueid _U_, tvbuf
        while (tvb_reported_length_remaining(tvb, offset) > 1)
        {
                guint8 string_len = tvb_get_guint8(tvb, offset++);
-               guint8 *buf = tvb_get_string(wmem_packet_scope(), tvb, offset, string_len);
+               guint8 *buf = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, string_len, ENC_UTF_8|ENC_NA);
                proto_tree_add_text(entry, tvb, offset, string_len, "%s",
                                    format_text(buf, string_len));
                offset += string_len;
@@ -1276,7 +1276,7 @@ dissect_aim_tlv_value_messageblock (proto_item *ti, guint16 valueid _U_, tvbuff_
                offset += 2;
 
                /* The actual message */
-               buf = tvb_get_string(wmem_packet_scope(), tvb, offset, blocklen - 4);
+               buf = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, blocklen - 4, ENC_ASCII|ENC_NA);
                proto_item_append_text(ti, "Message: %s ",
                                    format_text(buf, blocklen - 4));
                proto_tree_add_item(entry, hf_aim_messageblock_message, tvb,
index 4f634db1957fd463f1ee1d730c2b82b05dc30ae3..2e7b44aa62c576778c1270aa19986487e003317f 100644 (file)
@@ -544,7 +544,11 @@ static const gchar* dissect_fields_desea(packet_info* pinfo _U_, tvbuff_t *tvb,
 
     e164->e164_number_type = CALLED_PARTY_NUMBER;
     e164->nature_of_address = tvb_get_guint8(tvb,offset) & 0x7f;
-    e164->E164_number_str = (gchar*)tvb_get_string(wmem_packet_scope(),tvb,offset+1,len);
+    /*
+     * XXX - section 7.4.14 "E.164 address" of Q.2630.3 seems to
+     * indicate that this is BCD, not ASCII.
+     */
+    e164->E164_number_str = (gchar*)tvb_get_string_enc(wmem_packet_scope(),tvb,offset+1,len,ENC_ASCII|ENC_NA);
     e164->E164_number_length = len-1;
 
     dissect_e164_number(tvb, tree, offset-1, len, *e164);
@@ -570,7 +574,11 @@ static const gchar* dissect_fields_oesea(packet_info* pinfo _U_, tvbuff_t *tvb,
 
     e164->e164_number_type = CALLING_PARTY_NUMBER;
     e164->nature_of_address = tvb_get_guint8(tvb,offset) & 0x7f;
-    e164->E164_number_str = (gchar*)tvb_get_string(wmem_packet_scope(),tvb,offset+1,len);
+    /*
+     * XXX - section 7.4.14 "E.164 address" of Q.2630.3 seems to
+     * indicate that this is BCD, not ASCII.
+     */
+    e164->E164_number_str = (gchar*)tvb_get_string_enc(wmem_packet_scope(),tvb,offset+1,len,ENC_ASCII|ENC_NA);
     e164->E164_number_length = len-1;
 
     dissect_e164_number(tvb, tree, offset-1, len, *e164);
index 05db6f92104cc06e6fdba8d873cf9256cb15a8dd..66ab684b8cb5e74b8d23c2ba87c95709b4282863 100644 (file)
@@ -4,6 +4,7 @@
  *
  * Author: Martin Sustrik <sustrik@imatix.com> (AMQP 0-9)
  * Author: Steve Huston <shuston@riverace.com> (extended for AMQP 0-10)
+ * Author: Pavel Moravec <pmoravec@redhat.com> (extended for AMQP 1.0)
  *
  * Copyright (c) 1996-2007 iMatix Corporation
  *
@@ -31,7 +32,7 @@
 /*
  * See
  *
- *     http://www.amqp.org/confluence/display/AMQP/AMQP+Specification
+ *     http://www.amqp.org/resources/download
  *
  * for specifications for various versions of the AMQP protocol.
  */
@@ -45,9 +46,6 @@
 #include <epan/wmem/wmem.h>
 #include "packet-tcp.h"
 
-void proto_register_amqp(void);
-void proto_reg_handoff_amqp(void);
-
 /*  Generic data  */
 
 static int amqp_port = 5672;
@@ -60,7 +58,7 @@ static int amqp_port = 5672;
 }
 
 /*
- * This dissector handles AMQP 0-9 and 0-10. The conversation structure
+ * This dissector handles AMQP 0-9, 0-10 and 1.0. The conversation structure
  * contains the version being run - it's only really reliably detected at
  * protocol init. If this dissector starts in the middle of a conversation
  * it will try to figure it out, but conversation start is the best.
@@ -70,10 +68,13 @@ static int amqp_port = 5672;
 #define AMQP_V0_9           2
 /* #define AMQP_V0_91          3 */
 #define AMQP_V0_10          4
+#define AMQP_V1_0           5
 typedef struct {
     guint8 version;
 } amqp_conv;
 
+#define MAX_BUFFER 256
+
 /* 0-9 defines */
 
 #define AMQP_0_9_FRAME_TYPE_METHOD                                      1
@@ -196,6 +197,65 @@ typedef struct {
 
 #define AMQP_0_9_METHOD_TUNNEL_REQUEST                                 10
 
+/* AMQP 1.0 values */
+
+#define AMQP_1_0_AMQP_FRAME 0
+#define AMQP_1_0_SASL_FRAME 1
+#define AMQP_1_0_TLS_FRAME  2
+
+#define AMQP_1_0_AMQP_OPEN        0x10
+#define AMQP_1_0_AMQP_BEGIN       0x11
+#define AMQP_1_0_AMQP_ATTACH      0x12
+#define AMQP_1_0_AMQP_FLOW        0x13
+#define AMQP_1_0_AMQP_TRANSFER    0x14
+#define AMQP_1_0_AMQP_DISPOSITION 0x15
+#define AMQP_1_0_AMQP_DETACH      0x16
+#define AMQP_1_0_AMQP_END         0x17
+#define AMQP_1_0_AMQP_CLOSE       0x18
+
+#define AMQP_1_0_SASL_MECHANISMS 0x40
+#define AMQP_1_0_SASL_INIT       0x41
+#define AMQP_1_0_SASL_CHALLENGE  0x42
+#define AMQP_1_0_SASL_RESPONSE   0x43
+#define AMQP_1_0_SASL_OUTCOME    0x44
+
+#define AMQP_1_0_AMQP_TYPE_ERROR 0x1d
+#define AMQP_1_0_AMQP_TYPE_HEADER 0x70
+#define AMQP_1_0_AMQP_TYPE_DELIVERY_ANNOTATIONS 0x71
+#define AMQP_1_0_AMQP_TYPE_MESSAGE_ANNOTATIONS 0x72
+#define AMQP_1_0_AMQP_TYPE_PROPERTIES 0x73
+#define AMQP_1_0_AMQP_TYPE_APPLICATION_PROPERTIES 0x74
+#define AMQP_1_0_AMQP_TYPE_DATA 0x75
+#define AMQP_1_0_AMQP_TYPE_AMQP_SEQUENCE 0x76
+#define AMQP_1_0_AMQP_TYPE_AMQP_VALUE 0x77
+#define AMQP_1_0_AMQP_TYPE_FOOTER 0x78
+#define AMQP_1_0_AMQP_TYPE_RECEIVED 0x23
+#define AMQP_1_0_AMQP_TYPE_ACCEPTED 0x24
+#define AMQP_1_0_AMQP_TYPE_REJECTED 0x25
+#define AMQP_1_0_AMQP_TYPE_RELEASED 0x26
+#define AMQP_1_0_AMQP_TYPE_MODIFIED 0x27
+#define AMQP_1_0_AMQP_TYPE_SOURCE 0x28
+#define AMQP_1_0_AMQP_TYPE_TARGET 0x29
+#define AMQP_1_0_AMQP_TYPE_DELETE_ON_CLOSE 0x2b
+#define AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_LINKS 0x2c
+#define AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_MESSAGE 0x2d
+#define AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_LINKS_OR_MESSAGE 0x2e
+#define AMQP_1_0_AMQP_TYPE_COORDINATOR 0x30
+#define AMQP_1_0_AMQP_TYPE_DECLARE 0x31
+#define AMQP_1_0_AMQP_TYPE_DISCHARGE 0x32
+#define AMQP_1_0_AMQP_TYPE_DECLARED 0x33
+#define AMQP_1_0_AMQP_TYPE_TRANSACTIONAL_STATE 0x34
+
+#define AMQP_1_0_TYPE_DESCRIPTOR_CONSTRUCTOR 0x00
+
+#define AMQP_1_0_TYPE_LIST0   0x45
+#define AMQP_1_0_TYPE_LIST8   0xc0
+#define AMQP_1_0_TYPE_LIST32   0xd0
+#define AMQP_1_0_TYPE_MAP8   0xc1
+#define AMQP_1_0_TYPE_MAP32   0xd1
+#define AMQP_1_0_TYPE_ARRAY8   0xe0
+#define AMQP_1_0_TYPE_ARRAY32   0xf0
+
 /* AMQP 0-10 values */
 
 #define AMQP_0_10_FRAME_CONTROL  0
@@ -333,6 +393,40 @@ dissect_amqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
 static void
 check_amqp_version(tvbuff_t *tvb, amqp_conv *conn);
 
+static guint
+get_amqp_1_0_message_len(packet_info *pinfo, tvbuff_t *tvb, int offset);
+
+static guint
+dissect_amqp_1_0_list(tvbuff_t *tvb,
+                      packet_info *pinfo,
+                      int offset,
+                      int bound,
+                      proto_item *item,
+                      int hf_amqp_type,
+                      int hf_amqp_subtype_count,
+                      const int **hf_amqp_subtypes,
+                      const char *name);
+
+static guint
+dissect_amqp_1_0_map(tvbuff_t *tvb,
+                     packet_info *pinfo,
+                     int offset,
+                     int bound,
+                     proto_item *item,
+                     int hf_amqp_type,
+                     const char *name);
+
+static guint
+dissect_amqp_1_0_array(tvbuff_t *tvb,
+                       packet_info *pinfo,
+                       int offset,
+                       int bound,
+                       proto_item *item,
+                       int hf_amqp_type,
+                       int hf_amqp_subtype_count,
+                       const int **hf_amqp_subtypes,
+                       const char *name);
+
 static guint
 get_amqp_0_10_message_len(packet_info *pinfo, tvbuff_t *tvb, int offset);
 
@@ -419,6 +513,25 @@ static void
 dissect_amqp_0_10_struct32(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
                            int offset, guint32 struct_length);
 
+static guint32
+dissect_amqp_1_0_AMQP_frame(tvbuff_t *tvb,
+                            guint offset,
+                            guint16 bound,
+                            proto_item *amqp_tree,
+                            packet_info *pinfo,
+                            const gchar **method_name);
+
+static guint32
+dissect_amqp_1_0_SASL_frame(tvbuff_t *tvb,
+                            guint offset,
+                            guint16 bound,
+                            proto_item *amqp_tree,
+                            packet_info *pinfo,
+                            const gchar **method_name);
+
+static int
+dissect_amqp_1_0_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_);
+
 static int
 dissect_amqp_0_10_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_);
 
@@ -806,6 +919,144 @@ struct amqp_typeinfo {
     type_formatter  formatter;
     guint           known_size;
 };
+
+/*  AMQP 1-0 type decoding information  */
+
+/*  struct for field interpreting format code (i.e. 0x70 for msg.header) to relevant hf_* variable
+ *  (here hf_amqp_1_0_messageHeader). If the type is list, next 2 struct items specify how to
+ *  interpret list items (in terms of hf_* variable)
+ */
+struct amqp_defined_types_t {
+    const int format_code;
+    int       *hf_amqp_type;
+    int       hf_amqp_subtype_count;
+    const int **hf_amqp_subtypes;
+};
+
+/* functions for decoding 1.0 type and/or value */
+
+static gboolean decode_fixed_type(tvbuff_t *tvb,
+                                  guint8 code,
+                                  int offset,
+                                  int bound,
+                                  guint8 *type_width_size,
+                                  guint *length_size,
+                                  const char **type_name,
+                                  const char **value);
+
+static proto_item*
+add_1_0_proto_item(proto_item *item,
+             tvbuff_t *tvb,
+             int offset,
+             int length,
+             int hf_amqp_type,
+             const char *no_format_value);
+
+static void
+get_amqp_1_0_value_formatter(tvbuff_t *tvb,
+                             packet_info *pinfo,
+                             guint8 code,
+                             int offset,
+                             int bound,
+                             int hf_amqp_type,
+                             const char *name,
+                             int hf_amqp_subtype_count,
+                             const int **hf_amqp_subtypes,
+                             guint *length_size,
+                             proto_item *item);
+
+static guint
+get_amqp_1_0_type_formatter(tvbuff_t *tvb,
+                            int offset,
+                            int bound,
+                            int *hf_amqp_type,
+                            const char **name,
+                            int *hf_amqp_subtype_count,
+                            const int ***hf_amqp_subtypes,
+                            guint *length_size);
+
+static void
+get_amqp_1_0_type_value_formatter(tvbuff_t *tvb,
+                                  packet_info *pinfo,
+                                  int offset,
+                                  int bound,
+                                  int hf_amqp_type,
+                                  const char *name,
+                                  guint *length_size,
+                                  proto_item *item);
+
+/* functions for decoding particular primitive types */
+
+static int
+format_amqp_1_0_null(tvbuff_t *tvb _U_,
+                     guint offset, guint bound _U_, guint length _U_,
+                     const char **value _U_);
+
+static int
+format_amqp_1_0_boolean_true(tvbuff_t *tvb,
+                             guint offset, guint bound _U_, guint length _U_,
+                             const char **value);
+
+static int
+format_amqp_1_0_boolean_false(tvbuff_t *tvb,
+                              guint offset, guint bound _U_, guint length _U_,
+                              const char **value);
+
+static int
+format_amqp_1_0_boolean(tvbuff_t *tvb,
+                        guint offset, guint bound _U_, guint length _U_,
+                        const char **value);
+
+static int
+format_amqp_1_0_uint(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length,
+                     const char **value);
+
+static int
+format_amqp_1_0_int(tvbuff_t *tvb,
+                    guint offset, guint bound _U_, guint length,
+                    const char **value);
+
+static int
+format_amqp_1_0_float(tvbuff_t *tvb,
+                      guint offset, guint bound _U_, guint length _U_,
+                      const char **value);
+
+static int
+format_amqp_1_0_double(tvbuff_t *tvb,
+                       guint offset, guint bound _U_, guint length _U_,
+                       const char **value);
+
+static int
+format_amqp_1_0_char(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length _U_,
+                     const char **value);
+
+static int
+format_amqp_1_0_timestamp(tvbuff_t *tvb,
+                          guint offset, guint bound _U_, guint length _U_,
+                          const char **value);
+
+static int
+format_amqp_1_0_uuid(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length _U_,
+                     const char **value);
+
+static int
+format_amqp_1_0_bin(tvbuff_t *tvb,
+                    guint offset, guint bound _U_, guint length,
+                    const char **value);
+
+static int
+format_amqp_1_0_str(tvbuff_t *tvb,
+                    guint offset, guint bound, guint length,
+                    const char **value);
+
+static int
+format_amqp_1_0_symbol(tvbuff_t *tvb,
+                       guint offset, guint bound, guint length,
+                       const char **value);
+
 static gboolean
 get_amqp_0_10_type_formatter(guint8 code,
                              const char **name,
@@ -854,6 +1105,533 @@ format_amqp_0_10_sequence_set(tvbuff_t *tvb, guint offset, guint length,
 /*  Various handles  */
 
 static int proto_amqp = -1;
+static const char* element_suffix [] = {"", "s"}; /* to distinguish singular/plural in "list of 1 item" vs. "list of 2 items" */
+
+/* 1.0 handles */
+
+static int hf_amqp_1_0_size = -1;
+static int hf_amqp_1_0_doff = -1;
+static int hf_amqp_1_0_type = -1;
+static int hf_amqp_1_0_containerId = -1;
+static int hf_amqp_1_0_hostname = -1;
+static int hf_amqp_1_0_maxFrameSize = -1;
+static int hf_amqp_1_0_channelMax = -1;
+static int hf_amqp_1_0_idleTimeOut = -1;
+static int hf_amqp_1_0_outgoingLocales = -1;
+static int hf_amqp_1_0_incomingLocales = -1;
+static int hf_amqp_1_0_offeredCapabilities = -1;
+static int hf_amqp_1_0_desiredCapabilities = -1;
+static int hf_amqp_1_0_properties = -1;
+static int hf_amqp_1_0_remoteChannel = -1;
+static int hf_amqp_1_0_nextOutgoingId = -1;
+static int hf_amqp_1_0_incomingWindow = -1;
+static int hf_amqp_1_0_outgoingWindow = -1;
+static int hf_amqp_1_0_handleMax = -1;
+static int hf_amqp_1_0_name = -1;
+static int hf_amqp_1_0_handle = -1;
+static int hf_amqp_1_0_role = -1;
+static int hf_amqp_1_0_sndSettleMode = -1;
+static int hf_amqp_1_0_rcvSettleMode = -1;
+static int hf_amqp_1_0_source = -1;
+static int hf_amqp_1_0_target = -1;
+static int hf_amqp_1_0_deleteOnClose = -1;
+static int hf_amqp_1_0_deleteOnNoLinks = -1;
+static int hf_amqp_1_0_deleteOnNoMessages = -1;
+static int hf_amqp_1_0_deleteOnNoLinksOrMessages = -1;
+static int hf_amqp_1_0_coordinator = -1;
+static int hf_amqp_1_0_declare = -1;
+static int hf_amqp_1_0_globalId = -1;
+static int hf_amqp_1_0_discharge = -1;
+static int hf_amqp_1_0_txnId = -1;
+static int hf_amqp_1_0_fail = -1;
+static int hf_amqp_1_0_declared = -1;
+static int hf_amqp_1_0_transactionalState = -1;
+static int hf_amqp_1_0_outcome = -1;
+static int hf_amqp_1_0_unsettled = -1;
+static int hf_amqp_1_0_incompleteUnsettled = -1;
+static int hf_amqp_1_0_initialDeliveryCount = -1;
+static int hf_amqp_1_0_maxMessageSize = -1;
+static int hf_amqp_1_0_nextIncomingId = -1;
+static int hf_amqp_1_0_deliveryCount = -1;
+static int hf_amqp_1_0_sectionNumber = -1;
+static int hf_amqp_1_0_sectionOffset = -1;
+static int hf_amqp_1_0_deliveryFailed = -1;
+static int hf_amqp_1_0_undeliverableHere = -1;
+static int hf_amqp_1_0_linkCredit = -1;
+static int hf_amqp_1_0_available = -1;
+static int hf_amqp_1_0_drain = -1;
+static int hf_amqp_1_0_echo = -1;
+static int hf_amqp_1_0_deliveryId = -1;
+static int hf_amqp_1_0_deliveryTag = -1;
+static int hf_amqp_1_0_messageFormat = -1;
+static int hf_amqp_1_0_settled = -1;
+static int hf_amqp_1_0_more = -1;
+static int hf_amqp_1_0_state = -1;
+static int hf_amqp_1_0_resume = -1;
+static int hf_amqp_1_0_aborted = -1;
+static int hf_amqp_1_0_batchable = -1;
+static int hf_amqp_1_0_first = -1;
+static int hf_amqp_1_0_last = -1;
+static int hf_amqp_1_0_closed = -1;
+static int hf_amqp_1_0_amqp_performative = -1;
+static int hf_amqp_1_0_error = -1;
+static int hf_amqp_1_0_messageHeader = -1;
+static int hf_amqp_1_0_deliveryAnnotations = -1;
+static int hf_amqp_1_0_messageAnnotations = -1;
+static int hf_amqp_1_0_messageProperties = -1;
+static int hf_amqp_1_0_applicationProperties = -1;
+static int hf_amqp_1_0_data = -1;
+static int hf_amqp_1_0_amqp_sequence = -1;
+static int hf_amqp_1_0_amqp_value = -1;
+static int hf_amqp_1_0_footer = -1;
+static int hf_amqp_1_0_received = -1;
+static int hf_amqp_1_0_accepted = -1;
+static int hf_amqp_1_0_rejected = -1;
+static int hf_amqp_1_0_released = -1;
+static int hf_amqp_1_0_modified = -1;
+static int hf_amqp_1_0_condition = -1;
+static int hf_amqp_1_0_description = -1;
+static int hf_amqp_1_0_info = -1;
+static int hf_amqp_1_0_address = -1;
+static int hf_amqp_1_0_durable = -1;
+static int hf_amqp_1_0_terminusDurable = -1;
+static int hf_amqp_1_0_priority = -1;
+static int hf_amqp_1_0_ttl = -1;
+static int hf_amqp_1_0_firstAcquirer = -1;
+static int hf_amqp_1_0_expiryPolicy = -1;
+static int hf_amqp_1_0_timeout = -1;
+static int hf_amqp_1_0_dynamic = -1;
+static int hf_amqp_1_0_dynamicNodeProperties = -1;
+static int hf_amqp_1_0_distributionMode = -1;
+static int hf_amqp_1_0_filter = -1;
+static int hf_amqp_1_0_defaultOutcome = -1;
+static int hf_amqp_1_0_outcomes = -1;
+static int hf_amqp_1_0_capabilities = -1;
+static int hf_amqp_1_0_messageId = -1;
+static int hf_amqp_1_0_userId = -1;
+static int hf_amqp_1_0_to = -1;
+static int hf_amqp_1_0_subject = -1;
+static int hf_amqp_1_0_replyTo = -1;
+static int hf_amqp_1_0_correlationId = -1;
+static int hf_amqp_1_0_contentType = -1;
+static int hf_amqp_1_0_contentEncoding = -1;
+static int hf_amqp_1_0_absoluteExpiryTime = -1;
+static int hf_amqp_1_0_creationTime = -1;
+static int hf_amqp_1_0_groupId = -1;
+static int hf_amqp_1_0_groupSequence = -1;
+static int hf_amqp_1_0_replyToGroupId = -1;
+static int hf_amqp_1_0_sasl_method = -1;
+static int hf_amqp_1_0_mechanisms = -1;
+static int hf_amqp_1_0_mechanism = -1;
+static int hf_amqp_1_0_initResponse = -1;
+static int hf_amqp_1_0_saslChallenge = -1;
+static int hf_amqp_1_0_saslResponse = -1;
+static int hf_amqp_1_0_saslCode = -1;
+static int hf_amqp_1_0_saslAdditionalData = -1;
+static int hf_amqp_1_0_list = -1;
+static int hf_amqp_1_0_map = -1;
+static int hf_amqp_1_0_array = -1;
+/* sub-hf_* variables for variant sub-types */
+static int hf_amqp_1_0_hostname_str = -1;
+static int hf_amqp_1_0_maxFrameSize_1 = -1;
+static int hf_amqp_1_0_maxFrameSize_4 = -1;
+static int hf_amqp_1_0_incomingWindow_1 = -1;
+static int hf_amqp_1_0_incomingWindow_4 = -1;
+static int hf_amqp_1_0_outgoingWindow_1 = -1;
+static int hf_amqp_1_0_outgoingWindow_4 = -1;
+static int hf_amqp_1_0_linkCredit_1 = -1;
+static int hf_amqp_1_0_linkCredit_4 = -1;
+static int hf_amqp_1_0_available_1 = -1;
+static int hf_amqp_1_0_available_4 = -1;
+static int hf_amqp_1_0_deliveryCount_1 = -1;
+static int hf_amqp_1_0_deliveryCount_4 = -1;
+static int hf_amqp_1_0_sectionNumber_1 = -1;
+static int hf_amqp_1_0_sectionNumber_4 = -1;
+static int hf_amqp_1_0_idleTimeOut_1 = -1;
+static int hf_amqp_1_0_idleTimeOut_4 = -1;
+static int hf_amqp_1_0_outgoingLocales_sym = -1;
+static int hf_amqp_1_0_incomingLocales_sym = -1;
+static int hf_amqp_1_0_offeredCapabilities_sym = -1;
+static int hf_amqp_1_0_desiredCapabilities_sym = -1;
+static int hf_amqp_1_0_nextIncomingId_1 = -1;
+static int hf_amqp_1_0_nextIncomingId_4 = -1;
+static int hf_amqp_1_0_sectionOffset_1 = -1;
+static int hf_amqp_1_0_sectionOffset_8 = -1;
+static int hf_amqp_1_0_maxMessageSize_1 = -1;
+static int hf_amqp_1_0_maxMessageSize_8 = -1;
+static int hf_amqp_1_0_nextOutgoingId_1 = -1;
+static int hf_amqp_1_0_nextOutgoingId_4 = -1;
+static int hf_amqp_1_0_deliveryId_1 = -1;
+static int hf_amqp_1_0_deliveryId_4 = -1;
+static int hf_amqp_1_0_deliveryTag_bin = -1;
+static int hf_amqp_1_0_messageFormat_1 = -1;
+static int hf_amqp_1_0_messageFormat_4 = -1;
+static int hf_amqp_1_0_first_1 = -1;
+static int hf_amqp_1_0_first_4 = -1;
+static int hf_amqp_1_0_last_1 = -1;
+static int hf_amqp_1_0_last_4 = -1;
+static int hf_amqp_1_0_remoteChannel_2 = -1;
+static int hf_amqp_1_0_handleMax_1 = -1;
+static int hf_amqp_1_0_handleMax_4 = -1;
+static int hf_amqp_1_0_handle_1 = -1;
+static int hf_amqp_1_0_handle_4 = -1;
+static int hf_amqp_1_0_sndSettleMode_1 = -1;
+static int hf_amqp_1_0_rcvSettleMode_1 = -1;
+static int hf_amqp_1_0_initialDeliveryCount_1 = -1;
+static int hf_amqp_1_0_initialDeliveryCount_4 = -1;
+static int hf_amqp_1_0_description_str = -1;
+static int hf_amqp_1_0_address_str = -1;
+static int hf_amqp_1_0_terminusDurable_1 = -1;
+static int hf_amqp_1_0_terminusDurable_4 = -1;
+static int hf_amqp_1_0_priority_1 = -1;
+static int hf_amqp_1_0_ttl_1 = -1;
+static int hf_amqp_1_0_ttl_4 = -1;
+static int hf_amqp_1_0_expiryPolicy_sym = -1;
+static int hf_amqp_1_0_timeout_1 = -1;
+static int hf_amqp_1_0_timeout_4 = -1;
+static int hf_amqp_1_0_distributionMode_sym = -1;
+static int hf_amqp_1_0_outcomes_sym = -1;
+static int hf_amqp_1_0_capabilities_sym = -1;
+static int hf_amqp_1_0_messageId_1 = -1;
+static int hf_amqp_1_0_messageId_str = -1;
+static int hf_amqp_1_0_messageId_bin = -1;
+static int hf_amqp_1_0_messageId_uuid = -1;
+static int hf_amqp_1_0_messageId_8 = -1;
+static int hf_amqp_1_0_correlationId_1 = -1;
+static int hf_amqp_1_0_correlationId_str = -1;
+static int hf_amqp_1_0_correlationId_bin = -1;
+static int hf_amqp_1_0_correlationId_uuid = -1;
+static int hf_amqp_1_0_correlationId_8 = -1;
+static int hf_amqp_1_0_userId_bin = -1;
+static int hf_amqp_1_0_to_str = -1;
+static int hf_amqp_1_0_subject_str = -1;
+static int hf_amqp_1_0_replyTo_str = -1;
+static int hf_amqp_1_0_contentType_sym = -1;
+static int hf_amqp_1_0_contentEncoding_sym = -1;
+static int hf_amqp_1_0_absoluteExpiryTime_timestamp = -1;
+static int hf_amqp_1_0_creationTime_timestamp = -1;
+static int hf_amqp_1_0_groupId_str = -1;
+static int hf_amqp_1_0_groupSequence_1 = -1;
+static int hf_amqp_1_0_groupSequence_4 = -1;
+static int hf_amqp_1_0_replyToGroupId_str = -1;
+static int hf_amqp_1_0_mechanisms_sym = -1;
+static int hf_amqp_1_0_initResponse_bin = -1;
+static int hf_amqp_1_0_saslAdditionalData_bin = -1;
+
+/* Many AMQP variables can have value in either 0,1,2,4,8 or 16 bytes, depending on particular type.
+ * To distinguish it among hf_amqp_1_0_* variables, table below "translates" original hf_amqp_1_0_*
+ * variable to the proper one based on format code subcategory
+ */
+
+const int* hf_amqp_1_0_hostname_[] = { &hf_amqp_1_0_hostname, &hf_amqp_1_0_hostname_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_maxFrameSize_[] = { &hf_amqp_1_0_maxFrameSize, &hf_amqp_1_0_maxFrameSize_1, NULL, &hf_amqp_1_0_maxFrameSize_4, NULL, NULL };
+const int* hf_amqp_1_0_incomingWindow_[] = { &hf_amqp_1_0_incomingWindow, &hf_amqp_1_0_incomingWindow_1, NULL, &hf_amqp_1_0_incomingWindow_4, NULL, NULL };
+const int* hf_amqp_1_0_outgoingWindow_[] = { &hf_amqp_1_0_outgoingWindow, &hf_amqp_1_0_outgoingWindow_1, NULL, &hf_amqp_1_0_outgoingWindow_4, NULL, NULL };
+const int* hf_amqp_1_0_linkCredit_[] = { &hf_amqp_1_0_linkCredit, &hf_amqp_1_0_linkCredit_1, NULL, &hf_amqp_1_0_linkCredit_4, NULL, NULL };
+const int* hf_amqp_1_0_available_[] = { &hf_amqp_1_0_available, &hf_amqp_1_0_available_1, NULL, &hf_amqp_1_0_available_4, NULL, NULL };
+const int* hf_amqp_1_0_deliveryCount_[] = { &hf_amqp_1_0_deliveryCount, &hf_amqp_1_0_deliveryCount_1, NULL, &hf_amqp_1_0_deliveryCount_4, NULL, NULL };
+const int* hf_amqp_1_0_sectionNumber_[] = { &hf_amqp_1_0_sectionNumber, &hf_amqp_1_0_sectionNumber_1, NULL, &hf_amqp_1_0_sectionNumber_4, NULL, NULL };
+const int* hf_amqp_1_0_idleTimeOut_[] = { &hf_amqp_1_0_idleTimeOut, &hf_amqp_1_0_idleTimeOut_1, NULL, &hf_amqp_1_0_idleTimeOut_4, NULL, NULL };
+const int* hf_amqp_1_0_outgoingLocales_[] = { &hf_amqp_1_0_outgoingLocales, &hf_amqp_1_0_outgoingLocales_sym, NULL, &hf_amqp_1_0_outgoingLocales_sym, NULL, NULL };
+const int* hf_amqp_1_0_incomingLocales_[] = { &hf_amqp_1_0_incomingLocales, &hf_amqp_1_0_incomingLocales_sym, NULL, &hf_amqp_1_0_incomingLocales_sym, NULL, NULL };
+const int* hf_amqp_1_0_offeredCapabilities_[] = { &hf_amqp_1_0_offeredCapabilities, &hf_amqp_1_0_offeredCapabilities_sym, NULL, &hf_amqp_1_0_offeredCapabilities_sym, NULL, NULL };
+const int* hf_amqp_1_0_desiredCapabilities_[] = { &hf_amqp_1_0_desiredCapabilities, &hf_amqp_1_0_desiredCapabilities_sym, NULL, &hf_amqp_1_0_desiredCapabilities_sym, NULL, NULL };
+const int* hf_amqp_1_0_nextIncomingId_[] = { &hf_amqp_1_0_nextIncomingId, &hf_amqp_1_0_nextIncomingId_1, NULL, &hf_amqp_1_0_nextIncomingId_4, NULL, NULL };
+const int* hf_amqp_1_0_sectionOffset_[] = { &hf_amqp_1_0_sectionOffset, &hf_amqp_1_0_sectionOffset_1, NULL, NULL, &hf_amqp_1_0_sectionOffset_8, NULL };
+const int* hf_amqp_1_0_maxMessageSize_[] = { &hf_amqp_1_0_maxMessageSize, &hf_amqp_1_0_maxMessageSize_1, NULL, NULL, &hf_amqp_1_0_maxMessageSize_8, NULL };
+const int* hf_amqp_1_0_nextOutgoingId_[] = { &hf_amqp_1_0_nextOutgoingId, &hf_amqp_1_0_nextOutgoingId_1, NULL, &hf_amqp_1_0_nextOutgoingId_4, NULL, NULL };
+const int* hf_amqp_1_0_deliveryId_[] = { &hf_amqp_1_0_deliveryId, &hf_amqp_1_0_deliveryId_1, NULL, &hf_amqp_1_0_deliveryId_4, NULL, NULL };
+const int* hf_amqp_1_0_deliveryTag_[] = { &hf_amqp_1_0_deliveryTag, &hf_amqp_1_0_deliveryTag_bin, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_messageFormat_[] = { &hf_amqp_1_0_messageFormat, &hf_amqp_1_0_messageFormat_1, NULL, &hf_amqp_1_0_messageFormat_4, NULL, NULL };
+const int* hf_amqp_1_0_first_[] = { &hf_amqp_1_0_first, &hf_amqp_1_0_first_1, NULL, &hf_amqp_1_0_first_4, NULL, NULL };
+const int* hf_amqp_1_0_last_[] = { &hf_amqp_1_0_last, &hf_amqp_1_0_last_1, NULL, &hf_amqp_1_0_last_4, NULL, NULL };
+const int* hf_amqp_1_0_remoteChannel_[] = { &hf_amqp_1_0_remoteChannel, NULL, &hf_amqp_1_0_remoteChannel_2, NULL, NULL, NULL };
+const int* hf_amqp_1_0_handleMax_[] = { &hf_amqp_1_0_handleMax, &hf_amqp_1_0_handleMax_1, NULL, &hf_amqp_1_0_handleMax_4, NULL, NULL };
+const int* hf_amqp_1_0_handle_[] = { &hf_amqp_1_0_handle, &hf_amqp_1_0_handle_1, NULL, &hf_amqp_1_0_handle_4, NULL, NULL };
+const int* hf_amqp_1_0_sndSettleMode_[] = { &hf_amqp_1_0_sndSettleMode, &hf_amqp_1_0_sndSettleMode_1, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_rcvSettleMode_[] = { &hf_amqp_1_0_rcvSettleMode, &hf_amqp_1_0_rcvSettleMode_1, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_initialDeliveryCount_[] = { &hf_amqp_1_0_initialDeliveryCount, &hf_amqp_1_0_initialDeliveryCount_1, NULL, &hf_amqp_1_0_initialDeliveryCount_4, NULL, NULL };
+const int* hf_amqp_1_0_description_[] = { &hf_amqp_1_0_description, &hf_amqp_1_0_description_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_address_[] = { &hf_amqp_1_0_address, &hf_amqp_1_0_address_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_terminusDurable_[] = { &hf_amqp_1_0_terminusDurable, &hf_amqp_1_0_terminusDurable_1, NULL, &hf_amqp_1_0_terminusDurable_4, NULL, NULL };
+const int* hf_amqp_1_0_priority_[] = { &hf_amqp_1_0_priority, &hf_amqp_1_0_priority_1, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_ttl_[] = { &hf_amqp_1_0_ttl, &hf_amqp_1_0_ttl_1, NULL, &hf_amqp_1_0_ttl_4, NULL, NULL };
+const int* hf_amqp_1_0_expiryPolicy_[] = { &hf_amqp_1_0_expiryPolicy, &hf_amqp_1_0_expiryPolicy_sym, NULL, &hf_amqp_1_0_expiryPolicy_sym, NULL, NULL };
+const int* hf_amqp_1_0_timeout_[] = { &hf_amqp_1_0_timeout, &hf_amqp_1_0_timeout_1, NULL, &hf_amqp_1_0_timeout_4, NULL, NULL };
+const int* hf_amqp_1_0_distributionMode_[] = { &hf_amqp_1_0_distributionMode, &hf_amqp_1_0_distributionMode_sym, NULL, &hf_amqp_1_0_distributionMode_sym, NULL, NULL };
+const int* hf_amqp_1_0_outcomes_[] = { &hf_amqp_1_0_outcomes, &hf_amqp_1_0_outcomes_sym, NULL, &hf_amqp_1_0_outcomes_sym, NULL, NULL };
+const int* hf_amqp_1_0_capabilities_[] = { &hf_amqp_1_0_capabilities, &hf_amqp_1_0_capabilities_sym, NULL, &hf_amqp_1_0_capabilities_sym, NULL, NULL };
+const int* hf_amqp_1_0_messageId_[] = { &hf_amqp_1_0_messageId, &hf_amqp_1_0_messageId_1, &hf_amqp_1_0_messageId_str, &hf_amqp_1_0_messageId_bin, &hf_amqp_1_0_messageId_8, &hf_amqp_1_0_messageId_uuid };
+const int* hf_amqp_1_0_correlationId_[] = { &hf_amqp_1_0_correlationId, &hf_amqp_1_0_correlationId_1, &hf_amqp_1_0_correlationId_str, &hf_amqp_1_0_correlationId_bin, &hf_amqp_1_0_correlationId_8, &hf_amqp_1_0_correlationId_uuid };
+const int* hf_amqp_1_0_userId_[] = { &hf_amqp_1_0_userId, &hf_amqp_1_0_userId_bin, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_to_[] = { &hf_amqp_1_0_to, &hf_amqp_1_0_to_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_subject_[] = { &hf_amqp_1_0_subject, &hf_amqp_1_0_subject_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_replyTo_[] = { &hf_amqp_1_0_replyTo, &hf_amqp_1_0_replyTo_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_contentType_[] = { &hf_amqp_1_0_contentType, &hf_amqp_1_0_contentType_sym, NULL, &hf_amqp_1_0_contentType_sym, NULL, NULL };
+const int* hf_amqp_1_0_contentEncoding_[] = { &hf_amqp_1_0_contentEncoding, &hf_amqp_1_0_contentEncoding_sym, NULL, &hf_amqp_1_0_contentEncoding_sym, NULL, NULL };
+const int* hf_amqp_1_0_absoluteExpiryTime_[] = { &hf_amqp_1_0_absoluteExpiryTime, NULL, NULL, NULL, &hf_amqp_1_0_absoluteExpiryTime_timestamp, NULL };
+const int* hf_amqp_1_0_creationTime_[] = { &hf_amqp_1_0_creationTime, NULL, NULL, NULL, &hf_amqp_1_0_creationTime_timestamp, NULL };
+const int* hf_amqp_1_0_groupId_[] = { &hf_amqp_1_0_groupId, &hf_amqp_1_0_groupId_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_groupSequence_[] = { &hf_amqp_1_0_groupSequence, &hf_amqp_1_0_groupSequence_1, NULL, &hf_amqp_1_0_groupSequence_4, NULL, NULL };
+const int* hf_amqp_1_0_replyToGroupId_[] = { &hf_amqp_1_0_replyToGroupId, &hf_amqp_1_0_replyToGroupId_str, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_mechanisms_[] = { &hf_amqp_1_0_mechanisms, &hf_amqp_1_0_mechanisms_sym, NULL, &hf_amqp_1_0_mechanisms_sym, NULL, NULL };
+const int* hf_amqp_1_0_initResponse_[] = { &hf_amqp_1_0_initResponse, &hf_amqp_1_0_initResponse_bin, NULL, NULL, NULL, NULL };
+const int* hf_amqp_1_0_saslAdditionalData_[] = { &hf_amqp_1_0_saslAdditionalData, &hf_amqp_1_0_saslAdditionalData_bin, NULL, NULL, NULL, NULL };
+
+const int** subtypes_for_hf_amqp_1_0[] = {
+  NULL, /* hf_amqp_1_0_size */
+  NULL, /* hf_amqp_1_0_doff */
+  NULL, /* hf_amqp_1_0_type */
+  NULL, /* hf_amqp_1_0_amqp_performative */
+  NULL, /* hf_amqp_1_0_sasl_method */
+  NULL, /* hf_amqp_1_0_list */
+  NULL, /* hf_amqp_1_0_map */
+  NULL, /* hf_amqp_1_0_array */
+  NULL, /* hf_amqp_1_0_containerId - mandatory string */
+  hf_amqp_1_0_hostname_,
+  hf_amqp_1_0_maxFrameSize_,
+  NULL, /* hf_amqp_1_0_channelMax_,*/
+  hf_amqp_1_0_idleTimeOut_,
+  hf_amqp_1_0_outgoingLocales_,
+  hf_amqp_1_0_incomingLocales_,
+  hf_amqp_1_0_offeredCapabilities_,
+  hf_amqp_1_0_desiredCapabilities_,
+  NULL, /* hf_amqp_1_0_properties */
+  hf_amqp_1_0_nextIncomingId_,
+  hf_amqp_1_0_deliveryCount_,
+  hf_amqp_1_0_sectionNumber_,
+  hf_amqp_1_0_sectionOffset_,
+  NULL, /* hf_amqp_1_0_deliveryFailed */
+  NULL, /* hf_amqp_1_0_undeliverableHere */
+  hf_amqp_1_0_linkCredit_,
+  hf_amqp_1_0_available_,
+  NULL, /* hf_amqp_1_0_drain */
+  NULL, /* hf_amqp_1_0_echo */
+  hf_amqp_1_0_deliveryId_,
+  hf_amqp_1_0_deliveryTag_,
+  hf_amqp_1_0_messageFormat_,
+  NULL, /* hf_amqp_1_0_settled */
+  NULL, /* hf_amqp_1_0_more */
+  NULL, /* hf_amqp_1_0_state */
+  NULL, /* hf_amqp_1_0_resume */
+  NULL, /* hf_amqp_1_0_aborted */
+  NULL, /* hf_amqp_1_0_batchable */
+  hf_amqp_1_0_first_,
+  hf_amqp_1_0_last_,
+  NULL, /* hf_amqp_1_0_closed */
+  hf_amqp_1_0_remoteChannel_,
+  hf_amqp_1_0_nextOutgoingId_,
+  hf_amqp_1_0_incomingWindow_,
+  hf_amqp_1_0_outgoingWindow_,
+  hf_amqp_1_0_handleMax_,
+  NULL, /* hf_amqp_1_0_name */
+  hf_amqp_1_0_handle_,
+  NULL, /* hf_amqp_1_0_role */
+  hf_amqp_1_0_sndSettleMode_,
+  hf_amqp_1_0_rcvSettleMode_,
+  NULL, /* hf_amqp_1_0_source */
+  NULL, /* hf_amqp_1_0_target */
+  NULL, /* hf_amqp_1_0_deleteOnClose */
+  NULL, /* hf_amqp_1_0_deleteOnNoLinks */
+  NULL, /* hf_amqp_1_0_deleteOnNoMessages */
+  NULL, /* hf_amqp_1_0_deleteOnNoLinksOrMessages */
+  NULL, /* hf_amqp_1_0_coordinator */
+  NULL, /* hf_amqp_1_0_declare */
+  NULL, /* hf_amqp_1_0_globalId */
+  NULL, /* hf_amqp_1_0_discharge */
+  NULL, /* hf_amqp_1_0_txnId */
+  NULL, /* hf_amqp_1_0_fail */
+  NULL, /* hf_amqp_1_0_declared */
+  NULL, /* hf_amqp_1_0_transactionalState */
+  NULL, /* hf_amqp_1_0_outcome */
+  NULL, /* hf_amqp_1_0_unsettled */
+  NULL, /* hf_amqp_1_0_incompleteUnsettled */
+  hf_amqp_1_0_initialDeliveryCount_,
+  hf_amqp_1_0_maxMessageSize_,
+  NULL, /* hf_amqp_1_0_error */
+  NULL, /* hf_amqp_1_0_messageHeader */
+  NULL, /* hf_amqp_1_0_messageProperties */
+  NULL, /* hf_amqp_1_0_deliveryAnnotations */
+  NULL, /* hf_amqp_1_0_messageAnnotations */
+  NULL, /* hf_amqp_1_0_applicationProperties */
+  NULL, /* hf_amqp_1_0_data */
+  NULL, /* hf_amqp_1_0_amqp_sequence */
+  NULL, /* hf_amqp_1_0_amqp_value */
+  NULL, /* hf_amqp_1_0_footer */
+  NULL, /* hf_amqp_1_0_received */
+  NULL, /* hf_amqp_1_0_accepted */
+  NULL, /* hf_amqp_1_0_rejected */
+  NULL, /* hf_amqp_1_0_released */
+  NULL, /* hf_amqp_1_0_modified */
+  NULL, /* hf_amqp_1_0_condition */
+  hf_amqp_1_0_description_,
+  NULL, /* hf_amqp_1_0_info */
+  hf_amqp_1_0_address_,
+  NULL, /* hf_amqp_1_0_durable */
+  hf_amqp_1_0_terminusDurable_,
+  hf_amqp_1_0_priority_,
+  hf_amqp_1_0_ttl_,
+  NULL, /* hf_amqp_1_0_firstAcquirer */
+  hf_amqp_1_0_expiryPolicy_,
+  hf_amqp_1_0_timeout_,
+  NULL, /* hf_amqp_1_0_dynamic */
+  NULL, /* hf_amqp_1_0_dynamicNodeProperties */
+  hf_amqp_1_0_distributionMode_,
+  NULL, /* hf_amqp_1_0_filter */
+  NULL, /* hf_amqp_1_0_defaultOutcome */
+  hf_amqp_1_0_outcomes_,
+  hf_amqp_1_0_capabilities_,
+  hf_amqp_1_0_messageId_,
+  hf_amqp_1_0_userId_,
+  hf_amqp_1_0_to_,
+  hf_amqp_1_0_subject_,
+  hf_amqp_1_0_replyTo_,
+  hf_amqp_1_0_correlationId_,
+  hf_amqp_1_0_contentType_,
+  hf_amqp_1_0_contentEncoding_,
+  hf_amqp_1_0_absoluteExpiryTime_,
+  hf_amqp_1_0_creationTime_,
+  hf_amqp_1_0_groupId_,
+  hf_amqp_1_0_groupSequence_,
+  hf_amqp_1_0_replyToGroupId_,
+  hf_amqp_1_0_mechanisms_,
+  NULL, /* hf_amqp_1_0_mechanism */
+  hf_amqp_1_0_initResponse_,
+  NULL, /* hf_amqp_1_0_saslChallenge */
+  NULL, /* hf_amqp_1_0_saslResponse */
+  NULL, /* hf_amqp_1_0_saslCode */
+  hf_amqp_1_0_saslAdditionalData_
+};
+
+/* fields with hf_* types for list items;
+ * i.e. sasl.init method has 3 arguments in a list (mechanism, init.response, hostname)
+ * so when dissecting sasl.init arguments list, identify the list items with
+ * corresponding hf_* variable */
+const int* hf_amqp_1_0_sasl_mechanisms_items[] = { &hf_amqp_1_0_mechanisms };
+const int* hf_amqp_1_0_sasl_init_items[] = { &hf_amqp_1_0_mechanism,
+                                             &hf_amqp_1_0_initResponse,
+                                             &hf_amqp_1_0_hostname };
+const int* hf_amqp_1_0_sasl_challenge_items[] = { &hf_amqp_1_0_saslChallenge };
+const int* hf_amqp_1_0_sasl_response_items[] = { &hf_amqp_1_0_saslResponse };
+const int* hf_amqp_1_0_sasl_outcome_items[] = { &hf_amqp_1_0_saslCode,
+                                                &hf_amqp_1_0_saslAdditionalData };
+const int* hf_amqp_1_0_amqp_open_items[] = { &hf_amqp_1_0_containerId,
+                                             &hf_amqp_1_0_hostname,
+                                             &hf_amqp_1_0_maxFrameSize,
+                                             &hf_amqp_1_0_channelMax,
+                                             &hf_amqp_1_0_idleTimeOut,
+                                             &hf_amqp_1_0_outgoingLocales,
+                                             &hf_amqp_1_0_incomingLocales,
+                                             &hf_amqp_1_0_offeredCapabilities,
+                                             &hf_amqp_1_0_desiredCapabilities,
+                                             &hf_amqp_1_0_properties };
+const int* hf_amqp_1_0_amqp_begin_items[] = { &hf_amqp_1_0_remoteChannel,
+                                              &hf_amqp_1_0_nextOutgoingId,
+                                              &hf_amqp_1_0_incomingWindow,
+                                              &hf_amqp_1_0_outgoingWindow,
+                                              &hf_amqp_1_0_handleMax,
+                                              &hf_amqp_1_0_offeredCapabilities,
+                                              &hf_amqp_1_0_desiredCapabilities,
+                                              &hf_amqp_1_0_properties };
+const int* hf_amqp_1_0_amqp_attach_items[] = { &hf_amqp_1_0_name,
+                                               &hf_amqp_1_0_handle,
+                                               &hf_amqp_1_0_role,
+                                               &hf_amqp_1_0_sndSettleMode,
+                                               &hf_amqp_1_0_rcvSettleMode,
+                                               &hf_amqp_1_0_source,
+                                               &hf_amqp_1_0_target,
+                                               &hf_amqp_1_0_unsettled,
+                                               &hf_amqp_1_0_incompleteUnsettled,
+                                               &hf_amqp_1_0_initialDeliveryCount,
+                                               &hf_amqp_1_0_maxMessageSize,
+                                               &hf_amqp_1_0_offeredCapabilities,
+                                               &hf_amqp_1_0_desiredCapabilities,
+                                               &hf_amqp_1_0_properties };
+const int* hf_amqp_1_0_amqp_flow_items[] = { &hf_amqp_1_0_nextIncomingId,
+                                             &hf_amqp_1_0_incomingWindow,
+                                             &hf_amqp_1_0_nextOutgoingId,
+                                             &hf_amqp_1_0_outgoingWindow,
+                                             &hf_amqp_1_0_handle,
+                                             &hf_amqp_1_0_deliveryCount,
+                                             &hf_amqp_1_0_linkCredit,
+                                             &hf_amqp_1_0_available,
+                                             &hf_amqp_1_0_drain,
+                                             &hf_amqp_1_0_echo,
+                                             &hf_amqp_1_0_properties };
+const int* hf_amqp_1_0_amqp_transfer_items[] = { &hf_amqp_1_0_handle,
+                                                 &hf_amqp_1_0_deliveryId,
+                                                 &hf_amqp_1_0_deliveryTag,
+                                                 &hf_amqp_1_0_messageFormat,
+                                                 &hf_amqp_1_0_settled,
+                                                 &hf_amqp_1_0_more,
+                                                 &hf_amqp_1_0_rcvSettleMode,
+                                                 &hf_amqp_1_0_state,
+                                                 &hf_amqp_1_0_resume,
+                                                 &hf_amqp_1_0_aborted,
+                                                 &hf_amqp_1_0_batchable };
+const int* hf_amqp_1_0_amqp_disposition_items[] = { &hf_amqp_1_0_role,
+                                                    &hf_amqp_1_0_first,
+                                                    &hf_amqp_1_0_last,
+                                                    &hf_amqp_1_0_settled,
+                                                    &hf_amqp_1_0_state,
+                                                    &hf_amqp_1_0_batchable };
+const int* hf_amqp_1_0_amqp_detach_items[] = { &hf_amqp_1_0_handle,
+                                               &hf_amqp_1_0_closed,
+                                               &hf_amqp_1_0_error };
+const int* hf_amqp_1_0_amqp_end_items[] = { &hf_amqp_1_0_error };
+const int* hf_amqp_1_0_amqp_close_items[] = { &hf_amqp_1_0_error };
+const int* hf_amqp_1_0_error_items[] = { &hf_amqp_1_0_condition,
+                                         &hf_amqp_1_0_description,
+                                         &hf_amqp_1_0_info };
+const int* hf_amqp_1_0_messageHeader_items[] = { &hf_amqp_1_0_durable,
+                                                 &hf_amqp_1_0_priority,
+                                                 &hf_amqp_1_0_ttl,
+                                                 &hf_amqp_1_0_firstAcquirer,
+                                                 &hf_amqp_1_0_deliveryCount };
+const int* hf_amqp_1_0_received_items[] = { &hf_amqp_1_0_sectionNumber,
+                                            &hf_amqp_1_0_sectionOffset };
+const int* hf_amqp_1_0_rejected_items[] = { &hf_amqp_1_0_error };
+const int* hf_amqp_1_0_modified_items[] = { &hf_amqp_1_0_deliveryFailed,
+                                            &hf_amqp_1_0_undeliverableHere,
+                                            &hf_amqp_1_0_messageAnnotations };
+const int* hf_amqp_1_0_source_items[] = { &hf_amqp_1_0_address,
+                                          &hf_amqp_1_0_terminusDurable,
+                                          &hf_amqp_1_0_expiryPolicy,
+                                          &hf_amqp_1_0_timeout,
+                                          &hf_amqp_1_0_dynamic,
+                                          &hf_amqp_1_0_dynamicNodeProperties,
+                                          &hf_amqp_1_0_distributionMode,
+                                          &hf_amqp_1_0_filter,
+                                          &hf_amqp_1_0_defaultOutcome,
+                                          &hf_amqp_1_0_outcomes,
+                                          &hf_amqp_1_0_capabilities };
+const int* hf_amqp_1_0_target_items[] = { &hf_amqp_1_0_address,
+                                          &hf_amqp_1_0_terminusDurable,
+                                          &hf_amqp_1_0_expiryPolicy,
+                                          &hf_amqp_1_0_timeout,
+                                          &hf_amqp_1_0_dynamic,
+                                          &hf_amqp_1_0_dynamicNodeProperties,
+                                          &hf_amqp_1_0_capabilities };
+const int* hf_amqp_1_0_messageProperties_items[] = { &hf_amqp_1_0_messageId,
+                                                     &hf_amqp_1_0_userId,
+                                                     &hf_amqp_1_0_to,
+                                                     &hf_amqp_1_0_subject,
+                                                     &hf_amqp_1_0_replyTo,
+                                                     &hf_amqp_1_0_correlationId,
+                                                     &hf_amqp_1_0_contentType,
+                                                     &hf_amqp_1_0_contentEncoding,
+                                                     &hf_amqp_1_0_absoluteExpiryTime,
+                                                     &hf_amqp_1_0_creationTime,
+                                                     &hf_amqp_1_0_groupId,
+                                                     &hf_amqp_1_0_groupSequence,
+                                                     &hf_amqp_1_0_replyToGroupId };
+const int* hf_amqp_1_0_coordinator_items[] = { &hf_amqp_1_0_capabilities };
+const int* hf_amqp_1_0_declare_items[] = { &hf_amqp_1_0_globalId };
+const int* hf_amqp_1_0_discharge_items[] = { &hf_amqp_1_0_txnId,
+                                             &hf_amqp_1_0_fail };
+const int* hf_amqp_1_0_declared_items[] = { &hf_amqp_1_0_txnId };
+const int* hf_amqp_1_0_transactionalState_items[] = { &hf_amqp_1_0_txnId,
+                                                      &hf_amqp_1_0_outcome };
 
 /* 0-10 handles */
 
@@ -1315,10 +2093,12 @@ static int hf_amqp_header_tunnel_durable = -1;
 static int hf_amqp_header_tunnel_broadcast = -1;
 static int hf_amqp_payload = -1;
 static int hf_amqp_init_protocol = -1;
+static int hf_amqp_init_id = -1;
 static int hf_amqp_init_id_major = -1;
 static int hf_amqp_init_id_minor = -1;
 static int hf_amqp_init_version_major = -1;
 static int hf_amqp_init_version_minor = -1;
+static int hf_amqp_init_version_revision = -1;
 
 static gint ett_amqp = -1;
 static gint ett_header = -1;
@@ -1328,6 +2108,9 @@ static gint ett_field_table = -1;
 static gint ett_amqp_init = -1;
 static gint ett_amqp_0_10_map = -1;
 static gint ett_amqp_0_10_array = -1;
+static gint ett_amqp_1_0_list = -1;
+static gint ett_amqp_1_0_array = -1;
+static gint ett_amqp_1_0_map = -1;
 
 static expert_field ei_amqp_bad_flag_value = EI_INIT;
 static expert_field ei_amqp_unknown_stream_method = EI_INIT;
@@ -1348,9 +2131,88 @@ static expert_field ei_amqp_unknown_dtx_method = EI_INIT;
 static expert_field ei_amqp_unknown_method_class = EI_INIT;
 static expert_field ei_amqp_unknown_file_method = EI_INIT;
 static expert_field ei_amqp_unknown_exchange_method = EI_INIT;
+static expert_field ei_amqp_unknown_sasl_command = EI_INIT;
+static expert_field ei_amqp_unknown_amqp_command = EI_INIT;
+static expert_field ei_amqp_unknown_amqp_type = EI_INIT;
+static expert_field ei_amqp_invalid_number_of_params = EI_INIT;
 
 /*  Various enumerations  */
 
+static const value_string amqp_1_0_SASL_code_value [] = {
+    {0, "ok"},
+    {1, "auth"},
+    {2, "sys"},
+    {3, "sys-perm"},
+    {4, "sys-temp"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_role_value [] = {
+    {0x40, "null"},
+    {0x41, "receiver"},
+    {0x42, "sender"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_sndSettleMode_value[] = {
+    {0, "unsettled"},
+    {1, "settled"},
+    {2, "mixed"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_rcvSettleMode_value[] = {
+    {0, "first"},
+    {1, "second"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_durable_value[] = {
+    {0, "none"},
+    {1, "configuration"},
+    {2, "unsettled-state"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_AMQP_performatives [] = {
+    {AMQP_1_0_AMQP_OPEN,        "open"},
+    {AMQP_1_0_AMQP_BEGIN,       "begin"},
+    {AMQP_1_0_AMQP_ATTACH,      "attach"},
+    {AMQP_1_0_AMQP_FLOW,        "flow"},
+    {AMQP_1_0_AMQP_TRANSFER,    "transfer"},
+    {AMQP_1_0_AMQP_DISPOSITION, "disposition"},
+    {AMQP_1_0_AMQP_DETACH,      "detach"},
+    {AMQP_1_0_AMQP_END,         "end"},
+    {AMQP_1_0_AMQP_CLOSE,       "close"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_SASL_methods [] = {
+    {AMQP_1_0_SASL_MECHANISMS, "sasl.mechanisms"},
+    {AMQP_1_0_SASL_INIT,       "sasl.init"},
+    {AMQP_1_0_SASL_CHALLENGE,  "sasl.challenge"},
+    {AMQP_1_0_SASL_RESPONSE,   "sasl.response"},
+    {AMQP_1_0_SASL_OUTCOME,    "sasl.outcome"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_type [] = {
+    {AMQP_1_0_AMQP_FRAME, "AMQP"},
+    {AMQP_1_0_SASL_FRAME, "SASL"},
+    {AMQP_1_0_TLS_FRAME,  "TLS"},
+    {0, NULL}
+};
+
+static const value_string amqp_1_0_encoding_width0 [] = {
+    {0x40, "null"},
+    {0x41, "true"},
+    {0x42, "false"},
+    {0x43, "0"},
+    {0x44, "0"},
+    {0x45, "empty list"},
+    {0, NULL}
+};
+
 static const value_string amqp_0_10_frame_position [] = {
     {0x00,  "----"},
     {0x01,  "---e"},
@@ -1819,6 +2681,70 @@ static struct amqp_typeinfo amqp_0_10_var_types[] = {
     { 0xff, "end", 0, 0 }
 };
 
+/*  AMQP 1.0 Type Info  */
+static struct amqp_typeinfo amqp_1_0_fixed_types[] = {
+    { 0x40, "null",       format_amqp_1_0_null,         0 },
+    { 0x41, "bool",       format_amqp_1_0_boolean_true, 0 },
+    { 0x42, "bool",       format_amqp_1_0_boolean_false,0 },
+    { 0x56, "bool",       format_amqp_1_0_boolean,      1 },
+    { 0x50, "ubyte",      format_amqp_1_0_uint,         1 },
+    { 0x60, "ushort",     format_amqp_1_0_uint,         2 },
+    { 0x70, "uint",       format_amqp_1_0_uint,         4 },
+    { 0x52, "smalluint",  format_amqp_1_0_uint,         1 },
+    { 0x43, "uint0",      format_amqp_1_0_uint,         0 },
+    { 0x80, "ulong",      format_amqp_1_0_uint,         8 },
+    { 0x53, "smallulong", format_amqp_1_0_uint,         1 },
+    { 0x44, "ulong0",     format_amqp_1_0_uint,         0 },
+    { 0x51, "byte",       format_amqp_1_0_int,          1 },
+    { 0x61, "short",      format_amqp_1_0_int,          2 },
+    { 0x71, "int",        format_amqp_1_0_int,          4 },
+    { 0x54, "smallint",   format_amqp_1_0_int,          1 },
+    { 0x81, "long",       format_amqp_1_0_int,          8 },
+    { 0x55, "smalllong",  format_amqp_1_0_int,          1 },
+    { 0x72, "float",      format_amqp_1_0_float,        4 },
+    { 0x82, "double",     format_amqp_1_0_double,       8 },
+    { 0x73, "char",       format_amqp_1_0_char,         4 },
+    { 0x83, "timestamp",  format_amqp_1_0_timestamp,    8 },
+    { 0x98, "uuid",       format_amqp_1_0_uuid,         16 },
+    { 0xa0, "vbin8",      format_amqp_1_0_bin,          1 },
+    { 0xb0, "vbin32",     format_amqp_1_0_bin,          4 },
+    { 0xa1, "str8-utf8",  format_amqp_1_0_str,          1 },
+    { 0xb1, "str32-utf8", format_amqp_1_0_str,          4 },
+    { 0xa3, "sym8",       format_amqp_1_0_symbol,       1 },
+    { 0xb3, "sym32",      format_amqp_1_0_symbol,       4 },
+    { 0xff, "end", 0, 0 }
+};
+
+/* see explanation at declaration of amqp_defined_types_t */
+static struct amqp_defined_types_t amqp_1_0_defined_types[] = {
+    {AMQP_1_0_AMQP_TYPE_ERROR,                  &hf_amqp_1_0_error,                 3, hf_amqp_1_0_error_items },
+    {AMQP_1_0_AMQP_TYPE_HEADER,                 &hf_amqp_1_0_messageHeader,         5, hf_amqp_1_0_messageHeader_items },
+    {AMQP_1_0_AMQP_TYPE_DELIVERY_ANNOTATIONS,   &hf_amqp_1_0_deliveryAnnotations,   0, NULL },
+    {AMQP_1_0_AMQP_TYPE_MESSAGE_ANNOTATIONS,    &hf_amqp_1_0_messageAnnotations,    0, NULL },
+    {AMQP_1_0_AMQP_TYPE_PROPERTIES,             &hf_amqp_1_0_messageProperties,     13, hf_amqp_1_0_messageProperties_items },
+    {AMQP_1_0_AMQP_TYPE_APPLICATION_PROPERTIES, &hf_amqp_1_0_applicationProperties, 0, NULL },
+    {AMQP_1_0_AMQP_TYPE_DATA,                   &hf_amqp_1_0_data,                  0, NULL },
+    {AMQP_1_0_AMQP_TYPE_AMQP_SEQUENCE,          &hf_amqp_1_0_amqp_sequence,         0, NULL },
+    {AMQP_1_0_AMQP_TYPE_AMQP_VALUE,             &hf_amqp_1_0_amqp_value,            0, NULL },
+    {AMQP_1_0_AMQP_TYPE_FOOTER,                 &hf_amqp_1_0_footer,                0, NULL },
+    {AMQP_1_0_AMQP_TYPE_RECEIVED,               &hf_amqp_1_0_received,              2, hf_amqp_1_0_received_items },
+    {AMQP_1_0_AMQP_TYPE_ACCEPTED,               &hf_amqp_1_0_accepted,              0, NULL },
+    {AMQP_1_0_AMQP_TYPE_REJECTED,               &hf_amqp_1_0_rejected,              1, hf_amqp_1_0_rejected_items },
+    {AMQP_1_0_AMQP_TYPE_RELEASED,               &hf_amqp_1_0_released,              0, NULL },
+    {AMQP_1_0_AMQP_TYPE_MODIFIED,               &hf_amqp_1_0_modified,              3, hf_amqp_1_0_modified_items },
+    {AMQP_1_0_AMQP_TYPE_SOURCE,                 &hf_amqp_1_0_source,                11, hf_amqp_1_0_source_items },
+    {AMQP_1_0_AMQP_TYPE_TARGET,                 &hf_amqp_1_0_target,                7, hf_amqp_1_0_target_items },
+    {AMQP_1_0_AMQP_TYPE_DELETE_ON_CLOSE,        &hf_amqp_1_0_deleteOnClose,         0, NULL },
+    {AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_LINKS,     &hf_amqp_1_0_deleteOnNoLinks,       0, NULL },
+    {AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_MESSAGE,   &hf_amqp_1_0_deleteOnNoMessages,    0, NULL },
+    {AMQP_1_0_AMQP_TYPE_DELETE_ON_NO_LINKS_OR_MESSAGE, &hf_amqp_1_0_deleteOnNoLinksOrMessages, 0, NULL },
+    {AMQP_1_0_AMQP_TYPE_COORDINATOR,            &hf_amqp_1_0_coordinator,           1, hf_amqp_1_0_coordinator_items },
+    {AMQP_1_0_AMQP_TYPE_DECLARE,                &hf_amqp_1_0_declare,               1, hf_amqp_1_0_declare_items },
+    {AMQP_1_0_AMQP_TYPE_DISCHARGE,              &hf_amqp_1_0_discharge,             2, hf_amqp_1_0_discharge_items },
+    {AMQP_1_0_AMQP_TYPE_DECLARED,               &hf_amqp_1_0_declared,              1, hf_amqp_1_0_declared_items },
+    {AMQP_1_0_AMQP_TYPE_TRANSACTIONAL_STATE,    &hf_amqp_1_0_transactionalState,    2, hf_amqp_1_0_transactionalState_items },
+    { 0, NULL, 0, NULL }
+};
 
 /*  Main dissection routine  */
 
@@ -1856,6 +2782,11 @@ dissect_amqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         dissector = dissect_amqp_0_10_frame;
         fixed_length = 8;
         break;
+    case AMQP_V1_0:
+        length_getter = &get_amqp_1_0_message_len;
+        dissector = dissect_amqp_1_0_frame;
+        fixed_length = 8;
+        break;
     default:
         col_append_str(pinfo->cinfo, COL_INFO, "AMQP (unknown version)");
         col_set_fence(pinfo->cinfo, COL_INFO);
@@ -1880,15 +2811,22 @@ check_amqp_version(tvbuff_t *tvb, amqp_conv *conn)
         return;
 
     if (tvb_memeql(tvb, 0, "AMQP", 4) == 0) {
-        guint8 proto_major;
-        guint8 proto_minor;
-
-        proto_major = tvb_get_guint8(tvb, 6);
-        proto_minor = tvb_get_guint8(tvb, 7);
-        if (proto_major == 0) {
-            if (proto_minor == 9)
+        /* AMQP 0-* has protocol major/minor in 6th/7th byte, while AMQP 1.0
+         * has it in 5th/6th byte (7th is revision)
+         */
+        guint8 fivth_byte;
+        guint8 sixth_byte;
+        guint8 seventh_byte;
+
+        fivth_byte = tvb_get_guint8(tvb, 5);
+        sixth_byte = tvb_get_guint8(tvb, 6);
+        seventh_byte = tvb_get_guint8(tvb, 7);
+        if ((fivth_byte == 1) && (sixth_byte == 0) && (seventh_byte == 0))
+            conn->version = AMQP_V1_0;
+        else if (sixth_byte == 0) {
+            if (seventh_byte == 9)
                 conn->version = AMQP_V0_9;
-            else if (proto_minor == 10)
+            else if (seventh_byte == 10)
                 conn->version = AMQP_V0_10;
         }
         return;
@@ -1899,17 +2837,29 @@ check_amqp_version(tvbuff_t *tvb, amqp_conv *conn)
      * deduce it from the content. First indicator is the frame length. 0-9
      * has a 32-bit length in octets 3-7. If the frame length is the same
      * as the PDU length and there's a frame end where it should be, this
-     * is 0-9. Else assume 0-10.
+     * is 0-9. Else, higher version. 0-10 has 5th octet 0x00 while 1.0 has
+     * there at least 2 (DOFF) - use this fact to determine.
      */
     f0_9_length = tvb_get_ntohl(tvb, 3) + 7 + 1; /* Add header and end */
     if ((f0_9_length == tvb_reported_length(tvb)) &&
         (tvb_get_guint8(tvb, f0_9_length - 1) == 0xCE))
         conn->version = AMQP_V0_9;
-    else
+    else if (tvb_get_guint8(tvb, 4) == 0x00)
         conn->version = AMQP_V0_10;
+    else
+        conn->version = AMQP_V1_0;
     return;
 }
 
+static guint
+get_amqp_1_0_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
+{
+    /*  Heuristic - protocol initialisation frame starts with 'AMQP'  */
+    if (tvb_memeql(tvb, offset, "AMQP", 4) == 0)
+        return 8;
+    return (guint) tvb_get_ntohl(tvb, offset);
+}
+
 static guint
 get_amqp_0_10_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
 {
@@ -1964,7 +2914,7 @@ dissect_amqp_0_9_field_table(tvbuff_t *tvb, packet_info *pinfo, int offset, guin
         length -= 1;
         if (length < namelen)
             goto too_short;
-        name = (char*) tvb_get_string(wmem_packet_scope(), tvb, offset, namelen);
+        name = (char*) tvb_get_string_enc(wmem_packet_scope(), tvb, offset, namelen, ENC_UTF_8|ENC_NA);
         offset += namelen;
         length -= namelen;
         if (length < 1)
@@ -1982,7 +2932,11 @@ dissect_amqp_0_9_field_table(tvbuff_t *tvb, packet_info *pinfo, int offset, guin
             length -= 4;
             if (length < vallen)
                 goto too_short;
-            value  = (char*) tvb_get_string(wmem_packet_scope(), tvb, offset, vallen);
+            /*
+             * The spec says a long string can contain "any data"; could
+             * this be binary?
+             */
+            value  = (char*) tvb_get_string_enc(wmem_packet_scope(), tvb, offset, vallen, ENC_UTF_8|ENC_NA);
             offset += vallen;
             length -= vallen;
             break;
@@ -2096,7 +3050,7 @@ dissect_amqp_0_10_map(tvbuff_t *tvb,
         namelen = tvb_get_guint8(tvb, offset);
         AMQP_INCREMENT(offset, 1, bound);
         length -= 1;
-        name = (char*) tvb_get_string(wmem_packet_scope(), tvb, offset, namelen);
+        name = (char*) tvb_get_string_enc(wmem_packet_scope(), tvb, offset, namelen, ENC_UTF_8|ENC_NA);
         AMQP_INCREMENT(offset, namelen, bound);
         length -= namelen;
         type = tvb_get_guint8(tvb, offset);
@@ -2201,7 +3155,7 @@ dissect_amqp_0_10_array(tvbuff_t *tvb,
     element_count = tvb_get_ntohl(tvb, offset);
     AMQP_INCREMENT(offset, 4, bound);
     length -= 4;
-    proto_item_append_text(item, " (%d elements)", element_count);
+    proto_item_append_text(item, " (array of %d element%s)", element_count, element_suffix[element_count!=1]);
     if (element_count > 1)
         array_tree = proto_item_add_subtree(item, ett_amqp_0_10_array);
     while ((element_count > 0) && (length > 0)) {
@@ -2213,7 +3167,7 @@ dissect_amqp_0_10_array(tvbuff_t *tvb,
             len16 = tvb_get_ntohs(tvb, offset);
             AMQP_INCREMENT(offset, 2, bound);
             length -= 2;
-            value   = (char*) tvb_get_string(wmem_packet_scope(), tvb, offset, len16);
+            value   = (char*) tvb_get_string_enc(wmem_packet_scope(), tvb, offset, len16, ENC_UTF_8|ENC_NA);
             AMQP_INCREMENT(offset, len16, bound);
             length -= len16;
             break;
@@ -5561,15 +6515,587 @@ dissect_amqp_0_10_struct32(tvbuff_t *tvb,
     }
 }
 
+/* decodes AMQP 1.0 list
+ * arguments:
+ *   tvb: obvious
+ *   pinfo: obvious
+ *   offset: obvious
+ *   bound: boundary within that the list has to end
+ *   item: obvious
+ *   hf_amqp_type: what hf_* type is the list itself
+ *   hf_amqp_subtype_count: length of hf_amqp_subtypes
+ *   hf_amqp_subtypes: what hf_* types are the list items
+ *   name: what to show for unformatted content
+ */
+static guint
+dissect_amqp_1_0_list(tvbuff_t *tvb,
+                      packet_info *pinfo,
+                      int offset,
+                      int bound,
+                      proto_item *item,
+                      int hf_amqp_type,
+                      int hf_amqp_subtype_count,
+                      const int **hf_amqp_subtypes,
+                      const char *name)
+{
+    proto_item *list_tree;
+    guint8      type;
+    guint8      count_len;
+    guint32     element_count;
+    guint32     element_size;
+    guint32     decoded_element_size;
+    guint32     orig_offset;
+    int         decoded_elements;
+    int         hf_amqp_item;
+
+    list_tree = 0;
+    decoded_elements = 0;
+    orig_offset = offset;
+    type = tvb_get_guint8(tvb, offset);
+    AMQP_INCREMENT(offset, 1, bound);
+    switch (type) {
+    case AMQP_1_0_TYPE_LIST0:
+        count_len = 0;
+        element_size = 0;
+        element_count = 0;
+        break;
+    case AMQP_1_0_TYPE_LIST8:
+        count_len = 1;
+        element_size = tvb_get_guint8(tvb, offset);
+        element_count = tvb_get_guint8(tvb, offset+count_len);
+        break;
+    case AMQP_1_0_TYPE_LIST32:
+        count_len = 4;
+        element_size = tvb_get_ntohl(tvb, offset);
+        element_count = tvb_get_ntohl(tvb, offset+count_len);
+        break;
+    default:
+        proto_tree_add_none_format(list_tree, hf_amqp_1_0_list, tvb,
+                                   offset-1,
+                                   1,
+                                   "(unknown type %d)",
+                                   type);
+        expert_add_info_format(pinfo,
+                               list_tree,
+                               &ei_amqp_unknown_amqp_type,
+                               "Unknown AMQP list type %d",
+                               type);
+        return bound-orig_offset;
+    }
+    AMQP_INCREMENT(offset, count_len*2, bound);
+    list_tree = add_1_0_proto_item(item,
+                                   tvb,
+                                   offset-1-count_len*2,
+                                   element_size+1+count_len,
+                                   hf_amqp_type,
+                                   name);
+    if (element_count > 0)
+        list_tree = proto_item_add_subtree(list_tree, ett_amqp_1_0_list);
+    proto_item_append_text(list_tree, " (list of %d element%s)", element_count, element_suffix[element_count!=1]);
+
+    if (element_count > element_size)
+    {
+        expert_add_info_format(pinfo,
+                               list_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Number of list elements (%d) bigger than list size (%d)",
+                               element_count, element_size);
+        return bound-orig_offset;
+    }
+
+    while ((element_count > 0) && (offset < bound)) {
+        decoded_element_size = 0;
+        if (decoded_elements<hf_amqp_subtype_count)
+            hf_amqp_item = *(hf_amqp_subtypes[decoded_elements]);
+        else
+            hf_amqp_item = hf_amqp_1_0_list;
+        get_amqp_1_0_type_value_formatter(tvb,
+                                          pinfo,
+                                          offset,
+                                          bound,
+                                          hf_amqp_item,
+                                          NULL,
+                                          &decoded_element_size,
+                                          list_tree);
+        element_count -= 1;
+        decoded_elements += 1;
+        AMQP_INCREMENT(offset, decoded_element_size, bound);
+    }
+    if (element_count > 0)
+        expert_add_info_format(pinfo,
+                               list_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Number of list elements (%d) not matching number of decoded elements (%d)",
+                               element_count+decoded_elements, decoded_elements);
+    return offset-orig_offset;
+}
+
+/* decodes AMQP 1.0 map
+ *  arguments: see dissect_amqp_1_0_list
+ */
+static guint
+dissect_amqp_1_0_map(tvbuff_t *tvb,
+                     packet_info *pinfo,
+                     int offset,
+                     int bound,
+                     proto_item *item,
+                     int hf_amqp_type,
+                     const char *name)
+{
+    proto_item *map_tree;
+    guint8      type;
+    guint8      count_len;
+    guint32     element_count;
+    guint32     element_size;
+    guint32     decoded_element_size;
+    guint8      decoded_width_size;
+    guint32     orig_offset;
+    const char *type_name = NULL;
+    const char *value = NULL;
+
+    map_tree = 0;
+    orig_offset = offset;
+    type = tvb_get_guint8(tvb, offset);
+    AMQP_INCREMENT(offset, 1, bound);
+    switch (type) {
+    case AMQP_1_0_TYPE_MAP8:
+        count_len = 1;
+        element_size = tvb_get_guint8(tvb, offset);
+        element_count = tvb_get_guint8(tvb, offset+count_len);
+        break;
+    case AMQP_1_0_TYPE_MAP32:
+        count_len = 4;
+        element_size = tvb_get_ntohl(tvb, offset);
+        element_count = tvb_get_ntohl(tvb, offset+count_len);
+        break;
+    default:
+        proto_tree_add_none_format(map_tree, hf_amqp_1_0_map, tvb,
+                                   offset-1,
+                                   1,
+                                   "(unknown type %d)",
+                                   type);
+        expert_add_info_format(pinfo,
+                               map_tree,
+                               &ei_amqp_unknown_amqp_type,
+                               "Unknown AMQP map type %d",
+                               type);
+        return bound-orig_offset;
+    }
+    AMQP_INCREMENT(offset, count_len*2, bound);
+    map_tree = add_1_0_proto_item(item,
+                                  tvb,
+                                  offset-1-count_len*2,
+                                  element_size+1+count_len,
+                                  hf_amqp_type,
+                                  name);
+    if (element_count > 0)
+        map_tree = proto_item_add_subtree(map_tree, ett_amqp_1_0_map);
+    if (element_count%2==1) {
+        expert_add_info_format(pinfo,
+                               map_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Odd number of map items: %d",
+                               element_count);
+        return bound-orig_offset;
+    }
+
+    if (element_count > element_size)
+    {
+        expert_add_info_format(pinfo,
+                               map_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Number of map elements (%d) bigger than map size (%d)",
+                               element_count, element_size);
+        return bound-orig_offset;
+    }
+
+    proto_item_append_text(map_tree,
+                           " (map of %d element%s)",
+                           (element_count/2),
+                           element_suffix[(element_count/2)!=1]);
+
+    while (element_count > 0) {
+        if (element_count%2 == 0) { /* decode key */
+            if (!decode_fixed_type(tvb,
+                                   tvb_get_guint8(tvb, offset),
+                                   offset+1,
+                                   bound,
+                                   &decoded_width_size,
+                                   &decoded_element_size,
+                                   &type_name,
+                                   &value)) { /* can't decode key type */
+                proto_tree_add_none_format(map_tree, hf_amqp_1_0_map, tvb,
+                                           offset,
+                                           1,
+                                           "(unknown map key type %d)",
+                                           tvb_get_guint8(tvb, offset));
+                expert_add_info_format(pinfo,
+                                       map_tree,
+                                       &ei_amqp_unknown_amqp_type,
+                                       "Unknown AMQP map key type %d",
+                                       tvb_get_guint8(tvb, offset));
+                decoded_element_size=0;
+            }
+            AMQP_INCREMENT(offset, decoded_element_size+1, bound);
+        }
+        else { /* decode value */
+            get_amqp_1_0_type_value_formatter(tvb,
+                                              pinfo,
+                                              offset,
+                                              bound,
+                                              hf_amqp_1_0_map,
+                                              value,
+                                              &decoded_element_size,
+                                              map_tree);
+            AMQP_INCREMENT(offset, decoded_element_size, bound);
+        }
+        element_count--;
+    }
+    return offset-orig_offset;
+}
+
+/* decodes AMQP 1.0 array
+ *  arguments: see dissect_amqp_1_0_list
+ */
+static guint
+dissect_amqp_1_0_array(tvbuff_t *tvb,
+                       packet_info *pinfo,
+                       int offset,
+                       int bound,
+                       proto_item *item,
+                       int hf_amqp_type,
+                       int hf_amqp_subtype_count,
+                       const int **hf_amqp_subtypes,
+                       const char *name)
+{
+    proto_item *array_tree;
+    guint8      type;
+    guint8      count_len;
+    guint32     element_count;
+    guint32     element_size;
+    guint32     element_type;
+    guint32     decoded_element_size;
+    guint32     orig_offset;
+    int         decoded_elements;
+    int         hf_amqp_item;
+    int         hf_amqp_subtype_count_array = 0;
+    const int   **hf_amqp_subtypes_array = NULL;
+    const char  *type_name_array = NULL;
+
+    array_tree = 0;
+    decoded_elements = 0;
+    orig_offset = offset;
+    type = tvb_get_guint8(tvb, offset);
+    AMQP_INCREMENT(offset, 1, bound);
+    switch (type) {
+    case AMQP_1_0_TYPE_ARRAY8:
+        count_len = 1;
+        element_size = tvb_get_guint8(tvb, offset);
+        element_count = tvb_get_guint8(tvb, offset+count_len);
+        break;
+    case AMQP_1_0_TYPE_ARRAY32:
+        count_len = 4;
+        element_size = tvb_get_ntohl(tvb, offset);
+        element_count = tvb_get_ntohl(tvb, offset+count_len);
+        break;
+    default:
+        proto_tree_add_none_format(array_tree, hf_amqp_1_0_list, tvb,
+                                   offset-1,
+                                   1,
+                                   "(unknown type %d)",
+                                   type);
+        expert_add_info_format(pinfo,
+                               array_tree,
+                               &ei_amqp_unknown_amqp_type,
+                               "Unknown AMQP array type %d",
+                               type);
+        return bound-orig_offset;
+    }
+    element_type = get_amqp_1_0_type_formatter(tvb,
+                                               offset+count_len*2,
+                                               bound,
+                                               &hf_amqp_type,
+                                               &type_name_array,
+                                               &hf_amqp_subtype_count_array,
+                                               &hf_amqp_subtypes_array,
+                                               &decoded_element_size);
+    AMQP_INCREMENT(offset, count_len*2+decoded_element_size, bound);
+    array_tree = add_1_0_proto_item(item,
+                                    tvb,
+                                    offset-1-count_len*2-decoded_element_size,
+                                    element_size+1+count_len,
+                                    hf_amqp_type,
+                                    name);
+
+    if (element_count > 0)
+        array_tree = proto_item_add_subtree(array_tree, ett_amqp_1_0_array);
+    proto_item_append_text(array_tree, " (array of %d element%s)", element_count, element_suffix[element_count!=1]);
+
+    if (element_count > element_size)
+    {
+        expert_add_info_format(pinfo,
+                               array_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Number of array elements (%d) bigger than array size (%d)",
+                               element_count, element_size);
+        return bound-orig_offset;
+    }
+
+    while ((element_count > 0) && (offset < bound)) {
+        decoded_element_size = 0;
+        if (decoded_elements<hf_amqp_subtype_count)
+            hf_amqp_item = *(hf_amqp_subtypes[decoded_elements]);
+        else
+            hf_amqp_item = hf_amqp_1_0_array;
+        get_amqp_1_0_value_formatter(tvb,
+                                     pinfo,
+                                     element_type, /* code */
+                                     offset,
+                                     offset+element_size, /* bound */
+                                     hf_amqp_item,
+                                     (proto_registrar_get_nth(hf_amqp_type))->name, /* name */
+                                     hf_amqp_subtype_count_array, /* subitem list count */
+                                     hf_amqp_subtypes_array, /* subitem list hf_.. list */
+                                     &decoded_element_size,
+                                     array_tree);
+        element_count -= 1;
+        decoded_elements += 1;
+        if (decoded_element_size==0)
+            decoded_element_size=1; /* necessary for 0x40 or similar values where value_formatter returns size of _value_ 0 (type=1 not counted) */
+        AMQP_INCREMENT(offset, decoded_element_size, bound);
+    }
+    if (element_count > 0)
+        expert_add_info_format(pinfo,
+                               array_tree,
+                               &ei_amqp_invalid_number_of_params,
+                               "Number of array elements (%d) not matching number of decoded elements (%d)",
+                               element_count+decoded_elements, decoded_elements);
+    return offset-orig_offset;
+}
+
+/* decodes AMQP 1.0 AMQP performative (open, attach, transfer or so)
+ * arguments:
+ *   tvb, offset, length, amqp_tree, pinfo: obvious
+ *   method_name: what to print to col_append_str method in dissect_amqp_1_0_frame
+ */
+static guint32
+dissect_amqp_1_0_AMQP_frame(tvbuff_t *tvb,
+                            guint offset,
+                            guint16 bound,
+                            proto_item *amqp_tree,
+                            packet_info *pinfo,
+                            const gchar **method_name)
+{
+    proto_item  *args_tree;
+    guint32     arg_length = 0;
+    guint8      method;
+    guint       orig_offset = offset;
+
+    if (bound == offset) { /* empty keepalive sent */
+        *method_name = "(empty)";
+        return 0;
+    }
+    args_tree = proto_item_add_subtree(amqp_tree, ett_args);
+    method = tvb_get_guint8(tvb, offset+2);
+    *method_name = val_to_str_const(method, amqp_1_0_AMQP_performatives,
+                                    "<invalid AMQP performative>");
+    proto_tree_add_item(args_tree, hf_amqp_1_0_amqp_performative, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+    AMQP_INCREMENT(offset, 3, bound); /* descriptor-constructor & fixed_one length & AMQP performative code */
+    switch(method) {
+        case AMQP_1_0_AMQP_OPEN:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               10, hf_amqp_1_0_amqp_open_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_BEGIN:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               8, hf_amqp_1_0_amqp_begin_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_ATTACH:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               14, hf_amqp_1_0_amqp_attach_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_FLOW:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               11, hf_amqp_1_0_amqp_flow_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_TRANSFER:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               11, hf_amqp_1_0_amqp_transfer_items, NULL);
+            /* now decode message header, annotations, properties and data */
+            while (offset+arg_length < bound) {
+                AMQP_INCREMENT(offset, arg_length, bound);
+                get_amqp_1_0_type_value_formatter(tvb,
+                                                  pinfo,
+                                                  offset,
+                                                  bound,
+                                                  hf_amqp_method_arguments, /* should be re-written */
+                                                  NULL,
+                                                  &arg_length,
+                                                  args_tree);
+            }
+            break;
+        case AMQP_1_0_AMQP_DISPOSITION:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               6, hf_amqp_1_0_amqp_disposition_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_DETACH:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               3, hf_amqp_1_0_amqp_detach_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_END:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               1, hf_amqp_1_0_amqp_end_items, NULL);
+            break;
+        case AMQP_1_0_AMQP_CLOSE:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               1, hf_amqp_1_0_amqp_close_items, NULL);
+            break;
+        default:
+            expert_add_info_format(pinfo,
+                                   amqp_tree,
+                                   &ei_amqp_unknown_amqp_command,
+                                   "Unknown AMQP performative %d",
+                                   tvb_get_guint8(tvb, offset + 2));
+            return bound-orig_offset;
+    }
+    return (arg_length) + (offset-orig_offset);
+}
+
+/* decodes AMQP 1.0 SASL methods (mechanisms offer, challenge, response,..)
+ * arguments: see dissect_amqp_1_0_AMQP_frame
+ */
+static guint32
+dissect_amqp_1_0_SASL_frame(tvbuff_t *tvb,
+                            guint offset,
+                            guint16 bound,
+                            proto_item *amqp_tree,
+                            packet_info *pinfo,
+                            const gchar **method_name)
+{
+    proto_item  *args_tree;
+    guint32     arg_length = 0;
+    guint8      method;
+    guint       orig_offset = offset;
+
+    args_tree = proto_item_add_subtree(amqp_tree, ett_args);
+    method = tvb_get_guint8(tvb, offset+2);
+    *method_name = val_to_str_const(method, amqp_1_0_SASL_methods,
+                                    "<invalid SASL method>");
+    proto_tree_add_item(args_tree, hf_amqp_1_0_sasl_method, tvb, offset+2, 1, ENC_BIG_ENDIAN);
+
+    AMQP_INCREMENT(offset, 3, bound); /* descriptor-constructor & fixed_one length & SASL method code */
+    switch(method) {
+        case AMQP_1_0_SASL_MECHANISMS:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               1, hf_amqp_1_0_sasl_mechanisms_items, NULL);
+            break;
+        case AMQP_1_0_SASL_INIT:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               3, hf_amqp_1_0_sasl_init_items, NULL);
+            break;
+         case AMQP_1_0_SASL_CHALLENGE:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               1, hf_amqp_1_0_sasl_challenge_items, NULL);
+            break;
+        case AMQP_1_0_SASL_RESPONSE:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               1, hf_amqp_1_0_sasl_response_items, NULL);
+            break;
+        case AMQP_1_0_SASL_OUTCOME:
+            arg_length = dissect_amqp_1_0_list(tvb,
+                                               pinfo,
+                                               offset,
+                                               bound,
+                                               args_tree,
+                                               hf_amqp_method_arguments,
+                                               2, hf_amqp_1_0_sasl_outcome_items, NULL);
+            break;
+        default:
+            expert_add_info_format(pinfo,
+                                   amqp_tree,
+                                   &ei_amqp_unknown_sasl_command,
+                                   "Unknown SASL command %d",
+                                   tvb_get_guint8(tvb, offset + 2));
+            return bound-orig_offset;
+    }
+    return (arg_length) + (offset-orig_offset);
+}
+
 static int
-dissect_amqp_0_10_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+dissect_amqp_1_0_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
 {
-    proto_item *ti;
-    proto_item *amqp_tree = NULL;
+    proto_item  *ti = NULL;
+    proto_item  *amqp_tree = NULL;
     guint8      frame_type;
     guint16     length;
-    guint32     struct_length;
+    guint32     arg_length = 0;
     guint       offset;
+    const gchar *method_name = NULL;
 
 #if 0  /* XXX: Not currently used ?? */
     conversation_t *conv;
@@ -5580,64 +7106,153 @@ dissect_amqp_0_10_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
     conn = conversation_get_proto_data(conv, proto_amqp);
 #endif
 
-    col_set_str(pinfo->cinfo, COL_PROTOCOL, "AMQP");
     col_clear(pinfo->cinfo, COL_INFO);
 
-    /*  Heuristic - protocol initialisation frame starts with 'AMQP'  */
+    /*  Heuristic - protocol initialisation frame starts with 'AMQP' followed by 0x0  */
     if (tvb_memeql(tvb, 0, "AMQP", 4) == 0) {
         guint8         proto_major;
         guint8         proto_minor;
+        guint8         proto_revision;
         wmem_strbuf_t *strbuf;
 
-        proto_major = tvb_get_guint8(tvb, 6);
-        proto_minor = tvb_get_guint8(tvb, 7);
-        strbuf      = wmem_strbuf_new_label(wmem_packet_scope());
+        proto_major    = tvb_get_guint8(tvb, 5);
+        proto_minor    = tvb_get_guint8(tvb, 6);
+        proto_revision = tvb_get_guint8(tvb, 7);
+        strbuf         = wmem_strbuf_new_label(wmem_packet_scope());
         wmem_strbuf_append_printf(strbuf,
-                                  "Protocol-Header %d-%d ",
+                                  "Protocol-Header%s %d-%d-%d ",
+                                  (tvb_get_guint8(tvb, 4)==0x2) ? "(TLS)" : "", /* frame type = 2 => TLS */
                                   proto_major,
-                                  proto_minor);
+                                  proto_minor,
+                                  proto_revision);
         col_append_str(pinfo->cinfo, COL_INFO, wmem_strbuf_get_str(strbuf));
         col_set_fence(pinfo->cinfo, COL_INFO);
 
         if (tree) {
             ti = proto_tree_add_item(tree, proto_amqp, tvb, 0, -1, ENC_NA);
             amqp_tree = proto_item_add_subtree(ti, ett_amqp_init);
-            proto_tree_add_item(amqp_tree, hf_amqp_init_protocol,      tvb, 0, 4, ENC_ASCII|ENC_NA);
-            proto_tree_add_item(amqp_tree, hf_amqp_init_id_major,      tvb, 4, 1, ENC_BIG_ENDIAN);
-            proto_tree_add_item(amqp_tree, hf_amqp_init_id_minor,      tvb, 5, 1, ENC_BIG_ENDIAN);
-            proto_tree_add_item(amqp_tree, hf_amqp_init_version_major, tvb, 6, 1, ENC_BIG_ENDIAN);
-            proto_tree_add_item(amqp_tree, hf_amqp_init_version_minor, tvb, 7, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_protocol,         tvb, 0, 4, ENC_ASCII|ENC_NA);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_id,               tvb, 4, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_version_major,    tvb, 5, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_version_minor,    tvb, 6, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_version_revision, tvb, 7, 1, ENC_BIG_ENDIAN);
         }
         return 8;
     }
 
     /* Protocol frame */
     if (tree) {
+        /* frame header */
         ti = proto_tree_add_item(tree, proto_amqp, tvb, 0, -1, ENC_NA);
         amqp_tree = proto_item_add_subtree(ti, ett_amqp);
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_format,   tvb, 0, 1, ENC_BIG_ENDIAN);
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_position, tvb, 0, 1, ENC_BIG_ENDIAN);
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_type,     tvb, 1, 1, ENC_BIG_ENDIAN);
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_size,     tvb, 2, 2, ENC_BIG_ENDIAN);
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_track,    tvb, 5, 1, ENC_BIG_ENDIAN);
-        proto_tree_add_item(amqp_tree, hf_amqp_channel,       tvb, 6, 2, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_1_0_size, tvb, 0, 4, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_1_0_doff, tvb, 4, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_1_0_type, tvb, 5, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_channel,  tvb, 6, 2, ENC_BIG_ENDIAN);
     }
 
-    frame_type = tvb_get_guint8(tvb, 1);
-    length     = tvb_get_ntohs(tvb, 2);
-    offset     = 12;
-    THROW_ON((length <= 13), ReportedBoundsError);
+    length     = tvb_get_ntohl(tvb, 0);
+    offset     = 4*tvb_get_guint8(tvb,4); /* i.e. 4*DOFF */
+    frame_type = tvb_get_guint8(tvb, 5);
+    THROW_ON((length < offset), ReportedBoundsError);
 
     switch(frame_type) {
-    case AMQP_0_10_FRAME_COMMAND:
-        /* Fall through */
-    case AMQP_0_10_FRAME_CONTROL:
-        proto_tree_add_item(amqp_tree, hf_amqp_0_10_class, tvb, offset+0, 1, ENC_BIG_ENDIAN);
-        switch(tvb_get_guint8(tvb, offset + 0)) {
-        case AMQP_0_10_CLASS_CONNECTION:
-            dissect_amqp_0_10_connection(tvb, pinfo, amqp_tree,
-                                         offset, length);
-            break;
+    case AMQP_1_0_AMQP_FRAME:
+        arg_length = dissect_amqp_1_0_AMQP_frame(tvb, offset, length, amqp_tree, pinfo, &method_name);
+        break;
+    case AMQP_1_0_SASL_FRAME:
+        arg_length = dissect_amqp_1_0_SASL_frame(tvb, offset, length, amqp_tree, pinfo, &method_name);
+        break;
+    case AMQP_1_0_TLS_FRAME:
+        /* should not occur, this is handled in '(tvb_memeql(tvb, 0, "AMQP", 4) == 0)' test above */
+        break;
+    default:
+        expert_add_info_format(pinfo, amqp_tree, &ei_amqp_unknown_frame_type, "Unknown frame type %d", frame_type);
+    }
+    AMQP_INCREMENT(offset, arg_length, length);
+    col_append_str(pinfo->cinfo, COL_INFO, method_name);
+    col_append_str(pinfo->cinfo, COL_INFO, " ");
+    col_set_fence(pinfo->cinfo, COL_INFO);
+    return tvb_length(tvb);
+}
+
+static int
+dissect_amqp_0_10_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+    proto_item *ti;
+    proto_item *amqp_tree = NULL;
+    guint8      frame_type;
+    guint16     length;
+    guint32     struct_length;
+    guint       offset;
+
+#if 0  /* XXX: Not currently used ?? */
+    conversation_t *conv;
+    amqp_conv *conn;
+
+    /* Find (or build) conversation to remember the protocol version */
+    conv = find_or_create_conversation(pinfo);
+    conn = conversation_get_proto_data(conv, proto_amqp);
+#endif
+
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "AMQP");
+    col_clear(pinfo->cinfo, COL_INFO);
+
+    /*  Heuristic - protocol initialisation frame starts with 'AMQP'  */
+    if (tvb_memeql(tvb, 0, "AMQP", 4) == 0) {
+        guint8         proto_major;
+        guint8         proto_minor;
+        wmem_strbuf_t *strbuf;
+
+        proto_major = tvb_get_guint8(tvb, 6);
+        proto_minor = tvb_get_guint8(tvb, 7);
+        strbuf      = wmem_strbuf_new_label(wmem_packet_scope());
+        wmem_strbuf_append_printf(strbuf,
+                                  "Protocol-Header %d-%d ",
+                                  proto_major,
+                                  proto_minor);
+        col_append_str(pinfo->cinfo, COL_INFO, wmem_strbuf_get_str(strbuf));
+        col_set_fence(pinfo->cinfo, COL_INFO);
+
+        if (tree) {
+            ti = proto_tree_add_item(tree, proto_amqp, tvb, 0, -1, ENC_NA);
+            amqp_tree = proto_item_add_subtree(ti, ett_amqp_init);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_protocol,      tvb, 0, 4, ENC_ASCII|ENC_NA);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_id_major,      tvb, 4, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_id_minor,      tvb, 5, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_version_major, tvb, 6, 1, ENC_BIG_ENDIAN);
+            proto_tree_add_item(amqp_tree, hf_amqp_init_version_minor, tvb, 7, 1, ENC_BIG_ENDIAN);
+        }
+        return 8;
+    }
+
+    /* Protocol frame */
+    if (tree) {
+        ti = proto_tree_add_item(tree, proto_amqp, tvb, 0, -1, ENC_NA);
+        amqp_tree = proto_item_add_subtree(ti, ett_amqp);
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_format,   tvb, 0, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_position, tvb, 0, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_type,     tvb, 1, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_size,     tvb, 2, 2, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_track,    tvb, 5, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(amqp_tree, hf_amqp_channel,       tvb, 6, 2, ENC_BIG_ENDIAN);
+    }
+
+    frame_type = tvb_get_guint8(tvb, 1);
+    length     = tvb_get_ntohs(tvb, 2);
+    offset     = 12;
+    THROW_ON((length <= 13), ReportedBoundsError);
+
+    switch(frame_type) {
+    case AMQP_0_10_FRAME_COMMAND:
+        /* Fall through */
+    case AMQP_0_10_FRAME_CONTROL:
+        proto_tree_add_item(amqp_tree, hf_amqp_0_10_class, tvb, offset+0, 1, ENC_BIG_ENDIAN);
+        switch(tvb_get_guint8(tvb, offset + 0)) {
+        case AMQP_0_10_CLASS_CONNECTION:
+            dissect_amqp_0_10_connection(tvb, pinfo, amqp_tree,
+                                         offset, length);
+            break;
         case AMQP_0_10_CLASS_SESSION:
             dissect_amqp_0_10_session(tvb, pinfo, amqp_tree,
                                       offset, length);
@@ -8496,6 +10111,543 @@ dissect_amqp_0_9_content_header_tunnel(tvbuff_t *tvb, packet_info *pinfo,
     return offset;
 }
 
+/*  AMQP 1.0 Type Decoders  */
+
+/* knowing the primitive type (code), this routine decodes its value (using
+ * amqp_1_0_fixed_types)
+ * arguments:
+ *   tvb, code, offset, bound: obvious
+ *   type_length_size: number of bytes of value length for types with variable width
+ *   length_size: number of bytes decoded by the routine
+ *   type_name: string with code type
+ *   value: string with type value
+ * return value: true iff code found in fixed sized codes
+ *               false iff code is list, array or map (or unknown)
+ */
+static gboolean decode_fixed_type(tvbuff_t *tvb,
+                                  guint8 code,
+                                  int offset,
+                                  int bound,
+                                  guint8 *type_width_size,
+                                  guint *length_size,
+                                  const char **type_name,
+                                  const char **value)
+{
+    int i;
+    type_formatter formatter;
+
+    for (i = 0; amqp_1_0_fixed_types[i].typecode != 0xff; ++i) {
+        if (amqp_1_0_fixed_types[i].typecode == code) {
+            *type_name = wmem_strdup(wmem_packet_scope(), amqp_1_0_fixed_types[i].amqp_typename);
+            formatter   = amqp_1_0_fixed_types[i].formatter;
+            if (code/16 > 0x9) /* variable width code is 0xa[0-9] or 0xb[0-9] */
+                *type_width_size = amqp_1_0_fixed_types[i].known_size;
+            else
+                *type_width_size = 0;
+            *length_size = formatter(tvb, offset, bound, amqp_1_0_fixed_types[i].known_size, value);
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+static proto_item*
+add_1_0_proto_item(proto_item *item,
+             tvbuff_t *tvb,
+             int offset,
+             int length,
+             int hf_amqp_type,
+             const char *no_format_value)
+{
+    proto_item *return_item;
+    if (length==0) /* show type constructor rather */
+    {
+        length=1;
+        offset--;
+    }
+
+    if (no_format_value!=NULL)
+        return_item = proto_tree_add_none_format(item,
+                                                 hf_amqp_type,
+                                                 tvb,
+                                                 offset,
+                                                 length,
+                                                 "%s",
+                                                 no_format_value);
+    else
+        return_item = proto_tree_add_item(item,
+                                          hf_amqp_type,
+                                          tvb,
+                                          offset,
+                                          length,
+                                          ENC_NA);
+    return return_item;
+}
+
+/* For given code, the routine decodes its value, format & print output.
+ * If the code is compound type (array,list,map), it calls relevant
+ * dissect_* routines for decoding its items
+ * arguments:
+ *   tvb, pinfo, code, offset, bound: obvious
+ *   hf_amqp_type: what hf_* variable corresponds to type of the code
+ *   name: name of type of this code (applicable to map items and type descriptor
+ *   hf_amqp_subtype_count: for format code to be list, expected number of list items
+ *   hf_amqp_subtypes: for format code to be list, field of hf_* variables of list items
+ *   length_size: decoded length
+ */
+static void
+get_amqp_1_0_value_formatter(tvbuff_t *tvb,
+                             packet_info *pinfo,
+                             guint8 code,
+                             int offset,
+                             int bound,
+                             int hf_amqp_type,
+                             const char *name,
+                             int hf_amqp_subtype_count,
+                             const int **hf_amqp_subtypes,
+                             guint *length_size,
+                             proto_item *item)
+{
+    char *no_format_value = NULL;
+    const char *type_name = NULL;
+    const char *value = NULL;
+    guint8 width_size;
+    const int *hf_amqp_type_ptr;
+
+    if (decode_fixed_type(tvb, code, offset, bound, &width_size, length_size, &type_name, &value))
+    {
+        /* if AMQP variable can be of potentialy multiple length, modify hf_amqp_type to proper subtype
+         * according to code; code=0x4[0-e] means 0 octet length, 0x5[0-e] means 1, 6 means 2, 7 means 4,
+         * 8 means 8 and 9 means 16 octet length; variable width types decoded with meaning 1  */
+        if ((hf_amqp_type<=hf_amqp_1_0_saslAdditionalData) &&
+            (subtypes_for_hf_amqp_1_0[hf_amqp_type-hf_amqp_1_0_size] != NULL))
+        {
+          /* message-id and correlation-id can be of so many so different types,
+           * that the subtypes_for_hf_amqp_1_0 table is different for them */
+            if ((hf_amqp_type==hf_amqp_1_0_messageId)||(hf_amqp_type==hf_amqp_1_0_correlationId))
+            {
+              switch (code) {
+                case 0xa1:
+                case 0xb1: /* string */
+                  hf_amqp_type_ptr = subtypes_for_hf_amqp_1_0[hf_amqp_type-hf_amqp_1_0_size][2];
+                  break;
+                case 0xa0:
+                case 0xb0: /* binary */
+                  hf_amqp_type_ptr = subtypes_for_hf_amqp_1_0[hf_amqp_type-hf_amqp_1_0_size][3];
+                  break;
+                default: /* ulong and uuid */
+                  hf_amqp_type_ptr = subtypes_for_hf_amqp_1_0[hf_amqp_type-hf_amqp_1_0_size][code/16-4];
+                  break;
+              }
+            }
+            else
+            {
+                hf_amqp_type_ptr = subtypes_for_hf_amqp_1_0[hf_amqp_type-hf_amqp_1_0_size][(code<0xa0)?(code/16-4):(1)];
+            }
+            if (hf_amqp_type_ptr==NULL) {
+                expert_add_info_format(pinfo,
+                                       item,
+                                       &ei_amqp_unknown_amqp_type,
+                                       "Can't match AMQP type %d(hex=%x, frame position: %d) to list field \"%s\"",
+                                       code, code,
+                                       offset,
+                                       (proto_registrar_get_nth(hf_amqp_type))->name);
+                *length_size = bound-offset; /* to stop dissecting */
+                return;
+            }
+            hf_amqp_type = *hf_amqp_type_ptr;
+        }
+        if (name != NULL)
+        {
+            no_format_value = (char*) wmem_alloc(wmem_packet_scope(), MAX_BUFFER);
+            g_snprintf(no_format_value, MAX_BUFFER, "%s (%s): %s", name, type_name, value);
+        }
+        else if (hf_amqp_type==hf_amqp_1_0_list)
+        {
+            no_format_value = (char*) value;
+        }
+        add_1_0_proto_item(item, tvb, offset+width_size, (*length_size)-width_size, hf_amqp_type, no_format_value);
+    }
+    else { /* no fixed code, i.e. compound (list, map, array) */
+        switch (code) {
+            case AMQP_1_0_TYPE_LIST0:
+            case AMQP_1_0_TYPE_LIST8:
+            case AMQP_1_0_TYPE_LIST32:
+                *length_size = dissect_amqp_1_0_list(tvb,
+                                                     pinfo,
+                                                     offset-1, /* "-1" due to decode type again in the method */
+                                                     bound,
+                                                     item,
+                                                     hf_amqp_type,
+                                                     hf_amqp_subtype_count,
+                                                     hf_amqp_subtypes, name)-1; /* "-1" due to decode type again in the method */
+                break;
+            case AMQP_1_0_TYPE_MAP8:
+            case AMQP_1_0_TYPE_MAP32:
+                 /* "-1" due to decode type again in the method */
+                *length_size = dissect_amqp_1_0_map(tvb, pinfo, offset-1, bound, item, hf_amqp_type, name)-1;
+                break;
+            case AMQP_1_0_TYPE_ARRAY8:
+            case AMQP_1_0_TYPE_ARRAY32:
+                *length_size = dissect_amqp_1_0_array(tvb,
+                                                      pinfo,
+                                                      offset-1, /* "-1" due to decode type again in the method */
+                                                      bound,
+                                                      item,
+                                                      hf_amqp_type,
+                                                      hf_amqp_subtype_count,
+                                                      hf_amqp_subtypes, name)-1; /* "-1" due to decode type again in the method */
+                break;
+            default:
+                expert_add_info_format(pinfo,
+                                       item,
+                                       &ei_amqp_unknown_amqp_type,
+                                       "Unknown AMQP type %d(hex=%x)",
+                                       code, code);
+                *length_size = bound-offset; /* to stop dissecting */
+                break;
+        }
+    }
+}
+
+/* It decodes 1.0 type, including type constructor
+ * arguments: see get_amqp_1_0_value_formatter
+ * return code: decoded format code of primitive type
+ */
+static guint
+get_amqp_1_0_type_formatter(tvbuff_t *tvb,
+                            int offset,
+                            int bound,
+                            int *hf_amqp_type,
+                            const char **name,
+                            int *hf_amqp_subtype_count,
+                            const int ***hf_amqp_subtypes,
+                            guint *length_size)
+{
+    int    i;
+    int    code;
+    int    format_code_type;
+    guint  format_len = 0;
+    guint  orig_offset = offset;
+
+    code = tvb_get_guint8(tvb, offset);
+    AMQP_INCREMENT(offset, 1, bound);
+    if (code == AMQP_1_0_TYPE_DESCRIPTOR_CONSTRUCTOR) {
+        format_code_type = tvb_get_guint8(tvb, offset);
+        AMQP_INCREMENT(offset, 1, bound);
+        if (format_code_type%16==0xf) { /* i.e. format codes like %x5F %x00-FF */
+            AMQP_INCREMENT(offset, 1, bound);
+        }
+        switch (format_code_type/16) {
+        case 4: /* empty */
+            format_len=0;
+            break;
+        case 5: /* fixed-one */
+            format_len=1;
+            code = (int)tvb_get_guint8(tvb, offset);
+            break;
+        case 6: /* fixed-two */
+            format_len=2;
+            code = (int)tvb_get_ntohs(tvb, offset);
+            break;
+        case 7: /* fixed-four */
+            format_len=4;
+            code = (int)tvb_get_ntohl(tvb, offset);
+            break;
+        case 8: /* fixed-eight */
+            format_len=8;
+            code = (int)tvb_get_ntoh64(tvb, offset);
+            /* TODO: use a gint64 for 32-bit platforms? we never compare it to
+             * anything bigger than an int anyways... */
+            break;
+        case 9: /* fixed-sixteen */
+            format_len=16;
+            /* TODO: somehow set code = next_128_bytes */
+            break;
+        case 0xa: /* variable-one */
+            format_len = format_amqp_1_0_str(tvb, offset, bound, 1, name);
+            break;
+        case 0xb: /* variable-four */
+            format_len = format_amqp_1_0_str(tvb, offset, bound, 4, name);
+            break;
+        /* TODO: could be type compound? or array? */
+        }
+        AMQP_INCREMENT(offset, format_len, bound);
+        for (i = 0; amqp_1_0_defined_types[i].format_code != 0x00; ++i) {
+            if (amqp_1_0_defined_types[i].format_code == code) {
+                *hf_amqp_type = *(amqp_1_0_defined_types[i].hf_amqp_type);
+                *hf_amqp_subtype_count = amqp_1_0_defined_types[i].hf_amqp_subtype_count;
+                *hf_amqp_subtypes = amqp_1_0_defined_types[i].hf_amqp_subtypes;
+            }
+        }
+        /* now take the real primitive format code */
+        code = tvb_get_guint8(tvb, offset);
+        AMQP_INCREMENT(offset, 1, bound);
+    }
+    *length_size = (offset-orig_offset);
+    return code;
+}
+
+/* It decodes both 1.0 type and its value, in fact it just calls
+ * get_amqp_1_0_type_formatter and get_amqp_1_0_value_formatter methods
+ * arguments: see get_amqp_1_0_value_formatter
+ */
+static void
+get_amqp_1_0_type_value_formatter(tvbuff_t *tvb,
+                                  packet_info *pinfo,
+                                  int offset,
+                                  int bound,
+                                  int hf_amqp_type,   /* what to print in GUI if name==NULL */
+                                  const char *name,   /* what to print in GUI  */
+                                  guint *length_size, /* decoded length */
+                                  proto_item *item)
+{
+    int        code;
+    int        hf_amqp_subtype_count = 0;
+    const int  **hf_amqp_subtypes = NULL;
+    const char *type_name = NULL;
+    char       *format_name = NULL;
+    guint      type_length_size;
+
+    code = get_amqp_1_0_type_formatter(tvb,
+                                       offset,
+                                       bound,
+                                       &hf_amqp_type,
+                                       &type_name,
+                                       &hf_amqp_subtype_count,
+                                       &hf_amqp_subtypes,
+                                       &type_length_size);
+    if ((name != NULL) || (type_name != NULL))
+    {
+      if (type_name == NULL)
+        format_name=(char*)name;
+      else if (name == NULL)
+        format_name=(char*)format_name;
+      else
+      {
+        format_name = (char*) wmem_alloc(wmem_packet_scope(), MAX_BUFFER);
+        g_snprintf(format_name, MAX_BUFFER, "%s : %s", name, type_name);
+      }
+    }
+    AMQP_INCREMENT(offset, type_length_size, bound);
+    get_amqp_1_0_value_formatter(tvb,
+                                 pinfo,
+                                 code,
+                                 offset,
+                                 bound,
+                                 hf_amqp_type,
+                                 format_name,
+                                 hf_amqp_subtype_count,
+                                 hf_amqp_subtypes,
+                                 length_size,
+                                 item);
+    *length_size += type_length_size;
+}
+
+static int
+format_amqp_1_0_null(tvbuff_t *tvb _U_,
+                      guint offset _U_, guint bound _U_, guint length _U_,
+                      const char **value _U_)
+{
+    *value = "null";
+    return 0;
+}
+
+static int
+format_amqp_1_0_boolean_true(tvbuff_t *tvb _U_,
+                        guint offset _U_, guint bound _U_, guint length _U_,
+                        const char **value)
+{
+    *value = wmem_strdup(wmem_packet_scope(), "true");
+    return 0;
+}
+
+static int
+format_amqp_1_0_boolean_false(tvbuff_t *tvb _U_,
+                        guint offset _U_, guint bound _U_, guint length _U_,
+                        const char **value)
+{
+    *value = wmem_strdup(wmem_packet_scope(), "false");
+    return 0;
+}
+
+static int
+format_amqp_1_0_boolean(tvbuff_t *tvb,
+                        guint offset, guint bound _U_, guint length _U_,
+                        const char **value)
+{
+    guint8 val;
+
+    val = tvb_get_guint8(tvb, offset);
+    *value = wmem_strdup(wmem_packet_scope(), val ? "true" : "false");
+    return 1;
+}
+
+/* this covers ubyte, ushort, uint and ulong */
+static int
+format_amqp_1_0_uint(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length,
+                     const char **value)
+{
+    guint64 val;
+
+    if (length == 0)
+        val = 0;
+    else if (length == 1)
+        val = tvb_get_guint8(tvb, offset);
+    else if (length == 2)
+        val = tvb_get_ntohs(tvb, offset);
+    else if (length == 4)
+        val = tvb_get_ntohl(tvb, offset);
+    else if (length == 8)
+        val = tvb_get_ntoh64(tvb, offset);
+    else {
+        *value = wmem_strdup_printf(wmem_packet_scope(), "Invalid uint length %d!", length);
+        return length;
+    }
+    *value = wmem_strdup_printf(wmem_packet_scope(), "%" G_GINT64_MODIFIER "u", val);
+    return length;
+}
+
+/* this covers byte, short, int and long */
+static int
+format_amqp_1_0_int(tvbuff_t *tvb,
+                    guint offset, guint bound _U_, guint length,
+                    const char **value)
+{
+    gint64 val;
+
+    if (length == 1)
+        val = (gint8)tvb_get_guint8(tvb, offset);
+    else if (length == 2)
+        val = (gint16)tvb_get_ntohs(tvb, offset);
+    else if (length == 4)
+        val = (gint32)tvb_get_ntohl(tvb, offset);
+    else if (length == 8)
+        val = (gint64)tvb_get_ntoh64(tvb, offset);
+    else {
+        *value = wmem_strdup_printf(wmem_packet_scope(), "Invalid int length %d!", length);
+        return length;
+    }
+    *value = wmem_strdup_printf(wmem_packet_scope(), "%" G_GINT64_MODIFIER "i", val);
+    return length;
+}
+
+static int
+format_amqp_1_0_float(tvbuff_t *tvb,
+                      guint offset, guint bound _U_, guint length _U_,
+                      const char **value)
+{
+    float floatval;
+    floatval = tvb_get_letohieee_float(tvb, offset);
+    *value = wmem_strdup_printf(wmem_packet_scope(), "%f", floatval);
+    return 4;
+}
+
+static int
+format_amqp_1_0_double(tvbuff_t *tvb,
+                       guint offset, guint bound _U_, guint length _U_,
+                       const char **value)
+{
+    double doubleval;
+    doubleval = tvb_get_letohieee_double(tvb, offset);
+    *value = wmem_strdup_printf(wmem_packet_scope(), "%f", doubleval);
+    return 8;
+}
+
+/* TODO: add AMQP 1.0 decimal[32|64|128] primitive types */
+
+static int
+format_amqp_1_0_char(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length _U_,
+                     const char **value)
+{
+    *value = tvb_format_text(tvb, offset, 1);
+    return 1;
+}
+
+static int
+format_amqp_1_0_timestamp(tvbuff_t *tvb,
+                          guint offset, guint bound _U_, guint length _U_,
+                          const char **value)
+{
+    *value = wmem_strdup_printf(wmem_packet_scope(), "%" G_GINT64_MODIFIER "d", tvb_get_ntoh64(tvb, offset));
+    return 8;
+}
+
+static int
+format_amqp_1_0_uuid(tvbuff_t *tvb,
+                     guint offset, guint bound _U_, guint length _U_,
+                     const char **value)
+{
+    e_guid_t uuid;
+    tvb_get_guid(tvb, offset, &uuid, ENC_BIG_ENDIAN);
+    *value = tvb_format_text(tvb, offset, 16);
+    return 1;
+}
+
+static int
+format_amqp_1_0_bin(tvbuff_t *tvb,
+                    guint offset, guint bound _U_, guint length,
+                    const char **value)
+{
+    guint bin_length;
+
+    if (length == 1)
+        bin_length = tvb_get_guint8(tvb, offset);
+    else if (length == 4)
+        bin_length = tvb_get_ntohl(tvb, offset);
+    else {
+        *value = wmem_strdup_printf(wmem_packet_scope(), "Invalid binary length size %d!", length);
+        return length;
+    }
+    AMQP_INCREMENT(offset, length, bound);
+    *value = tvb_bytes_to_ep_str(tvb, offset, bin_length);
+    return (length+bin_length);
+}
+
+static int
+format_amqp_1_0_str(tvbuff_t *tvb,
+                    guint offset, guint bound, guint length,
+                    const char **value)
+{
+    guint string_length;
+
+    if (length == 1)
+        string_length = tvb_get_guint8(tvb, offset);
+    else if (length == 4)
+        string_length = tvb_get_ntohl(tvb, offset);
+    else {
+        *value = wmem_strdup_printf(wmem_packet_scope(), "Invalid string length size %d!", length);
+        return length;
+    }
+    AMQP_INCREMENT(offset, length, bound);
+    *value = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, string_length, ENC_UTF_8|ENC_NA);
+    AMQP_INCREMENT(offset, string_length, bound);
+    return (string_length + length);
+}
+
+static int
+format_amqp_1_0_symbol(tvbuff_t *tvb,
+                       guint offset, guint bound, guint length,
+                       const char **value)
+{
+    guint symbol_length;
+    if (length == 1)
+        symbol_length = tvb_get_guint8(tvb, offset);
+    else if (length == 4)
+        symbol_length = tvb_get_ntohl(tvb, offset);
+    else {
+        *value = wmem_strdup_printf(wmem_packet_scope(), "Invalid symbol length size %d!", length);
+        return length;
+    }
+    AMQP_INCREMENT(offset, length, bound);
+    *value = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, symbol_length, ENC_ASCII|ENC_NA);
+    AMQP_INCREMENT(offset, symbol_length, bound);
+    return (symbol_length + length);
+}
+
+
 /*  AMQP 0-10 Type Decoders  */
 
 static gboolean
@@ -8635,7 +10787,7 @@ format_amqp_0_10_str(tvbuff_t *tvb,
         return length;
     }
     AMQP_INCREMENT(offset, length, bound);
-    *value = tvb_get_string(wmem_packet_scope(), tvb, offset, string_length);
+    *value = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, string_length, ENC_UTF_8|ENC_NA);
     AMQP_INCREMENT(offset, string_length, bound);
     return (string_length + length);
 }
@@ -8680,6 +10832,837 @@ proto_register_amqp(void)
      * in 0-10, but there are many separate.
      */
     static hf_register_info hf[] = {
+        /* DO NOT CHANGE BELOW hf_amqp_1_0_* VARIABLES ORDERING!
+         * It is crucial for subtypes_for_hf_amqp_1_0 */
+        {&hf_amqp_1_0_size, {
+            "Length", "amqp.length",
+            FT_UINT32, BASE_DEC, NULL, 0x0,
+            "Length of the frame", HFILL}},
+        {&hf_amqp_1_0_doff, {
+            "Doff", "amqp.doff",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            "Data offset", HFILL}},
+        {&hf_amqp_1_0_type, {
+            "Type", "amqp.type",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_type), 0x0,
+            "Frame type", HFILL}},
+        {&hf_amqp_1_0_amqp_performative, {
+            "Performative", "amqp.performative",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_AMQP_performatives), 0x0,
+            "AMQP Performative", HFILL}},
+        {&hf_amqp_1_0_sasl_method, {
+            "Method", "amqp.sasl.method",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_SASL_methods), 0x0,
+            "SASL Method", HFILL}},
+        {&hf_amqp_1_0_list, {
+            "list-item", "amqp.list",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "List item", HFILL}},
+        {&hf_amqp_1_0_map, {
+            "map-item", "amqp.map",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Map item", HFILL}},
+        {&hf_amqp_1_0_array, {
+            "array-item", "amqp.array",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Array item", HFILL}},
+        {&hf_amqp_1_0_containerId, {
+            "Container-Id", "amqp.performative.arguments.containerId",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Container ID", HFILL}},
+        {&hf_amqp_1_0_hostname, {
+            "Hostname", "amqp.performative.arguments.hostname",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            NULL, HFILL}},
+        {&hf_amqp_1_0_maxFrameSize, {
+            "Max-Frame-Size", "amqp.performative.arguments.maxFrameSize",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Max frame size", HFILL}},
+        {&hf_amqp_1_0_channelMax, {
+            "Channel-Max", "amqp.performative.arguments.channelMax",
+            FT_UINT16, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Channel max", HFILL}},
+        {&hf_amqp_1_0_idleTimeOut, {
+            "Idle-Timeout", "amqp.performative.arguments.idleTimeout",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Idle timeout", HFILL}},
+        {&hf_amqp_1_0_outgoingLocales, {
+            "Outgoing-Locales", "amqp.performative.arguments.outgoingLocales",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Outgoing locales", HFILL}},
+        {&hf_amqp_1_0_incomingLocales, {
+            "Incoming-Locales", "amqp.performative.arguments.incomingLocales",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Incoming locales", HFILL}},
+        {&hf_amqp_1_0_offeredCapabilities, {
+            "Offered-Capabilities", "amqp.arguments.offeredCapabilities",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Offered capabilities", HFILL}},
+        {&hf_amqp_1_0_desiredCapabilities, {
+            "Desired-Capabilities", "amqp.performative.arguments.desiredCapabilities",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Desired capabilities", HFILL}},
+        {&hf_amqp_1_0_properties, {
+            "Properties", "amqp.performative.arguments.properties",
+            FT_NONE, BASE_NONE, NULL, 0,
+            NULL, HFILL}},
+        {&hf_amqp_1_0_nextIncomingId, {
+            "Next-Incoming-Id", "amqp.performative.arguments.nextIncomingId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Next incoming id", HFILL}},
+        {&hf_amqp_1_0_deliveryCount, {
+            "Delivery-Count", "amqp.performative.arguments.deliveryCount",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Delivery count", HFILL}},
+        {&hf_amqp_1_0_sectionNumber, {
+            "Section-Number", "amqp.received.sectionNumber",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Section number of received message", HFILL}},
+        {&hf_amqp_1_0_sectionOffset, {
+            "Section-Offset", "amqp.received.sectionOffset",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Section offset of received message", HFILL}},
+        {&hf_amqp_1_0_deliveryFailed, {
+            "Delivery-Failed", "amqp.modified.deliveryFailed",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Deliver failed", HFILL}},
+        {&hf_amqp_1_0_undeliverableHere, {
+            "Undeliverable-Here", "amqp.modified.undeliverableHere",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Undeliverable here", HFILL}},
+        {&hf_amqp_1_0_linkCredit, {
+            "Link-Credit", "amqp.performative.arguments.linkCredit",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Link credit", HFILL}},
+        {&hf_amqp_1_0_available, {
+            "Available", "amqp.performative.arguments.available",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "The number of available messages", HFILL}},
+        {&hf_amqp_1_0_drain, {
+            "Drain", "amqp.performative.arguments.drain",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Drain mode", HFILL}},
+        {&hf_amqp_1_0_echo, {
+            "Echo", "amqp.performative.arguments.echo",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Request state from partner", HFILL}},
+        {&hf_amqp_1_0_deliveryId, {
+            "Delivery-Id", "amqp.performative.arguments.deliveryId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Delivery id", HFILL}},
+        {&hf_amqp_1_0_deliveryTag, {
+            "Delivery-Tag", "amqp.performative.arguments.deliveryTag",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Delivery tag", HFILL}},
+        {&hf_amqp_1_0_messageFormat, {
+            "Message-Format", "amqp.performative.arguments.messageFormat",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message format", HFILL}},
+        {&hf_amqp_1_0_settled, {
+            "Settled", "amqp.performative.arguments.settled",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            NULL, HFILL}},
+        {&hf_amqp_1_0_more, {
+            "More", "amqp.performative.arguments.more",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "The message has more content", HFILL}},
+        {&hf_amqp_1_0_state, {
+            "State", "amqp.performative.arguments.state",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "State of the delivery at sender", HFILL}},
+        {&hf_amqp_1_0_resume, {
+            "Resume", "amqp.performative.arguments.resume",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Resumed delivery", HFILL}},
+        {&hf_amqp_1_0_aborted, {
+            "Aborted", "amqp.performative.arguments.aborted",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message is aborted", HFILL}},
+        {&hf_amqp_1_0_batchable, {
+            "Batchable", "amqp.performative.arguments.batchable",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Batchable hint", HFILL}},
+        {&hf_amqp_1_0_first, {
+            "First", "amqp.performative.arguments.first",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Lower bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_last, {
+            "Last", "amqp.performative.arguments.last",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Upper bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_closed, {
+            "Closed", "amqp.performative.arguments.closed",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Sender closed the link", HFILL}},
+        {&hf_amqp_1_0_remoteChannel, {
+            "Remote-Channel", "amqp.performative.arguments.remoteChannel",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Remote Channel", HFILL}},
+        {&hf_amqp_1_0_nextOutgoingId, {
+            "Next-Outgoing-Id", "amqp.performative.arguments.nextOutgoingId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Next outgoing id", HFILL}},
+        {&hf_amqp_1_0_incomingWindow, {
+            "Incoming-Window", "amqp.performative.arguments.incomingWindow",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Incoming window", HFILL}},
+        {&hf_amqp_1_0_outgoingWindow, {
+            "Outgoing-Window", "amqp.performative.arguments.outgoingWindow",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Outgoing window", HFILL}},
+        {&hf_amqp_1_0_handleMax, {
+            "Handle-Max", "amqp.performative.arguments.handleMax",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Handle max", HFILL}},
+        {&hf_amqp_1_0_name, {
+            "Name", "amqp.performative.arguments.name",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Name of the link", HFILL}},
+        {&hf_amqp_1_0_handle, {
+            "Handle", "amqp.performative.arguments.handle",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Handle for the link while attached", HFILL}},
+        {&hf_amqp_1_0_role, {
+            "Role", "amqp.performative.arguments.role",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_role_value), 0,
+            "Role of the link endpoint", HFILL}},
+        {&hf_amqp_1_0_sndSettleMode, {
+            "Send-Settle-Mode", "amqp.performative.arguments.sndSettleMode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Send settle mode", HFILL}},
+        {&hf_amqp_1_0_rcvSettleMode, {
+            "Receive-Settle-Mode", "amqp.performative.arguments.rcvSettleMode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Receive settle mode", HFILL}},
+        {&hf_amqp_1_0_source, {
+            "Source", "amqp.performative.arguments.source",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Source for messages", HFILL}},
+        {&hf_amqp_1_0_target, {
+            "Target", "amqp.performative.arguments.target",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Target for messages", HFILL}},
+        {&hf_amqp_1_0_deleteOnClose, {
+            "Delete-On-Close", "amqp.lifetime-policy.deleteOnClose",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Delete on close", HFILL}},
+        {&hf_amqp_1_0_deleteOnNoLinks, {
+            "Delete-On-No-Links", "amqp.lifetime-policy.deleteOnNoLinks",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Delete on no links", HFILL}},
+        {&hf_amqp_1_0_deleteOnNoMessages, {
+            "Delete-On-No-Messages", "amqp.lifetime-policy.deleteOnNoMessages",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Delete on no messages", HFILL}},
+        {&hf_amqp_1_0_deleteOnNoLinksOrMessages, {
+            "Delete-On-No-Links-Or-Messages", "amqp.lifetime-policy.deleteOnNoLinksOrMessages",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Delete on no links or messages", HFILL}},
+        {&hf_amqp_1_0_coordinator, {
+            "Coordinator", "amqp.tx.coordinator",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Transaction coordinator", HFILL}},
+        {&hf_amqp_1_0_declare, {
+            "Declare", "amqp.tx.declare",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Declare transaction", HFILL}},
+        {&hf_amqp_1_0_globalId, {
+            "Global-Id", "amqp.tx.arguments.globalId",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Global id of a transaction", HFILL}},
+        {&hf_amqp_1_0_discharge, {
+            "Discharge", "amqp.tx.discharge",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Discharge transaction", HFILL}},
+        {&hf_amqp_1_0_txnId, {
+            "Txn-Id", "amqp.tx.arguments.txnId",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Transaction id", HFILL}},
+        {&hf_amqp_1_0_fail, {
+            "Fail", "amqp.tx.arguments.fail",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Fail flag of transaction", HFILL}},
+        {&hf_amqp_1_0_declared, {
+            "Declared", "amqp.tx.declared",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Declared transaction", HFILL}},
+        {&hf_amqp_1_0_transactionalState, {
+            "Transactional-State", "amqp.tx.transactionalState",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Transactional state", HFILL}},
+        {&hf_amqp_1_0_outcome, {
+            "Outcome", "amqp.tx.arguments.outcome",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Outcome of transaction", HFILL}},
+        {&hf_amqp_1_0_unsettled, {
+            "Unsettled", "amqp.performative.arguments.unsettled",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Unsettled delivery state", HFILL}},
+        {&hf_amqp_1_0_incompleteUnsettled, {
+            "Incomplete-Unsettled", "amqp.performative.arguments.incompleteUnsettled",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Incomplete unsettled", HFILL}},
+        {&hf_amqp_1_0_initialDeliveryCount, {
+            "Initial-Delivery-Count", "amqp.performative.arguments.initDeliveryCount",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Initial delivery count", HFILL}},
+        {&hf_amqp_1_0_maxMessageSize, {
+            "Max-Message-Size", "amqp.performative.arguments.maxMessageSize",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Max message size", HFILL}},
+        {&hf_amqp_1_0_error, {
+            "Error", "amqp.performative.arguments.error",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Error in a performative", HFILL}},
+        {&hf_amqp_1_0_messageHeader, {
+            "Message-Header", "amqp.header",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Message header", HFILL}},
+        {&hf_amqp_1_0_messageProperties, {
+            "Message-Properties", "amqp.properties",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Message properties", HFILL}},
+        {&hf_amqp_1_0_deliveryAnnotations, {
+            "Delivery-Annotations", "amqp.deliveryAnnotations",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Delivery annotations", HFILL}},
+        {&hf_amqp_1_0_messageAnnotations, {
+            "Message-Annotations", "amqp.messageAnnotations",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Message annotations", HFILL}},
+        {&hf_amqp_1_0_applicationProperties, {
+            "Application-Properties", "amqp.applicationProperties",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Application properties", HFILL}},
+        {&hf_amqp_1_0_data, {
+            "Data", "amqp.data",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Opaque binary data", HFILL}},
+        {&hf_amqp_1_0_amqp_sequence, {
+            "AMQP-Sequence", "amqp.amqp_sequence",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "AMQP sequence", HFILL}},
+        {&hf_amqp_1_0_amqp_value, {
+            "AMQP-Value", "amqp.amqp_value",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "AMQP value", HFILL}},
+        {&hf_amqp_1_0_footer, {
+            "Footer", "amqp.footer",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Message footer", HFILL}},
+        {&hf_amqp_1_0_received, {
+            "Received", "amqp.delivery-state.received",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Received messages", HFILL}},
+        {&hf_amqp_1_0_accepted, {
+            "Accepted", "amqp.delivery-state.accepted",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Accepted messages", HFILL}},
+        {&hf_amqp_1_0_rejected, {
+            "Rejected", "amqp.delivery-state.rejected",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Rejected messages", HFILL}},
+        {&hf_amqp_1_0_released, {
+            "Released", "amqp.delivery-state.released",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Released messages", HFILL}},
+        {&hf_amqp_1_0_modified, {
+            "Modified", "amqp.delivery-state.modified",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Modified messages", HFILL}},
+        {&hf_amqp_1_0_condition, {
+            "Condition", "amqp.error.condition",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Error condition", HFILL}},
+        {&hf_amqp_1_0_description, {
+            "Description", "amqp.error.description",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Error description", HFILL}},
+        {&hf_amqp_1_0_info, {
+            "Info", "amqp.error.info",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Error info", HFILL}},
+        {&hf_amqp_1_0_address, {
+            "Address", "amqp.performative.arguments.address",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Address of a node", HFILL}},
+        {&hf_amqp_1_0_durable, {
+            "Durable", "amqp.message.durable",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message durability", HFILL}},
+        {&hf_amqp_1_0_terminusDurable, {
+            "Terminus-Durable", "amqp.performative.arguments.terminusDurable",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Terminus durability", HFILL}},
+        {&hf_amqp_1_0_priority, {
+            "Priority", "amqp.message.priority",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message priority", HFILL}},
+        {&hf_amqp_1_0_ttl, {
+            "Ttl", "amqp.message.ttl",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Time to live", HFILL}},
+        {&hf_amqp_1_0_firstAcquirer, {
+            "First-Acquirer", "amqp.message.firstAcquirer",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "First acquirer", HFILL}},
+        {&hf_amqp_1_0_expiryPolicy, {
+            "Expiry-Policy", "amqp.properties.expiryPolicy",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Expiry policy", HFILL}},
+        {&hf_amqp_1_0_timeout, {
+            "Timeout", "amqp.properties.timeout",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Duration that an expiring target will be retained", HFILL}},
+        {&hf_amqp_1_0_dynamic, {
+            "Dynamic", "amqp.properties.dynamic",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Dynamic creation of a remote node", HFILL}},
+        {&hf_amqp_1_0_dynamicNodeProperties, {
+            "Dynamic-Node-Properties", "amqp.properties.dynamicNodeProperties",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Dynamic node properties", HFILL}},
+        {&hf_amqp_1_0_distributionMode, {
+            "Distribution-Mode", "amqp.properties.distributionMode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Distribution mode", HFILL}},
+        {&hf_amqp_1_0_filter, {
+            "Filter", "amqp.properties.filter",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Predicates to filter messages admitted to the link", HFILL}},
+        {&hf_amqp_1_0_defaultOutcome, {
+            "Default-Outcome", "amqp.properties.defaultOutcome",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Default outcome", HFILL}},
+        {&hf_amqp_1_0_outcomes, {
+            "Outcomes", "amqp.properties.outcomes",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Outcomes descriptors for the link", HFILL}},
+        {&hf_amqp_1_0_capabilities, {
+            "Capabilities", "amqp.properties.capabilities",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Extension capabilities of the sender", HFILL}},
+        {&hf_amqp_1_0_messageId, {
+            "Message-Id", "amqp.message.messageId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_userId, {
+            "User-Id", "amqp.message.userId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "User id", HFILL}},
+        {&hf_amqp_1_0_to, {
+            "To", "amqp.message.to",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Destination address of the message", HFILL}},
+        {&hf_amqp_1_0_subject, {
+            "Subject", "amqp.message.subject",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Message subject", HFILL}},
+        {&hf_amqp_1_0_replyTo, {
+            "Reply-To", "amqp.message.replyTo",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Reply to", HFILL}},
+        {&hf_amqp_1_0_correlationId, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_contentType, {
+            "Content-Type", "amqp.message.contentType",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Content type", HFILL}},
+        {&hf_amqp_1_0_contentEncoding, {
+            "Content-Encoding", "amqp.message.contentEncoding",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Content encoding", HFILL}},
+        {&hf_amqp_1_0_absoluteExpiryTime, {
+            "Expiry-Time", "amqp.message.expiryTime",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Absolute expiry time", HFILL}},
+        {&hf_amqp_1_0_creationTime, {
+            "Creation-Time", "amqp.message.creationTime",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Creation time", HFILL}},
+        {&hf_amqp_1_0_groupId, {
+            "Group-Id", "amqp.message.groupId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Croup id", HFILL}},
+        {&hf_amqp_1_0_groupSequence, {
+            "Group-Sequence", "amqp.message.groupSequence",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Group sequence", HFILL}},
+        {&hf_amqp_1_0_replyToGroupId, {
+            "Reply-To-Group-Id", "amqp.message.replyToGroupId",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Reply to group id", HFILL}},
+        {&hf_amqp_1_0_mechanisms, {
+            "Mechanisms", "amqp.sasl.mechanisms",
+            FT_NONE, BASE_NONE, NULL, 0,
+            "Supported security mechanisms", HFILL}},
+        {&hf_amqp_1_0_mechanism, {
+            "Mechanism", "amqp.sasl.mechanism",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Chosen security mechanism", HFILL}},
+        {&hf_amqp_1_0_initResponse, {
+            "Init-Response", "amqp.sasl.initResponse",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "Initial response", HFILL}},
+        {&hf_amqp_1_0_saslChallenge, {
+            "Challenge", "amqp.sasl.challenge",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "SASL challenge", HFILL}},
+        {&hf_amqp_1_0_saslResponse, {
+            "Response", "amqp.sasl.response",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "SASL response", HFILL}},
+        {&hf_amqp_1_0_saslCode, {
+            "Code", "amqp.sasl.saslCode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_SASL_code_value), 0,
+            "SASL outcome code", HFILL}},
+        {&hf_amqp_1_0_saslAdditionalData, {
+            "Additional-Data", "amqp.sasl.addData",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_encoding_width0), 0,
+            "SASL outcome additional data", HFILL}},
+        /* further hf_amqp_1_0_* can be re-ordered if required; */
+        {&hf_amqp_1_0_hostname_str, {
+            "Hostname", "amqp.performative.arguments.hostname",
+            FT_STRING, BASE_NONE, NULL, 0,
+            NULL, HFILL}},
+        {&hf_amqp_1_0_maxFrameSize_1, {
+            "Max-Frame-Size", "amqp.performative.arguments.maxFrameSize",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Max frame size", HFILL}},
+        {&hf_amqp_1_0_maxFrameSize_4, {
+            "Max-Frame-Size", "amqp.performative.arguments.maxFrameSize",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Max frame size", HFILL}},
+        {&hf_amqp_1_0_incomingWindow_1, {
+            "Incoming-Window", "amqp.performative.arguments.incomingWindow",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Incoming window", HFILL}},
+        {&hf_amqp_1_0_incomingWindow_4, {
+            "Incoming-Window", "amqp.performative.arguments.incomingWindow",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Incoming window", HFILL}},
+        {&hf_amqp_1_0_outgoingWindow_1, {
+            "Outgoing-Window", "amqp.performative.arguments.outgoingWindow",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Outgoing window", HFILL}},
+        {&hf_amqp_1_0_outgoingWindow_4, {
+            "Outgoing-Window", "amqp.performative.arguments.outgoingWindow",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Outgoing window", HFILL}},
+        {&hf_amqp_1_0_linkCredit_1, {
+            "Link-Credit", "amqp.performative.arguments.linkCredit",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Link credit", HFILL}},
+        {&hf_amqp_1_0_linkCredit_4, {
+            "Link-Credit", "amqp.performative.arguments.linkCredit",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Link credit", HFILL}},
+        {&hf_amqp_1_0_available_1, {
+            "Available", "amqp.performative.arguments.available",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "The number of available messages", HFILL}},
+        {&hf_amqp_1_0_available_4, {
+            "Available", "amqp.performative.arguments.available",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "The number of available messages", HFILL}},
+        {&hf_amqp_1_0_deliveryCount_1, {
+            "Delivery-Count", "amqp.performative.arguments.deliveryCount",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Delivery count", HFILL}},
+        {&hf_amqp_1_0_deliveryCount_4, {
+            "Delivery-Count", "amqp.performative.arguments.deliveryCount",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Delivery count", HFILL}},
+        {&hf_amqp_1_0_sectionNumber_1, {
+            "Section-Number", "amqp.received.sectionNumber",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Section number of received message", HFILL}},
+        {&hf_amqp_1_0_sectionNumber_4, {
+            "Section-Number", "amqp.received.sectionNumber",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Section number of received message", HFILL}},
+        {&hf_amqp_1_0_idleTimeOut_1, {
+            "Idle-Timeout", "amqp.performative.arguments.idleTimeout",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Idle timeout", HFILL}},
+        {&hf_amqp_1_0_idleTimeOut_4, {
+            "Idle-Timeout", "amqp.performative.arguments.idleTimeout",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Idle timeout", HFILL}},
+        {&hf_amqp_1_0_outgoingLocales_sym, {
+            "Outgoing-Locales", "amqp.performative.arguments.outgoingLocales",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Outgoing locales", HFILL}},
+        {&hf_amqp_1_0_incomingLocales_sym, {
+            "Incoming-Locales", "amqp.performative.arguments.incomingLocales",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Incoming locales", HFILL}},
+        {&hf_amqp_1_0_offeredCapabilities_sym, {
+            "Offered-Capabilities", "amqp.arguments.offeredCapabilities",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Offered capabilities", HFILL}},
+        {&hf_amqp_1_0_desiredCapabilities_sym, {
+            "Desired-Capabilities", "amqp.performative.arguments.desiredCapabilities",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Desired capabilities", HFILL}},
+        {&hf_amqp_1_0_nextIncomingId_1, {
+            "Next-Incoming-Id", "amqp.performative.arguments.nextIncomingId",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Next incoming id", HFILL}},
+        {&hf_amqp_1_0_nextIncomingId_4, {
+            "Next-Incoming-Id", "amqp.performative.arguments.nextIncomingId",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Next incoming id", HFILL}},
+        {&hf_amqp_1_0_sectionOffset_1, {
+            "Section-Offset", "amqp.received.sectionOffset",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Section offset of received message", HFILL}},
+        {&hf_amqp_1_0_sectionOffset_8, {
+            "Section-Offset", "amqp.received.sectionOffset",
+            FT_UINT64, BASE_DEC, NULL, 0,
+            "Section offset of received message", HFILL}},
+        {&hf_amqp_1_0_maxMessageSize_1, {
+            "Max-Message-Size", "amqp.performative.arguments.maxMessageSize",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Max message size", HFILL}},
+        {&hf_amqp_1_0_maxMessageSize_8, {
+            "Max-Message-Size", "amqp.performative.arguments.maxMessageSize",
+            FT_UINT64, BASE_DEC, NULL, 0,
+            "Max message size", HFILL}},
+        {&hf_amqp_1_0_nextOutgoingId_1, {
+            "Next-Outgoing-Id", "amqp.performative.arguments.nextOutgoingId",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Next outgoing id", HFILL}},
+        {&hf_amqp_1_0_nextOutgoingId_4, {
+            "Next-Outgoing-Id", "amqp.performative.arguments.nextOutgoingId",
+            FT_UINT16, BASE_DEC, NULL, 0,
+            "Next outgoing id", HFILL}},
+        {&hf_amqp_1_0_deliveryId_1, {
+            "Delivery-Id", "amqp.performative.arguments.deliveryId",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Delivery id", HFILL}},
+        {&hf_amqp_1_0_deliveryId_4, {
+            "Delivery-Id", "amqp.performative.arguments.deliveryId",
+            FT_UINT16, BASE_DEC, 0, 0,
+            "Delivery id", HFILL}},
+        {&hf_amqp_1_0_deliveryTag_bin, {
+            "Delivery-Tag", "amqp.performative.arguments.deliveryTag",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Delivery tag", HFILL}},
+        {&hf_amqp_1_0_messageFormat_1, {
+            "Message-Format", "amqp.performative.arguments.messageFormat",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Message format", HFILL}},
+        {&hf_amqp_1_0_messageFormat_4, {
+            "Message-Format", "amqp.performative.arguments.messageFormat",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Message format", HFILL}},
+        {&hf_amqp_1_0_first_1, {
+            "First", "amqp.performative.arguments.first",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Lower bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_first_4, {
+            "First", "amqp.performative.arguments.first",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Lower bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_last_1, {
+            "Last", "amqp.performative.arguments.last",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Upper bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_last_4, {
+            "Last", "amqp.performative.arguments.last",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Upper bound of deliveries", HFILL}},
+        {&hf_amqp_1_0_remoteChannel_2, {
+            "Remote-Channel", "amqp.performative.arguments.remoteChannel",
+            FT_UINT16, BASE_DEC, NULL, 0,
+            "Remote Channel", HFILL}},
+        {&hf_amqp_1_0_handleMax_1, {
+            "Handle-Max", "amqp.performative.arguments.handleMax",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Handle max", HFILL}},
+        {&hf_amqp_1_0_handleMax_4, {
+            "Handle-Max", "amqp.performative.arguments.handleMax",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Handle max", HFILL}},
+        {&hf_amqp_1_0_handle_1, {
+            "Handle", "amqp.performative.arguments.handle",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Handle for the link while attached", HFILL}},
+        {&hf_amqp_1_0_handle_4, {
+            "Handle", "amqp.performative.arguments.handle",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Handle for the link while attached", HFILL}},
+        {&hf_amqp_1_0_sndSettleMode_1, {
+            "Send-Settle-Mode", "amqp.performative.arguments.sndSettleMode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_sndSettleMode_value), 0,
+            "Send settle mode", HFILL}},
+        {&hf_amqp_1_0_rcvSettleMode_1, {
+            "Receive-Settle-Mode", "amqp.performative.arguments.rcvSettleMode",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_rcvSettleMode_value), 0,
+            "Receive settle mode", HFILL}},
+        {&hf_amqp_1_0_initialDeliveryCount_1, {
+            "Initial-Delivery-Count", "amqp.performative.arguments.initDeliveryCount",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Initial delivery count", HFILL}},
+        {&hf_amqp_1_0_initialDeliveryCount_4, {
+            "Initial-Delivery-Count", "amqp.performative.arguments.initDeliveryCount",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Initial delivery count", HFILL}},
+        {&hf_amqp_1_0_description_str, {
+            "Description", "amqp.error.description",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Error description", HFILL}},
+        {&hf_amqp_1_0_address_str, {
+            "Address", "amqp.performative.arguments.address",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Address of a node", HFILL}},
+        {&hf_amqp_1_0_terminusDurable_1, {
+            "Terminus-Durable", "amqp.performative.arguments.terminusDurable",
+            FT_UINT8, BASE_DEC, VALS(amqp_1_0_durable_value), 0,
+            "Terminus durability", HFILL}},
+        {&hf_amqp_1_0_terminusDurable_4, {
+            "Terminus-Durable", "amqp.performative.arguments.terminusDurable",
+            FT_UINT32, BASE_DEC, VALS(amqp_1_0_durable_value), 0,
+            "Terminus durability", HFILL}},
+        {&hf_amqp_1_0_priority_1, {
+            "Priority", "amqp.message.priority",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Message priority", HFILL}},
+        {&hf_amqp_1_0_ttl_1, {
+            "Ttl", "amqp.message.ttl",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Time to live", HFILL}},
+        {&hf_amqp_1_0_ttl_4, {
+            "Ttl", "amqp.message.ttl",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Time to live", HFILL}},
+        {&hf_amqp_1_0_expiryPolicy_sym, {
+            "Expiry-Policy", "amqp.properties.expiryPolicy",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Expiry policy", HFILL}},
+        {&hf_amqp_1_0_timeout_1, {
+            "Timeout", "amqp.properties.timeout",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Duration that an expiring target will be retained", HFILL}},
+        {&hf_amqp_1_0_timeout_4, {
+            "Timeout", "amqp.properties.timeout",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Duration that an expiring target will be retained", HFILL}},
+        {&hf_amqp_1_0_distributionMode_sym, {
+            "Distribution-Mode", "amqp.properties.distributionMode",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Distribution mode", HFILL}},
+        {&hf_amqp_1_0_outcomes_sym, {
+            "Outcomes", "amqp.properties.outcomes",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Outcomes descriptors for the link", HFILL}},
+        {&hf_amqp_1_0_capabilities_sym, {
+            "Capabilities", "amqp.properties.capabilities",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Extension capabilities of the sender", HFILL}},
+        {&hf_amqp_1_0_messageId_1, {
+            "Message-Id", "amqp.message.messageId",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_messageId_str, {
+            "Message-Id", "amqp.message.messageId",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_messageId_bin, {
+            "Message-Id", "amqp.message.messageId",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_messageId_uuid, {
+            "Message-Id", "amqp.message.messageId",
+            FT_GUID, BASE_NONE, NULL, 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_messageId_8, {
+            "Message-Id", "amqp.message.messageId",
+            FT_UINT64, BASE_DEC, NULL, 0,
+            "Message id", HFILL}},
+        {&hf_amqp_1_0_correlationId_1, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_correlationId_str, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_correlationId_bin, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_correlationId_uuid, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_GUID, BASE_NONE, NULL, 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_correlationId_8, {
+            "Correlation-Id", "amqp.message.correlationId",
+            FT_UINT64, BASE_DEC, NULL, 0,
+            "Correlation id", HFILL}},
+        {&hf_amqp_1_0_userId_bin, {
+            "User-Id", "amqp.message.userId",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "User id", HFILL}},
+        {&hf_amqp_1_0_to_str, {
+            "To", "amqp.message.to",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Destination address of the message", HFILL}},
+        {&hf_amqp_1_0_subject_str, {
+            "Subject", "amqp.message.subject",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Message subject", HFILL}},
+        {&hf_amqp_1_0_replyTo_str, {
+            "Reply-To", "amqp.message.replyTo",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Reply to", HFILL}},
+        {&hf_amqp_1_0_contentType_sym, {
+            "Content-Type", "amqp.message.contentType",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Content type", HFILL}},
+        {&hf_amqp_1_0_contentEncoding_sym, {
+            "Content-Encoding", "amqp.message.contentEncoding",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Content encoding", HFILL}},
+        {&hf_amqp_1_0_absoluteExpiryTime_timestamp, {
+            "Expiry-Time", "amqp.message.expiryTime",
+            FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
+            "Absolute expiry time", HFILL}},
+        {&hf_amqp_1_0_creationTime_timestamp, {
+            "Creation-Time", "amqp.message.creationTime",
+            FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
+            "Creation time", HFILL}},
+        {&hf_amqp_1_0_groupId_str, {
+            "Group-Id", "amqp.message.groupId",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Croup id", HFILL}},
+        {&hf_amqp_1_0_groupSequence_1, {
+            "Group-Sequence", "amqp.message.groupSequence",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Group sequence", HFILL}},
+        {&hf_amqp_1_0_groupSequence_4, {
+            "Group-Sequence", "amqp.message.groupSequence",
+            FT_UINT32, BASE_DEC, NULL, 0,
+            "Group sequence", HFILL}},
+        {&hf_amqp_1_0_replyToGroupId_str, {
+            "Reply-To-Group-Id", "amqp.message.replyToGroupId",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Reply to group id", HFILL}},
+        {&hf_amqp_1_0_mechanisms_sym, {
+            "Mechanisms", "amqp.sasl.mechanisms",
+            FT_STRING, BASE_NONE, NULL, 0,
+            "Supported security mechanisms", HFILL}},
+        {&hf_amqp_1_0_initResponse_bin, {
+            "Init-Response", "amqp.sasl.initResponse",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "Initial response", HFILL}},
+        {&hf_amqp_1_0_saslAdditionalData_bin, {
+            "Additional-Data", "amqp.sasl.addData",
+            FT_BYTES, BASE_NONE, NULL, 0,
+            "SASL outcome additional data", HFILL}},
         {&hf_amqp_0_10_format, {
             "Format", "amqp.format",
             FT_UINT8, BASE_DEC, NULL, 0xc0,
@@ -10525,6 +13508,10 @@ proto_register_amqp(void)
             "Protocol ID Minor", "amqp.init.id_minor",
             FT_UINT8, BASE_DEC, NULL, 0,
             NULL, HFILL}},
+        {&hf_amqp_init_id, {
+            "Protocol-ID", "amqp.init.id",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            NULL, HFILL}},
         {&hf_amqp_init_version_major, {
             "Version Major", "amqp.init.version_major",
             FT_UINT8, BASE_DEC, NULL, 0,
@@ -10532,7 +13519,11 @@ proto_register_amqp(void)
         {&hf_amqp_init_version_minor, {
             "Version Minor", "amqp.init.version_minor",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Protocol version minor", HFILL}}
+            "Protocol version minor", HFILL}},
+        {&hf_amqp_init_version_revision, {
+            "Version-Revision", "amqp.init.version_revision",
+            FT_UINT8, BASE_DEC, NULL, 0,
+            "Protocol version revision", HFILL}}
     };
 
     /*  Setup of protocol subtree array  */
@@ -10545,7 +13536,10 @@ proto_register_amqp(void)
          &ett_field_table,
          &ett_amqp_init,
          &ett_amqp_0_10_map,
-         &ett_amqp_0_10_array
+         &ett_amqp_0_10_array,
+         &ett_amqp_1_0_array,
+         &ett_amqp_1_0_map,
+         &ett_amqp_1_0_list
     };
 
     static ei_register_info ei[] = {
@@ -10568,6 +13562,10 @@ proto_register_amqp(void)
         { &ei_amqp_unknown_tunnel_method, { "amqp.unknown.method.tunnel", PI_PROTOCOL, PI_ERROR, "Unknown tunnel method", EXPFILL }},
         { &ei_amqp_unknown_method_class, { "amqp.unknown.method.class", PI_PROTOCOL, PI_ERROR, "Unknown method class", EXPFILL }},
         { &ei_amqp_unknown_header_class, { "amqp.unknown.header_class", PI_PROTOCOL, PI_ERROR, "Unknown header class", EXPFILL }},
+        { &ei_amqp_unknown_sasl_command, { "amqp.unknown.sasl_command", PI_PROTOCOL, PI_ERROR, "Unknown SASL command", EXPFILL }},
+        { &ei_amqp_unknown_amqp_command, { "amqp.unknown.amqp_command", PI_PROTOCOL, PI_ERROR, "Unknown AMQP command", EXPFILL }},
+        { &ei_amqp_unknown_amqp_type,  { "amqp.unknown.amqp_type", PI_PROTOCOL, PI_ERROR, "Unknown AMQP type", EXPFILL }},
+        { &ei_amqp_invalid_number_of_params, { "amqp.invalid.params_number", PI_PROTOCOL, PI_ERROR, "Invalid number of parameters", EXPFILL }},
     };
 
     expert_module_t* expert_amqp;
index b75308b83d5bcefc0d10768b7af3129e9bba6996..c9269ca1e860688e9d5b1e708ee7651902fedbf6 100644 (file)
@@ -1497,7 +1497,7 @@ tele_param_cb_num(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint
 
         offset += 1;
 
-        poctets = tvb_get_string(wmem_packet_scope(), tvb, offset, num_fields);
+        poctets = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, num_fields, ENC_ASCII|ENC_NA);
 
         proto_tree_add_string_format(tree, hf_ansi_637_tele_cb_num_number, tvb, offset, num_fields,
             (gchar *) poctets,
index d3acca8e1f66eadbcc7a4beb2f8b5763f6383084..d29a34841886888732427b0d274091c2230d02d7 100644 (file)
@@ -2471,7 +2471,7 @@ elem_mid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, gu
         a_bigbuf[0] = Dgt_meid.out[(oct & 0xf0) >> 4];
         curr_offset++;
 
-        poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
+        poctets = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
 
         my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
             &Dgt_meid);
@@ -2560,7 +2560,7 @@ elem_mid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, gu
         a_bigbuf[0] = Dgt_msid.out[(oct & 0xf0) >> 4];
         curr_offset++;
 
-        poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
+        poctets = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
 
         my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset),
             &Dgt_msid);
@@ -3690,7 +3690,7 @@ elem_clg_party_ascii_num(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
         curr_offset++;
     }
 
-    poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
+    poctets = tvb_get_string_enc(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset), ENC_ASCII|ENC_NA);
 
     proto_tree_add_string_format(tree, hf_ansi_a_clg_party_ascii_num, tvb, curr_offset, len - (curr_offset - offset),
         (gchar *) poctets,
@@ -4163,7 +4163,7 @@ elem_cld_party_bcd_num(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 
     curr_offset++;
 
-    poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
+    poctets = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
 
     my_dgt_tbcd_unpack(a_bigbuf, poctets, len - (curr_offset - offset), &Dgt_tbcd);
     proto_tree_add_string(tree, hf_ansi_a_cld_party_bcd_num, tvb, curr_offset, len - (curr_offset - offset), a_bigbuf);
@@ -5811,7 +5811,7 @@ elem_rev_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g
             switch (rec_type)
             {
             case ANSI_REV_MS_INFO_REC_KEYPAD_FAC:
-                poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, oct_len);
+                poctets = tvb_get_string_enc(wmem_packet_scope(), tvb, curr_offset, oct_len, ENC_ASCII|ENC_NA);
 
                 proto_tree_add_string_format(subtree, hf_ansi_a_cld_party_ascii_num, tvb, curr_offset, oct_len,
                     (gchar *) poctets,
@@ -6310,7 +6310,7 @@ elem_cld_party_ascii_num(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
     proto_tree_add_item(tree, hf_ansi_a_cld_party_ascii_num_plan, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
     curr_offset++;
 
-    poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset));
+    poctets = tvb_get_string_enc(wmem_packet_scope(), tvb, curr_offset, len - (curr_offset - offset), ENC_ASCII|ENC_NA);
 
     proto_tree_add_string_format(tree, hf_ansi_a_cld_party_ascii_num, tvb, curr_offset, len - (curr_offset - offset),
         (gchar *) poctets,
@@ -7254,7 +7254,7 @@ elem_dtmf_chars(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32
 
     packed_len = len - (curr_offset - offset);
 
-    poctets = tvb_get_string(wmem_packet_scope(), tvb, curr_offset, packed_len);
+    poctets = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, curr_offset, packed_len);
 
     /*
      * the packed DTMF digits are not "terminated" with a '0xF' for an odd
@@ -10777,7 +10777,7 @@ dissect_sip_dtap_bsmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
         {
             ansi_a_tvb = tvb_new_composite();
             msg_type = (guint8 *) wmem_alloc(pinfo->pool, 1);
-            msg_type[0] = (guint8) strtoul(tvb_get_string(wmem_packet_scope(), tvb, offset, 2), NULL, 16);
+            msg_type[0] = (guint8) strtoul(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 2, ENC_ASCII|ENC_NA), NULL, 16);
 
             if ((begin = tvb_find_guint8(tvb, offset, linelen, '"')) > 0)
             {
@@ -10803,7 +10803,7 @@ dissect_sip_dtap_bsmap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                 if ((begin = tvb_find_guint8(tvb, offset, linelen, '=')) > 0)
                 {
                     begin++;
-                    tvb_composite_append(ansi_a_tvb, base64_to_tvb(tvb, tvb_get_string(wmem_packet_scope(), tvb, begin, offset + linelen - begin)));
+                    tvb_composite_append(ansi_a_tvb, base64_to_tvb(tvb, tvb_get_string_enc(wmem_packet_scope(), tvb, begin, offset + linelen - begin, ENC_ASCII|ENC_NA)));
                 }
 
                 offset = next_offset;
index 5031e981d7b68b13aca73295f433b6199acc792e..925b041d05e92cd222f8d0293d77c6ed9be1918b 100644 (file)
@@ -1490,7 +1490,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
                 return;
             offset++;
             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
-            proto_item_append_text(actx->created_item, " - %s", tvb_get_string(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset)));
+            proto_item_append_text(actx->created_item, " - %s", tvb_get_string_enc(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset),ENC_ASCII|ENC_NA));
             break;
         case 3:
             /* Octet string */
@@ -1523,7 +1523,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
         case 2:
             /* IA5 Coding */
             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
-            proto_item_append_text(actx->created_item, " - %s", tvb_get_string(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset)));
+            proto_item_append_text(actx->created_item, " - %s", tvb_get_string_enc(wmem_packet_scope(),tvb,offset,tvb_length_remaining(tvb,offset),ENC_ASCII|ENC_NA));
             break;
         case 3:
             /* Octet string */
index d00f02fec6764b6c8623248bd50f9b8ddd835db9..ed1999a557dc17a08b173f4d139cb0e8c03a7f13 100644 (file)
@@ -167,7 +167,7 @@ dissect_applemidi_common( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g
 
                        /* Name is optional */
                        if ( len > 0 ) {
-                               name = tvb_get_string( wmem_packet_scope(), tvb, offset, len );
+                               name = tvb_get_string_enc( wmem_packet_scope(), tvb, offset, len, ENC_UTF_8|ENC_NA );
                                string_size = (gint)( strlen( name ) + 1 );
                                proto_tree_add_item( applemidi_tree, hf_applemidi_name, tvb, offset, string_size, ENC_UTF_8|ENC_NA );
                                col_append_fstr( pinfo->cinfo, COL_INFO, ": peer = \"%s\"", name );
index 1209198d93b44a7037a3391819ec38dba5471d93..5ce0a8b07cd63a0f8845b8f8d353a86fb00d0adc 100644 (file)
@@ -999,8 +999,12 @@ dissect_aprs_weather(      tvbuff_t   *tvb,
                                        /* optional: software type/unit: see if present */
                                        lr = new_offset - offset;
 #if 0 /* fcn'al change: defer */
+                                       /*
+                                        * XXX - ASCII or UTF-8?
+                                        * See http://www.aprs.org/aprs12/utf-8.txt
+                                        */
                                        if ( ((lr < 3) || (lr > 5)) ||
-                                               ( lr != strspn( tvb_get_string( wmem_packet_scope(), tvb, offset, lr ), "a-zA-Z0-9-_" ) ) )
+                                               ( lr != strspn( tvb_get_string_enc( wmem_packet_scope(), tvb, offset, lr, ENC_ASCII|ENC_NA ), "a-zA-Z0-9-_" ) ) )
                                                {
                                                new_offset = offset;  /* Assume rest is a comment: force exit from while */
                                                break;  /* from switch */
@@ -1132,7 +1136,11 @@ aprs_item( proto_tree *aprs_tree, tvbuff_t *tvb, int offset )
 
        data_len    = 10;
 
-       info_buffer = tvb_get_string( wmem_packet_scope(), tvb, offset, data_len );
+       /*
+        * XXX - ASCII or UTF-8?
+        * See http://www.aprs.org/aprs12/utf-8.txt
+        */
+       info_buffer = tvb_get_string_enc( wmem_packet_scope(), tvb, offset, data_len, ENC_ASCII|ENC_NA );
 
        ch_ptr = strchr( info_buffer, '!' );
        if ( ch_ptr != NULL )
index d08cd77697c4aacef7d84cdd1cd98950e5f0578a..84081e2f058bc98c712ab340712184d45a224a90 100644 (file)
@@ -150,9 +150,9 @@ dissect_ar_drone(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
         if (offset < master_offset)
             return master_offset;
 
-        command = tvb_get_string(wmem_packet_scope(), tvb, master_offset, offset-master_offset);
+        command = tvb_get_string_enc(wmem_packet_scope(), tvb, master_offset, offset-master_offset, ENC_ASCII|ENC_NA);
         sub_item = proto_tree_add_string(ar_tree, hf_command, tvb, master_offset, -1,
-            tvb_get_string(wmem_packet_scope(), tvb, master_offset+3, offset-master_offset-3));
+            tvb_get_string_enc(wmem_packet_scope(), tvb, master_offset+3, offset-master_offset-3, ENC_ASCII|ENC_NA));
 
         if (!strncmp(command, "AT*PCMD", 7))
         {
@@ -545,7 +545,7 @@ dissect_ar_drone(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
             }
             ti = proto_tree_add_item(sub_tree, hf_CTRL_mode, tvb, offset, length, ENC_ASCII|ENC_NA);
             proto_item_append_text(ti, "%s",
-                    str_to_str(tvb_get_string(wmem_packet_scope(), tvb, offset, length), CTRL_mode_vs, " (Unknown Mode)"));
+                    str_to_str(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII|ENC_NA), CTRL_mode_vs, " (Unknown Mode)"));
             offset += (length + 1);
 
             /* Add File Size */
index 6bab2b4b2079ad1dbfd3dc16f5aa0c2371f2b187..ce11f94df515b51e807f28e78e4471dc4f298e0e 100644 (file)
@@ -33,7 +33,7 @@
 /*
  * See
  *
- *     http://www.artisticlicence.com/art-net.pdf
+ *     http://www.artisticlicence.com/WebSiteMaster/User%20Guides/art-net.pdf
  */
 
 void proto_register_artnet(void);
@@ -2456,7 +2456,7 @@ dissect_artnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
   }
 
   col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
-                  tvb_get_string(wmem_packet_scope(), tvb, offset, 8));
+                  tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 8, ENC_ASCII|ENC_NA));
   if (tree) {
     proto_tree_add_item(artnet_header_tree, hf_artnet_header_id,
                         tvb, offset, 8, ENC_ASCII|ENC_NA);
index c20d8bbbc5a3eac040ec520a19ba2f91c3eb97c0..f5d023afe53e5b431b4a6b404e7bf4f2a17f6e26 100644 (file)
@@ -492,7 +492,7 @@ dissect_pool_handle_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tre
   handle_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
   pi = proto_tree_add_item(parameter_tree, hf_pool_handle, parameter_tvb, POOL_HANDLE_OFFSET, handle_length, ENC_NA);
 
-  tmp = (gchar*)tvb_get_string(wmem_packet_scope(), parameter_tvb, POOL_HANDLE_OFFSET, handle_length);
+  tmp = (gchar*)tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, POOL_HANDLE_OFFSET, handle_length, ENC_ASCII|ENC_NA);
   proto_item_append_text(pi, " (%s)", tmp);
 }
 
index b409469f24300d8ed3c8ca9f7e5a5ab8acd35410..1c9bbe84e5cbfebafb909ea30d1ea9bc832fd92f 100644 (file)
@@ -3495,25 +3495,25 @@ dissect_serialnumber (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, p
   sn_item = proto_tree_add_item (tree, hf_index, tvb, start_offset, 16, ENC_ASCII|ENC_NA);
   sn_tree = proto_item_add_subtree (sn_item, ett_r3serialnumber);
 
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset +  0, 2);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset +  0, 2, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset +  0, 2, "Manufacturer .. : %s (%s)", s, str_to_str (s, r3_snmanufacturernames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset +  2, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset +  2, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset +  2, 1, "Year .......... : %s (%s)", s, str_to_str (s, r3_snyearnames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset +  3, 2);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset +  3, 2, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset +  3, 2, "Week .......... : %s",      s);
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset +  5, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset +  5, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset +  5, 1, "Model ......... : %s (%s)", s, str_to_str (s, r3_snmodelnames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset +  6, 4);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset +  6, 4, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset +  6, 4, "Sequence ...... : %s",      s);
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset + 10, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset + 10, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset + 10, 1, "Group ......... : %s (%s)", s, str_to_str (s, r3_sngroupnames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset + 11, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset + 11, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset + 11, 1, "NID ........... : %s (%s)", s, str_to_str (s, r3_snnidnames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset + 12, 2);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset + 12, 2, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset + 12, 2, "HID ........... : %s (%s)", s, str_to_str (s, r3_snhidnames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset + 14, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset + 14, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset + 14, 1, "Power Supply .. : %s (%s)", s, str_to_str (s, r3_snpowersupplynames, "[Unknown]"));
-  s = tvb_get_string (wmem_packet_scope(), tvb, start_offset + 15, 1);
+  s = tvb_get_string_enc (wmem_packet_scope(), tvb, start_offset + 15, 1, ENC_ASCII|ENC_NA);
   proto_tree_add_text (sn_tree, tvb, start_offset + 15, 1, "Mortise ....... : %s (%s)", s, str_to_str (s, r3_snmortisenames, "[Unknown]"));
 }
 
index d397579241ec7d1c3ecfc5b164ebb2715759b5a3..c0961e284f3bc450c4c1a0cd74ea8e09ae4d4a0a 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <glib.h>
 #include <epan/packet.h>
+#include <epan/prefs.h>
 #include "wmem/wmem.h"
 #include <stdio.h>
 
@@ -490,9 +491,13 @@ static gint hf_062_080_FPLT = -1;
 static gint hf_062_080_DUPT = -1;
 static gint hf_062_080_DUPF = -1;
 static gint hf_062_080_DUPM = -1;
+static gint hf_062_080_FRIFOE = -1;
+static gint hf_062_080_COA = -1;
 static gint hf_062_100 = -1;
 static gint hf_062_100_X = -1;
 static gint hf_062_100_Y = -1;
+static gint hf_062_100_X_v0_17 = -1;
+static gint hf_062_100_Y_v0_17 = -1;
 static gint hf_062_105 = -1;
 static gint hf_062_105_LAT = -1;
 static gint hf_062_105_LON = -1;
@@ -526,6 +531,13 @@ static gint hf_062_110_07_XC = -1;
 static gint hf_062_110_07_X3 = -1;
 static gint hf_062_110_07_X2 = -1;
 static gint hf_062_110_07_X1 = -1;
+/* v.0.17 */
+static gint hf_062_110_v0_17 = -1;
+static gint hf_062_110_A4 = -1;
+static gint hf_062_110_A2 = -1;
+static gint hf_062_110_A1 = -1;
+static gint hf_062_110_B2 = -1;
+static gint hf_062_110_B1 = -1;
 static gint hf_062_120 = -1;
 static gint hf_062_120_SQUAWK = -1;
 static gint hf_062_130 = -1;
@@ -535,6 +547,9 @@ static gint hf_062_135_QNH = -1;
 static gint hf_062_135_ALT = -1;
 static gint hf_062_136 = -1;
 static gint hf_062_136_ALT = -1;
+static gint hf_062_180 = -1;
+static gint hf_062_180_SPEED = -1;
+static gint hf_062_180_HEADING = -1;
 static gint hf_062_185 = -1;
 static gint hf_062_185_VX = -1;
 static gint hf_062_185_VY = -1;
@@ -546,9 +561,13 @@ static gint hf_062_200_ADF = -1;
 static gint hf_062_210 = -1;
 static gint hf_062_210_AX = -1;
 static gint hf_062_210_AY = -1;
+static gint hf_062_210_CLA = -1;
+static gint hf_062_210_v0_17 = -1;
 static gint hf_062_220 = -1;
-static gint hf_062_245 = -1;
 static gint hf_062_220_ROCD = -1;
+static gint hf_062_240 = -1;
+static gint hf_062_240_ROT = -1;
+static gint hf_062_245 = -1;
 static gint hf_062_270 = -1;
 static gint hf_062_270_LENGTH = -1;
 static gint hf_062_270_ORIENTATION = -1;
@@ -574,6 +593,25 @@ static gint hf_062_290_09 = -1;
 static gint hf_062_290_09_LOP = -1;
 static gint hf_062_290_10 = -1;
 static gint hf_062_290_10_MLT = -1;
+/* v.0.17 */
+static gint hf_062_290_01_v0_17 = -1;
+static gint hf_062_290_01_PSR = -1;
+static gint hf_062_290_02_v0_17 = -1;
+static gint hf_062_290_02_SSR = -1;
+static gint hf_062_290_03_v0_17 = -1;
+static gint hf_062_290_03_MDA = -1;
+static gint hf_062_290_04_v0_17 = -1;
+static gint hf_062_290_04_MFL = -1;
+static gint hf_062_290_05_v0_17 = -1;
+static gint hf_062_290_05_MDS = -1;
+static gint hf_062_290_06_v0_17 = -1;
+static gint hf_062_290_06_ADS = -1;
+static gint hf_062_290_07_v0_17 = -1;
+static gint hf_062_290_07_ADB = -1;
+static gint hf_062_290_08_v0_17 = -1;
+static gint hf_062_290_08_MD1 = -1;
+static gint hf_062_290_09_v0_17 = -1;
+static gint hf_062_290_09_MD2 = -1;
 static gint hf_062_295 = -1;
 static gint hf_062_295_01 = -1;
 static gint hf_062_295_01_MFL = -1;
@@ -660,10 +698,10 @@ static gint hf_062_340_06_TYP = -1;
 static gint hf_062_340_06_SIM = -1;
 static gint hf_062_340_06_RAB = -1;
 static gint hf_062_340_06_TST = -1;
+static gint hf_062_380 = -1;
 static gint hf_062_380_01 = -1;
 static gint hf_062_380_02 = -1;
 static gint hf_062_380_03 = -1;
-static gint hf_062_380 = -1;
 static gint hf_062_380_03_MH = -1;
 static gint hf_062_380_04 = -1;
 static gint hf_062_380_04_IM = -1;
@@ -751,6 +789,21 @@ static gint hf_062_380_27 = -1;
 static gint hf_062_380_27_MACH = -1;
 static gint hf_062_380_28 = -1;
 static gint hf_062_380_28_BPS = -1;
+/* v.0.17 */
+static gint hf_062_380_v0_17 = -1;
+static gint hf_062_380_01_v0_17 = -1;
+static gint hf_062_380_02_v0_17 = -1;
+static gint hf_062_380_03_v0_17 = -1;
+static gint hf_062_380_04_v0_17 = -1;
+static gint hf_062_380_04_COM = -1;
+static gint hf_062_380_04_STAT = -1;
+static gint hf_062_380_04_SSC = -1;
+static gint hf_062_380_04_ARC = -1;
+static gint hf_062_380_04_AIC = -1;
+static gint hf_062_380_04_B1A = -1;
+static gint hf_062_380_04_B1B = -1;
+static gint hf_062_380_05_v0_17 = -1;
+static gint hf_062_380_05_MB = -1;
 static gint hf_062_390 = -1;
 static gint hf_062_390_01 = -1;
 static gint hf_062_390_02 = -1;
@@ -822,6 +875,23 @@ static gint hf_062_500_07_AAX = -1;
 static gint hf_062_500_07_AAY = -1;
 static gint hf_062_500_08 = -1;
 static gint hf_062_500_08_ARC = -1;
+/* v.0.17 */
+static gint hf_062_500_01_APCX_8bit = -1;
+static gint hf_062_500_01_APCY_8bit = -1;
+static gint hf_062_500_02_v0_17 = -1;
+static gint hf_062_500_02_APWLAT = -1;
+static gint hf_062_500_02_APWLON = -1;
+static gint hf_062_500_03_v0_17 = -1;
+static gint hf_062_500_03_ATA = -1;
+static gint hf_062_500_04_v0_17 = -1;
+static gint hf_062_500_04_ATF = -1;
+static gint hf_062_500_05_v0_17 = -1;
+static gint hf_062_500_05_ATVS = -1;
+static gint hf_062_500_05_ATVH = -1;
+static gint hf_062_500_06_v0_17 = -1;
+static gint hf_062_500_06_ART = -1;
+static gint hf_062_500_07_v0_17 = -1;
+static gint hf_062_500_07_ALA = -1;
 static gint hf_062_510 = -1;
 static gint hf_062_510_SID = -1;
 static gint hf_062_510_STN = -1;
@@ -1316,9 +1386,13 @@ static gint ett_062_080_FPLT = -1;
 static gint ett_062_080_DUPT = -1;
 static gint ett_062_080_DUPF = -1;
 static gint ett_062_080_DUPM = -1;
+static gint ett_062_080_FRIFOE = -1;
+static gint ett_062_080_COA = -1;
 static gint ett_062_100 = -1;
 static gint ett_062_100_X = -1;
 static gint ett_062_100_Y = -1;
+static gint ett_062_100_X_v0_17 = -1;
+static gint ett_062_100_Y_v0_17 = -1;
 static gint ett_062_105 = -1;
 static gint ett_062_105_LAT = -1;
 static gint ett_062_105_LON = -1;
@@ -1352,6 +1426,13 @@ static gint ett_062_110_07_XC = -1;
 static gint ett_062_110_07_X3 = -1;
 static gint ett_062_110_07_X2 = -1;
 static gint ett_062_110_07_X1 = -1;
+/* v.0.17 */
+static gint ett_062_110_v0_17 = -1;
+static gint ett_062_110_A4 = -1;
+static gint ett_062_110_A2 = -1;
+static gint ett_062_110_A1 = -1;
+static gint ett_062_110_B2 = -1;
+static gint ett_062_110_B1 = -1;
 static gint ett_062_120 = -1;
 static gint ett_062_120_SQUAWK = -1;
 static gint ett_062_130 = -1;
@@ -1361,6 +1442,9 @@ static gint ett_062_135_QNH = -1;
 static gint ett_062_135_ALT = -1;
 static gint ett_062_136 = -1;
 static gint ett_062_136_ALT = -1;
+static gint ett_062_180 = -1;
+static gint ett_062_180_SPEED = -1;
+static gint ett_062_180_HEADING = -1;
 static gint ett_062_185 = -1;
 static gint ett_062_185_VX = -1;
 static gint ett_062_185_VY = -1;
@@ -1372,8 +1456,12 @@ static gint ett_062_200_ADF = -1;
 static gint ett_062_210 = -1;
 static gint ett_062_210_AX = -1;
 static gint ett_062_210_AY = -1;
+static gint ett_062_210_CLA = -1;
+static gint ett_062_210_v0_17 = -1;
 static gint ett_062_220 = -1;
 static gint ett_062_220_ROCD = -1;
+static gint ett_062_240 = -1;
+static gint ett_062_240_ROT = -1;
 static gint ett_062_245 = -1;
 static gint ett_062_270 = -1;
 static gint ett_062_270_LENGTH = -1;
@@ -1400,6 +1488,25 @@ static gint ett_062_290_09 = -1;
 static gint ett_062_290_09_LOP = -1;
 static gint ett_062_290_10 = -1;
 static gint ett_062_290_10_MLT = -1;
+/* v.0.17 */
+static gint ett_062_290_01_v0_17 = -1;
+static gint ett_062_290_01_PSR = -1;
+static gint ett_062_290_02_v0_17 = -1;
+static gint ett_062_290_02_SSR = -1;
+static gint ett_062_290_03_v0_17 = -1;
+static gint ett_062_290_03_MDA = -1;
+static gint ett_062_290_04_v0_17 = -1;
+static gint ett_062_290_04_MFL = -1;
+static gint ett_062_290_05_v0_17 = -1;
+static gint ett_062_290_05_MDS = -1;
+static gint ett_062_290_06_v0_17 = -1;
+static gint ett_062_290_06_ADS = -1;
+static gint ett_062_290_07_v0_17 = -1;
+static gint ett_062_290_07_ADB = -1;
+static gint ett_062_290_08_v0_17 = -1;
+static gint ett_062_290_08_MD1 = -1;
+static gint ett_062_290_09_v0_17 = -1;
+static gint ett_062_290_09_MD2 = -1;
 static gint ett_062_295 = -1;
 static gint ett_062_295_01 = -1;
 static gint ett_062_295_01_MFL = -1;
@@ -1486,10 +1593,10 @@ static gint ett_062_340_06_TYP = -1;
 static gint ett_062_340_06_SIM = -1;
 static gint ett_062_340_06_RAB = -1;
 static gint ett_062_340_06_TST = -1;
+static gint ett_062_380 = -1;
 static gint ett_062_380_01 = -1;
 static gint ett_062_380_02 = -1;
 static gint ett_062_380_03 = -1;
-static gint ett_062_380 = -1;
 static gint ett_062_380_03_MH = -1;
 static gint ett_062_380_04 = -1;
 static gint ett_062_380_04_IM = -1;
@@ -1577,6 +1684,21 @@ static gint ett_062_380_27 = -1;
 static gint ett_062_380_27_MACH = -1;
 static gint ett_062_380_28 = -1;
 static gint ett_062_380_28_BPS = -1;
+/* v.0.17 */
+static gint ett_062_380_v0_17 = -1;
+static gint ett_062_380_01_v0_17 = -1;
+static gint ett_062_380_02_v0_17 = -1;
+static gint ett_062_380_03_v0_17 = -1;
+static gint ett_062_380_04_v0_17 = -1;
+static gint ett_062_380_04_COM = -1;
+static gint ett_062_380_04_STAT = -1;
+static gint ett_062_380_04_SSC = -1;
+static gint ett_062_380_04_ARC = -1;
+static gint ett_062_380_04_AIC = -1;
+static gint ett_062_380_04_B1A = -1;
+static gint ett_062_380_04_B1B = -1;
+static gint ett_062_380_05_v0_17 = -1;
+static gint ett_062_380_05_MB = -1;
 static gint ett_062_390 = -1;
 static gint ett_062_390_01 = -1;
 static gint ett_062_390_02 = -1;
@@ -1648,14 +1770,41 @@ static gint ett_062_500_07_AAX = -1;
 static gint ett_062_500_07_AAY = -1;
 static gint ett_062_500_08 = -1;
 static gint ett_062_500_08_ARC = -1;
+/* v.0.17 */
+static gint ett_062_500_01_APCX_8bit = -1;
+static gint ett_062_500_01_APCY_8bit = -1;
+static gint ett_062_500_02_v0_17 = -1;
+static gint ett_062_500_02_APWLAT = -1;
+static gint ett_062_500_02_APWLON = -1;
+static gint ett_062_500_03_v0_17 = -1;
+static gint ett_062_500_03_ATA = -1;
+static gint ett_062_500_04_v0_17 = -1;
+static gint ett_062_500_04_ATF = -1;
+static gint ett_062_500_05_v0_17 = -1;
+static gint ett_062_500_05_ATVS = -1;
+static gint ett_062_500_05_ATVH = -1;
+static gint ett_062_500_06_v0_17 = -1;
+static gint ett_062_500_06_ART = -1;
+static gint ett_062_500_07_v0_17 = -1;
+static gint ett_062_500_07_ALA = -1;
 static gint ett_062_510 = -1;
 static gint ett_062_510_SID = -1;
 static gint ett_062_510_STN = -1;
 static gint ett_062_RE = -1;
 static gint ett_062_RE_CST = -1;
-static gint ett_062_RE_CSN = -1;
+static gint ett_062_RE_CST_SAC = -1;
+static gint ett_062_RE_CST_SIC = -1;
+static gint ett_062_RE_CST_TYP = -1;
+static gint ett_062_RE_CST_TRK_NUM = -1;
+static gint ett_062_RE_CSNT = -1;
+static gint ett_062_RE_CSNT_SAC = -1;
+static gint ett_062_RE_CSNT_SIC = -1;
+static gint ett_062_RE_CSNT_TYP = -1;
 static gint ett_062_RE_TVS = -1;
+static gint ett_062_RE_TVS_VX = -1;
+static gint ett_062_RE_TVS_VY = -1;
 static gint ett_062_RE_STS = -1;
+static gint ett_062_RE_STS_FDR = -1;
 static gint ett_062_SP = -1;
 /* Category 063 */
 static gint ett_063_010 = -1;
@@ -2033,14 +2182,22 @@ static const AsterixField I001_210 = { FIXED, 1, 0, 0, &hf_001_210, NULL, { NULL
 static const AsterixField I001_RE = { RE, 0, 0, 1, &hf_001_RE, NULL, { NULL } };
 static const AsterixField I001_SP = { SP, 0, 0, 1, &hf_001_SP, NULL, { NULL } };
 
-static const AsterixField *I001_PLOT[] = { &I001_010, &I001_020, &I001_040, &I001_070, &I001_090, &I001_130, &I001_141,
-                                           &I001_050, &I001_120, &I001_131, &I001_080, &I001_100, &I001_060, &I001_030,
-                                           &I001_150, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I001_SP,  &I001_RE, NULL };
+static const AsterixField *I001_PLOT_v1_2_uap[] = { &I001_010, &I001_020, &I001_040, &I001_070, &I001_090, &I001_130, &I001_141,
+                                                    &I001_050, &I001_120, &I001_131, &I001_080, &I001_100, &I001_060, &I001_030,
+                                                    &I001_150, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I001_SP,  &I001_RE, NULL };
+
+static const AsterixField *I001_TRACK_v1_2_uap[] = { &I001_010, &I001_020, &I001_161, &I001_040, &I001_042, &I001_200, &I001_070,
+                                                     &I001_090, &I001_141, &I001_130, &I001_131, &I001_120, &I001_170, &I001_210,
+                                                     &I001_050, &I001_080, &I001_100, &I001_060, &I001_030, &I001_SP,  &I001_RE,
+                                                     &I001_150, NULL };
+/* array of two (PLOT, TRACK) is for two different user application profiles (UAPs) */
+static const AsterixField **I001_v1_2[] = { I001_PLOT_v1_2_uap, I001_TRACK_v1_2_uap, NULL };
+static const AsterixField ***I001[] = { I001_v1_2 };
 
-static const AsterixField *I001_TRACK[] = { &I001_010, &I001_020, &I001_161, &I001_040, &I001_042, &I001_200, &I001_070,
-                                            &I001_090, &I001_141, &I001_130, &I001_131, &I001_120, &I001_170, &I001_210,
-                                            &I001_050, &I001_080, &I001_100, &I001_060, &I001_030, &I001_SP,  &I001_RE,
-                                            &I001_150, NULL };
+static const enum_val_t I001_versions[] = {
+    { "I001_v1_2", "Version 1.2", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 002       */
@@ -2115,8 +2272,15 @@ static const AsterixField I002_100 = { FIXED, 8, 0, 0, &hf_002_100, I002_100_PAR
 static const AsterixField I002_RE = { RE, 0, 0, 1, &hf_002_RE, NULL, { NULL } };
 static const AsterixField I002_SP = { SP, 0, 0, 1, &hf_002_SP, NULL, { NULL } };
 
-static const AsterixField *I002[] = { &I002_010, &I002_000, &I002_020, &I002_030, &I002_041, &I002_050, &I002_060,
-                                      &I002_070, &I002_100, &I002_090, &I002_080, &IX_SPARE, &I002_SP,  &I002_RE, NULL };
+static const AsterixField *I002_v1_0_uap[] = { &I002_010, &I002_000, &I002_020, &I002_030, &I002_041, &I002_050, &I002_060,
+                                               &I002_070, &I002_100, &I002_090, &I002_080, &IX_SPARE, &I002_SP,  &I002_RE, NULL };
+static const AsterixField **I002_v1_0[] = { I002_v1_0_uap, NULL };
+static const AsterixField ***I002[] = { I002_v1_0 };
+
+static const enum_val_t I002_versions[] = {
+    { "I002_v1_0", "Version 1.0", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 008       */
@@ -2246,8 +2410,15 @@ static const AsterixField I008_120 = { FIXED, 2, 0, 0, &hf_008_120, I008_120_PAR
 static const AsterixField I008_SP = { SP, 0, 0, 1, &hf_008_SP, NULL, { NULL } };
 static const AsterixField I008_RFS = { RE, 0, 0, 1, &hf_008_RFS, NULL, { NULL } };
 
-static const AsterixField *I008[] = { &I008_010, &I008_000, &I008_020, &I008_036, &I008_034, &I008_040, &I008_050,
-                                      &I008_090, &I008_100, &I008_110, &I008_120, &I008_038, &I008_SP,  &I008_RFS, NULL };
+static const AsterixField *I008_v1_1_uap[] = { &I008_010, &I008_000, &I008_020, &I008_036, &I008_034, &I008_040, &I008_050,
+                                               &I008_090, &I008_100, &I008_110, &I008_120, &I008_038, &I008_SP,  &I008_RFS, NULL };
+static const AsterixField **I008_v1_1[] = { I008_v1_1_uap, NULL };
+static const AsterixField ***I008[] = { I008_v1_1 };
+
+static const enum_val_t I008_versions[] = {
+    { "I008_v1_1", "Version 1.1", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 009       */
@@ -2330,8 +2501,15 @@ static const AsterixField I009_080 = { FX, 3, 0, 0, &hf_009_080, I009_080_PARTS,
 static const AsterixField I009_090 = { REPETITIVE, 3, 1, 0, &hf_009_090, I009_090_PARTS, { NULL } };
 static const AsterixField I009_100 = { FIXED, 2, 0, 0, &hf_009_100, I009_100_PARTS, { NULL } };
 
-static const AsterixField *I009[] = { &I009_010, &I009_000, &I009_020, &I009_030, &I009_060, &I009_070, &I009_080,
-                                      &I009_090, &I009_100, NULL };
+static const AsterixField *I009_v2_0_uap[] = { &I009_010, &I009_000, &I009_020, &I009_030, &I009_060, &I009_070, &I009_080,
+                                               &I009_090, &I009_100, NULL };
+static const AsterixField **I009_v2_0[] = { I009_v2_0_uap, NULL };
+static const AsterixField ***I009[] = { I009_v2_0 };
+
+static const enum_val_t I009_versions[] = {
+    { "I009_v2_0", "Version 2.0", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 034       */
@@ -2646,8 +2824,15 @@ static const AsterixField I034_120 = { FIXED, 8, 0, 0, &hf_034_120, I034_120_PAR
 static const AsterixField I034_RE = { RE, 0, 0, 1, &hf_034_RE, NULL, { NULL } };
 static const AsterixField I034_SP = { SP, 0, 0, 1, &hf_034_SP, NULL, { NULL } };
 
-static const AsterixField *I034[] = { &I034_010, &I034_000, &I034_030, &I034_020, &I034_041, &I034_050, &I034_060,
-                                      &I034_070, &I034_100, &I034_110, &I034_120, &I034_090, &I034_RE,  &I034_SP, NULL };
+static const AsterixField *I034_v1_27_uap[] = { &I034_010, &I034_000, &I034_030, &I034_020, &I034_041, &I034_050, &I034_060,
+                                                &I034_070, &I034_100, &I034_110, &I034_120, &I034_090, &I034_RE,  &I034_SP, NULL };
+static const AsterixField **I034_v1_27[] = { I034_v1_27_uap, NULL };
+static const AsterixField ***I034[] = { I034_v1_27 };
+
+static const enum_val_t I034_versions[] = {
+    { "I034_v1_27", "Version 1.27", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 048       */
@@ -3168,10 +3353,17 @@ static const AsterixField I048_260 = { FIXED, 7, 0, 0, &hf_048_260, I048_260_PAR
 static const AsterixField I048_RE = { RE, 0, 0, 1, &hf_048_RE, NULL, { NULL } };
 static const AsterixField I048_SP = { SP, 0, 0, 1, &hf_048_SP, NULL, { NULL } };
 
-static const AsterixField *I048[] = { &I048_010, &I048_140, &I048_020, &I048_040, &I048_070, &I048_090, &I048_130,
-                                      &I048_220, &I048_240, &I048_250, &I048_161, &I048_042, &I048_200, &I048_170,
-                                      &I048_210, &I048_030, &I048_080, &I048_100, &I048_110, &I048_120, &I048_230,
-                                      &I048_260, &I048_055, &I048_050, &I048_065, &I048_060, &I048_RE,  &I048_SP,  NULL };
+static const AsterixField *I048_v1_17_uap[] = { &I048_010, &I048_140, &I048_020, &I048_040, &I048_070, &I048_090, &I048_130,
+                                                &I048_220, &I048_240, &I048_250, &I048_161, &I048_042, &I048_200, &I048_170,
+                                                &I048_210, &I048_030, &I048_080, &I048_100, &I048_110, &I048_120, &I048_230,
+                                                &I048_260, &I048_055, &I048_050, &I048_065, &I048_060, &I048_RE,  &I048_SP, NULL };
+static const AsterixField **I048_v1_17[] = { I048_v1_17_uap, NULL };
+static const AsterixField ***I048[] = { I048_v1_17 };
+
+static const enum_val_t I048_versions[] = {
+    { "I048_v1_17", "Version 1.17", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 062       */
@@ -3191,6 +3383,7 @@ static const value_string valstr_062_060_CH[] = {
 static const FieldPart I062_060_CH = { 1, 1.0, FIELD_PART_UINT, &hf_062_060_CH, NULL };
 static const FieldPart I062_060_SQUAWK = { 12, 1.0, FIELD_PART_SQUAWK, &hf_062_060_SQUAWK, NULL };
 static const FieldPart *I062_060_PARTS[] = { &IXXX_2bit_spare, &I062_060_CH, &IXXX_1bit_spare, &I062_060_SQUAWK, NULL };
+static const FieldPart *I062_060_PARTS_v0_17[] = { &IXXX_4bit_spare, &I062_060_SQUAWK, NULL };
 
 /* Track Status */
 static const value_string valstr_062_080_MON[] = {
@@ -3366,6 +3559,18 @@ static const value_string valstr_062_080_DUPM[] = {
     { 1, "Duplicate Flight Plan due to manual correlation" },
     { 0, NULL }
 };
+static const value_string valstr_062_080_FRIFOE[] = {
+    { 0, "No Mode 4 interrogation" },
+    { 1, "Friendly target" },
+    { 2, "Unknown target" },
+    { 3, "No reply" },
+    { 0, NULL }
+};
+static const value_string valstr_062_080_COA[] = {
+    { 0, "Default value" },
+    { 1, "Age of the last received track update is higher than system dependent threshold (coasting)" },
+    { 0, NULL }
+};
 
 static const FieldPart I062_080_MON = { 1, 1.0, FIELD_PART_UINT, &hf_062_080_MON, NULL };
 static const FieldPart I062_080_SPI = { 1, 1.0, FIELD_PART_UINT, &hf_062_080_SPI, NULL };
@@ -3398,22 +3603,34 @@ static const FieldPart I062_080_FPLT = { 2, 1.0, FIELD_PART_UINT, &hf_062_080_FP
 static const FieldPart I062_080_DUPT = { 1, 1.0, FIELD_PART_UINT, &hf_062_080_DUPT, NULL };
 static const FieldPart I062_080_DUPF = { 1, 1.0, FIELD_PART_UINT, &hf_062_080_DUPF, NULL };
 static const FieldPart I062_080_DUPM = { 1, 1.0, FIELD_PART_UINT, &hf_062_080_DUPM, NULL };
+static const FieldPart I062_080_FRIFOE = { 2, 1.0, FIELD_PART_UINT, &hf_062_080_FRIFOE, NULL };
+static const FieldPart I062_080_COA = { 2, 1.0, FIELD_PART_UINT, &hf_062_080_COA, NULL };
 static const FieldPart *I062_080_PARTS[] = { &I062_080_MON, &I062_080_SPI, &I062_080_MRH, &I062_080_SRC, &I062_080_CNF, &IXXX_FX,
-                                              &I062_080_SIM, &I062_080_TSE, &I062_080_TSB, &I062_080_FPC, &I062_080_AFF, &I062_080_STP, &I062_080_KOS, &IXXX_FX,
-                                              &I062_080_AMA, &I062_080_MD4, &I062_080_ME, &I062_080_MI, &I062_080_MD5, &IXXX_FX,
-                                              &I062_080_CST, &I062_080_PSR, &I062_080_SSR, &I062_080_MDS, &I062_080_ADS, &I062_080_SUC, &I062_080_AAC, &IXXX_FX,
-                                              &I062_080_SDS, &I062_080_EMS, &I062_080_PFT, &I062_080_FPLT, &IXXX_FX,
-                                              &I062_080_DUPT, &I062_080_DUPF, &I062_080_DUPM, &IXXX_4bit_spare, &IXXX_FX, NULL };
+                                             &I062_080_SIM, &I062_080_TSE, &I062_080_TSB, &I062_080_FPC, &I062_080_AFF, &I062_080_STP, &I062_080_KOS, &IXXX_FX,
+                                             &I062_080_AMA, &I062_080_MD4, &I062_080_ME, &I062_080_MI, &I062_080_MD5, &IXXX_FX,
+                                             &I062_080_CST, &I062_080_PSR, &I062_080_SSR, &I062_080_MDS, &I062_080_ADS, &I062_080_SUC, &I062_080_AAC, &IXXX_FX,
+                                             &I062_080_SDS, &I062_080_EMS, &I062_080_PFT, &I062_080_FPLT, &IXXX_FX,
+                                             &I062_080_DUPT, &I062_080_DUPF, &I062_080_DUPM, &IXXX_4bit_spare, &IXXX_FX, NULL };
+static const FieldPart *I062_080_PARTS_v0_17[] = { &I062_080_MON, &I062_080_SPI, &I062_080_MRH, &I062_080_SRC, &I062_080_CNF, &IXXX_FX,
+                                                   &I062_080_SIM, &I062_080_TSE, &I062_080_TSB, &I062_080_FPC, &IXXX_3bit_spare, &IXXX_FX,
+                                                   &I062_080_AMA, &I062_080_FRIFOE, &I062_080_ME, &I062_080_MI, &IXXX_2bit_spare, &IXXX_FX,
+                                                   &I062_080_COA, &I062_080_PSR, &I062_080_SSR, &I062_080_MDS, &I062_080_ADS, &I062_080_SUC, &I062_080_AAC, &IXXX_FX, NULL };
 
 /* Calculated Track Position. (Cartesian) */
 static const FieldPart I062_100_X = { 24, 0.5, FIELD_PART_FLOAT, &hf_062_100_X, NULL };
 static const FieldPart I062_100_Y = { 24, 0.5, FIELD_PART_FLOAT, &hf_062_100_Y, NULL };
+static const FieldPart I062_100_X_v0_17 = { 16, 1.0/64.0, FIELD_PART_FLOAT, &hf_062_100_X_v0_17, NULL };
+static const FieldPart I062_100_Y_v0_17 = { 16, 1.0/64.0, FIELD_PART_FLOAT, &hf_062_100_Y_v0_17, NULL };
 static const FieldPart *I062_100_PARTS[] = { &I062_100_X, &I062_100_Y, NULL };
+static const FieldPart *I062_100_PARTS_v0_17[] = { &I062_100_X_v0_17, &I062_100_Y_v0_17, NULL };
 
 /* Calculated Position in WGS-84 Co-ordinates */
 static const FieldPart I062_105_LAT = { 32, 180.0/33554432.0, FIELD_PART_FLOAT, &hf_062_105_LAT, NULL };
 static const FieldPart I062_105_LON = { 32, 180.0/33554432.0, FIELD_PART_FLOAT, &hf_062_105_LON, NULL };
+static const FieldPart I062_105_LAT_v0_17 = { 24, 180.0/8388608.0, FIELD_PART_FLOAT, &hf_062_105_LAT, NULL };
+static const FieldPart I062_105_LON_v0_17 = { 24, 180.0/8388608.0, FIELD_PART_FLOAT, &hf_062_105_LON, NULL };
 static const FieldPart *I062_105_PARTS[] = { &I062_105_LAT, &I062_105_LON, NULL };
+static const FieldPart *I062_105_PARTS_v0_17[] = { &I062_105_LAT_v0_17, &I062_105_LON_v0_17, NULL };
 
 /* Mode 5 Data reports & Extended Mode 1 Code */
 static const value_string valstr_062_110_01_M5[] = {
@@ -3521,6 +3738,13 @@ static const FieldPart I062_110_07_X3 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_0
 static const FieldPart I062_110_07_X2 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_07_X2, NULL };
 static const FieldPart I062_110_07_X1 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_07_X1, NULL };
 static const FieldPart *I062_110_07_PARTS[] = { &IXXX_3bit_spare, &I062_110_07_X5, &I062_110_07_XC, &I062_110_07_X3, &I062_110_07_X2, &I062_110_07_X1, NULL };
+/* v0.17 */
+static const FieldPart I062_110_A4 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_A4, NULL };
+static const FieldPart I062_110_A2 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_A2, NULL };
+static const FieldPart I062_110_A1 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_A1, NULL };
+static const FieldPart I062_110_B2 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_B2, NULL };
+static const FieldPart I062_110_B1 = { 1, 1.0, FIELD_PART_UINT, &hf_062_110_B1, NULL };
+static const FieldPart *I062_110_PARTS_v0_17[] = { &IXXX_3bit_spare, &I062_110_A4, &I062_110_A2, &I062_110_A1, &I062_110_B2, &I062_110_B1, NULL };
 
 /* Track Mode 2 Code */
 static const FieldPart I062_120_SQUAWK = { 12, 1.0, FIELD_PART_SQUAWK, &hf_062_120_SQUAWK, NULL };
@@ -3544,6 +3768,11 @@ static const FieldPart *I062_135_PARTS[] = { &I062_135_QNH, &I062_135_ALT, NULL
 static const FieldPart I062_136_ALT = { 16, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_136_ALT, NULL };
 static const FieldPart *I062_136_PARTS[] = { &I062_136_ALT, NULL };
 
+/* Calculated Track Velocity (Polar) */
+static const FieldPart I062_180_SPEED = { 16, 1.0/16384.0, FIELD_PART_FLOAT, &hf_062_180_SPEED, NULL };
+static const FieldPart I062_180_HEADING = { 16, 360.0/65536.0, FIELD_PART_FLOAT, &hf_062_180_HEADING, NULL };
+static const FieldPart *I062_180_PARTS[] = { &I062_180_SPEED, &I062_180_HEADING, NULL };
+
 /* Calculated Track Velocity (Cartesian) */
 static const FieldPart I062_185_VX = { 16, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_185_VX, NULL };
 static const FieldPart I062_185_VY = { 16, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_185_VY, NULL };
@@ -3581,16 +3810,23 @@ static const FieldPart I062_200_LONG = { 2, 1.0, FIELD_PART_UINT, &hf_062_200_LO
 static const FieldPart I062_200_VERT = { 2, 1.0, FIELD_PART_UINT, &hf_062_200_VERT, NULL };
 static const FieldPart I062_200_ADF = { 1, 1.0, FIELD_PART_UINT, &hf_062_200_ADF, NULL };
 static const FieldPart *I062_200_PARTS[] = { &I062_200_TRANS, &I062_200_LONG, &I062_200_VERT, &I062_200_ADF, NULL };
+static const FieldPart *I062_200_PARTS_v0_17[] = { &I062_200_TRANS, &I062_200_LONG, &I062_200_VERT, NULL };
 
 /* Calculated Acceleration (Cartesian) */
 static const FieldPart I062_210_AX = { 8, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_210_AX, NULL };
 static const FieldPart I062_210_AY = { 8, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_210_AY, NULL };
+static const FieldPart I062_210_CLA = { 16, 1.0/4194304.0, FIELD_PART_FLOAT, &hf_062_210_CLA, NULL };
 static const FieldPart *I062_210_PARTS[] = { &I062_210_AX, &I062_210_AY, NULL };
+static const FieldPart *I062_210_PARTS_v0_17[] = { &I062_210_CLA, NULL };
 
 /* Calculated Rate Of Climb/Descent */
 static const FieldPart I062_220_ROCD = { 16, 6.25, FIELD_PART_FLOAT, &hf_062_220_ROCD, NULL };
 static const FieldPart *I062_220_PARTS[] = { &I062_220_ROCD, NULL };
 
+/* Calculated Rate of Turn */
+static const FieldPart I062_240_ROT = { 8, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_240_ROT, NULL };
+static const FieldPart *I062_240_PARTS[] = { &I062_240_ROT, NULL };
+
 /* Target Size & Orientation */
 static const FieldPart I062_270_LENGTH = { 7, 1.0, FIELD_PART_UFLOAT, &hf_062_270_LENGTH, NULL };
 static const FieldPart I062_270_ORIENTATION = { 7, 360.0/128.0, FIELD_PART_UFLOAT, &hf_062_270_ORIENTATION, NULL };
@@ -3620,6 +3856,25 @@ static const FieldPart I062_290_09_LOP = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_2
 static const FieldPart *I062_290_09_PARTS[] = { &I062_290_09_LOP, NULL };
 static const FieldPart I062_290_10_MLT = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_10_MLT, NULL };
 static const FieldPart *I062_290_10_PARTS[] = { &I062_290_10_MLT, NULL };
+/* V0.17 */
+static const FieldPart I062_290_01_PSR = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_01_PSR, NULL };
+static const FieldPart *I062_290_01_PARTS_v0_17[] = { &I062_290_01_PSR, NULL };
+static const FieldPart I062_290_02_SSR = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_02_SSR, NULL };
+static const FieldPart *I062_290_02_PARTS_v0_17[] = { &I062_290_02_SSR, NULL };
+static const FieldPart I062_290_03_MDA = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_03_MDA, NULL };
+static const FieldPart *I062_290_03_PARTS_v0_17[] = { &I062_290_03_MDA, NULL };
+static const FieldPart I062_290_04_MFL = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_04_MFL, NULL };
+static const FieldPart *I062_290_04_PARTS_v0_17[] = { &I062_290_04_MFL, NULL };
+static const FieldPart I062_290_05_MDS = { 16, 0.25, FIELD_PART_UFLOAT, &hf_062_290_05_MDS, NULL };
+static const FieldPart *I062_290_05_PARTS_v0_17[] = { &I062_290_05_MDS, NULL };
+static const FieldPart I062_290_06_ADS = { 16, 0.25, FIELD_PART_UFLOAT, &hf_062_290_06_ADS, NULL };
+static const FieldPart *I062_290_06_PARTS_v0_17[] = { &I062_290_06_ADS, NULL };
+static const FieldPart I062_290_07_ADB = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_07_ADB, NULL };
+static const FieldPart *I062_290_07_PARTS_v0_17[] = { &I062_290_07_ADB, NULL };
+static const FieldPart I062_290_08_MD1 = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_08_MD1, NULL };
+static const FieldPart *I062_290_08_PARTS_v0_17[] = { &I062_290_08_MD1, NULL };
+static const FieldPart I062_290_09_MD2 = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_290_09_MD2, NULL };
+static const FieldPart *I062_290_09_PARTS_v0_17[] = { &I062_290_09_MD2, NULL };
 
 /* Track Data Ages */
 static const FieldPart I062_295_01_MFL = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_295_01_MFL, NULL };
@@ -3793,16 +4048,64 @@ static const FieldPart *I062_380_03_PARTS[] = { &I062_380_03_MH, NULL };
 
 /* Indicated Airspeed/Mach Number */
 /* The scaling factor of this field depends on IM field */
-/* Various scaling factors not supporter. */
+/* Various scaling factors not supported. */
 /* Since field not used for compatibility purposes, it is OK. */
 static const FieldPart I062_380_04_IM = { 1, 1.0, FIELD_PART_UINT, &hf_062_380_04_IM, NULL };
 static const FieldPart I062_380_04_IAS = { 15, 1.0, FIELD_PART_UFLOAT, &hf_062_380_04_IAS, NULL };
 static const FieldPart *I062_380_04_PARTS[] = { &I062_380_04_IM, &I062_380_04_IAS, NULL };
 
+/* v.0.17 */
+/* Communications / ACAS Capability and Flight Status */
+static const value_string valstr_062_380_04_COM[] = {
+    { 0, "No communications capability (surveillance only)" },
+    { 1, "Comm. A and Comm. B capability" },
+    { 2, "Comm. A, Comm. B and Uplink ELM" },
+    { 3, "Comm. A, Comm. B, Uplink ELM and Downlink ELM" },
+    { 4, "Level 5 Transponder capability" },
+    { 0, NULL }
+};
+static const value_string valstr_062_380_04_STAT[] = {
+    { 0, "No alert, no SPI, aircraft airborne" },
+    { 1, "No alert, no SPI, aircraft on ground" },
+    { 2, "Alert, no SPI, aircraft airborne" },
+    { 3, "Alert, no SPI, aircraft on ground" },
+    { 4, "Alert, SPI, aircraft airborne or on ground" },
+    { 5, "No alert, SPI, aircraft airborne or on ground" },
+    { 0, NULL }
+};
+static const value_string valstr_062_380_04_SSC[] = {
+    { 0, "No" },
+    { 1, "Yes" },
+    { 0, NULL }
+};
+static const value_string valstr_062_380_04_ARC[] = {
+    { 0, "100 ft resolution" },
+    { 1, "25 ft resolution" },
+    { 0, NULL }
+};
+static const value_string valstr_062_380_04_AIC[] = {
+    { 0, "No" },
+    { 1, "Yes" },
+    { 0, NULL }
+};
+static const FieldPart I062_380_04_COM = { 3, 1.0, FIELD_PART_UINT, &hf_062_380_04_COM, NULL };
+static const FieldPart I062_380_04_STAT = { 3, 1.0, FIELD_PART_UINT, &hf_062_380_04_STAT, NULL };
+static const FieldPart I062_380_04_SSC = { 1, 1.0, FIELD_PART_UINT, &hf_062_380_04_SSC, NULL };
+static const FieldPart I062_380_04_ARC = { 1, 1.0, FIELD_PART_UINT, &hf_062_380_04_ARC, NULL };
+static const FieldPart I062_380_04_AIC = { 1, 1.0, FIELD_PART_UINT, &hf_062_380_04_AIC, NULL };
+static const FieldPart I062_380_04_B1A = { 1, 1.0, FIELD_PART_UINT, &hf_062_380_04_B1A, NULL };
+static const FieldPart I062_380_04_B1B = { 4, 1.0, FIELD_PART_UINT, &hf_062_380_04_B1B, NULL };
+static const FieldPart *I062_380_04_PARTS_v0_17[] = { &I062_380_04_COM, &I062_380_04_STAT, &IXXX_2bit_spare, &I062_380_04_SSC, &I062_380_04_ARC, &I062_380_04_AIC, &I062_380_04_B1A, &I062_380_04_B1B, NULL };
+
 /* True Airspeed */
 static const FieldPart I062_380_05_TAS = { 16, 1.0, FIELD_PART_UFLOAT, &hf_062_380_05_TAS, NULL };
 static const FieldPart *I062_380_05_PARTS[] = { &I062_380_05_TAS, NULL };
 
+/* v.0.17 */
+/* ACAS Resolution Advisory Report */
+static const FieldPart I062_380_05_MB = { 56, 1.0, FIELD_PART_UINT, &hf_062_380_05_MB, NULL };
+static const FieldPart *I062_380_05_PARTS_v0_17[] = { &I062_380_05_MB, NULL };
+
 /* Selected Altitude */
 static const value_string valstr_062_380_06_SAS[] = {
     { 0, "No source information provided" },
@@ -4293,33 +4596,63 @@ static const FieldPart *I062_390_18_PARTS[] = { &I062_390_18_CS, NULL };
 static const FieldPart I062_500_01_APCX = { 16, 0.5, FIELD_PART_UFLOAT, &hf_062_500_01_APCX, NULL };
 static const FieldPart I062_500_01_APCY = { 16, 0.5, FIELD_PART_UFLOAT, &hf_062_500_01_APCY, NULL };
 static const FieldPart *I062_500_01_PARTS[] = { &I062_500_01_APCX, &I062_500_01_APCY, NULL };
+/* v.0.17 */
+static const FieldPart I062_500_01_APCX_8bit = { 8, 1.0/64.0, FIELD_PART_UFLOAT, &hf_062_500_01_APCX_8bit, NULL };
+static const FieldPart I062_500_01_APCY_8bit = { 8, 1.0/64.0, FIELD_PART_UFLOAT, &hf_062_500_01_APCY_8bit, NULL };
+static const FieldPart *I062_500_01_PARTS_v0_17[] = { &I062_500_01_APCX_8bit, &I062_500_01_APCY_8bit, NULL };
 
 /* XY covariance component */
 static const FieldPart I062_500_02_COV = { 16, 0.5, FIELD_PART_FLOAT, &hf_062_500_02_COV, NULL };
 static const FieldPart *I062_500_02_PARTS[] = { &I062_500_02_COV, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Track Position (WGS-84) */
+static const FieldPart I062_500_02_APWLAT = { 16, 180.0/8388608.0, FIELD_PART_FLOAT, &hf_062_500_02_APWLAT, NULL };
+static const FieldPart I062_500_02_APWLON = { 16, 180.0/8388608.0, FIELD_PART_FLOAT, &hf_062_500_02_APWLON, NULL };
+static const FieldPart *I062_500_02_PARTS_v0_17[] = { &I062_500_02_APWLAT, &I062_500_02_APWLON, NULL };
 
 /* Estimated Accuracy Of Track Position (WGS-84) */
 static const FieldPart I062_500_03_APWLAT = { 16, 180.0/33554432.0, FIELD_PART_FLOAT, &hf_062_500_03_APWLAT, NULL };
 static const FieldPart I062_500_03_APWLON = { 16, 180.0/33554432.0, FIELD_PART_FLOAT, &hf_062_500_03_APWLON, NULL };
 static const FieldPart *I062_500_03_PARTS[] = { &I062_500_03_APWLAT, &I062_500_03_APWLON, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Calculated Track Altitude */
+static const FieldPart I062_500_03_ATA = { 16, 6.25, FIELD_PART_UFLOAT, &hf_062_500_03_ATA, NULL };
+static const FieldPart *I062_500_03_PARTS_v0_17[] = { &I062_500_03_ATA, NULL };
 
 /* Estimated Accuracy Of Calculated Track Geometric Altitude */
 static const FieldPart I062_500_04_AGA = { 8, 6.25, FIELD_PART_UFLOAT, &hf_062_500_04_AGA, NULL };
 static const FieldPart *I062_500_04_PARTS[] = { &I062_500_04_AGA, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Calculated Track Geometric Altitude */
+static const FieldPart I062_500_04_ATF = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_04_ATF, NULL };
+static const FieldPart *I062_500_04_PARTS_v0_17[] = { &I062_500_04_ATF, NULL };
 
 /* Estimated Accuracy Of Calculated Track Barometric Altitude */
 static const FieldPart I062_500_05_ABA = { 8, 1.0/4.0, FIELD_PART_UFLOAT, &hf_062_500_05_ABA, NULL };
 static const FieldPart *I062_500_05_PARTS[] = { &I062_500_05_ABA, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Track Velocity (Polar) */
+static const FieldPart I062_500_05_ATVS = { 8, 1.0/16384.0, FIELD_PART_UFLOAT, &hf_062_500_05_ATVS, NULL };
+static const FieldPart I062_500_05_ATVH = { 16, 360.0/65536.0, FIELD_PART_UFLOAT, &hf_062_500_05_ATVH, NULL };
+static const FieldPart *I062_500_05_PARTS_v0_17[] = { &I062_500_05_ATVS, &I062_500_05_ATVH, NULL };
 
 /* Estimated Accuracy Of Track Velocity (Cartesian) */
 static const FieldPart I062_500_06_ATVX = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_06_ATVX, NULL };
 static const FieldPart I062_500_06_ATVY = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_06_ATVY, NULL };
 static const FieldPart *I062_500_06_PARTS[] = { &I062_500_06_ATVX, &I062_500_06_ATVY, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Rate Of Turn */
+static const FieldPart I062_500_06_ART = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_06_ART, NULL };
+static const FieldPart *I062_500_06_PARTS_v0_17[] = { &I062_500_06_ART, NULL };
 
 /* Estimated Accuracy Of Acceleration (Cartesian) */
 static const FieldPart I062_500_07_AAX = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_07_AAX, NULL };
 static const FieldPart I062_500_07_AAY = { 8, 0.25, FIELD_PART_UFLOAT, &hf_062_500_07_AAY, NULL };
 static const FieldPart *I062_500_07_PARTS[] = { &I062_500_07_AAX, &I062_500_07_AAY, NULL };
+/* v.0.17 */
+/* Estimated Accuracy Of Longitudinal Acceleration */
+static const FieldPart I062_500_07_ALA = { 16, 1.0/4194304.0, FIELD_PART_UFLOAT, &hf_062_500_07_ALA, NULL };
+static const FieldPart *I062_500_07_PARTS_v0_17[] = { &I062_500_07_ALA, NULL };
 
 /* Estimated Accuracy Of Rate Of Climb/Descent */
 static const FieldPart I062_500_08_ARC = { 8, 6.25, FIELD_PART_UFLOAT, &hf_062_500_08_ARC, NULL };
@@ -4374,16 +4707,19 @@ static const FieldPart I062_RE_STS_FDR = { 1, 1.0, FIELD_PART_UINT, &hf_062_RE_S
 static const FieldPart *I062_RE_STS_PARTS[] = { &I062_RE_STS_FDR, NULL };
 
 
-
 /* Items */
 static const AsterixField I062_010 = { FIXED, 2, 0, 0, &hf_062_010, IXXX_SAC_SIC, { NULL } };
 static const AsterixField I062_015 = { FIXED, 1, 0, 0, &hf_062_015, I062_015_PARTS, { NULL } };
 static const AsterixField I062_040 = { FIXED, 2, 0, 0, &hf_062_040, IXXX_TN_16_PARTS, { NULL } };
 static const AsterixField I062_060 = { FIXED, 2, 0, 0, &hf_062_060, I062_060_PARTS, { NULL } };
+static const AsterixField I062_060_v0_17 = { FIXED, 2, 0, 0, &hf_062_060, I062_060_PARTS_v0_17, { NULL } };
 static const AsterixField I062_070 = { FIXED, 3, 0, 0, &hf_062_070, IXXX_TOD, { NULL } };
 static const AsterixField I062_080 = { FX, 1, 0, 0, &hf_062_080, I062_080_PARTS, { NULL } };
+static const AsterixField I062_080_v0_17 = { FX, 1, 0, 0, &hf_062_080, I062_080_PARTS_v0_17, { NULL } };
 static const AsterixField I062_100 = { FIXED, 6, 0, 0, &hf_062_100, I062_100_PARTS, { NULL } };
+static const AsterixField I062_100_v0_17 = { FIXED, 4, 0, 0, &hf_062_100, I062_100_PARTS_v0_17, { NULL } };
 static const AsterixField I062_105 = { FIXED, 8, 0, 0, &hf_062_105, I062_105_PARTS, { NULL } };
+static const AsterixField I062_105_v0_17 = { FIXED, 6, 0, 0, &hf_062_105, I062_105_PARTS_v0_17, { NULL } };
 static const AsterixField I062_110_01 = { FIXED, 1, 0, 0, &hf_062_110_01, I062_110_01_PARTS, { NULL } };
 static const AsterixField I062_110_02 = { FIXED, 4, 0, 0, &hf_062_110_02, I062_110_02_PARTS, { NULL } };
 static const AsterixField I062_110_03 = { FIXED, 6, 0, 0, &hf_062_110_03, I062_110_03_PARTS, { NULL } };
@@ -4399,14 +4735,19 @@ static const AsterixField I062_110 = { COMPOUND, 0, 0, 0, &hf_062_110, NULL, { &
                                                                                &I062_110_06,
                                                                                &I062_110_07,
                                                                                NULL } };
+static const AsterixField I062_110_v0_17 = { FIXED, 1, 0, 0, &hf_062_110_v0_17, I062_110_PARTS_v0_17, { NULL } };
 static const AsterixField I062_120 = { FIXED, 2, 0, 0, &hf_062_120, I062_120_PARTS, { NULL } };
 static const AsterixField I062_130 = { FIXED, 2, 0, 0, &hf_062_130, I062_130_PARTS, { NULL } };
 static const AsterixField I062_135 = { FIXED, 2, 0, 0, &hf_062_135, I062_135_PARTS, { NULL } };
 static const AsterixField I062_136 = { FIXED, 2, 0, 0, &hf_062_136, I062_136_PARTS, { NULL } };
+static const AsterixField I062_180 = { FIXED, 4, 0, 0, &hf_062_180, I062_180_PARTS, { NULL } };
 static const AsterixField I062_185 = { FIXED, 4, 0, 0, &hf_062_185, I062_185_PARTS, { NULL } };
 static const AsterixField I062_200 = { FIXED, 1, 0, 0, &hf_062_200, I062_200_PARTS, { NULL } };
+static const AsterixField I062_200_v0_17 = { FIXED, 1, 0, 0, &hf_062_200, I062_200_PARTS_v0_17, { NULL } };
 static const AsterixField I062_210 = { FIXED, 2, 0, 0, &hf_062_210, I062_210_PARTS, { NULL } };
+static const AsterixField I062_210_v0_17 = { FIXED, 2, 0, 0, &hf_062_210_v0_17, I062_210_PARTS_v0_17, { NULL } };
 static const AsterixField I062_220 = { FIXED, 2, 0, 0, &hf_062_220, I062_220_PARTS, { NULL } };
+static const AsterixField I062_240 = { FIXED, 1, 0, 0, &hf_062_240, I062_240_PARTS, { NULL } };
 static const AsterixField I062_245 = { FIXED, 7, 0, 0, &hf_062_245, NULL, { NULL } };
 static const AsterixField I062_270 = { FX, 1, 0, 0, &hf_062_270, I062_270_PARTS, { NULL } };
 static const AsterixField I062_290_01 = { FIXED, 1, 0, 0, &hf_062_290_01, I062_290_01_PARTS, { NULL } };
@@ -4430,6 +4771,25 @@ static const AsterixField I062_290 = { COMPOUND, 0, 0, 0, &hf_062_290, NULL, { &
                                                                                &I062_290_09,
                                                                                &I062_290_10,
                                                                                NULL } };
+static const AsterixField I062_290_01_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_01_v0_17, I062_290_01_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_02_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_02_v0_17, I062_290_02_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_03_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_03_v0_17, I062_290_03_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_04_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_04_v0_17, I062_290_04_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_05_v0_17 = { FIXED, 2, 0, 0, &hf_062_290_05_v0_17, I062_290_05_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_06_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_06_v0_17, I062_290_06_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_07_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_07_v0_17, I062_290_07_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_08_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_08_v0_17, I062_290_08_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_09_v0_17 = { FIXED, 1, 0, 0, &hf_062_290_09_v0_17, I062_290_09_PARTS_v0_17, { NULL } };
+static const AsterixField I062_290_v0_17 = { COMPOUND, 0, 0, 0, &hf_062_290, NULL, { &I062_290_01_v0_17,
+                                                                                     &I062_290_02_v0_17,
+                                                                                     &I062_290_03_v0_17,
+                                                                                     &I062_290_04_v0_17,
+                                                                                     &I062_290_05_v0_17,
+                                                                                     &I062_290_06_v0_17,
+                                                                                     &I062_290_07_v0_17,
+                                                                                     &I062_290_08_v0_17,
+                                                                                     &I062_290_09_v0_17,
+                                                                                     NULL } };
 static const AsterixField I062_295_01 = { FIXED, 1, 0, 0, &hf_062_295_01, I062_295_01_PARTS, { NULL } };
 static const AsterixField I062_295_02 = { FIXED, 1, 0, 0, &hf_062_295_02, I062_295_02_PARTS, { NULL } };
 static const AsterixField I062_295_03 = { FIXED, 1, 0, 0, &hf_062_295_03, I062_295_03_PARTS, { NULL } };
@@ -4564,6 +4924,18 @@ static const AsterixField I062_380 = { COMPOUND, 0, 0, 0, &hf_062_380, NULL, { &
                                                                                &I062_380_27,
                                                                                &I062_380_28,
                                                                                NULL } };
+/* v.0.17 */
+static const AsterixField I062_380_01_v0_17 = { REPETITIVE, 8, 1, 0, &hf_062_380_01_v0_17, IXXX_MB, { NULL } };
+static const AsterixField I062_380_02_v0_17 = { FIXED, 3, 0, 0, &hf_062_380_02_v0_17, IXXX_AA_PARTS, { NULL } };
+static const AsterixField I062_380_03_v0_17 = { FIXED, 6, 0, 0, &hf_062_380_03_v0_17, IXXX_AI_PARTS, { NULL } };
+static const AsterixField I062_380_04_v0_17 = { FIXED, 2, 0, 0, &hf_062_380_04_v0_17, I062_380_04_PARTS_v0_17, { NULL } };
+static const AsterixField I062_380_05_v0_17 = { FIXED, 7, 0, 0, &hf_062_380_05_v0_17, I062_380_05_PARTS_v0_17, { NULL } };
+static const AsterixField I062_380_v0_17 = { COMPOUND, 0, 0, 0, &hf_062_380_v0_17, NULL, { &I062_380_01_v0_17,
+                                                                                           &I062_380_02_v0_17,
+                                                                                           &I062_380_03_v0_17,
+                                                                                           &I062_380_04_v0_17,
+                                                                                           &I062_380_05_v0_17,
+                                                                                           NULL } };
 static const AsterixField I062_390_01 = { FIXED, 2, 0, 0, &hf_062_390_01, IXXX_SAC_SIC, { NULL } };
 static const AsterixField I062_390_02 = { FIXED, 7, 0, 0, &hf_062_390_02, I062_390_02_PARTS, { NULL } };
 static const AsterixField I062_390_03 = { FIXED, 4, 0, 0, &hf_062_390_03, I062_390_03_PARTS, { NULL } };
@@ -4618,6 +4990,22 @@ static const AsterixField I062_500 = { COMPOUND, 0, 0, 0, &hf_062_500, NULL, { &
                                                                                &I062_500_07,
                                                                                &I062_500_08,
                                                                                NULL } };
+static const AsterixField I062_500_01_v0_17 = { FIXED, 2, 0, 0, &hf_062_500_01, I062_500_01_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_02_v0_17 = { FIXED, 4, 0, 0, &hf_062_500_02_v0_17, I062_500_02_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_03_v0_17 = { FIXED, 2, 0, 0, &hf_062_500_03_v0_17, I062_500_03_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_04_v0_17 = { FIXED, 1, 0, 0, &hf_062_500_04_v0_17, I062_500_04_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_05_v0_17 = { FIXED, 3, 0, 0, &hf_062_500_05_v0_17, I062_500_05_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_06_v0_17 = { FIXED, 1, 0, 0, &hf_062_500_06_v0_17, I062_500_06_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_07_v0_17 = { FIXED, 2, 0, 0, &hf_062_500_07_v0_17, I062_500_07_PARTS_v0_17, { NULL } };
+static const AsterixField I062_500_v0_17 = { COMPOUND, 0, 0, 0, &hf_062_500, NULL, { &I062_500_01_v0_17,
+                                                                                     &I062_500_02_v0_17,
+                                                                                     &I062_500_03_v0_17,
+                                                                                     &I062_500_04_v0_17,
+                                                                                     &I062_500_05_v0_17,
+                                                                                     &I062_500_06_v0_17,
+                                                                                     &I062_500_07_v0_17,
+                                                                                     &I062_500_08,
+                                                                                     NULL } };
 static const AsterixField I062_510 = { FX, 3, 0, 0, &hf_062_510, I062_510_PARTS, { NULL } };
 /*RE Field*/
 static const AsterixField I062_RE_CST = { REPETITIVE, 5, 1, 0, &hf_062_RE_CST, I062_RE_CST_PARTS, { NULL } };
@@ -4627,11 +5015,24 @@ static const AsterixField I062_RE_STS = { FX, 1, 0, 0, &hf_062_RE_STS, I062_RE_S
 static const AsterixField I062_RE = { RE, 0, 0, 1, &hf_062_RE, NULL, { &I062_RE_CST, &I062_RE_CSNT, &I062_RE_TVS, &I062_RE_STS, NULL } };
 static const AsterixField I062_SP = { SP, 0, 0, 1, &hf_062_SP, NULL, { NULL } };
 
-static const AsterixField *I062[] = { &I062_010, &IX_SPARE, &I062_015, &I062_070, &I062_105, &I062_100, &I062_185,
-                                      &I062_210, &I062_060, &I062_245, &I062_380, &I062_040, &I062_080, &I062_290,
-                                      &I062_200, &I062_295, &I062_136, &I062_130, &I062_135, &I062_220, &I062_390,
-                                      &I062_270, &I062_300, &I062_110, &I062_120, &I062_510, &I062_500, &I062_340,
-                                      &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I062_RE,  &I062_SP,  NULL };
+static const AsterixField *I062_v1_16_uap[] = { &I062_010, &IX_SPARE, &I062_015, &I062_070, &I062_105, &I062_100, &I062_185,
+                                                &I062_210, &I062_060, &I062_245, &I062_380, &I062_040, &I062_080, &I062_290,
+                                                &I062_200, &I062_295, &I062_136, &I062_130, &I062_135, &I062_220, &I062_390,
+                                                &I062_270, &I062_300, &I062_110, &I062_120, &I062_510, &I062_500, &I062_340,
+                                                &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I062_RE,  &I062_SP, NULL };
+static const AsterixField *I062_v0_17_uap[] = { &I062_010, &I062_015, &I062_070, &I062_040, &I062_105_v0_17, &I062_100_v0_17, &I062_060_v0_17,
+                                                &I062_130, &I062_135, &I062_136, &I062_180, &I062_200_v0_17, &I062_220, &I062_240,
+                                                &I062_210_v0_17, &I062_080_v0_17, &I062_290_v0_17, &I062_340, &I062_380_v0_17, &I062_500_v0_17, &I062_390,
+                                                &I062_110_v0_17, &I062_120, &I062_510, &IX_SPARE, &IX_SPARE, &I062_RE,  &I062_SP, NULL };
+static const AsterixField **I062_v1_16[] = { I062_v1_16_uap, NULL };
+static const AsterixField **I062_v0_17[] = { I062_v0_17_uap, NULL };
+static const AsterixField ***I062[] = { I062_v1_16, I062_v0_17 };
+                                            
+static const enum_val_t I062_versions[] = {
+    { "I062_v1_16", "Version 1.16", 0 },
+    { "I062_v0_17", "Version 0.17", 1 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 063       */
@@ -4654,8 +5055,15 @@ static const AsterixField I063_092 = { FIXED, 2, 0, 0, &hf_063_092, NULL, { NULL
 static const AsterixField I063_RE = { RE, 0, 0, 1, &hf_063_RE, NULL, { NULL } };
 static const AsterixField I063_SP = { SP, 0, 0, 1, &hf_063_SP, NULL, { NULL } };
 
-static const AsterixField *I063[] = { &I063_010, &I063_015, &I063_030, &I063_050, &I063_060, &I063_070, &I063_080,
-                                      &I063_081, &I063_090, &I063_091, &I063_092, &IX_SPARE, &I063_RE,  &I063_SP, NULL };
+static const AsterixField *I063_v1_3_uap[] = { &I063_010, &I063_015, &I063_030, &I063_050, &I063_060, &I063_070, &I063_080,
+                                               &I063_081, &I063_090, &I063_091, &I063_092, &IX_SPARE, &I063_RE,  &I063_SP, NULL };
+static const AsterixField **I063_v1_3[] = { I063_v1_3_uap, NULL };
+static const AsterixField ***I063[] = { I063_v1_3 };
+
+static const enum_val_t I063_versions[] = {
+    { "I063_v1_3", "Version 1.3", 0 },
+    { NULL, NULL, 0 }
+};
 
 /* *********************** */
 /*      Category 065       */
@@ -4674,268 +5082,534 @@ static const AsterixField I065_050 = { FIXED, 1, 0, 0, &hf_065_050, NULL, { NULL
 static const AsterixField I065_RE = { RE, 0, 0, 1, &hf_065_RE, NULL, { NULL } };
 static const AsterixField I065_SP = { SP, 0, 0, 1, &hf_065_SP, NULL, { NULL } };
 
-static const AsterixField *I065[] = { &I065_010, &I065_000, &I065_015, &I065_030, &I065_020, &I065_040, &I065_050,
-                                      &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I065_RE,  &I065_SP, NULL };
-
-/* number of available user application profiles limited to 2 */
-/* if needed array will have to be extended */
-static const AsterixField **uap[][2] = {
-    { NULL, NULL }, /* 000 */
-    { I001_PLOT, I001_TRACK }, /* 001 */
-    { I002, NULL }, /* 002 */
-    { NULL, NULL }, /* 003 */
-    { NULL, NULL }, /* 004 */
-    { NULL, NULL }, /* 005 */
-    { NULL, NULL }, /* 006 */
-    { NULL, NULL }, /* 007 */
-    { I008, NULL }, /* 008 */
-    { I009, NULL }, /* 009 */
-    { NULL, NULL }, /* 010 */
-    { NULL, NULL }, /* 011 */
-    { NULL, NULL }, /* 012 */
-    { NULL, NULL }, /* 013 */
-    { NULL, NULL }, /* 014 */
-    { NULL, NULL }, /* 015 */
-    { NULL, NULL }, /* 016 */
-    { NULL, NULL }, /* 017 */
-    { NULL, NULL }, /* 018 */
-    { NULL, NULL }, /* 019 */
-    { NULL, NULL }, /* 020 */
-    { NULL, NULL }, /* 021 */
-    { NULL, NULL }, /* 022 */
-    { NULL, NULL }, /* 023 */
-    { NULL, NULL }, /* 024 */
-    { NULL, NULL }, /* 025 */
-    { NULL, NULL }, /* 026 */
-    { NULL, NULL }, /* 027 */
-    { NULL, NULL }, /* 028 */
-    { NULL, NULL }, /* 029 */
-    { NULL, NULL }, /* 030 */
-    { NULL, NULL }, /* 031 */
-    { NULL, NULL }, /* 032 */
-    { NULL, NULL }, /* 033 */
-    { I034, NULL }, /* 034 */
-    { NULL, NULL }, /* 035 */
-    { NULL, NULL }, /* 036 */
-    { NULL, NULL }, /* 037 */
-    { NULL, NULL }, /* 038 */
-    { NULL, NULL }, /* 039 */
-    { NULL, NULL }, /* 040 */
-    { NULL, NULL }, /* 041 */
-    { NULL, NULL }, /* 042 */
-    { NULL, NULL }, /* 043 */
-    { NULL, NULL }, /* 044 */
-    { NULL, NULL }, /* 045 */
-    { NULL, NULL }, /* 046 */
-    { NULL, NULL }, /* 047 */
-    { I048, NULL }, /* 048 */
-    { NULL, NULL }, /* 049 */
-    { NULL, NULL }, /* 050 */
-    { NULL, NULL }, /* 051 */
-    { NULL, NULL }, /* 052 */
-    { NULL, NULL }, /* 053 */
-    { NULL, NULL }, /* 054 */
-    { NULL, NULL }, /* 055 */
-    { NULL, NULL }, /* 056 */
-    { NULL, NULL }, /* 057 */
-    { NULL, NULL }, /* 058 */
-    { NULL, NULL }, /* 059 */
-    { NULL, NULL }, /* 060 */
-    { NULL, NULL }, /* 061 */
-    { I062, NULL }, /* 062 */
-    { I063, NULL }, /* 063 */
-    { NULL, NULL }, /* 064 */
-    { I065, NULL }, /* 065 */
-    { NULL, NULL }, /* 066 */
-    { NULL, NULL }, /* 067 */
-    { NULL, NULL }, /* 068 */
-    { NULL, NULL }, /* 069 */
-    { NULL, NULL }, /* 070 */
-    { NULL, NULL }, /* 071 */
-    { NULL, NULL }, /* 072 */
-    { NULL, NULL }, /* 073 */
-    { NULL, NULL }, /* 074 */
-    { NULL, NULL }, /* 075 */
-    { NULL, NULL }, /* 076 */
-    { NULL, NULL }, /* 077 */
-    { NULL, NULL }, /* 078 */
-    { NULL, NULL }, /* 079 */
-    { NULL, NULL }, /* 080 */
-    { NULL, NULL }, /* 081 */
-    { NULL, NULL }, /* 082 */
-    { NULL, NULL }, /* 083 */
-    { NULL, NULL }, /* 084 */
-    { NULL, NULL }, /* 085 */
-    { NULL, NULL }, /* 086 */
-    { NULL, NULL }, /* 087 */
-    { NULL, NULL }, /* 088 */
-    { NULL, NULL }, /* 089 */
-    { NULL, NULL }, /* 090 */
-    { NULL, NULL }, /* 091 */
-    { NULL, NULL }, /* 092 */
-    { NULL, NULL }, /* 093 */
-    { NULL, NULL }, /* 094 */
-    { NULL, NULL }, /* 095 */
-    { NULL, NULL }, /* 096 */
-    { NULL, NULL }, /* 097 */
-    { NULL, NULL }, /* 098 */
-    { NULL, NULL }, /* 099 */
-    { NULL, NULL }, /* 100 */
-    { NULL, NULL }, /* 101 */
-    { NULL, NULL }, /* 102 */
-    { NULL, NULL }, /* 103 */
-    { NULL, NULL }, /* 104 */
-    { NULL, NULL }, /* 105 */
-    { NULL, NULL }, /* 106 */
-    { NULL, NULL }, /* 107 */
-    { NULL, NULL }, /* 108 */
-    { NULL, NULL }, /* 109 */
-    { NULL, NULL }, /* 110 */
-    { NULL, NULL }, /* 111 */
-    { NULL, NULL }, /* 112 */
-    { NULL, NULL }, /* 113 */
-    { NULL, NULL }, /* 114 */
-    { NULL, NULL }, /* 115 */
-    { NULL, NULL }, /* 116 */
-    { NULL, NULL }, /* 117 */
-    { NULL, NULL }, /* 118 */
-    { NULL, NULL }, /* 119 */
-    { NULL, NULL }, /* 120 */
-    { NULL, NULL }, /* 121 */
-    { NULL, NULL }, /* 122 */
-    { NULL, NULL }, /* 123 */
-    { NULL, NULL }, /* 124 */
-    { NULL, NULL }, /* 125 */
-    { NULL, NULL }, /* 126 */
-    { NULL, NULL }, /* 127 */
-    { NULL, NULL }, /* 128 */
-    { NULL, NULL }, /* 129 */
-    { NULL, NULL }, /* 130 */
-    { NULL, NULL }, /* 131 */
-    { NULL, NULL }, /* 132 */
-    { NULL, NULL }, /* 133 */
-    { NULL, NULL }, /* 134 */
-    { NULL, NULL }, /* 135 */
-    { NULL, NULL }, /* 136 */
-    { NULL, NULL }, /* 137 */
-    { NULL, NULL }, /* 138 */
-    { NULL, NULL }, /* 139 */
-    { NULL, NULL }, /* 140 */
-    { NULL, NULL }, /* 141 */
-    { NULL, NULL }, /* 142 */
-    { NULL, NULL }, /* 143 */
-    { NULL, NULL }, /* 144 */
-    { NULL, NULL }, /* 145 */
-    { NULL, NULL }, /* 146 */
-    { NULL, NULL }, /* 147 */
-    { NULL, NULL }, /* 148 */
-    { NULL, NULL }, /* 149 */
-    { NULL, NULL }, /* 150 */
-    { NULL, NULL }, /* 151 */
-    { NULL, NULL }, /* 152 */
-    { NULL, NULL }, /* 153 */
-    { NULL, NULL }, /* 154 */
-    { NULL, NULL }, /* 155 */
-    { NULL, NULL }, /* 156 */
-    { NULL, NULL }, /* 157 */
-    { NULL, NULL }, /* 158 */
-    { NULL, NULL }, /* 159 */
-    { NULL, NULL }, /* 160 */
-    { NULL, NULL }, /* 161 */
-    { NULL, NULL }, /* 162 */
-    { NULL, NULL }, /* 163 */
-    { NULL, NULL }, /* 164 */
-    { NULL, NULL }, /* 165 */
-    { NULL, NULL }, /* 166 */
-    { NULL, NULL }, /* 167 */
-    { NULL, NULL }, /* 168 */
-    { NULL, NULL }, /* 169 */
-    { NULL, NULL }, /* 170 */
-    { NULL, NULL }, /* 171 */
-    { NULL, NULL }, /* 172 */
-    { NULL, NULL }, /* 173 */
-    { NULL, NULL }, /* 174 */
-    { NULL, NULL }, /* 175 */
-    { NULL, NULL }, /* 176 */
-    { NULL, NULL }, /* 177 */
-    { NULL, NULL }, /* 178 */
-    { NULL, NULL }, /* 179 */
-    { NULL, NULL }, /* 180 */
-    { NULL, NULL }, /* 181 */
-    { NULL, NULL }, /* 182 */
-    { NULL, NULL }, /* 183 */
-    { NULL, NULL }, /* 184 */
-    { NULL, NULL }, /* 185 */
-    { NULL, NULL }, /* 186 */
-    { NULL, NULL }, /* 187 */
-    { NULL, NULL }, /* 188 */
-    { NULL, NULL }, /* 189 */
-    { NULL, NULL }, /* 190 */
-    { NULL, NULL }, /* 191 */
-    { NULL, NULL }, /* 192 */
-    { NULL, NULL }, /* 193 */
-    { NULL, NULL }, /* 194 */
-    { NULL, NULL }, /* 195 */
-    { NULL, NULL }, /* 196 */
-    { NULL, NULL }, /* 197 */
-    { NULL, NULL }, /* 198 */
-    { NULL, NULL }, /* 199 */
-    { NULL, NULL }, /* 200 */
-    { NULL, NULL }, /* 201 */
-    { NULL, NULL }, /* 202 */
-    { NULL, NULL }, /* 203 */
-    { NULL, NULL }, /* 204 */
-    { NULL, NULL }, /* 205 */
-    { NULL, NULL }, /* 206 */
-    { NULL, NULL }, /* 207 */
-    { NULL, NULL }, /* 208 */
-    { NULL, NULL }, /* 209 */
-    { NULL, NULL }, /* 210 */
-    { NULL, NULL }, /* 211 */
-    { NULL, NULL }, /* 212 */
-    { NULL, NULL }, /* 213 */
-    { NULL, NULL }, /* 214 */
-    { NULL, NULL }, /* 215 */
-    { NULL, NULL }, /* 216 */
-    { NULL, NULL }, /* 217 */
-    { NULL, NULL }, /* 218 */
-    { NULL, NULL }, /* 219 */
-    { NULL, NULL }, /* 220 */
-    { NULL, NULL }, /* 221 */
-    { NULL, NULL }, /* 222 */
-    { NULL, NULL }, /* 223 */
-    { NULL, NULL }, /* 224 */
-    { NULL, NULL }, /* 225 */
-    { NULL, NULL }, /* 226 */
-    { NULL, NULL }, /* 227 */
-    { NULL, NULL }, /* 228 */
-    { NULL, NULL }, /* 229 */
-    { NULL, NULL }, /* 230 */
-    { NULL, NULL }, /* 231 */
-    { NULL, NULL }, /* 232 */
-    { NULL, NULL }, /* 233 */
-    { NULL, NULL }, /* 234 */
-    { NULL, NULL }, /* 235 */
-    { NULL, NULL }, /* 236 */
-    { NULL, NULL }, /* 237 */
-    { NULL, NULL }, /* 238 */
-    { NULL, NULL }, /* 239 */
-    { NULL, NULL }, /* 240 */
-    { NULL, NULL }, /* 241 */
-    { NULL, NULL }, /* 242 */
-    { NULL, NULL }, /* 243 */
-    { NULL, NULL }, /* 244 */
-    { NULL, NULL }, /* 245 */
-    { NULL, NULL }, /* 246 */
-    { NULL, NULL }, /* 247 */
-    { NULL, NULL }, /* 248 */
-    { NULL, NULL }, /* 249 */
-    { NULL, NULL }, /* 250 */
-    { NULL, NULL }, /* 251 */
-    { NULL, NULL }, /* 252 */
-    { NULL, NULL }, /* 253 */
-    { NULL, NULL }, /* 254 */
-    { NULL, NULL }  /* 255 */
+static const AsterixField *I065_v1_3_uap[] = { &I065_010, &I065_000, &I065_015, &I065_030, &I065_020, &I065_040, &I065_050,
+                                               &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &IX_SPARE, &I065_RE,  &I065_SP, NULL };
+static const AsterixField **I065_v1_3[] = { I065_v1_3_uap, NULL };
+static const AsterixField ***I065[] = { I065_v1_3 };
+
+static const enum_val_t I065_versions[] = {
+    { "I065_v1_3", "Version 1.3", 0 },
+    { NULL, NULL, 0 }
+};
+
+/* settings which category version to use for each ASTERIX category */
+static gint global_categories_version[] = {
+    0, /* 000 */
+    0, /* 001 */
+    0, /* 002 */
+    0, /* 003 */
+    0, /* 004 */
+    0, /* 005 */
+    0, /* 006 */
+    0, /* 007 */
+    0, /* 008 */
+    0, /* 009 */
+    0, /* 010 */
+    0, /* 011 */
+    0, /* 012 */
+    0, /* 013 */
+    0, /* 014 */
+    0, /* 015 */
+    0, /* 016 */
+    0, /* 017 */
+    0, /* 018 */
+    0, /* 019 */
+    0, /* 020 */
+    0, /* 021 */
+    0, /* 022 */
+    0, /* 023 */
+    0, /* 024 */
+    0, /* 025 */
+    0, /* 026 */
+    0, /* 027 */
+    0, /* 028 */
+    0, /* 029 */
+    0, /* 030 */
+    0, /* 031 */
+    0, /* 032 */
+    0, /* 033 */
+    0, /* 034 */
+    0, /* 035 */
+    0, /* 036 */
+    0, /* 037 */
+    0, /* 038 */
+    0, /* 039 */
+    0, /* 040 */
+    0, /* 041 */
+    0, /* 042 */
+    0, /* 043 */
+    0, /* 044 */
+    0, /* 045 */
+    0, /* 046 */
+    0, /* 047 */
+    0, /* 048 */
+    0, /* 049 */
+    0, /* 050 */
+    0, /* 051 */
+    0, /* 052 */
+    0, /* 053 */
+    0, /* 054 */
+    0, /* 055 */
+    0, /* 056 */
+    0, /* 057 */
+    0, /* 058 */
+    0, /* 059 */
+    0, /* 060 */
+    0, /* 061 */
+    0, /* 062 */
+    0, /* 063 */
+    0, /* 064 */
+    0, /* 065 */
+    0, /* 066 */
+    0, /* 067 */
+    0, /* 068 */
+    0, /* 069 */
+    0, /* 070 */
+    0, /* 071 */
+    0, /* 072 */
+    0, /* 073 */
+    0, /* 074 */
+    0, /* 075 */
+    0, /* 076 */
+    0, /* 077 */
+    0, /* 078 */
+    0, /* 079 */
+    0, /* 080 */
+    0, /* 081 */
+    0, /* 082 */
+    0, /* 083 */
+    0, /* 084 */
+    0, /* 085 */
+    0, /* 086 */
+    0, /* 087 */
+    0, /* 088 */
+    0, /* 089 */
+    0, /* 090 */
+    0, /* 091 */
+    0, /* 092 */
+    0, /* 093 */
+    0, /* 094 */
+    0, /* 095 */
+    0, /* 096 */
+    0, /* 097 */
+    0, /* 098 */
+    0, /* 099 */
+    0, /* 100 */
+    0, /* 101 */
+    0, /* 102 */
+    0, /* 103 */
+    0, /* 104 */
+    0, /* 105 */
+    0, /* 106 */
+    0, /* 107 */
+    0, /* 108 */
+    0, /* 109 */
+    0, /* 110 */
+    0, /* 111 */
+    0, /* 112 */
+    0, /* 113 */
+    0, /* 114 */
+    0, /* 115 */
+    0, /* 116 */
+    0, /* 117 */
+    0, /* 118 */
+    0, /* 119 */
+    0, /* 120 */
+    0, /* 121 */
+    0, /* 122 */
+    0, /* 123 */
+    0, /* 124 */
+    0, /* 125 */
+    0, /* 126 */
+    0, /* 127 */
+    0, /* 128 */
+    0, /* 129 */
+    0, /* 130 */
+    0, /* 131 */
+    0, /* 132 */
+    0, /* 133 */
+    0, /* 134 */
+    0, /* 135 */
+    0, /* 136 */
+    0, /* 137 */
+    0, /* 138 */
+    0, /* 139 */
+    0, /* 140 */
+    0, /* 141 */
+    0, /* 142 */
+    0, /* 143 */
+    0, /* 144 */
+    0, /* 145 */
+    0, /* 146 */
+    0, /* 147 */
+    0, /* 148 */
+    0, /* 149 */
+    0, /* 150 */
+    0, /* 151 */
+    0, /* 152 */
+    0, /* 153 */
+    0, /* 154 */
+    0, /* 155 */
+    0, /* 156 */
+    0, /* 157 */
+    0, /* 158 */
+    0, /* 159 */
+    0, /* 160 */
+    0, /* 161 */
+    0, /* 162 */
+    0, /* 163 */
+    0, /* 164 */
+    0, /* 165 */
+    0, /* 166 */
+    0, /* 167 */
+    0, /* 168 */
+    0, /* 169 */
+    0, /* 170 */
+    0, /* 171 */
+    0, /* 172 */
+    0, /* 173 */
+    0, /* 174 */
+    0, /* 175 */
+    0, /* 176 */
+    0, /* 177 */
+    0, /* 178 */
+    0, /* 179 */
+    0, /* 180 */
+    0, /* 181 */
+    0, /* 182 */
+    0, /* 183 */
+    0, /* 184 */
+    0, /* 185 */
+    0, /* 186 */
+    0, /* 187 */
+    0, /* 188 */
+    0, /* 189 */
+    0, /* 190 */
+    0, /* 191 */
+    0, /* 192 */
+    0, /* 193 */
+    0, /* 194 */
+    0, /* 195 */
+    0, /* 196 */
+    0, /* 197 */
+    0, /* 198 */
+    0, /* 199 */
+    0, /* 200 */
+    0, /* 201 */
+    0, /* 202 */
+    0, /* 203 */
+    0, /* 204 */
+    0, /* 205 */
+    0, /* 206 */
+    0, /* 207 */
+    0, /* 208 */
+    0, /* 209 */
+    0, /* 210 */
+    0, /* 211 */
+    0, /* 212 */
+    0, /* 213 */
+    0, /* 214 */
+    0, /* 215 */
+    0, /* 216 */
+    0, /* 217 */
+    0, /* 218 */
+    0, /* 219 */
+    0, /* 220 */
+    0, /* 221 */
+    0, /* 222 */
+    0, /* 223 */
+    0, /* 224 */
+    0, /* 225 */
+    0, /* 226 */
+    0, /* 227 */
+    0, /* 228 */
+    0, /* 229 */
+    0, /* 230 */
+    0, /* 231 */
+    0, /* 232 */
+    0, /* 233 */
+    0, /* 234 */
+    0, /* 235 */
+    0, /* 236 */
+    0, /* 237 */
+    0, /* 238 */
+    0, /* 239 */
+    0, /* 240 */
+    0, /* 241 */
+    0, /* 242 */
+    0, /* 243 */
+    0, /* 244 */
+    0, /* 245 */
+    0, /* 246 */
+    0, /* 247 */
+    0, /* 248 */
+    0, /* 249 */
+    0, /* 250 */
+    0, /* 251 */
+    0, /* 252 */
+    0, /* 253 */
+    0, /* 254 */
+    0  /* 255 */
+};
+
+/* all possible categories: When category is added it shall be added to this array. */
+static const AsterixField ****categories[] = {
+    NULL, /* 000 */
+    I001, /* 001 */
+    I002, /* 002 */
+    NULL, /* 003 */
+    NULL, /* 004 */
+    NULL, /* 005 */
+    NULL, /* 006 */
+    NULL, /* 007 */
+    I008, /* 008 */
+    I009, /* 009 */
+    NULL, /* 010 */
+    NULL, /* 011 */
+    NULL, /* 012 */
+    NULL, /* 013 */
+    NULL, /* 014 */
+    NULL, /* 015 */
+    NULL, /* 016 */
+    NULL, /* 017 */
+    NULL, /* 018 */
+    NULL, /* 019 */
+    NULL, /* 020 */
+    NULL, /* 021 */
+    NULL, /* 022 */
+    NULL, /* 023 */
+    NULL, /* 024 */
+    NULL, /* 025 */
+    NULL, /* 026 */
+    NULL, /* 027 */
+    NULL, /* 028 */
+    NULL, /* 029 */
+    NULL, /* 030 */
+    NULL, /* 031 */
+    NULL, /* 032 */
+    NULL, /* 033 */
+    I034, /* 034 */
+    NULL, /* 035 */
+    NULL, /* 036 */
+    NULL, /* 037 */
+    NULL, /* 038 */
+    NULL, /* 039 */
+    NULL, /* 040 */
+    NULL, /* 041 */
+    NULL, /* 042 */
+    NULL, /* 043 */
+    NULL, /* 044 */
+    NULL, /* 045 */
+    NULL, /* 046 */
+    NULL, /* 047 */
+    I048, /* 048 */
+    NULL, /* 049 */
+    NULL, /* 050 */
+    NULL, /* 051 */
+    NULL, /* 052 */
+    NULL, /* 053 */
+    NULL, /* 054 */
+    NULL, /* 055 */
+    NULL, /* 056 */
+    NULL, /* 057 */
+    NULL, /* 058 */
+    NULL, /* 059 */
+    NULL, /* 060 */
+    NULL, /* 061 */
+    I062, /* 062 */
+    I063, /* 063 */
+    NULL, /* 064 */
+    I065, /* 065 */
+    NULL, /* 066 */
+    NULL, /* 067 */
+    NULL, /* 068 */
+    NULL, /* 069 */
+    NULL, /* 070 */
+    NULL, /* 071 */
+    NULL, /* 072 */
+    NULL, /* 073 */
+    NULL, /* 074 */
+    NULL, /* 075 */
+    NULL, /* 076 */
+    NULL, /* 077 */
+    NULL, /* 078 */
+    NULL, /* 079 */
+    NULL, /* 080 */
+    NULL, /* 081 */
+    NULL, /* 082 */
+    NULL, /* 083 */
+    NULL, /* 084 */
+    NULL, /* 085 */
+    NULL, /* 086 */
+    NULL, /* 087 */
+    NULL, /* 088 */
+    NULL, /* 089 */
+    NULL, /* 090 */
+    NULL, /* 091 */
+    NULL, /* 092 */
+    NULL, /* 093 */
+    NULL, /* 094 */
+    NULL, /* 095 */
+    NULL, /* 096 */
+    NULL, /* 097 */
+    NULL, /* 098 */
+    NULL, /* 099 */
+    NULL, /* 100 */
+    NULL, /* 101 */
+    NULL, /* 102 */
+    NULL, /* 103 */
+    NULL, /* 104 */
+    NULL, /* 105 */
+    NULL, /* 106 */
+    NULL, /* 107 */
+    NULL, /* 108 */
+    NULL, /* 109 */
+    NULL, /* 110 */
+    NULL, /* 111 */
+    NULL, /* 112 */
+    NULL, /* 113 */
+    NULL, /* 114 */
+    NULL, /* 115 */
+    NULL, /* 116 */
+    NULL, /* 117 */
+    NULL, /* 118 */
+    NULL, /* 119 */
+    NULL, /* 120 */
+    NULL, /* 121 */
+    NULL, /* 122 */
+    NULL, /* 123 */
+    NULL, /* 124 */
+    NULL, /* 125 */
+    NULL, /* 126 */
+    NULL, /* 127 */
+    NULL, /* 128 */
+    NULL, /* 129 */
+    NULL, /* 130 */
+    NULL, /* 131 */
+    NULL, /* 132 */
+    NULL, /* 133 */
+    NULL, /* 134 */
+    NULL, /* 135 */
+    NULL, /* 136 */
+    NULL, /* 137 */
+    NULL, /* 138 */
+    NULL, /* 139 */
+    NULL, /* 140 */
+    NULL, /* 141 */
+    NULL, /* 142 */
+    NULL, /* 143 */
+    NULL, /* 144 */
+    NULL, /* 145 */
+    NULL, /* 146 */
+    NULL, /* 147 */
+    NULL, /* 148 */
+    NULL, /* 149 */
+    NULL, /* 150 */
+    NULL, /* 151 */
+    NULL, /* 152 */
+    NULL, /* 153 */
+    NULL, /* 154 */
+    NULL, /* 155 */
+    NULL, /* 156 */
+    NULL, /* 157 */
+    NULL, /* 158 */
+    NULL, /* 159 */
+    NULL, /* 160 */
+    NULL, /* 161 */
+    NULL, /* 162 */
+    NULL, /* 163 */
+    NULL, /* 164 */
+    NULL, /* 165 */
+    NULL, /* 166 */
+    NULL, /* 167 */
+    NULL, /* 168 */
+    NULL, /* 169 */
+    NULL, /* 170 */
+    NULL, /* 171 */
+    NULL, /* 172 */
+    NULL, /* 173 */
+    NULL, /* 174 */
+    NULL, /* 175 */
+    NULL, /* 176 */
+    NULL, /* 177 */
+    NULL, /* 178 */
+    NULL, /* 179 */
+    NULL, /* 180 */
+    NULL, /* 181 */
+    NULL, /* 182 */
+    NULL, /* 183 */
+    NULL, /* 184 */
+    NULL, /* 185 */
+    NULL, /* 186 */
+    NULL, /* 187 */
+    NULL, /* 188 */
+    NULL, /* 189 */
+    NULL, /* 190 */
+    NULL, /* 191 */
+    NULL, /* 192 */
+    NULL, /* 193 */
+    NULL, /* 194 */
+    NULL, /* 195 */
+    NULL, /* 196 */
+    NULL, /* 197 */
+    NULL, /* 198 */
+    NULL, /* 199 */
+    NULL, /* 200 */
+    NULL, /* 201 */
+    NULL, /* 202 */
+    NULL, /* 203 */
+    NULL, /* 204 */
+    NULL, /* 205 */
+    NULL, /* 206 */
+    NULL, /* 207 */
+    NULL, /* 208 */
+    NULL, /* 209 */
+    NULL, /* 210 */
+    NULL, /* 211 */
+    NULL, /* 212 */
+    NULL, /* 213 */
+    NULL, /* 214 */
+    NULL, /* 215 */
+    NULL, /* 216 */
+    NULL, /* 217 */
+    NULL, /* 218 */
+    NULL, /* 219 */
+    NULL, /* 220 */
+    NULL, /* 221 */
+    NULL, /* 222 */
+    NULL, /* 223 */
+    NULL, /* 224 */
+    NULL, /* 225 */
+    NULL, /* 226 */
+    NULL, /* 227 */
+    NULL, /* 228 */
+    NULL, /* 229 */
+    NULL, /* 230 */
+    NULL, /* 231 */
+    NULL, /* 232 */
+    NULL, /* 233 */
+    NULL, /* 234 */
+    NULL, /* 235 */
+    NULL, /* 236 */
+    NULL, /* 237 */
+    NULL, /* 238 */
+    NULL, /* 239 */
+    NULL, /* 240 */
+    NULL, /* 241 */
+    NULL, /* 242 */
+    NULL, /* 243 */
+    NULL, /* 244 */
+    NULL, /* 245 */
+    NULL, /* 246 */
+    NULL, /* 247 */
+    NULL, /* 248 */
+    NULL, /* 249 */
+    NULL, /* 250 */
+    NULL, /* 251 */
+    NULL, /* 252 */
+    NULL, /* 253 */
+    NULL, /* 254 */
+    NULL  /* 255 */
 };
 
 
@@ -4960,7 +5634,6 @@ static void dissect_asterix_packet (tvbuff_t *tvb, proto_tree *tree)
     for (i = 0; i < tvb_reported_length (tvb); i += length + 3) {
         category = tvb_get_guint8 (tvb, i);
         length = (tvb_get_guint8 (tvb, i + 1) << 8) + tvb_get_guint8 (tvb, i + 2) - 3; /* -3 for category and length */
-        /*tvb_memcpy (tvb, (guint8 *)&length, i + 1, sizeof (length));*/ /* This might not work in different endianness system */
 
         asterix_packet_item = NULL;
         asterix_packet_tree = NULL;
@@ -4992,7 +5665,7 @@ static void dissect_asterix_data_block (tvbuff_t *tvb, guint offset, proto_tree
             /*show_fspec (tvb, asterix_message_tree, offset + inner_offset, fspec_len);*/
             proto_tree_add_item (asterix_message_tree, hf_asterix_fspec, tvb, offset + inner_offset, fspec_len, ENC_NA);
 
-            size = dissect_asterix_fields (tvb, offset + inner_offset, asterix_message_tree, category, uap[category][active_uap]);
+            size = dissect_asterix_fields (tvb, offset + inner_offset, asterix_message_tree, category, categories[category][global_categories_version[category]][active_uap]);
 
             inner_offset += size + fspec_len;
         }
@@ -5197,16 +5870,18 @@ static guint8 asterix_get_active_uap (tvbuff_t *tvb, guint offset, guint8 catego
     int i, inner_offset;
     AsterixField **current_uap;
 
-    if (uap[category][1] != NULL) { /* if exists another uap */
-        current_uap = (AsterixField **)uap[category][0];
-        if (current_uap != NULL) {
-            inner_offset = asterix_fspec_len (tvb, offset);
-            for (i = 0; current_uap[i] != NULL; i++) {
-                if (asterix_field_exists (tvb, offset, i)) {
-                    if (current_uap[i]->type & UAP) {
-                        return tvb_get_guint8 (tvb, offset + inner_offset) >> 7;
+    if (categories[category] != NULL) { /* if category is supported */
+        if (categories[category][global_categories_version[category]][1] != NULL) { /* if exists another uap */
+            current_uap = (AsterixField **)categories[category][global_categories_version[category]][0];
+            if (current_uap != NULL) {
+                inner_offset = asterix_fspec_len (tvb, offset);
+                for (i = 0; current_uap[i] != NULL; i++) {
+                    if (asterix_field_exists (tvb, offset, i)) {
+                        if (current_uap[i]->type & UAP) {
+                            return tvb_get_guint8 (tvb, offset + inner_offset) >> 7;
+                        }
+                        inner_offset += asterix_field_length (tvb, offset + inner_offset, current_uap[i]);
                     }
-                    inner_offset += asterix_field_length (tvb, offset + inner_offset, current_uap[i]);
                 }
             }
         }
@@ -5233,15 +5908,17 @@ static int asterix_message_length (tvbuff_t *tvb, guint offset, guint8 category,
     int i, size;
     AsterixField **current_uap;
 
-    current_uap = (AsterixField **)uap[category][active_uap];
-    if (current_uap != NULL) {
-        size = asterix_fspec_len (tvb, offset);
-        for (i = 0; current_uap[i] != NULL; i++) {
-            if (asterix_field_exists (tvb, offset, i)) {
-                size += asterix_field_length (tvb, offset + size, current_uap[i]);
+    if (categories[category] != NULL) { /* if category is supported */
+        current_uap = (AsterixField **)categories[category][global_categories_version[category]][active_uap];
+        if (current_uap != NULL) {
+            size = asterix_fspec_len (tvb, offset);
+            for (i = 0; current_uap[i] != NULL; i++) {
+                if (asterix_field_exists (tvb, offset, i)) {
+                    size += asterix_field_length (tvb, offset + size, current_uap[i]);
+                }
             }
+            return size;
         }
-        return size;
     }
     return 0;
 }
@@ -5698,9 +6375,13 @@ void proto_register_asterix (void)
         { &hf_062_080_DUPT, { "DUPT", "asterix.062_080_DUPT", FT_UINT8, BASE_DEC, VALS (valstr_062_080_DUPT), 0x80, NULL, HFILL } },
         { &hf_062_080_DUPF, { "DUPT", "asterix.062_080_DUPF", FT_UINT8, BASE_DEC, VALS (valstr_062_080_DUPF), 0x40, NULL, HFILL } },
         { &hf_062_080_DUPM, { "DUPM", "asterix.062_080_DUPM", FT_UINT8, BASE_DEC, VALS (valstr_062_080_DUPM), 0x20, NULL, HFILL } },
+        { &hf_062_080_FRIFOE, { "FRI/FOE", "asterix.062_080_FRIFOE", FT_UINT8, BASE_DEC, VALS (valstr_062_080_FRIFOE), 0x60, NULL, HFILL } },
+        { &hf_062_080_COA, { "COA", "asterix.062_080_COA", FT_UINT8, BASE_DEC, VALS (valstr_062_080_COA), 0x80, NULL, HFILL } },
         { &hf_062_100, { "100, Calculated Track Position (Cartesian)", "asterix.062_100", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_100_X, { "X[m]", "asterix.062_100_X", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_100_Y, { "Y[m]", "asterix.062_100_Y", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_100_X_v0_17, { "X[NM]", "asterix.062_100_X_v0_17", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_100_Y_v0_17, { "Y[NM]", "asterix.062_100_Y_v0_17", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_105, { "105, Calculated Position In WGS-84 Co-ordinates", "asterix.062_105", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_105_LAT, { "LAT[deg]", "asterix.062_105_LAT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_105_LON, { "LON[deg]", "asterix.062_105_LON", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -5729,11 +6410,18 @@ void proto_register_asterix (void)
         { &hf_062_110_06, { "#6: Time Offset for POS and GA", "asterix.062_11_06", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_110_06_TOS, { "TOS[s]", "asterix.062_110_06_TOS", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_110_07, { "#7: X Pulse Presence", "asterix.062_110_07", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
-        { &hf_062_110_07_X5, { "X5", "asterix.062_110_07_X5", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_X5), 0x01, NULL, HFILL } },
+        { &hf_062_110_07_X5, { "X5", "asterix.062_110_07_X5", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_X5), 0x10, NULL, HFILL } },
         { &hf_062_110_07_XC, { "XC", "asterix.062_110_07_XC", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_XC), 0x08, NULL, HFILL } },
         { &hf_062_110_07_X3, { "X3", "asterix.062_110_07_X3", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_X3), 0x04, NULL, HFILL } },
         { &hf_062_110_07_X2, { "X2", "asterix.062_110_07_X2", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_X2), 0x02, NULL, HFILL } },
         { &hf_062_110_07_X1, { "X1", "asterix.062_110_07_X1", FT_UINT8, BASE_DEC, VALS (valstr_062_110_07_X1), 0x01, NULL, HFILL } },
+        /* v.0.17 */
+        { &hf_062_110_v0_17, { "110, Track Mode 1 Code", "asterix.062_110_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_110_A4, { "A4", "asterix.062_110_A4", FT_UINT8, BASE_DEC, NULL, 0x10, NULL, HFILL } },
+        { &hf_062_110_A2, { "A2", "asterix.062_110_A2", FT_UINT8, BASE_DEC, NULL, 0x08, NULL, HFILL } },
+        { &hf_062_110_A1, { "A1", "asterix.062_110_A1", FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL } },
+        { &hf_062_110_B2, { "B2", "asterix.062_110_B2", FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL } },
+        { &hf_062_110_B1, { "B1", "asterix.062_110_B1", FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL } },
         { &hf_062_120, { "120, Track Mode 2 Code", "asterix.062_120", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_120_SQUAWK, { "SQUAWK", "asterix.062_120_SQUAWK", FT_UINT16, BASE_OCT, NULL, 0x0fff, NULL, HFILL } },
         { &hf_062_130, { "130, Calculated Track Geometric Altitude", "asterix.062_130", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -5743,6 +6431,9 @@ void proto_register_asterix (void)
         { &hf_062_135_ALT, { "Altitude[FL]", "asterix.062_135_ALT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_136, { "136, Measured Flight Level", "asterix.062_136", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_136_ALT, { "Measured Flight Level[FL]", "asterix.062_136_ALT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_180, { "180, Calculated Track Velocity (Polar)", "asterix.062_180", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_180_SPEED, { "Speed[NM/s]", "asterix.062_180_SPEED", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_180_HEADING, { "Heading[deg]", "asterix.062_180_HEADING", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_185, { "185, Calculated Track Velocity (Cartesian)", "asterix.062_185", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_185_VX, { "Vx[m]", "asterix.062_185_VX", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_185_VY, { "Vy[m]", "asterix.062_185_VY", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -5754,8 +6445,13 @@ void proto_register_asterix (void)
         { &hf_062_210, { "210, Calculated Acceleration (Cartesian)", "asterix.062_210", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_210_AX, { "Ax[m/s^2]", "asterix.062_210_AX", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_210_AY, { "Ay[m/s^2]", "asterix.062_210_AY", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        /* v.0.17 */
+        { &hf_062_210_v0_17, { "210, Calculated Longitudinal Acceleration", "asterix.062_210_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_210_CLA, { "CLA[NM/s^2]", "asterix.062_210_CLA", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_220, { "220, Calculated Rate Of Climb/Descent", "asterix.062_220", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_220_ROCD, { "ROCD[feet/minute]", "asterix.062_220_ROCD", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_240, { "240, Calculated Rate Of Turn", "asterix.062_240", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_240_ROT, { "TOR[deg/s]", "asterix.062_240_ROT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_245, { "245, Target Identification", "asterix.062_245", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_270, { "270, Target Size & Orientation", "asterix.062_270", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_270_LENGTH, { "Length[m]", "asterix.062_270_LENGTH", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -5782,6 +6478,25 @@ void proto_register_asterix (void)
         { &hf_062_290_09_LOP, { "LOP[s]", "asterix.062_290_09_LOP", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_290_10, { "#10: Multilateration Age", "asterix.062_290_10", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_290_10_MLT, { "MLT[s]", "asterix.062_290_10_MLT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        /* v.0.17 */
+        { &hf_062_290_01_v0_17, { "#1: PSR Age", "asterix.062_290_01_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_01_PSR, { "PSR[s]", "asterix.062_290_01_PSR", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_02_v0_17, { "#2: PSR Age", "asterix.062_290_02_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_02_SSR, { "SSR[s]", "asterix.062_290_02_SSR", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_03_v0_17, { "#3: Mode 3/A Age", "asterix.062_290_03_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_03_MDA, { "MDA[s]", "asterix.062_290_03_MDA", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_04_v0_17, { "#4: Meausered Flight Level Age", "asterix.062_290_04_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_04_MFL, { "MFL[s]", "asterix.062_290_04_MFL", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_05_v0_17, { "#5: Mode S Age", "asterix.062_290_05_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_05_MDS, { "MDS[s]", "asterix.062_290_05_MDS", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_06_v0_17, { "#6: ADS Age", "asterix.062_290_06_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_06_ADS, { "ADS[s]", "asterix.062_290_06_ADS", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_07_v0_17, { "#7: ADS-B Age", "asterix.062_290_07_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_07_ADB, { "ADB[s]", "asterix.062_290_07_ADB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_08_v0_17, { "#8: Mode 1 Age", "asterix.062_290_08_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_08_MD1, { "MD1[s]", "asterix.062_290_08_MD1", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_09_v0_17, { "#9: Mode 2 Age", "asterix.062_290_09_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_290_09_MD2, { "MD2[s]", "asterix.062_290_09_MD2", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_295, { "295, Track Data Ages", "asterix.062_295", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_295_01, { "#1: Measured Flight Level Age", "asterix.062_295_01", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_295_01_MFL, { "MFL[s]", "asterix.062_295_01_MFL", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -5959,6 +6674,21 @@ void proto_register_asterix (void)
         { &hf_062_380_27_MACH, { "MACH[mach]", "asterix.062_380_27_MACH", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_380_28, { "#28: Barometric Pressure Setting (derived from Mode S BDS 4,0)", "asterix.062_380_28", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_380_28_BPS, { "BPS[mb]", "asterix.062_380_28_BPS", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        /* v.0.17 */
+        { &hf_062_380_v0_17, { "380, Mode S Related Data", "asterix.062_380", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_01_v0_17, { "#1: Mode S MB Data", "asterix.062_380_01_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_02_v0_17, { "#2: Aircraft Address", "asterix.062_380_02_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_03_v0_17, { "#3: Communications / ACAS", "asterix.062_380_03_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_04_v0_17, { "#4: Communications/ACAS Capability and Flight Status", "asterix.062_380_04_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_04_COM, { "COM", "asterix.062_380_04_COM", FT_UINT8, BASE_DEC, VALS (valstr_062_380_04_COM), 0xe0, NULL, HFILL } },
+        { &hf_062_380_04_STAT, { "STAT", "asterix.062_380_04_STAT", FT_UINT8, BASE_DEC, VALS (valstr_062_380_04_STAT), 0x1c, NULL, HFILL } },
+        { &hf_062_380_04_SSC, { "SSC", "asterix.062_380_04_SSC", FT_UINT8, BASE_DEC, VALS (valstr_062_380_04_SSC), 0x80, NULL, HFILL } },
+        { &hf_062_380_04_ARC, { "ARC", "asterix.062_380_04_ARC", FT_UINT8, BASE_DEC, VALS (valstr_062_380_04_ARC), 0x40, NULL, HFILL } },
+        { &hf_062_380_04_AIC, { "AIC", "asterix.062_380_04_AIC", FT_UINT8, BASE_DEC, VALS (valstr_062_380_04_AIC), 0x20, NULL, HFILL } },
+        { &hf_062_380_04_B1A, { "B1A", "asterix.062_380_04_B1A", FT_UINT8, BASE_DEC, NULL, 0x10, NULL, HFILL } },
+        { &hf_062_380_04_B1B, { "B1B", "asterix.062_380_04_B1B", FT_UINT8, BASE_HEX, NULL, 0x0f, NULL, HFILL } },
+        { &hf_062_380_05_v0_17, { "#5: ACAS Resolution Advisory Report", "asterix.062_380_05_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_380_05_MB, { "#4: ACAS Resolution Advisory Report", "asterix.062_380_05_MB", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_390, { "390, Flight Plan Related Data", "asterix.062_390", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_390_01, { "#1: FPPS Identification Tag", "asterix.062_01", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_390_02, { "#2: Callsign", "asterix.062_02", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
@@ -6030,6 +6760,23 @@ void proto_register_asterix (void)
         { &hf_062_500_07_AAY, { "AA X[m/s^2]", "asterix.062_500_07_AAY", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_500_08, { "#8: Estimated Accuracy Of Rate Of Climb/Descent", "asterix.062_08", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_500_08_ARC, { "ARC[feet/min]", "asterix.062_500_08_ARC", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        /* v.0.17 */
+        { &hf_062_500_01_APCX_8bit, { "APC X[NM]", "asterix.062_500_01_APCX_8bit", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_01_APCY_8bit, { "APC Y[NM]", "asterix.062_500_01_APCY_8bit", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_02_v0_17, { "#2: Estimated Accuracy Of Track Position (WGS-84)", "asterix.062_500_02_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_02_APWLAT, { "APW LAT[deg]", "asterix.062_500_02_APWLAT", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_02_APWLON, { "APW LON[deg]", "asterix.062_500_02_APWLON", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_03_v0_17, { "#3: Estimated Accuracy Of Track Altitude", "asterix.062_500_03_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_03_ATA, { "ATA [feet]", "asterix.062_500_03_ATA", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_04_v0_17, { "#4: Estimated Accuracy Of Calculated Track Flight Level", "asterix.062_500_04_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_04_ATF, { "ATF [FL]", "asterix.062_500_04_ATF", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_05_v0_17, { "#5: Estimated Accuracy Of Track Velocity (Polar)", "asterix.062_500_05_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_05_ATVS, { "ATV X[kt]", "asterix.062_500_05_ATVS", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_05_ATVH, { "ATV Y[deg]", "asterix.062_500_05_ATVH", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_06_v0_17, { "#6: Estimated Accuracy Of Rate Of Turn", "asterix.062_500_06_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_06_ART, { "ART[deg/s]", "asterix.062_500_06_ART", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_07_v0_17, { "#7: Estimated Accuracy Of Longitudinal Acceleration", "asterix.062_500_07_v0_17", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+        { &hf_062_500_07_ALA, { "ALA[NM/s^2]", "asterix.062_500_07_ALA", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_510, { "510, Composed Track Number", "asterix.062_510", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
         { &hf_062_510_SID, { "SID", "asterix.062_510_SID", FT_UINT24, BASE_DEC, NULL, 0xfffffe, NULL, HFILL } },
         { &hf_062_510_STN, { "STN", "asterix.062_510_STN", FT_UINT24, BASE_DEC, NULL, 0xfffffe, NULL, HFILL } },
@@ -6526,9 +7273,13 @@ void proto_register_asterix (void)
         &ett_062_080_DUPT,
         &ett_062_080_DUPF,
         &ett_062_080_DUPM,
+        &ett_062_080_FRIFOE,
+        &ett_062_080_COA,
         &ett_062_100,
         &ett_062_100_X,
         &ett_062_100_Y,
+        &ett_062_100_X_v0_17,
+        &ett_062_100_Y_v0_17,
         &ett_062_105,
         &ett_062_105_LAT,
         &ett_062_105_LON,
@@ -6562,6 +7313,13 @@ void proto_register_asterix (void)
         &ett_062_110_07_X3,
         &ett_062_110_07_X2,
         &ett_062_110_07_X1,
+        /* v.0.17 */
+        &ett_062_110_v0_17,
+        &ett_062_110_A4,
+        &ett_062_110_A2,
+        &ett_062_110_A1,
+        &ett_062_110_B2,
+        &ett_062_110_B1,
         &ett_062_120,
         &ett_062_120_SQUAWK,
         &ett_062_130,
@@ -6571,6 +7329,9 @@ void proto_register_asterix (void)
         &ett_062_135_ALT,
         &ett_062_136,
         &ett_062_136_ALT,
+        &ett_062_180,
+        &ett_062_180_SPEED,
+        &ett_062_180_HEADING,
         &ett_062_185,
         &ett_062_185_VX,
         &ett_062_185_VY,
@@ -6582,8 +7343,12 @@ void proto_register_asterix (void)
         &ett_062_210,
         &ett_062_210_AX,
         &ett_062_210_AY,
+        &ett_062_210_CLA,
+        &ett_062_210_v0_17,
         &ett_062_220,
         &ett_062_220_ROCD,
+        &ett_062_240,
+        &ett_062_240_ROT,
         &ett_062_245,
         &ett_062_270,
         &ett_062_270_LENGTH,
@@ -6610,6 +7375,25 @@ void proto_register_asterix (void)
         &ett_062_290_09_LOP,
         &ett_062_290_10,
         &ett_062_290_10_MLT,
+        /* v.0.17 */
+        &ett_062_290_01_v0_17,
+        &ett_062_290_01_PSR,
+        &ett_062_290_02_v0_17,
+        &ett_062_290_02_SSR,
+        &ett_062_290_03_v0_17,
+        &ett_062_290_03_MDA,
+        &ett_062_290_04_v0_17,
+        &ett_062_290_04_MFL,
+        &ett_062_290_05_v0_17,
+        &ett_062_290_05_MDS,
+        &ett_062_290_06_v0_17,
+        &ett_062_290_06_ADS,
+        &ett_062_290_07_v0_17,
+        &ett_062_290_07_ADB,
+        &ett_062_290_08_v0_17,
+        &ett_062_290_08_MD1,
+        &ett_062_290_09_v0_17,
+        &ett_062_290_09_MD2,
         &ett_062_295,
         &ett_062_295_01,
         &ett_062_295_01_MFL,
@@ -6696,10 +7480,10 @@ void proto_register_asterix (void)
         &ett_062_340_06_SIM,
         &ett_062_340_06_RAB,
         &ett_062_340_06_TST,
+        &ett_062_380,
         &ett_062_380_01,
         &ett_062_380_02,
         &ett_062_380_03,
-        &ett_062_380,
         &ett_062_380_03_MH,
         &ett_062_380_04,
         &ett_062_380_04_IM,
@@ -6787,6 +7571,21 @@ void proto_register_asterix (void)
         &ett_062_380_27_MACH,
         &ett_062_380_28,
         &ett_062_380_28_BPS,
+        /* v.0.17 */
+        &ett_062_380_v0_17,
+        &ett_062_380_01_v0_17,
+        &ett_062_380_02_v0_17,
+        &ett_062_380_03_v0_17,
+        &ett_062_380_04_v0_17,
+        &ett_062_380_04_COM,
+        &ett_062_380_04_STAT,
+        &ett_062_380_04_SSC,
+        &ett_062_380_04_ARC,
+        &ett_062_380_04_AIC,
+        &ett_062_380_04_B1A,
+        &ett_062_380_04_B1B,
+        &ett_062_380_05_v0_17,
+        &ett_062_380_05_MB,
         &ett_062_390,
         &ett_062_390_01,
         &ett_062_390_02,
@@ -6858,14 +7657,41 @@ void proto_register_asterix (void)
         &ett_062_500_07_AAY,
         &ett_062_500_08,
         &ett_062_500_08_ARC,
+        /* v.0.17 */
+        &ett_062_500_01_APCX_8bit,
+        &ett_062_500_01_APCY_8bit,
+        &ett_062_500_02_v0_17,
+        &ett_062_500_02_APWLAT,
+        &ett_062_500_02_APWLON,
+        &ett_062_500_03_v0_17,
+        &ett_062_500_03_ATA,
+        &ett_062_500_04_v0_17,
+        &ett_062_500_04_ATF,
+        &ett_062_500_05_v0_17,
+        &ett_062_500_05_ATVS,
+        &ett_062_500_05_ATVH,
+        &ett_062_500_06_v0_17,
+        &ett_062_500_06_ART,
+        &ett_062_500_07_v0_17,
+        &ett_062_500_07_ALA,
         &ett_062_510,
         &ett_062_510_SID,
         &ett_062_510_STN,
         &ett_062_RE,
         &ett_062_RE_CST,
-        &ett_062_RE_CSN,
+        &ett_062_RE_CST_SAC,
+        &ett_062_RE_CST_SIC,
+        &ett_062_RE_CST_TYP,
+        &ett_062_RE_CST_TRK_NUM,
+        &ett_062_RE_CSNT,
+        &ett_062_RE_CSNT_SAC,
+        &ett_062_RE_CSNT_SIC,
+        &ett_062_RE_CSNT_TYP,
         &ett_062_RE_TVS,
+        &ett_062_RE_TVS_VX,
+        &ett_062_RE_TVS_VY,
         &ett_062_RE_STS,
+        &ett_062_RE_STS_FDR,
         &ett_062_SP,
         /* Category 063 */
         &ett_063_010,
@@ -6893,6 +7719,8 @@ void proto_register_asterix (void)
         &ett_065_SP
     };
 
+    module_t *asterix_prefs_module;
+
     proto_asterix = proto_register_protocol (
         "ASTERIX packet", /* name       */
         "ASTERIX",        /* short name */
@@ -6903,6 +7731,18 @@ void proto_register_asterix (void)
     proto_register_subtree_array (ett, array_length (ett));
 
     asterix_handle = register_dissector ("asterix", dissect_asterix, proto_asterix);
+
+    asterix_prefs_module = prefs_register_protocol (proto_asterix, proto_reg_handoff_asterix);
+
+    prefs_register_enum_preference (asterix_prefs_module, "i001_version", "I001 version", "Select the CAT001 version", &global_categories_version[1],  I001_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i002_version", "I002 version", "Select the CAT001 version", &global_categories_version[2],  I002_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i008_version", "I008 version", "Select the CAT008 version", &global_categories_version[8],  I008_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i009_version", "I009 version", "Select the CAT009 version", &global_categories_version[9],  I009_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i034_version", "I034 version", "Select the CAT034 version", &global_categories_version[34], I034_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i048_version", "I048 version", "Select the CAT048 version", &global_categories_version[48], I048_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i062_version", "I062 version", "Select the CAT062 version", &global_categories_version[62], I062_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i063_version", "I063 version", "Select the CAT063 version", &global_categories_version[63], I063_versions, FALSE);
+    prefs_register_enum_preference (asterix_prefs_module, "i065_version", "I065 version", "Select the CAT065 version", &global_categories_version[65], I065_versions, FALSE);
 }
 
 void proto_reg_handoff_asterix (void)
index e6885745c4e198922076fb966501568644859dab..26f63331fd1025af41ea13d02a7e80b591886423 100644 (file)
@@ -1055,8 +1055,9 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
   if (machine_ofs)
     proto_tree_add_item(tree, hf_asp_server_type, tvb, machine_ofs, 1, ENC_ASCII|ENC_NA);
 
-  ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
+  ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
   if (ofs) {
+    ofs += offset;
     nbe = tvb_get_guint8(tvb, ofs);
     ti = proto_tree_add_text(tree, tvb, ofs, 1, "Version list: %u", nbe);
     ofs++;
@@ -1068,8 +1069,9 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
     }
   }
 
-  ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
+  ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
   if (ofs) {
+    ofs += offset;
     nbe = tvb_get_guint8(tvb, ofs);
     ti = proto_tree_add_text(tree, tvb, ofs, 1, "UAMS list: %u", nbe);
     ofs++;
@@ -1081,9 +1083,11 @@ dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
     }
   }
 
-  ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
-  if (ofs)
+  ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
+  if (ofs) {
+    ofs += offset;
     proto_tree_add_item(tree, hf_asp_server_icon, tvb, ofs, 256, ENC_NA);
+  }
 
   if (sign_ofs) {
     proto_tree_add_item(tree, hf_asp_server_signature, tvb, sign_ofs, 16, ENC_NA);
index c2d3cf19b430c61c9f697dd06ca77e7a07cb4807..6293bf910532269003f2fb01e3edeaecae8ec301 100644 (file)
@@ -4893,7 +4893,7 @@ dissect_ber_constrained_bitstring(gboolean implicit_tag, asn1_ctx_t *actx, proto
         sep  = " (";
         term = FALSE;
         nb = named_bits;
-        bitstring = tvb_get_string(wmem_packet_scope(), tvb, offset, len);
+        bitstring = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, offset, len);
 
         while (nb->p_id) {
             if ((len > 0) && (nb->bit < (8*len-pad))) {
index f6817dddd7a7f8609f2a857a55d5ef1da5fc6a4a..64d4c4d631cafe10a8451aaea780af0cef435b63 100644 (file)
@@ -807,7 +807,7 @@ static const value_string link_state_nlri_protocol_id_values[] = {
 };
 
 /* Link-State routing universes */
-static const value_string link_state_nlri_routing_universe_values[] = {
+static const val64_string link_state_nlri_routing_universe_values[] = {
         {BGP_LS_NLRI_ROUTING_UNIVERSE_LEVEL_3, "L3 packet topology" },
         {BGP_LS_NLRI_ROUTING_UNIVERSE_LEVEL_1, "L1 optical topology"},
         {0, NULL}
index f9c82aac5f84e19d45a4e917da3e07c3b89f5cc6..8648b877d967880ee19c57dbb7dcf09004b6abac 100644 (file)
@@ -448,7 +448,8 @@ static int hf_bootp_option_6RD_border_relay_ip = -1;                        /* 212 */
 static int hf_bootp_option_private_proxy_autodiscovery = -1;           /* 252 */
 static int hf_bootp_option_end = -1;                                   /* 255 */
 static int hf_bootp_option_end_overload = -1;                          /* 255 (with overload)*/
-
+static int hf_bootp_vendor_unknown_suboption = -1;
+static int hf_bootp_suboption_data = -1;
 
 
 
@@ -461,6 +462,8 @@ static gint ett_bootp_option77_instance = -1;
 static gint ett_bootp_option82_suboption = -1;
 static gint ett_bootp_option82_suboption9 = -1;
 static gint ett_bootp_option125_suboption = -1;
+static gint ett_bootp_option125_tr111_suboption = -1;
+static gint ett_bootp_option125_cl_suboption = -1;
 static gint ett_bootp_fqdn = -1;
 
 static expert_field ei_bootp_bad_length = EI_INIT;
@@ -802,6 +805,8 @@ static int dissect_packetcable_ietf_ccc(packet_info *pinfo, proto_item *v_ti, pr
                                        tvbuff_t *tvb, int optoff, int optend, int revision);
 static int dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
                                            tvbuff_t *tvb, int optoff, int optend);
+static int dissect_vendor_generic_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
+                                           tvbuff_t *tvb, int optoff, int optend);
 
 #define OPT53_DISCOVER "Discover"
 /* http://www.iana.org/assignments/bootp-dhcp-parameters */
@@ -1920,7 +1925,7 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
 
                        /* Add data for instance of User Class. */
                        proto_tree_add_item(o77_v_tree, hf_bootp_option77_user_class_data,
-                                       tvb, optoff + i + 1, byte, ENC_BIG_ENDIAN);
+                                       tvb, optoff + i + 1, byte, ENC_NA);
 
                        /* Slide to next instance of User Class if any. */
                        i += byte + 1;
@@ -2565,8 +2570,18 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, int voff,
                        break;
 
                        default:
-                               /* skip over the data and look for next enterprise number */
-                               optoff += s_option_len;
+                               s_end = optoff + s_option_len;
+                               if ( s_end > optend ) {
+                                       expert_add_info_format(pinfo, vti, &ei_bootp_option125_enterprise_malformed, "no room left in option for enterprise %u data", enterprise);
+                                       break;
+                               }
+
+                               e_tree = proto_item_add_subtree(vti, ett_bootp_option);
+                               while (optoff < s_end) {
+
+                               optoff = dissect_vendor_generic_suboption(pinfo, vti, e_tree, tvb, optoff, s_end);
+                       }
+                       break;
                        }
 
                        optleft -= s_option_len;
@@ -3275,6 +3290,29 @@ dissect_vendor_cablelabs_suboption(packet_info *pinfo, proto_item *v_ti, proto_t
        return optoff;
 }
 
+
+static int
+dissect_vendor_generic_suboption(packet_info *pinfo _U_, proto_item *v_ti _U_, proto_tree *v_tree,
+                                tvbuff_t *tvb, int optoff, int optend _U_)
+{
+       int         suboptoff = optoff;
+       guint8      subopt_len;
+       proto_item *item;
+       proto_tree *sub_tree;
+
+       item = proto_tree_add_item(v_tree, hf_bootp_vendor_unknown_suboption, tvb, optoff, 1, ENC_BIG_ENDIAN);
+       suboptoff+=1;
+
+       sub_tree = proto_item_add_subtree(item, ett_bootp_option125_suboption);
+       subopt_len = tvb_get_guint8(tvb,suboptoff);
+       proto_tree_add_item(sub_tree, hf_bootp_suboption_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
+       suboptoff++;
+       proto_tree_add_item(sub_tree, hf_bootp_suboption_data, tvb, suboptoff, subopt_len, ENC_NA);
+       suboptoff+= subopt_len;
+
+       return suboptoff;
+
+}
 static const value_string option43_alcatel_suboption_vals[] = {
        {  0, "Padding" },
        { 58, "Voice VLAN ID" },
@@ -3536,7 +3574,7 @@ dissect_vendor_tr111_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree
                                tvb, optoff, subopt_len+2, subopt, "(%d) %s",
                                subopt, val_to_str_const(subopt, option125_tr111_suboption_vals, "Unknown"));
 
-       o125_v_tree = proto_item_add_subtree(vti, hf_bootp_option125_tr111_suboption);
+       o125_v_tree = proto_item_add_subtree(vti, ett_bootp_option125_tr111_suboption);
        proto_tree_add_item(o125_v_tree, hf_bootp_suboption_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
        suboptoff++;
 
@@ -3629,7 +3667,7 @@ dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_
                                tvb, optoff, subopt_len+2, subopt, "(%d) %s",
                                subopt, val_to_str_const(subopt, option125_cl_suboption_vals, "Unknown"));
 
-       o125_v_tree = proto_item_add_subtree(vti, hf_bootp_option125_cl_suboption);
+       o125_v_tree = proto_item_add_subtree(vti, ett_bootp_option125_cl_suboption);
        proto_tree_add_item(o125_v_tree, hf_bootp_suboption_length, tvb, suboptoff, 1, ENC_BIG_ENDIAN);
        suboptoff++;
 
@@ -6848,6 +6886,15 @@ proto_register_bootp(void)
                    FT_UINT8, BASE_DEC, NULL, 0x0,
                    "Option 255: End (Overload)", HFILL }},
 
+               { &hf_bootp_vendor_unknown_suboption,
+                 { "Option 125 Suboption", "bootp.vendor.suboption",
+                   FT_UINT8, BASE_DEC, NULL, 0x0,
+                   NULL, HFILL }},
+
+               { &hf_bootp_suboption_data,
+                 { "Data", "bootp.vendor.data",
+                   FT_BYTES, BASE_NONE, NULL, 0x0,
+                   NULL, HFILL }},
        };
 
        static uat_field_t bootp_uat_flds[] = {
@@ -6867,6 +6914,8 @@ proto_register_bootp(void)
                &ett_bootp_option82_suboption,
                &ett_bootp_option82_suboption9,
                &ett_bootp_option125_suboption,
+               &ett_bootp_option125_tr111_suboption,
+               &ett_bootp_option125_cl_suboption,
                &ett_bootp_fqdn,
        };
 
index f576fdea5e62c79ce8febfe3bbdcbab35cc478aa..dbb94229e82900f01244cf9253471e7307a88497 100644 (file)
@@ -5369,54 +5369,54 @@ dissect_btcommon_le_channel_map(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
 {
     gint offset = 0;
 
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_39, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_38, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_37, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_36, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_35, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_34, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_33, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_32, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_0, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_1, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_2, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_3, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_4, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_5, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_6, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_7, tvb, offset, 1, ENC_NA);
     offset += 1;
 
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_31, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_30, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_29, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_28, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_27, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_26, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_25, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_24, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_8, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_9, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_10, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_11, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_12, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_13, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_14, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_15, tvb, offset, 1, ENC_NA);
     offset += 1;
 
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_23, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_22, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_21, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_20, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_19, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_18, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_17, tvb, offset, 1, ENC_NA);
     proto_tree_add_item(tree, hf_btcommon_le_channel_map_16, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_17, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_18, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_19, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_20, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_21, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_22, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_23, tvb, offset, 1, ENC_NA);
     offset += 1;
 
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_15, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_14, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_13, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_12, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_11, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_10, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_9, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_8, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_24, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_25, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_26, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_27, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_28, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_29, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_30, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_31, tvb, offset, 1, ENC_NA);
     offset += 1;
 
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_7, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_6, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_5, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_4, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_3, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_2, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_1, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_btcommon_le_channel_map_0, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_32, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_33, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_34, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_35, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_36, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_37, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_38, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_btcommon_le_channel_map_39, tvb, offset, 1, ENC_NA);
     offset += 1;
 
     return offset;
@@ -5854,205 +5854,205 @@ proto_register_btcommon(void)
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_39,
-            { "RF Channel 39 (2480 MHz - Advertising - 39)",         "btcommon.le_channel_map.39",
+            { "RF Channel 39 (2480 MHz - Reserved for Advertising - 39)",         "btcommon.le_channel_map.39",
             FT_BOOLEAN, 8, NULL, 0x80,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_38,
-            { "RF Channel 38 (2478 MHz - Data - 36)",                "btcommon.le_channel_map.38",
+            { "RF Channel 12 (2426 MHz - Reserved for Advertising - 38)",         "btcommon.le_channel_map.38",
             FT_BOOLEAN, 8, NULL, 0x40,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_37,
-            { "RF Channel 37 (2476 MHz - Data - 35)",                "btcommon.le_channel_map.37",
+            { "RF Channel 0 (2402 MHz - Reserved for Advertising - 37)",          "btcommon.le_channel_map.37",
             FT_BOOLEAN, 8, NULL, 0x20,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_36,
-            { "RF Channel 36 (2474 MHz - Data - 34)",                "btcommon.le_channel_map.36",
+            { "RF Channel 38 (2478 MHz - Data - 36)",                "btcommon.le_channel_map.36",
             FT_BOOLEAN, 8, NULL, 0x10,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_35,
-            { "RF Channel 35 (2472 MHz - Data - 33)",                "btcommon.le_channel_map.35",
+            { "RF Channel 37 (2476 MHz - Data - 35)",                "btcommon.le_channel_map.35",
             FT_BOOLEAN, 8, NULL, 0x08,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_34,
-            { "RF Channel 34 (2470 MHz - Data - 32)",                "btcommon.le_channel_map.34",
+            { "RF Channel 36 (2474 MHz - Data - 34)",                "btcommon.le_channel_map.34",
             FT_BOOLEAN, 8, NULL, 0x04,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_33,
-            { "RF Channel 33 (2468 MHz - Data - 31)",                "btcommon.le_channel_map.33",
+            { "RF Channel 35 (2472 MHz - Data - 33)",                "btcommon.le_channel_map.33",
             FT_BOOLEAN, 8, NULL, 0x02,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_32,
-            { "RF Channel 32 (2466 MHz - Data - 30)",                "btcommon.le_channel_map.32",
+            { "RF Channel 34 (2470 MHz - Data - 32)",                "btcommon.le_channel_map.32",
             FT_BOOLEAN, 8, NULL, 0x01,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_31,
-            { "RF Channel 31 (2464 MHz - Data - 29)",                "btcommon.le_channel_map.31",
+            { "RF Channel 33 (2468 MHz - Data - 31)",                "btcommon.le_channel_map.31",
             FT_BOOLEAN, 8, NULL, 0x80,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_30,
-            { "RF Channel 30 (2462 MHz - Data - 28)",                "btcommon.le_channel_map.30",
+            { "RF Channel 32 (2466 MHz - Data - 30)",                "btcommon.le_channel_map.30",
             FT_BOOLEAN, 8, NULL, 0x40,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_29,
-            { "RF Channel 29 (2460 MHz - Data - 27)",                "btcommon.le_channel_map.29",
+            { "RF Channel 31 (2464 MHz - Data - 29)",                "btcommon.le_channel_map.29",
             FT_BOOLEAN, 8, NULL, 0x20,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_28,
-            { "RF Channel 28 (2458 MHz - Data - 26)",                "btcommon.le_channel_map.28",
+            { "RF Channel 30 (2462 MHz - Data - 28)",                "btcommon.le_channel_map.28",
             FT_BOOLEAN, 8, NULL, 0x10,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_27,
-            { "RF Channel 27 (2456 MHz - Data - 25)",                "btcommon.le_channel_map.27",
+            { "RF Channel 29 (2460 MHz - Data - 27)",                "btcommon.le_channel_map.27",
             FT_BOOLEAN, 8, NULL, 0x08,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_26,
-            { "RF Channel 26 (2454 MHz - Data - 24)",                "btcommon.le_channel_map.26",
+            { "RF Channel 28 (2458 MHz - Data - 26)",                "btcommon.le_channel_map.26",
             FT_BOOLEAN, 8, NULL, 0x04,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_25,
-            { "RF Channel 25 (2452 MHz - Data - 23)",                "btcommon.le_channel_map.25",
+            { "RF Channel 27 (2456 MHz - Data - 25)",                "btcommon.le_channel_map.25",
             FT_BOOLEAN, 8, NULL, 0x02,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_24,
-            { "RF Channel 24 (2450 MHz - Data - 22)",                "btcommon.le_channel_map.24",
+            { "RF Channel 26 (2454 MHz - Data - 24)",                "btcommon.le_channel_map.24",
             FT_BOOLEAN, 8, NULL, 0x01,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_23,
-            { "RF Channel 23 (2448 MHz - Data - 21)",                "btcommon.le_channel_map.23",
+            { "RF Channel 25 (2452 MHz - Data - 23)",                "btcommon.le_channel_map.23",
             FT_BOOLEAN, 8, NULL, 0x80,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_22,
-            { "RF Channel 22 (2446 MHz - Data - 20)",                "btcommon.le_channel_map.22",
+            { "RF Channel 24 (2450 MHz - Data - 22)",                "btcommon.le_channel_map.22",
             FT_BOOLEAN, 8, NULL, 0x40,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_21,
-            { "RF Channel 21 (2444 MHz - Data - 19)",                "btcommon.le_channel_map.21",
+            { "RF Channel 23 (2448 MHz - Data - 21)",                "btcommon.le_channel_map.21",
             FT_BOOLEAN, 8, NULL, 0x20,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_20,
-            { "RF Channel 20 (2442 MHz - Data - 18)",                "btcommon.le_channel_map.20",
+            { "RF Channel 22 (2446 MHz - Data - 20)",                "btcommon.le_channel_map.20",
             FT_BOOLEAN, 8, NULL, 0x10,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_19,
-            { "RF Channel 19 (2440 MHz - Data - 17)",                "btcommon.le_channel_map.19",
+            { "RF Channel 21 (2444 MHz - Data - 19)",                "btcommon.le_channel_map.19",
             FT_BOOLEAN, 8, NULL, 0x08,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_18,
-            { "RF Channel 18 (2438 MHz - Data - 16)",                "btcommon.le_channel_map.18",
+            { "RF Channel 20 (2442 MHz - Data - 18)",                "btcommon.le_channel_map.18",
             FT_BOOLEAN, 8, NULL, 0x04,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_17,
-            { "RF Channel 17 (2436 MHz - Data - 15)",                "btcommon.le_channel_map.17",
+            { "RF Channel 19 (2440 MHz - Data - 17)",                "btcommon.le_channel_map.17",
             FT_BOOLEAN, 8, NULL, 0x02,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_16,
-            { "RF Channel 16 (2434 MHz - Data - 14)",                "btcommon.le_channel_map.16",
+            { "RF Channel 18 (2438 MHz - Data - 16)",                "btcommon.le_channel_map.16",
             FT_BOOLEAN, 8, NULL, 0x01,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_15,
-            { "RF Channel 15 (2432 MHz - Data - 13)",                "btcommon.le_channel_map.15",
+            { "RF Channel 17 (2436 MHz - Data - 15)",                "btcommon.le_channel_map.15",
             FT_BOOLEAN, 8, NULL, 0x80,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_14,
-            { "RF Channel 14 (2430 MHz - Data - 12)",                "btcommon.le_channel_map.14",
+            { "RF Channel 16 (2434 MHz - Data - 14)",                "btcommon.le_channel_map.14",
             FT_BOOLEAN, 8, NULL, 0x40,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_13,
-            { "RF Channel 13 (2428 MHz - Data - 11)",                "btcommon.le_channel_map.13",
+            { "RF Channel 15 (2432 MHz - Data - 13)",                "btcommon.le_channel_map.13",
             FT_BOOLEAN, 8, NULL, 0x20,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_12,
-            { "RF Channel 12 (2426 MHz - Advertising - 38)",         "btcommon.le_channel_map.12",
+            { "RF Channel 14 (2430 MHz - Data - 12)",                "btcommon.le_channel_map.12",
             FT_BOOLEAN, 8, NULL, 0x10,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_11,
-            { "RF Channel 11 (2424 MHz - Data - 10)",                "btcommon.le_channel_map.11",
+            { "RF Channel 13 (2428 MHz - Data - 11)",                "btcommon.le_channel_map.11",
             FT_BOOLEAN, 8, NULL, 0x08,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_10,
-            { "RF Channel 10 (2422 MHz - Data - 9)",                 "btcommon.le_channel_map.10",
+            { "RF Channel 11 (2424 MHz - Data - 10)",                "btcommon.le_channel_map.10",
             FT_BOOLEAN, 8, NULL, 0x04,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_9,
-            { "RF Channel 9 (2420 MHz - Data - 8)",                  "btcommon.le_channel_map.9",
+            { "RF Channel 10 (2422 MHz - Data - 9)",                 "btcommon.le_channel_map.9",
             FT_BOOLEAN, 8, NULL, 0x02,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_8,
-            { "RF Channel 8 (2418 MHz - Data - 7)",                  "btcommon.le_channel_map.8",
+            { "RF Channel 9 (2420 MHz - Data - 8)",                  "btcommon.le_channel_map.8",
             FT_BOOLEAN, 8, NULL, 0x01,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_7,
-            { "RF Channel 7 (2416 MHz - Data - 6)",                  "btcommon.le_channel_map.7",
+            { "RF Channel 8 (2418 MHz - Data - 7)",                  "btcommon.le_channel_map.7",
             FT_BOOLEAN, 8, NULL, 0x80,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_6,
-            { "RF Channel 6 (2414 MHz - Data - 5)",                  "btcommon.le_channel_map.6",
+            { "RF Channel 7 (2416 MHz - Data - 6)",                  "btcommon.le_channel_map.6",
             FT_BOOLEAN, 8, NULL, 0x40,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_5,
-            { "RF Channel 5 (2412 MHz - Data - 4)",                  "btcommon.le_channel_map.5",
+            { "RF Channel 6 (2414 MHz - Data - 5)",                  "btcommon.le_channel_map.5",
             FT_BOOLEAN, 8, NULL, 0x20,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_4,
-            { "RF Channel 4 (2410 MHz - Data - 3)",                  "btcommon.le_channel_map.4",
+            { "RF Channel 5 (2412 MHz - Data - 4)",                  "btcommon.le_channel_map.4",
             FT_BOOLEAN, 8, NULL, 0x10,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_3,
-            { "RF Channel 3 (2408 MHz - Data - 2)",                  "btcommon.le_channel_map.3",
+            { "RF Channel 4 (2410 MHz - Data - 3)",                  "btcommon.le_channel_map.3",
             FT_BOOLEAN, 8, NULL, 0x08,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_2,
-            { "RF Channel 2 (2406 MHz - Data - 1)",                  "btcommon.le_channel_map.2",
+            { "RF Channel 3 (2408 MHz - Data - 2)",                  "btcommon.le_channel_map.2",
             FT_BOOLEAN, 8, NULL, 0x04,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_1,
-            { "RF Channel 1 (2404 MHz - Data - 0)",                  "btcommon.le_channel_map.1",
+            { "RF Channel 2 (2406 MHz - Data - 1)",                  "btcommon.le_channel_map.1",
             FT_BOOLEAN, 8, NULL, 0x02,
             NULL, HFILL }
         },
         { &hf_btcommon_le_channel_map_0,
-            { "RF Channel 0 (2402 MHz - Advertising - 37)",          "btcommon.le_channel_map.0",
+            { "RF Channel 1 (2404 MHz - Data - 0)",                  "btcommon.le_channel_map.0",
             FT_BOOLEAN, 8, NULL, 0x01,
             NULL, HFILL }
-        },
+        }
     };
 
     static gint *ett[] = {
index d02e088cc7e857da364b351193abf3604b21eed4..e0f72136203ccc70a952b585b1e848b9d4d05a3a 100644 (file)
@@ -1529,8 +1529,8 @@ dissect_cms_MessageDigest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
   old_offset = get_ber_identifier(tvb, old_offset, NULL, NULL, NULL);
   old_offset = get_ber_length(tvb, old_offset, NULL, NULL);
 
-  if(content_tvb && actx->external.direct_reference)
-    cms_verify_msg_digest(pi, content_tvb, actx->external.direct_reference, tvb, old_offset);
+  if(content_tvb)
+    cms_verify_msg_digest(pi, content_tvb, x509af_get_last_algorithm_id(), tvb, old_offset);
 
 
 
index b85515bd390130c914bd534ceaced786c672c1b4..88098eaeee3db389c94409ad4f8eba0d4dcdadc8 100644 (file)
@@ -344,39 +344,25 @@ eventlog_dissect_element_Record_sid_offset(tvbuff_t *tvb, int offset, packet_inf
        return offset;
 }
 static int
-eventlog_get_unicode_string_length(tvbuff_t *tvb, int offset)
-{
-       int len;
-       len=0;
-       while(1){
-               if(!tvb_get_ntohs(tvb, offset+len*2)){
-                       len++;
-                       break;
-               }
-               len++;
-       }
-       return len;
-}
-static int
 eventlog_dissect_element_Record_source_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
 {
-       char *str;
-       int len;
-       len=eventlog_get_unicode_string_length(tvb, offset);
-       str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, offset, len, TRUE);
-       proto_tree_add_string_format(tree, hf_eventlog_Record_source_name, tvb, offset, len*2, str, "source_name: %s", str);
-       offset+=len*2;
+       guint len;
+
+       len=tvb_unicode_strsize(tvb, offset);
+       proto_tree_add_item(tree, hf_eventlog_Record_source_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+
+       offset+=len;
        return offset;
 }
 static int
 eventlog_dissect_element_Record_computer_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
 {
-       char *str;
-       int len;
-       len=eventlog_get_unicode_string_length(tvb, offset);
-       str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, offset, len, TRUE);
-       proto_tree_add_string_format(tree, hf_eventlog_Record_computer_name, tvb, offset, len*2, str, "computer_name: %s", str);
-       offset+=len*2;
+       guint len;
+
+       len=tvb_unicode_strsize(tvb, offset);
+       proto_tree_add_item(tree, hf_eventlog_Record_computer_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+
+       offset+=len;
        return offset;
 }
 static guint16 num_of_strings;
@@ -399,15 +385,16 @@ static int
 eventlog_dissect_element_Record_strings(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
 {
        while(string_offset && num_of_strings){
-               char *str;
-               int len;
-               len=eventlog_get_unicode_string_length(tvb, string_offset);
-               str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, string_offset, len, TRUE);
-               proto_tree_add_string_format(tree, hf_eventlog_Record_string, tvb, string_offset, len*2, str, "string: %s", str);
-               string_offset+=len*2;
+               guint len;
+
+               len=tvb_unicode_strsize(tvb, string_offset);
+               proto_tree_add_item(tree, hf_eventlog_Record_string, tvb, string_offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+               string_offset+=len;
        
                num_of_strings--;
        }
+
+
        return offset;
 }
 
index bb4f711266ca6c428955b0e9b49966b5f37b8cf7..14ad30bd16689c6d8220b3be82673606669bc55d 100644 (file)
@@ -484,12 +484,8 @@ dissect_diameter_avp(diam_ctx_t *c, tvbuff_t *tvb, int offset, diam_sub_dis_t *d
        guint32 flags_bits_idx = (len & 0xE0000000) >> 29;
        guint32 flags_bits     = (len & 0xFF000000) >> 24;
        guint32 vendorid       = vendor_flag ? tvb_get_ntohl(tvb,offset+8) : 0 ;
-       wmem_tree_key_t k[]    = {
-               {1,&code},
-               {1,&vendorid},
-               {0,NULL}
-       };
-       diam_avp_t *a          = (diam_avp_t *)wmem_tree_lookup32_array(dictionary.avps,k);
+       wmem_tree_key_t k[3];
+       diam_avp_t *a;
        proto_item *pi, *avp_item;
        proto_tree *avp_tree, *save_tree;
        tvbuff_t *subtvb;
@@ -498,6 +494,17 @@ dissect_diameter_avp(diam_ctx_t *c, tvbuff_t *tvb, int offset, diam_sub_dis_t *d
        const char *avp_str = NULL;
        guint8 pad_len;
 
+       k[0].length = 1;
+       k[0].key = &code;
+
+       k[1].length = 1;
+       k[1].key = &vendorid;
+
+       k[2].length = 0;
+       k[2].key = NULL;
+
+       a = (diam_avp_t *)wmem_tree_lookup32_array(dictionary.avps,k);
+
        len &= 0x00ffffff;
        pad_len =  (len % 4) ? 4 - (len % 4) : 0 ;
 
@@ -1282,15 +1289,18 @@ reginfo(int *hf_ptr, const char *name, const char *abbr, const char *desc,
        enum ftenum ft, field_display_e base, const value_string_ext *vs_ext,
        guint32 mask)
 {
-       hf_register_info hf = { hf_ptr, {
-                               name,
-                               abbr,
-                               ft,
-                               base,
-                               NULL,
-                               mask,
-                               desc,
-                               HFILL }};
+       hf_register_info hf;
+
+       hf.p_id                                         = hf_ptr;
+       hf.hfinfo.name                          = name;
+       hf.hfinfo.abbrev                        = abbr;
+       hf.hfinfo.type                          = ft;
+       hf.hfinfo.display                       = base;
+       hf.hfinfo.strings                       = NULL;
+       hf.hfinfo.bitmask                       = mask;
+       hf.hfinfo.blurb                         = desc;
+       /* HFILL */
+       HFILL_INIT(hf);
 
        if (vs_ext) {
                hf.hfinfo.strings = vs_ext;
@@ -1304,22 +1314,29 @@ static void
 basic_avp_reginfo(diam_avp_t *a, const char *name, enum ftenum ft,
                  field_display_e base, const value_string_ext *vs_ext)
 {
-       hf_register_info hf[] = { { &(a->hf_value),
-                                 { NULL, NULL, ft, base, NULL, 0x0,
-                                 a->vendor->code ?
-                                 wmem_strdup_printf(wmem_epan_scope(), "vendor=%d code=%d", a->vendor->code, a->code)
-                                 : wmem_strdup_printf(wmem_epan_scope(), "code=%d", a->code),
-                                 HFILL }}
-       };
+       hf_register_info hf;
        gint *ettp = &(a->ett);
 
-       hf->hfinfo.name = wmem_strdup_printf(wmem_epan_scope(), "%s",name);
-       hf->hfinfo.abbrev = alnumerize(wmem_strdup_printf(wmem_epan_scope(), "diameter.%s",name));
+       hf.p_id                                         = &(a->hf_value);
+       hf.hfinfo.name                          = NULL;
+       hf.hfinfo.abbrev                        = NULL;
+       hf.hfinfo.type                          = ft;
+       hf.hfinfo.display                       = base;
+       hf.hfinfo.strings                       = NULL;
+       hf.hfinfo.bitmask                       = 0x0;
+       hf.hfinfo.blurb                         = a->vendor->code ?
+                                                                       wmem_strdup_printf(wmem_epan_scope(), "vendor=%d code=%d", a->vendor->code, a->code)
+                                                                       : wmem_strdup_printf(wmem_epan_scope(), "code=%d", a->code);
+       /* HFILL */
+       HFILL_INIT(hf);
+
+       hf.hfinfo.name = wmem_strdup_printf(wmem_epan_scope(), "%s",name);
+       hf.hfinfo.abbrev = alnumerize(wmem_strdup_printf(wmem_epan_scope(), "diameter.%s",name));
        if (vs_ext) {
-               hf->hfinfo.strings = vs_ext;
+               hf.hfinfo.strings = vs_ext;
        }
 
-       wmem_array_append(build_dict.hf,hf,1);
+       wmem_array_append(build_dict.hf,&hf,1);
        g_ptr_array_add(build_dict.ett,ettp);
 }
 
@@ -1624,7 +1641,10 @@ dictionary_load(void)
                GArray *arr = g_array_new(TRUE,TRUE,sizeof(value_string));
 
                for (; p; p = p->next) {
-                       value_string item = {p->code,p->name};
+                       value_string item[1];
+
+                       item[0].value = p->code;
+                       item[0].strptr = p->name;
                        g_array_append_val(arr,item);
                }
 
@@ -1634,7 +1654,10 @@ dictionary_load(void)
 
        if ((v = d->vendors)) {
                for ( ; v; v = v->next) {
-                       value_string item = {v->code,v->name};
+                       value_string item[1];
+
+                       item[0].value = v->code;
+                       item[0].strptr = v->name;
 
                        if (v->name == NULL) {
                                fprintf(stderr,"Diameter Dictionary: Invalid Vendor (empty name): code==%d\n",v->code);
@@ -1668,7 +1691,11 @@ dictionary_load(void)
                        }
 
                        if ((vnd = (diam_vnd_t *)g_hash_table_lookup(vendors,c->vendor))) {
-                               value_string item = {c->code,c->name};
+                               value_string item[1];
+
+                               item[0].value =  c->code;
+                               item[0].strptr = c->name;
+
                                g_array_append_val(vnd->vs_cmds,item);
                                /* Also add to all_cmds as used by RFC version */
                                g_array_append_val(all_cmds,item);
@@ -1692,7 +1719,12 @@ dictionary_load(void)
                }
 
                if ((vnd = (diam_vnd_t *)g_hash_table_lookup(vendors,vend))) {
-                       value_string vndvs = {a->code,a->name};
+                       value_string vndvs[1];
+
+                       vndvs[0].value =  a->code;
+                       vndvs[0].strptr = a->name;
+
+
                        g_array_append_val(vnd->vs_avps,vndvs);
                } else {
                        fprintf(stderr,"Diameter Dictionary: No Vendor: %s\n",vend);
@@ -1701,10 +1733,16 @@ dictionary_load(void)
 
                if ((e = a->enums)) {
                        wmem_array_t *arr = wmem_array_new(wmem_epan_scope(), sizeof(value_string));
-                       value_string term = {0, NULL};
+                       value_string term[1];
+
+                       term[0].value =  0;
+                       term[0].strptr = NULL;
 
                        for (; e; e = e->next) {
-                               value_string item = {e->code,e->name};
+                               value_string item[1];
+
+                               item[0].value =  e->code;
+                               item[0].strptr = e->name;
                                wmem_array_append_one(arr,item);
                        }
                        wmem_array_sort(arr, compare_avps);
@@ -1736,11 +1774,15 @@ dictionary_load(void)
                        g_hash_table_insert(build_dict.avps, a->name, avp);
 
                        {
-                               wmem_tree_key_t k[] = {
-                                       { 1, &(a->code) },
-                                       { 1, &(vnd->code) },
-                                       { 0 , NULL }
-                               };
+                               wmem_tree_key_t k[3];
+
+                               k[0].length = 1;
+                               k[0].key        = &(a->code);
+                               k[1].length = 1;
+                               k[1].key        = &(vnd->code);
+                               k[2].length = 0;
+                               k[2].key        = NULL;
+
                                wmem_tree_insert32_array(dictionary.avps,k,avp);
                        }
                }
index a93fb9ebc795bb1214f847df242c2cb85086deb5..09a826f1e27dbcd5d8acc25237597191303b1cbc 100644 (file)
@@ -1008,8 +1008,8 @@ dns_class_name(int dns_class)
 
 /* This function returns the number of bytes consumed and the expanded string
  * in *name.
- * The string is allocated with ep scope and does not need to be free()d.
- * it will be automatically free()d when the packet has been dissected.
+ * The string is allocated with wmem_packet_scope scope and does not need to be freed.
+ * it will be automatically freed when the packet has been dissected.
  */
 int
 expand_dns_name(tvbuff_t *tvb, int offset, int max_len, int dns_data_offset,
index 1c8c6b386cb23081df2840d3ebd87b1918cb1880..124cb75ff6036aa89d5eedba8df286d36e7a6209 100644 (file)
@@ -344,7 +344,8 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
 
                sign_ofs = tvb_get_ntohs(tvb, ofs);
                proto_tree_add_text(tree, tvb, ofs, 2, "Signature offset: %d", sign_ofs);
-               sign_ofs += offset;
+               if (sign_ofs)
+                       sign_ofs += offset;
 
                if ((flag & AFPSRVRINFO_TCPIP)) {
                        ofs += 2;
@@ -367,12 +368,15 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
                }
        }
 
-       ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF);
-       if (ofs)
+       ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF);
+       if (ofs) {
+               ofs += offset;
                proto_tree_add_item(tree, hf_dsi_server_type, tvb, ofs, 1, ENC_ASCII|ENC_NA);
+       }
 
-       ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
+       ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
        if (ofs) {
+               ofs += offset;
                nbe = tvb_get_guint8(tvb, ofs);
                ti = proto_tree_add_text(tree, tvb, ofs, 1, "Version list: %d", nbe);
                ofs++;
@@ -384,8 +388,9 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
                }
        }
 
-       ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
+       ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
        if (ofs) {
+               ofs += offset;
                nbe = tvb_get_guint8(tvb, ofs);
                ti = proto_tree_add_text(tree, tvb, ofs, 1, "UAMS list: %d", nbe);
                ofs++;
@@ -397,9 +402,11 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset)
                }
        }
 
-       ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
-       if (ofs)
+       ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
+       if (ofs) {
+               ofs += offset;
                proto_tree_add_item(tree, hf_dsi_server_icon, tvb, ofs, 256, ENC_NA);
+       }
 
        if (sign_ofs) {
                proto_tree_add_item(tree, hf_dsi_server_signature, tvb, sign_ofs, 16, ENC_NA);
index 311adc8de06d67ba89fdca5a876f946c4e705a79..1342230575199537d1bd3baef50129e3845c6b1a 100644 (file)
@@ -143,7 +143,7 @@ dissect_dtcp_ip(tvbuff_t *tvb, packet_info *pinfo,
     guint        offset = 0;
     guint16      length;
     proto_item  *pi, *pi_ctrl;
-    proto_tree  *dtcp_ip_tree = NULL, *dtcp_ip_ctrl_tree = NULL;
+    proto_tree  *dtcp_ip_tree, *dtcp_ip_ctrl_tree;
     guint8       subfct_val;
     const gchar *subfct_str;
     gint         ake_info_len;
index bedee5efcaeb8adffb22e74c2a95ece44b53919f..9d4acb614007e7757af78f57b3e7354643be6b5c 100644 (file)
@@ -1822,7 +1822,7 @@ dissect_dtls_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
         {
           ssl_dissect_hnd_hello_ext(&dissect_dtls_hf, tvb, tree, offset,
                                               length -
-                                              (offset - start_offset), TRUE);
+                                              (offset - start_offset), TRUE, ssl);
         }
     }
 }
@@ -1909,7 +1909,7 @@ dissect_dtls_hnd_srv_hello(tvbuff_t *tvb,
         {
           offset = ssl_dissect_hnd_hello_ext(&dissect_dtls_hf, tvb, tree, offset,
                                               length -
-                                              (offset - start_offset), FALSE);
+                                              (offset - start_offset), FALSE, ssl);
         }
     }
     return offset;
index af7fc50028440501e95409e6060eef769971689a..4ff1fbdd735fc8bf45ba3461cf6c6712dec45c63 100644 (file)
@@ -914,6 +914,8 @@ static int hf_dvbci_app_type = -1;
 static int hf_dvbci_app_manf = -1;
 static int hf_dvbci_manf_code = -1;
 static int hf_dvbci_menu_str_len = -1;
+static int hf_dvbci_ap_char_tbl = -1;
+static int hf_dvbci_menu_str = -1;
 static int hf_dvbci_data_rate = -1;
 static int hf_dvbci_ca_sys_id = -1;
 static int hf_dvbci_ca_pmt_list_mgmt = -1;
@@ -952,10 +954,16 @@ static int hf_dvbci_disp_rep_id = -1;
 static int hf_dvbci_mmi_char_tbl = -1;
 static int hf_dvbci_blind_ans = -1;
 static int hf_dvbci_ans_txt_len = -1;
+static int hf_dvbci_enq = -1;
 static int hf_dvbci_ans_id = -1;
+static int hf_dvbci_ans = -1;
 static int hf_dvbci_choice_nb = -1;
 static int hf_dvbci_choice_ref = -1;
 static int hf_dvbci_item_nb = -1;
+static int hf_dvbci_title = -1;
+static int hf_dvbci_subtitle = -1;
+static int hf_dvbci_bottom = -1;
+static int hf_dvbci_item = -1;
 static int hf_dvbci_host_country = -1;
 static int hf_dvbci_host_language = -1;
 static int hf_dvbci_cup_type = -1;
@@ -2200,7 +2208,7 @@ decrypt_sac_msg_body(
     clear_data = (unsigned char *)g_malloc(clear_len);
 
     err = gcry_cipher_decrypt (cipher, clear_data, clear_len,
-                tvb_get_string(wmem_packet_scope(), encrypted_tvb, offset, len), len);
+                tvb_get_ptr(encrypted_tvb, offset, len), len);
     if (gcry_err_code (err))
         goto end;
 
@@ -2232,10 +2240,10 @@ decrypt_sac_msg_body(guint8 enc_cip _U_,
 #endif
 
 
- /* dissect a text string that is encoded according to DVB-SI (EN 300 468) */
+/* dissect a text string that is encoded according to DVB-SI (EN 300 468) */
 static void
 dissect_si_string(tvbuff_t *tvb, gint offset, gint str_len,
-        packet_info *pinfo, proto_tree *tree, const gchar *title,
+        packet_info *pinfo, proto_tree *tree, int hf, const gchar *title,
         gboolean show_col_info)
 {
     guint           enc_len;
@@ -2259,7 +2267,9 @@ dissect_si_string(tvbuff_t *tvb, gint offset, gint str_len,
     if (!si_str)
         return;
 
-    proto_tree_add_text(tree, tvb, offset, str_len, "%s: %s", title, si_str);
+    proto_tree_add_string_format(tree, hf,
+            tvb, offset, str_len, si_str, "%s: %s", title, si_str);
+
     if (show_col_info)
         col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "%s", si_str);
 }
@@ -2389,7 +2399,7 @@ dissect_es(tvbuff_t *tvb, gint offset, packet_info *pinfo, proto_tree *tree)
 /* dissect a text pseudo-apdu */
 static gint
 dissect_dvbci_text(const gchar *title, tvbuff_t *tvb, gint offset,
-                   packet_info *pinfo, proto_tree *tree)
+                   packet_info *pinfo, proto_tree *tree, int hf)
 {
     proto_item *ti = NULL;
     proto_tree *text_tree;
@@ -2414,7 +2424,8 @@ dissect_dvbci_text(const gchar *title, tvbuff_t *tvb, gint offset,
             tvb, offset, APDU_TAG_SIZE, ENC_BIG_ENDIAN);
     offset += APDU_TAG_SIZE;
     offset = dissect_ber_length(pinfo, text_tree, tvb, offset, &len_field, NULL);
-    dissect_si_string(tvb, offset, len_field, pinfo, text_tree, "Text", FALSE);
+    dissect_si_string(tvb, offset, len_field, pinfo, text_tree,
+            hf, "Text", FALSE);
     offset += len_field;
 
     proto_item_set_len(ti, offset-offset_start);
@@ -2505,9 +2516,11 @@ dissect_dvbci_payload_ap(guint32 tag, gint len_field _U_,
         tvbuff_t *tvb, gint offset, circuit_t *circuit _U_,
         packet_info *pinfo, proto_tree *tree)
 {
-    guint8  menu_str_len;
-    guint8 *menu_string;
-    guint8  data_rate;
+    guint8          menu_str_len;
+    guint           enc_len;
+    dvb_encoding_e  encoding;
+    guint8         *menu_string;
+    guint8          data_rate;
 
     if (tag==T_APP_INFO) {
         proto_tree_add_item(tree, hf_dvbci_app_type, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2522,14 +2535,19 @@ dissect_dvbci_payload_ap(guint32 tag, gint len_field _U_,
         proto_tree_add_item(
                 tree, hf_dvbci_menu_str_len, tvb, offset, 1, ENC_BIG_ENDIAN);
         offset++;
-        /* ephemeral -> string is freed automatically when dissection
-           of this packet is finished
-           tvb_get_string() always returns a 0-terminated string */
-        menu_string = tvb_get_string(wmem_packet_scope(), tvb, offset, menu_str_len);
-        if (menu_string) {
+        if (menu_str_len > 0) {
+            enc_len = dvb_analyze_string_charset(
+                    tvb, offset, menu_str_len, &encoding);
+            dvb_add_chartbl(
+                    tree, hf_dvbci_ap_char_tbl, tvb, offset, enc_len, encoding);
+            offset += enc_len;
+            menu_str_len -= enc_len;
+            menu_string = tvb_get_string_enc(wmem_packet_scope(),
+                    tvb, offset, menu_str_len, dvb_enc_to_item_enc(encoding));
             col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL,
                     "Module name %s", menu_string);
-            proto_tree_add_text(tree, tvb, offset, menu_str_len,
+            proto_tree_add_string_format(tree, hf_dvbci_menu_str,
+                    tvb, offset, menu_str_len, menu_string,
                     "Menu string: %s", menu_string);
         }
     }
@@ -2945,7 +2963,7 @@ dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
             offset++;
             dissect_si_string(tvb, offset,
                     tvb_reported_length_remaining(tvb, offset),
-                    pinfo, tree, "Enquiry string", FALSE);
+                    pinfo, tree, hf_dvbci_enq, "Enquiry string", FALSE);
             break;
         case T_ANSW:
             ans_id = tvb_get_guint8(tvb,offset);
@@ -2954,7 +2972,7 @@ dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
             if (ans_id == ANSW_ID_ANSWER) {
                 dissect_si_string(tvb, offset,
                     tvb_reported_length_remaining(tvb, offset),
-                    pinfo, tree, "Answer", TRUE);
+                    pinfo, tree, hf_dvbci_ans, "Answer", TRUE);
             }
             break;
         case T_MENU_LAST:
@@ -2979,14 +2997,17 @@ dissect_dvbci_payload_mmi(guint32 tag, gint len_field,
                 }
             }
             offset++;
-            text_len = dissect_dvbci_text("Title", tvb, offset, pinfo, tree);
+            text_len = dissect_dvbci_text("Title", tvb, offset,
+                    pinfo, tree, hf_dvbci_title);
             offset += text_len;
-            text_len = dissect_dvbci_text("Sub-title", tvb, offset, pinfo, tree);
+            text_len = dissect_dvbci_text("Sub-title", tvb, offset,
+                    pinfo, tree, hf_dvbci_subtitle);
             offset += text_len;
-            text_len = dissect_dvbci_text("Bottom line", tvb, offset, pinfo, tree);
+            text_len = dissect_dvbci_text("Bottom line", tvb, offset,
+                    pinfo, tree, hf_dvbci_bottom);
             offset += text_len;
             while (tvb_reported_length_remaining(tvb, offset) > 0) {
-                text_len = dissect_dvbci_text("Item", tvb, offset, pinfo, tree);
+                text_len = dissect_dvbci_text("Item", tvb, offset, pinfo, tree, hf_dvbci_item);
                 /* minimum is apdu tag + 1 byte len field */
                 if (text_len<APDU_TAG_SIZE+1) {
                     proto_tree_add_expert(tree, pinfo, &ei_dvbci_not_text_more_or_text_last, tvb, offset, -1);
@@ -3025,16 +3046,19 @@ dissect_dvbci_payload_hlc(guint32 tag, gint len_field _U_,
 
   if (tag==T_HOST_COUNTRY) {
       proto_tree_add_item(tree, hf_dvbci_host_country,
-              tvb, offset, tvb_reported_length_remaining(tvb, offset), ENC_ASCII|ENC_NA);
+              tvb, offset, tvb_reported_length_remaining(tvb, offset),
+              ENC_ISO_8859_1|ENC_NA);
   }
   else if (tag==T_HOST_LANGUAGE) {
       proto_tree_add_item(tree, hf_dvbci_host_language,
-              tvb, offset, tvb_reported_length_remaining(tvb, offset), ENC_ASCII|ENC_NA);
+              tvb, offset, tvb_reported_length_remaining(tvb, offset),
+              ENC_ISO_8859_1|ENC_NA);
   }
 
   /* both apdus' body is only a country code, this can be shared */
-  str = tvb_get_string(wmem_packet_scope(), tvb, offset,
-              tvb_reported_length_remaining(tvb, offset));
+  str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset,
+              tvb_reported_length_remaining(tvb, offset),
+              ENC_ISO_8859_1|ENC_NA);
   if (str)
       col_append_sep_fstr(pinfo->cinfo, COL_INFO, ": ", "%s", str);
 }
@@ -5160,6 +5184,14 @@ proto_register_dvbci(void)
           { "Menu string length", "dvb-ci.ap.menu_string_length",
             FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
         },
+        { &hf_dvbci_ap_char_tbl,
+          { "Character table", "dvb-ci.ap.menu_char_tbl",
+            FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}
+        },
+        { &hf_dvbci_menu_str,
+          { "Menu string", "dvb-ci.ap.menu_string",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
         { &hf_dvbci_data_rate,
           { "Transport stream data rate supported by the host",
             "dvb-ci.ap.data_rate",
@@ -5318,10 +5350,18 @@ proto_register_dvbci(void)
           { "Answer text length", "dvb-ci.mmi.ans_txt_len",
             FT_UINT8, BASE_DEC, NULL , 0, NULL, HFILL }
         },
+        { &hf_dvbci_enq,
+          { "Enquiry string", "dvb-ci.mmi.enq",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
         { &hf_dvbci_ans_id,
           { "Answer ID", "dvb-ci.mmi.ans_id",
             FT_UINT8, BASE_HEX, VALS(dvbci_ans_id) , 0, NULL, HFILL }
         },
+        { &hf_dvbci_ans,
+          { "Answer", "dvb-ci.mmi.ans",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
         { &hf_dvbci_choice_nb,
           { "Number of menu items", "dvb-ci.mmi.choice_nb",
             FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
@@ -5334,13 +5374,29 @@ proto_register_dvbci(void)
           { "Number of list items", "dvb-ci.mmi.item_nb",
             FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }
         },
+        { &hf_dvbci_title,
+          { "Title", "dvb-ci.mmi.title",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
+        { &hf_dvbci_subtitle,
+          { "Sub-title", "dvb-ci.mmi.subtitle",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
+        { &hf_dvbci_bottom,
+          { "Bottom line", "dvb-ci.mmi.bottom",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
+        { &hf_dvbci_item,
+          { "Item", "dvb-ci.mmi.item",
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
+        },
         { &hf_dvbci_host_country,
           { "Host country", "dvb-ci.hlc.country",
-            FT_STRING, STR_ASCII, NULL, 0, NULL, HFILL }
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
         },
         { &hf_dvbci_host_language,
           { "Host language", "dvb-ci.hlc.language",
-            FT_STRING, STR_ASCII, NULL, 0, NULL, HFILL }
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL }
         },
         { &hf_dvbci_cup_type,
           { "CAM upgrade type", "dvb-ci.cup.type",
index 7296af1e0a3607aa20d7c1a6562ea4efac0fbb6a..2505b1a1c5fb623ceb55ecb16c1632e86d867d81 100644 (file)
@@ -599,7 +599,7 @@ static guint8 edonkey_metatag_name_get_type(tvbuff_t *tvb, gint start, gint leng
 
     if (try_val_to_str(special_tagtype, edonkey_special_tags) == NULL) {
         gint idx;
-        tag_name = tvb_get_string(wmem_packet_scope(), tvb, start, length);
+        tag_name = tvb_get_string_enc(wmem_packet_scope(), tvb, start, length, ENC_ASCII|ENC_NA);
         idx = lookup_str_index(tag_name, length, edonkey_special_tags);
         if (idx < 0)
             return EDONKEY_STAG_UNKNOWN;
@@ -916,7 +916,7 @@ static int dissect_kademlia_tagname(tvbuff_t *tvb, packet_info *pinfo _U_,
     hidden_item = proto_tree_add_uint(tree, hf_edonkey_string_length, tvb, offset, 2, string_length);
     PROTO_ITEM_SET_HIDDEN(hidden_item);
 
-    tagname = tvb_get_string(wmem_packet_scope(),  tvb, offset + 2, string_length );
+    tagname = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, string_length, ENC_ASCII|ENC_NA);
 
     tag_full_name = "UnknownTagName";
 
@@ -926,7 +926,7 @@ static int dissect_kademlia_tagname(tvbuff_t *tvb, packet_info *pinfo _U_,
         tag_full_name = val_to_str_const( tagname_value, kademlia_tags, tag_full_name );
     }
 
-    ti = proto_tree_add_item(tree, hf_kademlia_tag_name, tvb, offset+2, string_length, ENC_BIG_ENDIAN);
+    ti = proto_tree_add_item(tree, hf_kademlia_tag_name, tvb, offset + 2, string_length, ENC_BIG_ENDIAN);
     proto_item_append_text(ti, " [%s]", tag_full_name);
 
     if (outputTagName)
@@ -948,6 +948,7 @@ static int dissect_kademlia_string(tvbuff_t *tvb, packet_info *pinfo _U_,
 
     proto_tree_add_uint(tree, hf_edonkey_string_length, tvb, offset, 2, string_length);
 
+    /* TODO: ASCII or UTF-8? */
     string_value = tvb_get_string(wmem_packet_scope(),  tvb, offset + 2, string_length );
 
     proto_tree_add_text(tree, tvb, offset+2, string_length, "String: %s", string_value);
@@ -1087,9 +1088,9 @@ static int dissect_kademlia_tag_string(tvbuff_t *tvb, packet_info *pinfo _U_,
 
     hidden_item = proto_tree_add_uint(tree, hf_edonkey_string_length, tvb, offset, 2, string_length);
     PROTO_ITEM_SET_HIDDEN(hidden_item);
-    hidden_item = proto_tree_add_item(tree, hf_edonkey_string, tvb, offset+2, string_length, ENC_ASCII|ENC_NA);
+    hidden_item = proto_tree_add_item(tree, hf_edonkey_string, tvb, offset + 2, string_length, ENC_ASCII|ENC_NA);
     PROTO_ITEM_SET_HIDDEN(hidden_item);
-    *string_value = tvb_get_string(wmem_packet_scope(), tvb, offset + 2, string_length);
+    *string_value = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, string_length, ENC_ASCII|ENC_NA);
 
     proto_tree_add_item(tree, hf_kademlia_tag_string, tvb, offset + 2, string_length, ENC_ASCII|ENC_NA);
     return offset + 2 + string_length;
@@ -3179,7 +3180,7 @@ void proto_register_edonkey(void) {
                 FT_UINT8, BASE_HEX, NULL, 0, "eDonkey Meta Tag ID", HFILL } },
         { &hf_edonkey_metatag_name,
             { "Meta Tag Name", "edonkey.metatag.name",
-                FT_STRING, BASE_NONE, NULL, 0, "eDonkey Meta Tag Name", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "eDonkey Meta Tag Name", HFILL } },
         { &hf_edonkey_metatag_namesize,
             { "Meta Tag Name Size", "edonkey.metatag.namesize",
                 FT_UINT16, BASE_DEC, NULL, 0, "eDonkey Meta Tag Name Size", HFILL } },
@@ -3191,7 +3192,7 @@ void proto_register_edonkey(void) {
                 FT_BYTES, BASE_NONE, NULL, 0, "eDonkey Hash", HFILL } },
         { &hf_edonkey_string,
             { "String", "edonkey.string",
-                FT_STRING, BASE_NONE, NULL, 0, "eDonkey String", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "eDonkey String", HFILL } },
         { &hf_edonkey_string_length,
             { "String Length", "edonkey.string_length",
                 FT_UINT16, BASE_DEC, NULL, 0, "eDonkey String Length", HFILL } },
@@ -3203,7 +3204,7 @@ void proto_register_edonkey(void) {
                 FT_BYTES, BASE_NONE, NULL, 0, "eDonkey File Status", HFILL } },
         { &hf_edonkey_directory,
             { "Directory", "edonkey.directory",
-                FT_STRING, BASE_NONE, NULL, 0, "eDonkey Directory", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "eDonkey Directory", HFILL } },
         { &hf_edonkey_fileinfo,
             { "eDonkey File Info", "edonkey.fileinfo",
                 FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL } },
@@ -3263,28 +3264,28 @@ void proto_register_edonkey(void) {
                 FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL } },
         { &hf_kademlia_peer_id,
             { "Peer ID", "edonkey.kademlia.peer.id",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia Peer ID", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia Peer ID", HFILL } },
         { &hf_kademlia_hash,
             { "Kademlia Hash", "edonkey.kademlia.hash",
-                FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, NULL, HFILL } },
         { &hf_kademlia_file_id,
             { "File ID", "edonkey.kademlia.file.id",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia File ID", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia File ID", HFILL } },
         { &hf_kademlia_keyword_hash,
             { "Keyword Hash", "edonkey.kademlia.keyword.hash",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia Keyword Hash", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia Keyword Hash", HFILL } },
         { &hf_kademlia_recipients_id,
             { "Recipient's ID", "edonkey.kademlia.recipients.id",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia Recipient's ID", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia Recipient's ID", HFILL } },
         { &hf_kademlia_sender_id,
             { "Sender ID", "edonkey.kademlia.sender.id",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia Sender ID", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia Sender ID", HFILL } },
         { &hf_kademlia_target_id,
             { "Target ID", "edonkey.kademlia.target.id",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia Target ID", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia Target ID", HFILL } },
         { &hf_kademlia_distance,
             { "XOR Distance", "edonkey.kademlia.distance",
-                FT_STRING, BASE_NONE, NULL, 0, "Kademlia XOR Distance", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "Kademlia XOR Distance", HFILL } },
         { &hf_kademlia_version,
             { "Kad Version", "edonkey.kademlia.version",
                 FT_UINT8, BASE_DEC_HEX, NULL, 0, NULL, HFILL } },
@@ -3311,7 +3312,7 @@ void proto_register_edonkey(void) {
                 FT_BYTES, BASE_NONE, NULL, 0, "HASH Tag Value", HFILL } },
         { &hf_kademlia_tag_string,
             { "Tag Value (String)", "edonkey.kademlia.tag.value.string",
-                FT_STRING, BASE_NONE, NULL, 0, "String Tag Value", HFILL } },
+                FT_STRING, STR_ASCII, NULL, 0, "String Tag Value", HFILL } },
         { &hf_kademlia_tag_bsob,
             { "Tag Value (BSOB)", "edonkey.kademlia.tag.value.bsob",
                 FT_BYTES, BASE_NONE, NULL, 0, "BSOB Tag Value", HFILL } },
index 936da2bdedbafacac6a81bb314f9b64c4fb2abde..26ac25e81233a0366cd748591871d5252b182b43 100644 (file)
@@ -7,7 +7,8 @@
 
 #line 1 "../../asn1/ess/packet-ess-template.c"
 /* packet-ess.c
- * Routines for RFC5035 Extended Security Services packet dissection
+ * Routines for RFC 2634 and RFC 5035 Extended Security Services packet
+ * dissection
  *   Ronnie Sahlberg 2004
  *   Stig Bjorlykke 2010
  *
@@ -146,7 +147,7 @@ static int hf_ess_issuer = -1;                    /* GeneralNames */
 static int hf_ess_serialNumber = -1;              /* CertificateSerialNumber */
 
 /*--- End of included file: packet-ess-hf.c ---*/
-#line 67 "../../asn1/ess/packet-ess-template.c"
+#line 68 "../../asn1/ess/packet-ess-template.c"
 
 
 /*--- Included file: packet-ess-val.h ---*/
@@ -170,7 +171,7 @@ static int hf_ess_serialNumber = -1;              /* CertificateSerialNumber */
 #define id_sha256                      "2.16.840.1.101.3.4.2.1"
 
 /*--- End of included file: packet-ess-val.h ---*/
-#line 69 "../../asn1/ess/packet-ess-template.c"
+#line 70 "../../asn1/ess/packet-ess-template.c"
 
 /* Initialize the subtree pointers */
 
@@ -209,7 +210,7 @@ static gint ett_ess_ESSCertID = -1;
 static gint ett_ess_IssuerSerial = -1;
 
 /*--- End of included file: packet-ess-ett.c ---*/
-#line 72 "../../asn1/ess/packet-ess-template.c"
+#line 73 "../../asn1/ess/packet-ess-template.c"
 
 static const char *object_identifier_id;
 
@@ -264,7 +265,7 @@ ess_dissect_attribute_flags (tvbuff_t *tvb, asn1_ctx_t *actx)
   guint i;
 
   tree = proto_item_add_subtree (actx->created_item, ett_Category_attributes);
-  value = tvb_get_string (wmem_packet_scope(), tvb, 0, tvb_length (tvb));
+  value = (guint8 *)tvb_memdup (wmem_packet_scope(), tvb, 0, tvb_length (tvb));
 
   for (i = 0; i < num_ess_category_attributes; i++) {
     ess_category_attributes_t *u = &(ess_category_attributes[i]);
@@ -1127,7 +1128,7 @@ static void dissect_SigningCertificateV2_PDU(tvbuff_t *tvb _U_, packet_info *pin
 
 
 /*--- End of included file: packet-ess-fn.c ---*/
-#line 143 "../../asn1/ess/packet-ess-template.c"
+#line 144 "../../asn1/ess/packet-ess-template.c"
 
 /*--- proto_register_ess ----------------------------------------------*/
 void proto_register_ess(void) {
@@ -1425,7 +1426,7 @@ void proto_register_ess(void) {
         "CertificateSerialNumber", HFILL }},
 
 /*--- End of included file: packet-ess-hfarr.c ---*/
-#line 156 "../../asn1/ess/packet-ess-template.c"
+#line 157 "../../asn1/ess/packet-ess-template.c"
   };
 
   /* List of subtrees */
@@ -1467,7 +1468,7 @@ void proto_register_ess(void) {
     &ett_ess_IssuerSerial,
 
 /*--- End of included file: packet-ess-ettarr.c ---*/
-#line 162 "../../asn1/ess/packet-ess-template.c"
+#line 163 "../../asn1/ess/packet-ess-template.c"
   };
 
   static uat_field_t attributes_flds[] = {
@@ -1534,6 +1535,6 @@ void proto_reg_handoff_ess(void) {
 
 
 /*--- End of included file: packet-ess-dis-tab.c ---*/
-#line 207 "../../asn1/ess/packet-ess-template.c"
+#line 208 "../../asn1/ess/packet-ess-template.c"
 }
 
index 74705bfc4f7d942a8b0b01ea92bef09c1db9606b..debe9d649fdbacac3dba8c7222a7a0c94f37dbd1 100644 (file)
@@ -52,7 +52,7 @@ static int hf_exported_pdu_ipv6_dst = -1;
 static int hf_exported_pdu_port_type = -1;
 static int hf_exported_pdu_src_port = -1;
 static int hf_exported_pdu_dst_port = -1;
-static int hf_exported_pdu_sctp_ppid = -1;
+/** static int hf_exported_pdu_sctp_ppid = -1; **/
 static int hf_exported_pdu_ss7_opc = -1;
 static int hf_exported_pdu_ss7_dpc = -1;
 static int hf_exported_pdu_orig_fno = -1;
@@ -284,11 +284,13 @@ proto_register_exported_pdu(void)
                FT_UINT32, BASE_DEC, NULL, 0,
               NULL, HFILL }
         },
+#if 0
         { &hf_exported_pdu_sctp_ppid,
             { "SCTP PPID", "exported_pdu.sctp_ppid",
                FT_UINT32, BASE_DEC, NULL, 0,
               NULL, HFILL }
         },
+#endif
         { &hf_exported_pdu_ss7_opc,
             { "SS7 OPC", "exported_pdu.ss7_opc",
                FT_UINT32, BASE_DEC, NULL, 0,
index 3030f29d483171abfdf0e5f61a0dfe2246665320..e4383eed0b342b7d2529b8fd88c65ff784047b9e 100644 (file)
@@ -1303,7 +1303,7 @@ dissect_gprscdr_TimeStamp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
                        tvb_get_guint8(parameter_tvb,3),                        /* Hour */
                        tvb_get_guint8(parameter_tvb,4),                        /* Minute */
                        tvb_get_guint8(parameter_tvb,5),                        /* Second */
-                       tvb_get_string(wmem_packet_scope(), parameter_tvb,6,1), /* Sign */
+                       tvb_get_string_enc(wmem_packet_scope(), parameter_tvb,6,1,ENC_ASCII|ENC_NA), /* Sign */
                        tvb_get_guint8(parameter_tvb,7),                        /* Hour */
                        tvb_get_guint8(parameter_tvb,8)                         /* Minute */
                        );
index 0e8bf7523e6829f3b602f9549315559d2c08ebdc..ee13cd3045036c7f307c74e2cbcd9072869130c1 100644 (file)
@@ -2099,6 +2099,7 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
                 */
                bits_needed = 1;
                GET_DATA;
+               value = oct>>(32-bits_needed);
 
                proto_tree_add_bits_item(tf_tree, hf_gsm_a_gm_rac_8psk_pow_cap_pres, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
                bit_offset++;
@@ -2107,7 +2108,7 @@ de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
                bits_in_oct       -= bits_needed;
 
                /* analyse bits */
-               if ((oct>>(32-bits_needed)) == 1)
+               if (value == 1)
                {
                        /*
                         * 8PSK Power Capability
index 87ce2cfcbb4ad99d9a031c06010bc3a8e8a98058..4bbd53307090de283286464df56edbd6dc9b8eda 100644 (file)
@@ -306,6 +306,9 @@ static int hf_gsm_map_sm_sm_RP_SMEA = -1;         /* SM_RP_SMEA */
 static int hf_gsm_map_sm_sm_deliveryNotIntended = -1;  /* SM_DeliveryNotIntended */
 static int hf_gsm_map_sm_ip_sm_gwGuidanceIndicator = -1;  /* NULL */
 static int hf_gsm_map_sm_imsi = -1;               /* IMSI */
+static int hf_gsm_map_sm_t4_Trigger_Indicator = -1;  /* NULL */
+static int hf_gsm_map_sm_singleAttemptDelivery = -1;  /* NULL */
+static int hf_gsm_map_sm_correlationID = -1;      /* CorrelationID */
 static int hf_gsm_map_sm_locationInfoWithLMSI = -1;  /* LocationInfoWithLMSI */
 static int hf_gsm_map_sm_ip_sm_gwGuidance = -1;   /* IP_SM_GW_Guidance */
 static int hf_gsm_map_sm_minimumDeliveryTimeValue = -1;  /* SM_DeliveryTimerValue */
@@ -324,10 +327,14 @@ static int hf_gsm_map_sm_sgsn_Number = -1;        /* ISDN_AddressString */
 static int hf_gsm_map_sm_sm_RP_DA = -1;           /* SM_RP_DA */
 static int hf_gsm_map_sm_sm_RP_OA = -1;           /* SM_RP_OA */
 static int hf_gsm_map_sm_sm_RP_UI = -1;           /* SignalInfo */
+static int hf_gsm_map_sm_sm_DeliveryOutcome = -1;  /* SM_DeliveryOutcome */
 static int hf_gsm_map_sm_moreMessagesToSend = -1;  /* NULL */
 static int hf_gsm_map_sm_smDeliveryTimer = -1;    /* SM_DeliveryTimerValue */
 static int hf_gsm_map_sm_smDeliveryStartTime = -1;  /* Time */
 static int hf_gsm_map_sm_smsOverIP_OnlyIndicator = -1;  /* NULL */
+static int hf_gsm_map_sm_hlr_id = -1;             /* HLR_Id */
+static int hf_gsm_map_sm_sip_uri_A = -1;          /* SIP_URI */
+static int hf_gsm_map_sm_sip_uri_B = -1;          /* SIP_URI */
 static int hf_gsm_map_sm_imsi_01 = -1;            /* T_imsi */
 static int hf_gsm_map_sm_lmsi_01 = -1;            /* T_lmsi */
 static int hf_gsm_map_sm_serviceCentreAddressDA = -1;  /* T_serviceCentreAddressDA */
@@ -335,7 +342,6 @@ static int hf_gsm_map_sm_noSM_RP_DA = -1;         /* NULL */
 static int hf_gsm_map_sm_msisdn_01 = -1;          /* T_msisdn */
 static int hf_gsm_map_sm_serviceCentreAddressOA = -1;  /* T_serviceCentreAddressOA */
 static int hf_gsm_map_sm_noSM_RP_OA = -1;         /* NULL */
-static int hf_gsm_map_sm_sm_DeliveryOutcome = -1;  /* SM_DeliveryOutcome */
 static int hf_gsm_map_sm_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
 static int hf_gsm_map_sm_deliveryOutcomeIndicator = -1;  /* NULL */
 static int hf_gsm_map_sm_additionalSM_DeliveryOutcome = -1;  /* SM_DeliveryOutcome */
@@ -384,6 +390,14 @@ static int hf_gsm_map_om_eventThresholdRSRP = -1;  /* EventThresholdRSRP */
 static int hf_gsm_map_om_eventThresholdRSRQ = -1;  /* EventThresholdRSRQ */
 static int hf_gsm_map_om_loggingInterval = -1;    /* LoggingInterval */
 static int hf_gsm_map_om_loggingDuration = -1;    /* LoggingDuration */
+static int hf_gsm_map_om_measurementPeriodUMTS = -1;  /* PeriodUMTS */
+static int hf_gsm_map_om_measurementPeriodLTE = -1;  /* PeriodLTE */
+static int hf_gsm_map_om_collectionPeriodRRM_UMTS = -1;  /* PeriodUMTS */
+static int hf_gsm_map_om_collectionPeriodRRM_LTE = -1;  /* PeriodLTE */
+static int hf_gsm_map_om_positioningMethod = -1;  /* PositioningMethod */
+static int hf_gsm_map_om_measurementQuantity = -1;  /* MeasurementQuantity */
+static int hf_gsm_map_om_eventThreshold1F = -1;   /* EventThreshold1F */
+static int hf_gsm_map_om_eventThreshold1I = -1;   /* EventThreshold1I */
 static int hf_gsm_map_om_cgi_List = -1;           /* CGI_List */
 static int hf_gsm_map_om_e_utran_cgi_List = -1;   /* E_UTRAN_CGI_List */
 static int hf_gsm_map_om_routingAreaId_List = -1;  /* RoutingAreaId_List */
@@ -574,7 +588,11 @@ static int hf_gsm_map_ms_mtrf_SupportedAndNotAuthorized = -1;  /* NULL */
 static int hf_gsm_map_ms_newMSC_Number = -1;      /* ISDN_AddressString */
 static int hf_gsm_map_ms_newVLR_Number = -1;      /* ISDN_AddressString */
 static int hf_gsm_map_ms_new_lmsi = -1;           /* LMSI */
+static int hf_gsm_map_ms_reattach_Required = -1;  /* NULL */
 static int hf_gsm_map_ms_sgsn_Number = -1;        /* ISDN_AddressString */
+static int hf_gsm_map_ms_locationInformation = -1;  /* LocationInformation */
+static int hf_gsm_map_ms_locationInformationGPRS = -1;  /* LocationInformationGPRS */
+static int hf_gsm_map_ms_locationInformationEPS = -1;  /* LocationInformationEPS */
 static int hf_gsm_map_ms_freezeTMSI = -1;         /* NULL */
 static int hf_gsm_map_ms_freezeP_TMSI = -1;       /* NULL */
 static int hf_gsm_map_ms_freezeM_TMSI = -1;       /* NULL */
@@ -585,6 +603,8 @@ static int hf_gsm_map_ms_previous_LAI = -1;       /* LAIFixedLength */
 static int hf_gsm_map_ms_hopCounter = -1;         /* HopCounter */
 static int hf_gsm_map_ms_authenticationSetList = -1;  /* AuthenticationSetList */
 static int hf_gsm_map_ms_currentSecurityContext = -1;  /* CurrentSecurityContext */
+static int hf_gsm_map_ms_lastUsedLtePLMN_Id = -1;  /* PLMN_Id */
+static int hf_gsm_map_ms_mtCallPendingFlag = -1;  /* NULL */
 static int hf_gsm_map_ms_tripletList = -1;        /* TripletList */
 static int hf_gsm_map_ms_quintupletList = -1;     /* QuintupletList */
 static int hf_gsm_map_ms_TripletList_item = -1;   /* AuthenticationTriplet */
@@ -618,6 +638,10 @@ static int hf_gsm_map_ms_ue_srvcc_Capability = -1;  /* UE_SRVCC_Capability */
 static int hf_gsm_map_ms_mmeNumberforMTSMS = -1;  /* ISDN_AddressString */
 static int hf_gsm_map_ms_smsRegisterRequest = -1;  /* SMSRegisterRequest */
 static int hf_gsm_map_ms_sms_Only = -1;           /* NULL */
+static int hf_gsm_map_ms_removalofMMERegistrationforSMS = -1;  /* NULL */
+static int hf_gsm_map_ms_sgsn_Name = -1;          /* DiameterIdentity */
+static int hf_gsm_map_ms_sgsn_Realm = -1;         /* DiameterIdentity */
+static int hf_gsm_map_ms_lgd_supportIndicator = -1;  /* NULL */
 static int hf_gsm_map_ms_pdn_gw_update = -1;      /* PDN_GW_Update */
 static int hf_gsm_map_ms_isr_Information = -1;    /* ISR_Information */
 static int hf_gsm_map_ms_apn = -1;                /* APN */
@@ -629,7 +653,7 @@ static int hf_gsm_map_ms_supportedFeatures = -1;  /* SupportedFeatures */
 static int hf_gsm_map_ms_t_adsDataRetrieval = -1;  /* NULL */
 static int hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions = -1;  /* BOOLEAN */
 static int hf_gsm_map_ms_cancellationTypeInitialAttach = -1;  /* NULL */
-static int hf_gsm_map_ms_additionalMsisdnSupport = -1;  /* NULL */
+static int hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions = -1;  /* NULL */
 static int hf_gsm_map_ms_sgsn_mmeSeparationSupported = -1;  /* NULL */
 static int hf_gsm_map_ms_mmeRegisteredforSMS = -1;  /* NULL */
 static int hf_gsm_map_ms_EPLMN_List_item = -1;    /* PLMN_Id */
@@ -750,6 +774,8 @@ static int hf_gsm_map_ms_specificAPNInfoList = -1;  /* SpecificAPNInfoList */
 static int hf_gsm_map_ms_servedPartyIP_IPv6_Address = -1;  /* PDP_Address */
 static int hf_gsm_map_ms_sipto_Permission = -1;   /* SIPTO_Permission */
 static int hf_gsm_map_ms_lipa_Permission = -1;    /* LIPA_Permission */
+static int hf_gsm_map_ms_restoration_Priority = -1;  /* Restoration_Priority */
+static int hf_gsm_map_ms_sipto_local_network_Permission = -1;  /* SIPTO_Local_Network_Permission */
 static int hf_gsm_map_ms_qos_Class_Identifier = -1;  /* QoS_Class_Identifier */
 static int hf_gsm_map_ms_allocation_Retention_Priority = -1;  /* Allocation_Retention_Priority */
 static int hf_gsm_map_ms_max_RequestedBandwidth_UL = -1;  /* Bandwidth */
@@ -922,9 +948,7 @@ static int hf_gsm_map_ms_msNotReachable = -1;     /* NULL */
 static int hf_gsm_map_ms_requestedInfo = -1;      /* RequestedInfo */
 static int hf_gsm_map_ms_callPriority = -1;       /* EMLPP_Priority */
 static int hf_gsm_map_ms_subscriberInfo = -1;     /* SubscriberInfo */
-static int hf_gsm_map_ms_locationInformation = -1;  /* LocationInformation */
 static int hf_gsm_map_ms_subscriberState = -1;    /* SubscriberState */
-static int hf_gsm_map_ms_locationInformationGPRS = -1;  /* LocationInformationGPRS */
 static int hf_gsm_map_ms_ps_SubscriberState = -1;  /* PS_SubscriberState */
 static int hf_gsm_map_ms_ms_Classmark2 = -1;      /* MS_Classmark2 */
 static int hf_gsm_map_ms_gprs_MS_Class = -1;      /* GPRSMSClass */
@@ -933,7 +957,6 @@ static int hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication = -1;  /* IMS_VoiceOv
 static int hf_gsm_map_ms_lastUE_ActivityTime = -1;  /* Time */
 static int hf_gsm_map_ms_lastRAT_Type = -1;       /* Used_RAT_Type */
 static int hf_gsm_map_ms_eps_SubscriberState = -1;  /* PS_SubscriberState */
-static int hf_gsm_map_ms_locationInformationEPS = -1;  /* LocationInformationEPS */
 static int hf_gsm_map_ms_timeZone = -1;           /* TimeZone */
 static int hf_gsm_map_ms_daylightSavingTime = -1;  /* DaylightSavingTime */
 static int hf_gsm_map_ms_routeingNumber = -1;     /* RouteingNumber */
@@ -1156,6 +1179,10 @@ static int hf_gsm_map_ms_SupportedFeatures_localTimeZoneRetrieval = -1;
 static int hf_gsm_map_ms_SupportedFeatures_additionalMsisdn = -1;
 static int hf_gsm_map_ms_SupportedFeatures_smsInMME = -1;
 static int hf_gsm_map_ms_SupportedFeatures_smsInSGSN = -1;
+static int hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification = -1;
+static int hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval = -1;
+static int hf_gsm_map_ms_SupportedFeatures_partialPurge = -1;
+static int hf_gsm_map_ms_SupportedFeatures_gddInSGSN = -1;
 static int hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_not_allowed_bit = -1;
 static int hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_spare_bit = -1;
 static int hf_gsm_map_ms_LCLS_ConfigurationPreference_forward_data_sending_indicator = -1;
@@ -1329,6 +1356,7 @@ static int hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode = -1;  /* OfferedC
 static int hf_gsm_map_ch_pagingArea = -1;         /* PagingArea */
 static int hf_gsm_map_ch_mtrf_Indicator = -1;     /* NULL */
 static int hf_gsm_map_ch_oldMSC_Number = -1;      /* ISDN_AddressString */
+static int hf_gsm_map_ch_lastUsedLtePLMN_Id = -1;  /* PLMN_Id */
 static int hf_gsm_map_ch_o_CSI = -1;              /* O_CSI */
 static int hf_gsm_map_ch_uu_Data = -1;            /* UU_Data */
 static int hf_gsm_map_ch_allInformationSent = -1;  /* NULL */
@@ -1386,6 +1414,8 @@ static int hf_gsm_map_lcs_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_Cap
 static int hf_gsm_map_lcs_additional_LCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
 static int hf_gsm_map_lcs_mme_Name = -1;          /* DiameterIdentity */
 static int hf_gsm_map_lcs_aaa_Server_Name = -1;   /* DiameterIdentity */
+static int hf_gsm_map_lcs_sgsn_Name = -1;         /* DiameterIdentity */
+static int hf_gsm_map_lcs_sgsn_Realm = -1;        /* DiameterIdentity */
 static int hf_gsm_map_lcs_locationType = -1;      /* LocationType */
 static int hf_gsm_map_lcs_mlc_Number = -1;        /* ISDN_AddressString */
 static int hf_gsm_map_lcs_lcs_ClientID = -1;      /* LCS_ClientID */
@@ -1993,6 +2023,7 @@ static gint ett_gsm_map_sm_Additional_Number = -1;
 static gint ett_gsm_map_sm_MO_ForwardSM_Arg = -1;
 static gint ett_gsm_map_sm_MO_ForwardSM_Res = -1;
 static gint ett_gsm_map_sm_MT_ForwardSM_Arg = -1;
+static gint ett_gsm_map_sm_CorrelationID = -1;
 static gint ett_gsm_map_sm_MT_ForwardSM_Res = -1;
 static gint ett_gsm_map_sm_SM_RP_DA = -1;
 static gint ett_gsm_map_sm_SM_RP_OA = -1;
@@ -6087,6 +6118,32 @@ dissect_gsm_map_sm_SM_DeliveryNotIntended(gboolean implicit_tag _U_, tvbuff_t *t
 }
 
 
+
+static int
+dissect_gsm_map_sm_SIP_URI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+static const ber_sequence_t gsm_map_sm_CorrelationID_sequence[] = {
+  { &hf_gsm_map_sm_hlr_id   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_HLR_Id },
+  { &hf_gsm_map_sm_sip_uri_A, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SIP_URI },
+  { &hf_gsm_map_sm_sip_uri_B, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SIP_URI },
+  { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gsm_map_sm_CorrelationID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   gsm_map_sm_CorrelationID_sequence, hf_index, ett_gsm_map_sm_CorrelationID);
+
+  return offset;
+}
+
+
 static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Arg_sequence[] = {
   { &hf_gsm_map_sm_msisdn   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_sm_sm_RP_PRI, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_BOOLEAN },
@@ -6098,6 +6155,9 @@ static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Arg_sequence[] = {
   { &hf_gsm_map_sm_sm_deliveryNotIntended, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryNotIntended },
   { &hf_gsm_map_sm_ip_sm_gwGuidanceIndicator, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
   { &hf_gsm_map_sm_imsi     , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
+  { &hf_gsm_map_sm_t4_Trigger_Indicator, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
+  { &hf_gsm_map_sm_singleAttemptDelivery, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
+  { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -6318,12 +6378,31 @@ dissect_gsm_map_sm_SM_RP_OA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 }
 
 
+static const value_string gsm_map_sm_SM_DeliveryOutcome_vals[] = {
+  {   0, "memoryCapacityExceeded" },
+  {   1, "absentSubscriber" },
+  {   2, "successfulTransfer" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_gsm_map_sm_SM_DeliveryOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+
+
 static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = {
   { &hf_gsm_map_sm_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_DA },
   { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA },
   { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
   { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
   { &hf_gsm_map_sm_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
+  { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID },
+  { &hf_gsm_map_sm_sm_DeliveryOutcome, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -6380,6 +6459,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = {
   { &hf_gsm_map_sm_smDeliveryTimer, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryTimerValue },
   { &hf_gsm_map_sm_smDeliveryStartTime, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Time },
   { &hf_gsm_map_sm_smsOverIP_OnlyIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
+  { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -6427,23 +6507,6 @@ dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 }
 
 
-static const value_string gsm_map_sm_SM_DeliveryOutcome_vals[] = {
-  {   0, "memoryCapacityExceeded" },
-  {   1, "absentSubscriber" },
-  {   2, "successfulTransfer" },
-  { 0, NULL }
-};
-
-
-static int
-dissect_gsm_map_sm_SM_DeliveryOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                  NULL);
-
-  return offset;
-}
-
-
 static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusArg_sequence[] = {
   { &hf_gsm_map_sm_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString },
@@ -6458,6 +6521,8 @@ static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusArg_sequence[] = {
   { &hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome },
   { &hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
   { &hf_gsm_map_sm_imsi     , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
+  { &hf_gsm_map_sm_singleAttemptDelivery, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
+  { &hf_gsm_map_sm_correlationID, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_CorrelationID },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -6489,6 +6554,7 @@ static const ber_sequence_t gsm_map_sm_AlertServiceCentreArg_sequence[] = {
   { &hf_gsm_map_sm_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString },
   { &hf_gsm_map_sm_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
+  { &hf_gsm_map_sm_correlationID, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_CorrelationID },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -7412,6 +7478,96 @@ dissect_gsm_map_om_LoggingDuration(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 }
 
 
+static const value_string gsm_map_om_PeriodUMTS_vals[] = {
+  {   0, "d250ms" },
+  {   1, "d500ms" },
+  {   2, "d1000ms" },
+  {   3, "d2000ms" },
+  {   4, "d3000ms" },
+  {   5, "d4000ms" },
+  {   6, "d6000ms" },
+  {   7, "d8000ms" },
+  {   8, "d12000ms" },
+  {   9, "d16000ms" },
+  {  10, "d20000ms" },
+  {  11, "d24000ms" },
+  {  12, "d28000ms" },
+  {  13, "d32000ms" },
+  {  14, "d64000ms" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_gsm_map_om_PeriodUMTS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+
+
+static const value_string gsm_map_om_PeriodLTE_vals[] = {
+  {   0, "d1024ms" },
+  {   1, "d1280ms" },
+  {   2, "d2048ms" },
+  {   3, "d2560ms" },
+  {   4, "d5120ms" },
+  {   5, "d10240ms" },
+  {   6, "d1min" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_gsm_map_om_PeriodLTE(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_om_PositioningMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_om_MeasurementQuantity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_om_EventThreshold1F(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                                NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_om_EventThreshold1I(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                                NULL);
+
+  return offset;
+}
+
+
 static const ber_sequence_t gsm_map_om_MDT_Configuration_sequence[] = {
   { &hf_gsm_map_om_jobType  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_JobType },
   { &hf_gsm_map_om_areaScope, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_om_AreaScope },
@@ -7424,6 +7580,14 @@ static const ber_sequence_t gsm_map_om_MDT_Configuration_sequence[] = {
   { &hf_gsm_map_om_loggingInterval, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_LoggingInterval },
   { &hf_gsm_map_om_loggingDuration, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_LoggingDuration },
   { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_om_measurementPeriodUMTS, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodUMTS },
+  { &hf_gsm_map_om_measurementPeriodLTE, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodLTE },
+  { &hf_gsm_map_om_collectionPeriodRRM_UMTS, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodUMTS },
+  { &hf_gsm_map_om_collectionPeriodRRM_LTE, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PeriodLTE },
+  { &hf_gsm_map_om_positioningMethod, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PositioningMethod },
+  { &hf_gsm_map_om_measurementQuantity, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MeasurementQuantity },
+  { &hf_gsm_map_om_eventThreshold1F, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_EventThreshold1F },
+  { &hf_gsm_map_om_eventThreshold1I, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_EventThreshold1I },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -7877,6 +8041,7 @@ static const ber_sequence_t gsm_map_ms_CancelLocationArg_U_sequence[] = {
   { &hf_gsm_map_ms_newMSC_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_ms_newVLR_Number, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_ms_new_lmsi , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
+  { &hf_gsm_map_ms_reattach_Required, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -7913,11 +8078,193 @@ dissect_gsm_map_ms_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U
 }
 
 
+
+int
+dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 904 "../../asn1/gsm_map/gsm_map.cnf"
+ tvbuff_t      *parameter_tvb;
+ proto_tree    *subtree;
+ const char    *digit_str;
+ guint8                na;
+ guint8                np;
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       &parameter_tvb);
+
+  if (!parameter_tvb)
+      return offset;
+
+  subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LocationNumber);
+
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_odd_even, tvb, 0, 1, ENC_BIG_ENDIAN);
+  na = tvb_get_guint8(tvb,0) & 0x7f;
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_nai, tvb, 0, 1, ENC_BIG_ENDIAN);
+
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_inn, tvb, 1, 1, ENC_BIG_ENDIAN);
+  np = (tvb_get_guint8(tvb,1) & 0x70) >> 4;
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_npi, tvb, 1, 1, ENC_BIG_ENDIAN);
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_apri, tvb, 1, 1, ENC_BIG_ENDIAN);
+  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_screening_ind, tvb, 1, 1, ENC_BIG_ENDIAN);
+
+ digit_str = unpack_digits(tvb, 1);
+
+ proto_tree_add_string(tree, hf_gsm_map_locationnumber_digits, tvb, 1, -1, digit_str);
+
+ if ((na == 3) && (np==1))/*International Number & E164*/
+       dissect_e164_cc(tvb, tree, 1, TRUE);
+
+
+
+  return offset;
+}
+
+
+
+int
+dissect_gsm_map_ms_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_ms_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+static const ber_sequence_t gsm_map_ms_LocationInformationEPS_sequence[] = {
+  { &hf_gsm_map_ms_e_utranCellGlobalIdentity, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_E_UTRAN_CGI },
+  { &hf_gsm_map_ms_trackingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TA_Id },
+  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
+  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
+  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
+  { &hf_gsm_map_ms_mme_Name , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
+  { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gsm_map_ms_LocationInformationEPS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   gsm_map_ms_LocationInformationEPS_sequence, hf_index, ett_gsm_map_ms_LocationInformationEPS);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_ms_CSG_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
+                                    NULL, hf_index, -1,
+                                    NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_ms_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
+
+  return offset;
+}
+
+
+static const ber_sequence_t gsm_map_ms_UserCSGInformation_sequence[] = {
+  { &hf_gsm_map_ms_csg_Id   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_Id },
+  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_accessMode, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
+  { &hf_gsm_map_ms_cmi      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
+  { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gsm_map_ms_UserCSGInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   gsm_map_ms_UserCSGInformation_sequence, hf_index, ett_gsm_map_ms_UserCSGInformation);
+
+  return offset;
+}
+
+
+static const ber_sequence_t gsm_map_ms_LocationInformation_sequence[] = {
+  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AgeOfLocationInformation },
+  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
+  { &hf_gsm_map_ms_vlr_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+  { &hf_gsm_map_ms_locationNumber, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationNumber },
+  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
+  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_selectedLSA_Id, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
+  { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
+  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS },
+  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
+  { NULL, 0, 0, 0, NULL }
+};
+
+int
+dissect_gsm_map_ms_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   gsm_map_ms_LocationInformation_sequence, hf_index, ett_gsm_map_ms_LocationInformation);
+
+  return offset;
+}
+
+
+static const ber_sequence_t gsm_map_ms_LocationInformationGPRS_sequence[] = {
+  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
+  { &hf_gsm_map_ms_routeingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_RAIdentity },
+  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
+  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+  { &hf_gsm_map_ms_selectedLSAIdentity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
+  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
+  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
+  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
+  { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gsm_map_ms_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
+                                   gsm_map_ms_LocationInformationGPRS_sequence, hf_index, ett_gsm_map_ms_LocationInformationGPRS);
+
+  return offset;
+}
+
+
 static const ber_sequence_t gsm_map_ms_PurgeMS_Arg_U_sequence[] = {
   { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
   { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation },
+  { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS },
+  { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -8230,6 +8577,8 @@ static const ber_sequence_t gsm_map_ms_SendIdentificationRes_U_sequence[] = {
   { &hf_gsm_map_ms_authenticationSetList, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_AuthenticationSetList },
   { &hf_gsm_map_ms_currentSecurityContext, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_CurrentSecurityContext },
   { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
+  { &hf_gsm_map_ms_lastUsedLtePLMN_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id },
+  { &hf_gsm_map_ms_mtCallPendingFlag, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -8378,6 +8727,10 @@ static const asn_namedbit gsm_map_ms_SupportedFeatures_bits[] = {
   { 27, &hf_gsm_map_ms_SupportedFeatures_additionalMsisdn, -1, -1, "additionalMsisdn", NULL },
   { 28, &hf_gsm_map_ms_SupportedFeatures_smsInMME, -1, -1, "smsInMME", NULL },
   { 29, &hf_gsm_map_ms_SupportedFeatures_smsInSGSN, -1, -1, "smsInSGSN", NULL },
+  { 30, &hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification, -1, -1, "ue-Reachability-Notification", NULL },
+  { 31, &hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval, -1, -1, "state-Location-Information-Retrieval", NULL },
+  { 32, &hf_gsm_map_ms_SupportedFeatures_partialPurge, -1, -1, "partialPurge", NULL },
+  { 33, &hf_gsm_map_ms_SupportedFeatures_gddInSGSN, -1, -1, "gddInSGSN", NULL },
   { 0, NULL, 0, 0, NULL, NULL }
 };
 
@@ -8405,8 +8758,8 @@ static const ber_sequence_t gsm_map_ms_SGSN_Capability_sequence[] = {
   { &hf_gsm_map_ms_t_adsDataRetrieval, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { &hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN },
   { &hf_gsm_map_ms_cancellationTypeInitialAttach, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_additionalMsisdnSupport, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { &hf_gsm_map_ms_msisdn_lessOperation_Supported, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -8436,7 +8789,7 @@ dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
     length = tvb_length(parameter_tvb);
     name_len = tvb_get_guint8(parameter_tvb, 0);
-       apn_str = tvb_get_string(wmem_packet_scope(), parameter_tvb, 1, length - 1);
+    apn_str = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 1, length - 1, ENC_ASCII|ENC_NA);
     if (name_len < length-1) {
                for (;;) {
                        if (name_len >= length - 1)
@@ -8636,6 +8989,10 @@ static const ber_sequence_t gsm_map_ms_UpdateGprsLocationArg_sequence[] = {
   { &hf_gsm_map_ms_mmeNumberforMTSMS, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
   { &hf_gsm_map_ms_smsRegisterRequest, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMSRegisterRequest },
   { &hf_gsm_map_ms_sms_Only , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_removalofMMERegistrationforSMS, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
+  { &hf_gsm_map_ms_sgsn_Name, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
+  { &hf_gsm_map_ms_sgsn_Realm, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
+  { &hf_gsm_map_ms_lgd_supportIndicator, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -9143,17 +9500,6 @@ dissect_gsm_map_ms_LCLS_ConfigurationPreference(gboolean implicit_tag _U_, tvbuf
 }
 
 
-
-static int
-dissect_gsm_map_ms_CSG_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
-                                    NULL, hf_index, -1,
-                                    NULL);
-
-  return offset;
-}
-
-
 static const ber_sequence_t gsm_map_ms_LIPA_AllowedAPNList_sequence_of[1] = {
   { &hf_gsm_map_ms_LIPA_AllowedAPNList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_APN },
 };
@@ -9890,31 +10236,57 @@ dissect_gsm_map_ms_AMBR(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
 
 static const value_string gsm_map_ms_SIPTO_Permission_vals[] = {
-  {   0, "siptoAllowed" },
-  {   1, "siptoNotAllowed" },
+  {   0, "siptoAboveRanAllowed" },
+  {   1, "siptoAboveRanNotAllowed" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_gsm_map_ms_SIPTO_Permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+
+
+static const value_string gsm_map_ms_LIPA_Permission_vals[] = {
+  {   0, "lipaProhibited" },
+  {   1, "lipaOnly" },
+  {   2, "lipaConditional" },
   { 0, NULL }
 };
 
 
 static int
-dissect_gsm_map_ms_SIPTO_Permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                  NULL);
+dissect_gsm_map_ms_LIPA_Permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+
+
+
+static int
+dissect_gsm_map_ms_Restoration_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+                                       NULL);
 
   return offset;
 }
 
 
-static const value_string gsm_map_ms_LIPA_Permission_vals[] = {
-  {   0, "lipaProhibited" },
-  {   1, "lipaOnly" },
-  {   2, "lipaConditional" },
+static const value_string gsm_map_ms_SIPTO_Local_Network_Permission_vals[] = {
+  {   0, "siptoAtLocalNetworkAllowed" },
+  {   1, "siptoAtLocalNetworkNotAllowed" },
   { 0, NULL }
 };
 
 
 static int
-dissect_gsm_map_ms_LIPA_Permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_gsm_map_ms_SIPTO_Local_Network_Permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -9941,6 +10313,8 @@ static const ber_sequence_t gsm_map_ms_PDP_Context_sequence[] = {
   { &hf_gsm_map_ms_ambr     , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR },
   { &hf_gsm_map_ms_sipto_Permission, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Permission },
   { &hf_gsm_map_ms_lipa_Permission, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LIPA_Permission },
+  { &hf_gsm_map_ms_restoration_Priority, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Restoration_Priority },
+  { &hf_gsm_map_ms_sipto_local_network_Permission, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Local_Network_Permission },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -10017,16 +10391,6 @@ dissect_gsm_map_ms_LSAOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *t
 
 
 
-int
-dissect_gsm_map_ms_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                       NULL);
-
-  return offset;
-}
-
-
-
 static int
 dissect_gsm_map_ms_LSAAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -10775,6 +11139,8 @@ static const ber_sequence_t gsm_map_ms_APN_Configuration_sequence[] = {
   { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement },
   { &hf_gsm_map_ms_sipto_Permission, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Permission },
   { &hf_gsm_map_ms_lipa_Permission, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LIPA_Permission },
+  { &hf_gsm_map_ms_restoration_Priority, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Restoration_Priority },
+  { &hf_gsm_map_ms_sipto_local_network_Permission, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SIPTO_Local_Network_Permission },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -12263,140 +12629,6 @@ dissect_gsm_map_ms_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t
 }
 
 
-
-int
-dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                       NULL);
-
-  return offset;
-}
-
-
-
-static int
-dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 904 "../../asn1/gsm_map/gsm_map.cnf"
- tvbuff_t      *parameter_tvb;
- proto_tree    *subtree;
- const char    *digit_str;
- guint8                na;
- guint8                np;
-  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                       &parameter_tvb);
-
-  if (!parameter_tvb)
-      return offset;
-
-  subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LocationNumber);
-
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_odd_even, tvb, 0, 1, ENC_BIG_ENDIAN);
-  na = tvb_get_guint8(tvb,0) & 0x7f;
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_nai, tvb, 0, 1, ENC_BIG_ENDIAN);
-
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_inn, tvb, 1, 1, ENC_BIG_ENDIAN);
-  np = (tvb_get_guint8(tvb,1) & 0x70) >> 4;
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_npi, tvb, 1, 1, ENC_BIG_ENDIAN);
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_apri, tvb, 1, 1, ENC_BIG_ENDIAN);
-  proto_tree_add_item(subtree, hf_gsm_map_locationnumber_screening_ind, tvb, 1, 1, ENC_BIG_ENDIAN);
-
- digit_str = unpack_digits(tvb, 1);
-
- proto_tree_add_string(tree, hf_gsm_map_locationnumber_digits, tvb, 1, -1, digit_str);
-
- if ((na == 3) && (np==1))/*International Number & E164*/
-       dissect_e164_cc(tvb, tree, 1, TRUE);
-
-
-
-  return offset;
-}
-
-
-
-static int
-dissect_gsm_map_ms_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                       NULL);
-
-  return offset;
-}
-
-
-static const ber_sequence_t gsm_map_ms_LocationInformationEPS_sequence[] = {
-  { &hf_gsm_map_ms_e_utranCellGlobalIdentity, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_E_UTRAN_CGI },
-  { &hf_gsm_map_ms_trackingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TA_Id },
-  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
-  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
-  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
-  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
-  { &hf_gsm_map_ms_mme_Name , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
-  { NULL, 0, 0, 0, NULL }
-};
-
-static int
-dissect_gsm_map_ms_LocationInformationEPS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
-                                   gsm_map_ms_LocationInformationEPS_sequence, hf_index, ett_gsm_map_ms_LocationInformationEPS);
-
-  return offset;
-}
-
-
-
-static int
-dissect_gsm_map_ms_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                       NULL);
-
-  return offset;
-}
-
-
-static const ber_sequence_t gsm_map_ms_UserCSGInformation_sequence[] = {
-  { &hf_gsm_map_ms_csg_Id   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_Id },
-  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
-  { &hf_gsm_map_ms_accessMode, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
-  { &hf_gsm_map_ms_cmi      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
-  { NULL, 0, 0, 0, NULL }
-};
-
-static int
-dissect_gsm_map_ms_UserCSGInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
-                                   gsm_map_ms_UserCSGInformation_sequence, hf_index, ett_gsm_map_ms_UserCSGInformation);
-
-  return offset;
-}
-
-
-static const ber_sequence_t gsm_map_ms_LocationInformation_sequence[] = {
-  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AgeOfLocationInformation },
-  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
-  { &hf_gsm_map_ms_vlr_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
-  { &hf_gsm_map_ms_locationNumber, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationNumber },
-  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
-  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
-  { &hf_gsm_map_ms_selectedLSA_Id, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
-  { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
-  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
-  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS },
-  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
-  { NULL, 0, 0, 0, NULL }
-};
-
-int
-dissect_gsm_map_ms_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
-                                   gsm_map_ms_LocationInformation_sequence, hf_index, ett_gsm_map_ms_LocationInformation);
-
-  return offset;
-}
-
-
 static const value_string gsm_map_ms_NotReachableReason_vals[] = {
   {   0, "msPurged" },
   {   1, "imsiDetached" },
@@ -12441,30 +12673,6 @@ dissect_gsm_map_ms_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 }
 
 
-static const ber_sequence_t gsm_map_ms_LocationInformationGPRS_sequence[] = {
-  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
-  { &hf_gsm_map_ms_routeingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_RAIdentity },
-  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
-  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
-  { &hf_gsm_map_ms_selectedLSAIdentity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
-  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
-  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
-  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
-  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
-  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
-  { NULL, 0, 0, 0, NULL }
-};
-
-static int
-dissect_gsm_map_ms_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
-                                   gsm_map_ms_LocationInformationGPRS_sequence, hf_index, ett_gsm_map_ms_LocationInformationGPRS);
-
-  return offset;
-}
-
-
 
 static int
 dissect_gsm_map_ms_NSAPI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -14053,6 +14261,7 @@ static const ber_sequence_t gsm_map_ch_ProvideRoamingNumberArg_sequence[] = {
   { &hf_gsm_map_ch_callPriority, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
   { &hf_gsm_map_ch_mtrf_Indicator, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
   { &hf_gsm_map_ch_oldMSC_Number, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+  { &hf_gsm_map_ch_lastUsedLtePLMN_Id, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -14520,6 +14729,8 @@ static const ber_sequence_t gsm_map_lcs_LCSLocationInfo_sequence[] = {
   { &hf_gsm_map_lcs_additional_LCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets },
   { &hf_gsm_map_lcs_mme_Name, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
   { &hf_gsm_map_lcs_aaa_Server_Name, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
+  { &hf_gsm_map_lcs_sgsn_Name, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
+  { &hf_gsm_map_lcs_sgsn_Realm, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
   { NULL, 0, 0, 0, NULL }
 };
 
@@ -22812,6 +23023,18 @@ void proto_register_gsm_map(void) {
       { "imsi", "gsm_map.sm.imsi",
         FT_BYTES, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_gsm_map_sm_t4_Trigger_Indicator,
+      { "t4-Trigger-Indicator", "gsm_map.sm.t4_Trigger_Indicator_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_sm_singleAttemptDelivery,
+      { "singleAttemptDelivery", "gsm_map.sm.singleAttemptDelivery_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_sm_correlationID,
+      { "correlationID", "gsm_map.sm.correlationID_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_sm_locationInfoWithLMSI,
       { "locationInfoWithLMSI", "gsm_map.sm.locationInfoWithLMSI_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -22884,6 +23107,10 @@ void proto_register_gsm_map(void) {
       { "sm-RP-UI", "gsm_map.sm.sm_RP_UI",
         FT_BYTES, BASE_NONE, NULL, 0,
         "SignalInfo", HFILL }},
+    { &hf_gsm_map_sm_sm_DeliveryOutcome,
+      { "sm-DeliveryOutcome", "gsm_map.sm.sm_DeliveryOutcome",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0,
+        NULL, HFILL }},
     { &hf_gsm_map_sm_moreMessagesToSend,
       { "moreMessagesToSend", "gsm_map.sm.moreMessagesToSend_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -22900,6 +23127,18 @@ void proto_register_gsm_map(void) {
       { "smsOverIP-OnlyIndicator", "gsm_map.sm.smsOverIP_OnlyIndicator_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_gsm_map_sm_hlr_id,
+      { "hlr-id", "gsm_map.sm.hlr_id",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_sm_sip_uri_A,
+      { "sip-uri-A", "gsm_map.sm.sip_uri_A",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "SIP_URI", HFILL }},
+    { &hf_gsm_map_sm_sip_uri_B,
+      { "sip-uri-B", "gsm_map.sm.sip_uri_B",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "SIP_URI", HFILL }},
     { &hf_gsm_map_sm_imsi_01,
       { "imsi", "gsm_map.sm.imsi",
         FT_BYTES, BASE_NONE, NULL, 0,
@@ -22928,10 +23167,6 @@ void proto_register_gsm_map(void) {
       { "noSM-RP-OA", "gsm_map.sm.noSM_RP_OA_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
-    { &hf_gsm_map_sm_sm_DeliveryOutcome,
-      { "sm-DeliveryOutcome", "gsm_map.sm.sm_DeliveryOutcome",
-        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0,
-        NULL, HFILL }},
     { &hf_gsm_map_sm_absentSubscriberDiagnosticSM,
       { "absentSubscriberDiagnosticSM", "gsm_map.sm.absentSubscriberDiagnosticSM",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -23111,6 +23346,38 @@ void proto_register_gsm_map(void) {
       { "loggingDuration", "gsm_map.om.loggingDuration",
         FT_UINT32, BASE_DEC, VALS(gsm_map_om_LoggingDuration_vals), 0,
         NULL, HFILL }},
+    { &hf_gsm_map_om_measurementPeriodUMTS,
+      { "measurementPeriodUMTS", "gsm_map.om.measurementPeriodUMTS",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodUMTS_vals), 0,
+        "PeriodUMTS", HFILL }},
+    { &hf_gsm_map_om_measurementPeriodLTE,
+      { "measurementPeriodLTE", "gsm_map.om.measurementPeriodLTE",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodLTE_vals), 0,
+        "PeriodLTE", HFILL }},
+    { &hf_gsm_map_om_collectionPeriodRRM_UMTS,
+      { "collectionPeriodRRM-UMTS", "gsm_map.om.collectionPeriodRRM_UMTS",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodUMTS_vals), 0,
+        "PeriodUMTS", HFILL }},
+    { &hf_gsm_map_om_collectionPeriodRRM_LTE,
+      { "collectionPeriodRRM-LTE", "gsm_map.om.collectionPeriodRRM_LTE",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_om_PeriodLTE_vals), 0,
+        "PeriodLTE", HFILL }},
+    { &hf_gsm_map_om_positioningMethod,
+      { "positioningMethod", "gsm_map.om.positioningMethod",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_om_measurementQuantity,
+      { "measurementQuantity", "gsm_map.om.measurementQuantity",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_om_eventThreshold1F,
+      { "eventThreshold1F", "gsm_map.om.eventThreshold1F",
+        FT_INT32, BASE_DEC, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_om_eventThreshold1I,
+      { "eventThreshold1I", "gsm_map.om.eventThreshold1I",
+        FT_INT32, BASE_DEC, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_om_cgi_List,
       { "cgi-List", "gsm_map.om.cgi_List",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -23858,10 +24125,26 @@ void proto_register_gsm_map(void) {
       { "new-lmsi", "gsm_map.ms.new_lmsi",
         FT_BYTES, BASE_NONE, NULL, 0,
         "LMSI", HFILL }},
+    { &hf_gsm_map_ms_reattach_Required,
+      { "reattach-Required", "gsm_map.ms.reattach_Required_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_sgsn_Number,
       { "sgsn-Number", "gsm_map.ms.sgsn_Number",
         FT_BYTES, BASE_NONE, NULL, 0,
         "ISDN_AddressString", HFILL }},
+    { &hf_gsm_map_ms_locationInformation,
+      { "locationInformation", "gsm_map.ms.locationInformation_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_locationInformationGPRS,
+      { "locationInformationGPRS", "gsm_map.ms.locationInformationGPRS_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_locationInformationEPS,
+      { "locationInformationEPS", "gsm_map.ms.locationInformationEPS_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_freezeTMSI,
       { "freezeTMSI", "gsm_map.ms.freezeTMSI_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -23902,6 +24185,14 @@ void proto_register_gsm_map(void) {
       { "currentSecurityContext", "gsm_map.ms.currentSecurityContext",
         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CurrentSecurityContext_vals), 0,
         NULL, HFILL }},
+    { &hf_gsm_map_ms_lastUsedLtePLMN_Id,
+      { "lastUsedLtePLMN-Id", "gsm_map.ms.lastUsedLtePLMN_Id",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "PLMN_Id", HFILL }},
+    { &hf_gsm_map_ms_mtCallPendingFlag,
+      { "mtCallPendingFlag", "gsm_map.ms.mtCallPendingFlag_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_tripletList,
       { "tripletList", "gsm_map.ms.tripletList",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -24034,6 +24325,22 @@ void proto_register_gsm_map(void) {
       { "sms-Only", "gsm_map.ms.sms_Only_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_gsm_map_ms_removalofMMERegistrationforSMS,
+      { "removalofMMERegistrationforSMS", "gsm_map.ms.removalofMMERegistrationforSMS_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_sgsn_Name,
+      { "sgsn-Name", "gsm_map.ms.sgsn_Name",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "DiameterIdentity", HFILL }},
+    { &hf_gsm_map_ms_sgsn_Realm,
+      { "sgsn-Realm", "gsm_map.ms.sgsn_Realm",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "DiameterIdentity", HFILL }},
+    { &hf_gsm_map_ms_lgd_supportIndicator,
+      { "lgd-supportIndicator", "gsm_map.ms.lgd_supportIndicator_element",
+        FT_NONE, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_pdn_gw_update,
       { "pdn-gw-update", "gsm_map.ms.pdn_gw_update_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -24078,8 +24385,8 @@ void proto_register_gsm_map(void) {
       { "cancellationTypeInitialAttach", "gsm_map.ms.cancellationTypeInitialAttach_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
-    { &hf_gsm_map_ms_additionalMsisdnSupport,
-      { "additionalMsisdnSupport", "gsm_map.ms.additionalMsisdnSupport_element",
+    { &hf_gsm_map_ms_updateofHomogeneousSupportOfIMSVoiceOverPSSessions,
+      { "updateofHomogeneousSupportOfIMSVoiceOverPSSessions", "gsm_map.ms.updateofHomogeneousSupportOfIMSVoiceOverPSSessions_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
     { &hf_gsm_map_ms_sgsn_mmeSeparationSupported,
@@ -24562,6 +24869,14 @@ void proto_register_gsm_map(void) {
       { "lipa-Permission", "gsm_map.ms.lipa_Permission",
         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LIPA_Permission_vals), 0,
         NULL, HFILL }},
+    { &hf_gsm_map_ms_restoration_Priority,
+      { "restoration-Priority", "gsm_map.ms.restoration_Priority",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_sipto_local_network_Permission,
+      { "sipto-local-network-Permission", "gsm_map.ms.sipto_local_network_Permission",
+        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SIPTO_Local_Network_Permission_vals), 0,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_qos_Class_Identifier,
       { "qos-Class-Identifier", "gsm_map.ms.qos_Class_Identifier",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -25250,18 +25565,10 @@ void proto_register_gsm_map(void) {
       { "subscriberInfo", "gsm_map.ms.subscriberInfo_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
-    { &hf_gsm_map_ms_locationInformation,
-      { "locationInformation", "gsm_map.ms.locationInformation_element",
-        FT_NONE, BASE_NONE, NULL, 0,
-        NULL, HFILL }},
     { &hf_gsm_map_ms_subscriberState,
       { "subscriberState", "gsm_map.ms.subscriberState",
         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SubscriberState_vals), 0,
         NULL, HFILL }},
-    { &hf_gsm_map_ms_locationInformationGPRS,
-      { "locationInformationGPRS", "gsm_map.ms.locationInformationGPRS_element",
-        FT_NONE, BASE_NONE, NULL, 0,
-        NULL, HFILL }},
     { &hf_gsm_map_ms_ps_SubscriberState,
       { "ps-SubscriberState", "gsm_map.ms.ps_SubscriberState",
         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0,
@@ -25294,10 +25601,6 @@ void proto_register_gsm_map(void) {
       { "eps-SubscriberState", "gsm_map.ms.eps_SubscriberState",
         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0,
         "PS_SubscriberState", HFILL }},
-    { &hf_gsm_map_ms_locationInformationEPS,
-      { "locationInformationEPS", "gsm_map.ms.locationInformationEPS_element",
-        FT_NONE, BASE_NONE, NULL, 0,
-        NULL, HFILL }},
     { &hf_gsm_map_ms_timeZone,
       { "timeZone", "gsm_map.ms.timeZone",
         FT_BYTES, BASE_NONE, NULL, 0,
@@ -26182,6 +26485,22 @@ void proto_register_gsm_map(void) {
       { "smsInSGSN", "gsm_map.ms.smsInSGSN",
         FT_BOOLEAN, 8, NULL, 0x04,
         NULL, HFILL }},
+    { &hf_gsm_map_ms_SupportedFeatures_ue_Reachability_Notification,
+      { "ue-Reachability-Notification", "gsm_map.ms.ue-Reachability-Notification",
+        FT_BOOLEAN, 8, NULL, 0x02,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_SupportedFeatures_state_Location_Information_Retrieval,
+      { "state-Location-Information-Retrieval", "gsm_map.ms.state-Location-Information-Retrieval",
+        FT_BOOLEAN, 8, NULL, 0x01,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_SupportedFeatures_partialPurge,
+      { "partialPurge", "gsm_map.ms.partialPurge",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        NULL, HFILL }},
+    { &hf_gsm_map_ms_SupportedFeatures_gddInSGSN,
+      { "gddInSGSN", "gsm_map.ms.gddInSGSN",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        NULL, HFILL }},
     { &hf_gsm_map_ms_LCLS_Negotiation_permission_indicator_not_allowed_bit,
       { "permission-indicator-not-allowed-bit", "gsm_map.ms.permission-indicator-not-allowed-bit",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -26865,6 +27184,10 @@ void proto_register_gsm_map(void) {
       { "oldMSC-Number", "gsm_map.ch.oldMSC_Number",
         FT_BYTES, BASE_NONE, NULL, 0,
         "ISDN_AddressString", HFILL }},
+    { &hf_gsm_map_ch_lastUsedLtePLMN_Id,
+      { "lastUsedLtePLMN-Id", "gsm_map.ch.lastUsedLtePLMN_Id",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "PLMN_Id", HFILL }},
     { &hf_gsm_map_ch_o_CSI,
       { "o-CSI", "gsm_map.ch.o_CSI_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -27080,6 +27403,14 @@ void proto_register_gsm_map(void) {
       { "aaa-Server-Name", "gsm_map.lcs.aaa_Server_Name",
         FT_BYTES, BASE_NONE, NULL, 0,
         "DiameterIdentity", HFILL }},
+    { &hf_gsm_map_lcs_sgsn_Name,
+      { "sgsn-Name", "gsm_map.lcs.sgsn_Name",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "DiameterIdentity", HFILL }},
+    { &hf_gsm_map_lcs_sgsn_Realm,
+      { "sgsn-Realm", "gsm_map.lcs.sgsn_Realm",
+        FT_BYTES, BASE_NONE, NULL, 0,
+        "DiameterIdentity", HFILL }},
     { &hf_gsm_map_lcs_locationType,
       { "locationType", "gsm_map.lcs.locationType_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -28989,6 +29320,7 @@ void proto_register_gsm_map(void) {
     &ett_gsm_map_sm_MO_ForwardSM_Arg,
     &ett_gsm_map_sm_MO_ForwardSM_Res,
     &ett_gsm_map_sm_MT_ForwardSM_Arg,
+    &ett_gsm_map_sm_CorrelationID,
     &ett_gsm_map_sm_MT_ForwardSM_Res,
     &ett_gsm_map_sm_SM_RP_DA,
     &ett_gsm_map_sm_SM_RP_OA,
index cf2b94287935bd3a16a0c14a2dc101ea2ba5e88e..3f83ec6747e58a35af9bb3f76ebcfaf34db317c4 100644 (file)
@@ -227,9 +227,9 @@ static int hf_egprs_acknack_crbb_starting_color_code = -1;
 static int hf_arfcn = -1;
 static int hf_maio = -1;
 static int hf_hsn = -1;
+#if 0
 static int hf_channel_description_channel_type_and_tdma_offset = -1;
 static int hf_channel_description_tn = -1;
-#if 0
 static int hf_group_call_reference_value = -1;
 static int hf_group_call_reference_sf = -1;
 static int hf_group_call_reference_af = -1;
@@ -307,8 +307,10 @@ static int hf_packet_control_acknowledgement_ctrl_ack = -1;
 /* < Packet Downlink Dummy Control Block message content > */
 
 /* < Packet Uplink Dummy Control Block message content > */
+#if 0
 static int hf_receive_n_pdu_number_nsapi = -1;
 static int hf_receive_n_pdu_number_value = -1;
+#endif
 
 /* < MS Radio Access capability IE > */
 static int hf_dtm_egprs_dtm_egprs_multislot_class = -1;
@@ -473,7 +475,7 @@ static int hf_change_mark_change_mark_1 = -1;
 static int hf_change_mark_change_mark_2 = -1;
 static int hf_indirect_encoding_ma_number = -1;
 static int hf_packet_request_reference_random_access_information = -1;
-static int hf_timeslot_allocation_usf_tn = -1;
+static int hf_timeslot_allocation_usf_tn = -1;  /* XXX: missing hf[] entry */
 static int hf_extended_dynamic_allocation = -1;
 static int hf_rlc_data_blocks_granted = -1;
 static int hf_single_block_allocation_timeslot_number = -1;
@@ -951,7 +953,7 @@ static int hf_packet_system_info_type13_si2n_support = -1;
 
 
 
-
+#if 0
 static int hf_si1_restoctet_nch_position = -1;
 static int hf_si1_restoctet_bandindicator = -1;
 static int hf_selection_parameters_cbq = -1;
@@ -974,11 +976,14 @@ static int hf_pch_and_nch_info_callpriority = -1;
 static int hf_si6_restoctet_vbs_vgcs_options = -1;
 static int hf_si6_restoctet_max_lapdm = -1;
 static int hf_si6_restoctet_bandindicator = -1;
+#endif
 
 /* Generated from convert_proto_tree_add_text.pl */
 static int hf_gsm_rlcmac_sync_case_tstd = -1;
+#if 0
 static int hf_gsm_rlcmac_diversity = -1;
 static int hf_gsm_rlcmac_scrambling_code = -1;
+#endif
 static int hf_gsm_rlcmac_cell_parameter = -1;
 static int hf_gsm_rlcmac_diversity_tdd = -1;
 
@@ -8474,8 +8479,6 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_single_rf_channel_spare,
       { "spare",        "gsm_rlcmac.dl.single_rf_channel_spare",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8501,6 +8504,7 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
+#if 0
     { &hf_channel_description_channel_type_and_tdma_offset,
       { "Channel_type_and_TDMA_offset",        "gsm_rlcmac.dl.channel_description_channel_type_and_tdma_offset",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8513,6 +8517,7 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
+#endif
     { &hf_tsc,
       { "TSC",        "gsm_rlcmac.dl.tsc",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8526,80 +8531,60 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_group_call_reference_sf,
       { "SF",        "gsm_rlcmac.dl.group_call_sf",
         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_group_call_reference_af,
       { "AF",        "gsm_rlcmac.dl.group_call_af",
         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_group_call_reference_call_priority,
       { "call_priority",        "gsm_rlcmac.dl.group_call_reference_call_priority",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_group_call_reference_ciphering_information,
       { "Ciphering_information",        "gsm_rlcmac.dl.group_call_reference_call_ciphering_information",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_nln_pch,
       { "NLN_PCH",        "gsm_rlcmac.dl.nln_pch",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_nln_status,
       { "NLN_status",        "gsm_rlcmac.dl.nln_status",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_priority,
       { "Priority",        "gsm_rlcmac.dl.priority",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_p1_rest_octets_packet_page_indication_1,
       { "Packet_Page_Indication_1",        "gsm_rlcmac.dl.p1_rest_octets_packet_page_indication_1",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_p1_rest_octets_packet_page_indication_2,
       { "Packet_Page_Indication_2",        "gsm_rlcmac.dl.p1_rest_octets_packet_page_indication_2",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_p2_rest_octets_cn3,
       { "CN3",        "gsm_rlcmac.dl.p2_rest_octets_cn3",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8704,16 +8689,12 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_ia_egprs_uniontype,
       { "UnionType",        "gsm_rlcmac.dl.ia_egprs_00_uniontype",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_ia_freqparamsbeforetime_length,
       { "Length",        "gsm_rlcmac.dl.ia_freqparamsbeforetime_length",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8956,6 +8937,7 @@ proto_register_gsm_rlcmac(void)
 /* < Packet Downlink Dummy Control Block message content > */
 
 /* < Packet Uplink Dummy Control Block message content > */
+#if 0
     { &hf_receive_n_pdu_number_nsapi,
       { "nsapi",        "gsm_rlcmac.dl.receive_n_pdu_number_nsapi",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -8968,6 +8950,7 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
+#endif
 
 /* < MS Radio Access capability IE > */
     { &hf_dtm_egprs_dtm_egprs_multislot_class,
@@ -9244,48 +9227,36 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_arc_arc2_spare,
       { "Arc2_Spare",        "gsm_rlcmac.ul.arc2_spare",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_arc_arc1,
       { "Arc1",        "gsm_rlcmac.ul.arc1",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_multiband_a5_bits,
       { "A5 Bits",        "gsm_rlcmac.ul.multiband_a5_bits",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_edge_rf_pwr_edge_rf_pwrcap1,
       { "EDGE_RF_PwrCap1",        "gsm_rlcmac.ul.edge_rf_pwrcap1",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_edge_rf_pwr_edge_rf_pwrcap2,
       { "EDGE_RF_PwrCap2",        "gsm_rlcmac.ul.edge_rf_pwrcap2",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_ms_class3_unpacked_spare1,
       { "Spare1",        "gsm_rlcmac.ul.ms_class3_unpacked_spare1",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -11307,8 +11278,6 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_enhancedmeasurementreport_rr_short_pd,
       { "RR_Short_PD",        "gsm_rlcmac.ul.emr_rr_short_pd",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -11599,56 +11568,42 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_repeated_invalid_bsic_info_bcch_freq_ncell,
       { "BCCH_FREQ_NCELL",        "gsm_rlcmac.dl.repeated_invalid_bsic_info_bcch_freq_ncell",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_repeated_invalid_bsic_info_bsic,
       { "BSIC",        "gsm_rlcmac.dl.repeated_invalid_bsic_info_bsic",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_repeated_invalid_bsic_info_rxlev_ncell,
       { "RXLEV_NCELL",        "gsm_rlcmac.dl.repeated_invalid_bsic_info_rxlev_ncell",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_reporting_quantity_reporting_quantity,
       { "REPORTING_QUANTITY",        "gsm_rlcmac.dl.repeated_invalid_bsic_info_reporting_quantity",
         FT_UINT8, BASE_DEC, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_nc_measurementreport_nc_mode,
       { "NC_MODE",        "gsm_rlcmac.dl.nc_measurementreport_nc_mode",
         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_nc_measurementreport_pmo_used,
       { "PMO_USED",        "gsm_rlcmac.dl.nc_measurementreport_pmo_used",
         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
         NULL, HFILL
       }
     },
-#endif
-#if 0
     { &hf_nc_measurementreport_scale,
       { "SCALE",        "gsm_rlcmac.dl.nc_measurementreport_scale",
         FT_BOOLEAN, BASE_NONE, NULL, 0x0,
@@ -11759,6 +11714,7 @@ proto_register_gsm_rlcmac(void)
 /* < Packet Physical Information message content > */
 
 /* < End Packet Physical Information > */
+#if 0
     { &hf_si1_restoctet_nch_position,
       { "NCH_Position",        "gsm_rlcmac.dl.i1_restoctet_nch_position",
         FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -11891,6 +11847,7 @@ proto_register_gsm_rlcmac(void)
         NULL, HFILL
       }
     },
+#endif
 /* < Additional MS Radio Access Capability message content > */
 /* < End Additional MS Radio Access Capability> */
 
@@ -12402,8 +12359,10 @@ proto_register_gsm_rlcmac(void)
 /* < End Packet System Information Type 13 message content > */
 
       /* Generated from convert_proto_tree_add_text.pl */
+#if 0
       { &hf_gsm_rlcmac_scrambling_code, { "Scrambling Code", "gsm_rlcmac.scrambling_code", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_gsm_rlcmac_diversity, { "Diversity", "gsm_rlcmac.diversity", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+#endif
       { &hf_gsm_rlcmac_cell_parameter, { "Cell Parameter", "gsm_rlcmac.cell_parameter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_gsm_rlcmac_sync_case_tstd, { "Sync Case TSTD", "gsm_rlcmac.sync_case_tstd", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_gsm_rlcmac_diversity_tdd, { "Diversity TDD", "gsm_rlcmac.diversity_tdd", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
index 0f898475ecfcc8c7c486a1d879b4f561731f9f86..8ce0a2bd5d66612371fe65263111e7f149276976 100644 (file)
@@ -123,7 +123,7 @@ dissect_hdcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
     guint8 addr, reg;
     proto_item *pi;
     ptvcursor_t *cursor;
-    proto_tree *hdcp_tree = NULL;
+    proto_tree *hdcp_tree;
     hdcp_transaction_t *hdcp_trans;
     proto_item *it;
     guint64 a_ksv, b_ksv;
@@ -135,11 +135,9 @@ dissect_hdcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
     col_set_str(pinfo->cinfo, COL_PROTOCOL, "HDCP");
     col_clear(pinfo->cinfo, COL_INFO);
 
-    if (tree) {
-        pi = proto_tree_add_protocol_format(tree, proto_hdcp,
-                tvb, 0, tvb_reported_length(tvb), "HDCP");
-        hdcp_tree = proto_item_add_subtree(pi, ett_hdcp);
-    }
+    pi = proto_tree_add_protocol_format(tree, proto_hdcp,
+            tvb, 0, tvb_reported_length(tvb), "HDCP");
+    hdcp_tree = proto_item_add_subtree(pi, ett_hdcp);
 
     cursor = ptvcursor_new(hdcp_tree, tvb, 0);
     /* all values in HDCP are little endian */
index 62bfab7bd34c028a7ed99ab5ae1c022c3ed19372..a4957fbe660aeaf5fc49571e61f37232cb0964ba 100644 (file)
@@ -282,7 +282,7 @@ void proto_reg_handoff_17221(void);
 #define AECP_OFFSET_STREAM_INFO_STREAM_DEST_MAC          52
 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_CODE        58
 #define AECP_OFFSET_STREAM_INFO_MSRP_FAILURE_BRIDGE_ID   60
-#define AECP_OFFSET_STREAM_INFO_STREAM_VLAN_ID           68
+/** #define AECP_OFFSET_STREAM_INFO_STREAM_VLAN_ID           68 **/
 
 /* GET/SET_NAME */
 #define AECP_OFFSET_NAME_DESCRIPTOR_TYPE             24
@@ -1896,10 +1896,10 @@ static int hf_adp_listener_cap = -1;
 static int hf_adp_controller_cap = -1;
 static int hf_adp_avail_index = -1;
 static int hf_adp_gptp_gm_id = -1;
-static int hf_adp_def_aud_format = -1;
-static int hf_adp_def_vid_format = -1;
+/* static int hf_adp_def_aud_format = -1; */
+/* static int hf_adp_def_vid_format = -1; */
 static int hf_adp_assoc_id = -1;
-static int hf_adp_entity_type = -1;
+/* static int hf_adp_entity_type = -1; */
 
 /* Entity Capabilties Flags */
 static int hf_adp_entity_cap_efu_mode = -1;
@@ -2076,7 +2076,7 @@ static int hf_aecp_msrp_accumulated_latency = -1;
 static int hf_aecp_msrp_failure_bridge_id = -1;
 static int hf_aecp_msrp_failure_code = -1;
 static int hf_aecp_msrp_failure_valid_flag = -1;
-static int hf_aecp_stream_vlan_id = -1;
+/* static int hf_aecp_stream_vlan_id = -1; */
 static int hf_aecp_name = -1;
 static int hf_aecp_name_index = -1;
 static int hf_aecp_number_of_maps = -1;
@@ -2148,7 +2148,7 @@ static int hf_aecp_backedup_talker_unique_id = -1;
 static int hf_aecp_avb_info_ptp_grandmaster_id = -1;
 static int hf_aecp_avb_info_propegation_delay = -1;
 static int hf_aecp_avb_info_gptp_domain_number = -1;
-static int hf_aecp_avb_info_flags = -1;
+/* static int hf_aecp_avb_info_flags = -1; */
 static int hf_aecp_as_capable_flag = -1;
 static int hf_aecp_gptp_enabled_flag = -1;
 static int hf_aecp_srp_enabled_flag = -1;
@@ -2418,7 +2418,7 @@ static int ett_adp_ent_cap = -1;
 static int ett_adp_talk_cap = -1;
 static int ett_adp_list_cap = -1;
 static int ett_adp_cont_cap = -1;
-static int ett_adp_aud_format = -1;
+/* static int ett_adp_aud_format = -1; */
 static int ett_adp_samp_rates = -1;
 static int ett_adp_chan_format = -1;
 /* ACMP */
@@ -4928,10 +4928,12 @@ proto_register_17221(void)
          { "gPTP Grandmaster ID", "ieee17221.gptp_grandmaster_id",
             FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#if 0
       { &hf_adp_def_aud_format,
          { "Default Audio Format", "ieee17221.default_audio_format",
             FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#endif
 #if 0
       /* Default Audio Formats Fields Begin */
       { &hf_adp_def_aud_sample_rates,
@@ -5048,18 +5050,22 @@ proto_register_17221(void)
 #endif
       /* Channel Formats Fields End */
       /* Default Audio Formats Fields End */
+#if 0
       { &hf_adp_def_vid_format,
          { "Default Video Format", "ieee17221.default_video_format",
             FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#endif
       { &hf_adp_assoc_id,
          { "Assocation ID", "ieee17221.assocation_id",
             FT_UINT64, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#if 0
       { &hf_adp_entity_type,
          { "Entity Type", "ieee17221.entity_type",
             FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#endif
       /*******************************************************************/
       { &hf_acmp_message_type,
          { "Message Type", "ieee17221.message_type",
@@ -5330,10 +5336,12 @@ proto_register_17221(void)
          {"gPTP Domain Number", "ieee17221.avb_info_gptp_domain_number",
             FT_UINT8, BASE_DEC, NULL, 0x00, NULL, HFILL }
       },
+#if 0
       { &hf_aecp_avb_info_flags,
          {"Flags", "ieee17221.avbinfo_flags",
             FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }
       },
+#endif
 
       { &hf_aecp_as_capable_flag,
          { "AS Capable Flag", "ieee17221.as_capable_flag",
@@ -5395,10 +5403,12 @@ proto_register_17221(void)
          {"MSRP Failure Bridge ID", "ieee17221.msrp_failure_bridge_id",
             FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL }
       },
+#if 0
       { &hf_aecp_stream_vlan_id,
          {"Stream VLAN ID", "ieee17221.stream_vlan_id",
              FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }
       },
+#endif
       { &hf_aecp_stream_vlan_id_valid_flag,
          {"Stream VLAN ID Valid Flag", "ieee17221.flags.stream_vlan_id_valid",
             FT_BOOLEAN, 32, NULL, AECP_STREAM_VLAN_ID_VALID_FLAG_MASK, NULL, HFILL }
@@ -6976,7 +6986,7 @@ proto_register_17221(void)
       &ett_adp_talk_cap,
       &ett_adp_list_cap,
       &ett_adp_cont_cap,
-      &ett_adp_aud_format,
+/*       &ett_adp_aud_format, */
       &ett_adp_samp_rates,
       &ett_adp_chan_format,
       &ett_acmp_flags,
index f13aa764dd81a460453f8c19712d53c2997a7aff..25df8fa704fe60fe490ca239170faf8cbd7788f7 100644 (file)
@@ -89,12 +89,17 @@ static int hf_spx_connection_control_sys = -1;
 static int hf_spx_connection_control_send_ack = -1;
 static int hf_spx_connection_control_attn = -1;
 static int hf_spx_connection_control_eom = -1;
+static int hf_spx_connection_control_v2 = -1;
+static int hf_spx_connection_control_neg_size = -1;
+static int hf_spx_connection_control_reserved = -1;
+static int hf_spx_connection_control_ext_header = -1;
 static int hf_spx_datastream_type = -1;
 static int hf_spx_src_id = -1;
 static int hf_spx_dst_id = -1;
 static int hf_spx_seq_nr = -1;
 static int hf_spx_ack_nr = -1;
 static int hf_spx_all_nr = -1;
+static int hf_spx_neg_size = -1;
 static int hf_spx_rexmt_frame = -1;
 
 static gint ett_spx = -1;
@@ -294,12 +299,12 @@ dissect_ipx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                ipx_tree = proto_item_add_subtree(ti, ett_ipx);
        }
 
-       str=ep_address_to_str(&pinfo->net_src);
+       str=address_to_str(wmem_packet_scope(), &pinfo->net_src);
        hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_src, tvb, 0, 0, str);
        PROTO_ITEM_SET_HIDDEN(hidden_item);
        hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_addr, tvb, 0, 0, str);
        PROTO_ITEM_SET_HIDDEN(hidden_item);
-       str=ep_address_to_str(&pinfo->net_dst);
+       str=address_to_str(wmem_packet_scope(), &pinfo->net_dst);
        hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_dst, tvb, 0, 0, str);
        PROTO_ITEM_SET_HIDDEN(hidden_item);
        hidden_item = proto_tree_add_string(ipx_tree, hf_ipx_addr, tvb, 0, 0, str);
@@ -518,6 +523,10 @@ spx_hash_lookup(conversation_t *conversation, guint32 spx_src, guint32 spx_seq)
 #define SPX_SEND_ACK   0x40
 #define SPX_ATTN       0x20
 #define SPX_EOM                0x10
+#define SPX_VII_PACKET 0x08
+#define SPX_NEG_SIZE   0x04
+#define SPX_RESERVED   0x02
+#define SPX_EXT_HEADER 0x01
 
 static const char*
 spx_conn_ctrl(guint8 ctrl)
@@ -559,6 +568,7 @@ spx_datastream(guint8 type)
 }
 
 #define SPX_HEADER_LEN 12
+#define SPX2_HEADER_LEN        14
 
 static void
 dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -568,6 +578,7 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        tvbuff_t        *next_tvb;
        guint8          conn_ctrl;
        proto_tree      *cc_tree;
+       guint8          hdr_len = SPX_HEADER_LEN;
        guint8          datastream_type;
        const char      *datastream_type_string;
        guint16         spx_seq;
@@ -582,12 +593,18 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        col_set_str(pinfo->cinfo, COL_PROTOCOL, "SPX");
        col_set_str(pinfo->cinfo, COL_INFO, "SPX");
 
+       conn_ctrl = tvb_get_guint8(tvb, 0);
+       if ((conn_ctrl & SPX_VII_PACKET) && tvb_get_ntohs(tvb, 4) != 0xffff) {
+               /* SPX2 packets have an extra two-byte field, unless they have
+                * a dest-ID of 0xffff... */
+               hdr_len = SPX2_HEADER_LEN;
+       }
+
        if (tree) {
-               ti = proto_tree_add_item(tree, proto_spx, tvb, 0, SPX_HEADER_LEN, ENC_NA);
+               ti = proto_tree_add_item(tree, proto_spx, tvb, 0, hdr_len, ENC_NA);
                spx_tree = proto_item_add_subtree(ti, ett_spx);
        }
 
-       conn_ctrl = tvb_get_guint8(tvb, 0);
        spx_msg_string = spx_conn_ctrl(conn_ctrl);
        col_append_fstr(pinfo->cinfo, COL_INFO, " %s", spx_msg_string);
        if (tree) {
@@ -604,6 +621,16 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                       0, 1, conn_ctrl);
                proto_tree_add_boolean(cc_tree, hf_spx_connection_control_eom, tvb,
                                       0, 1, conn_ctrl);
+               if (conn_ctrl & SPX_VII_PACKET) {
+                       proto_tree_add_boolean(cc_tree, hf_spx_connection_control_v2, tvb,
+                                              0, 1, conn_ctrl);
+                       proto_tree_add_boolean(cc_tree, hf_spx_connection_control_neg_size, tvb,
+                                              0, 1, conn_ctrl);
+                       proto_tree_add_boolean(cc_tree, hf_spx_connection_control_reserved, tvb,
+                                              0, 1, conn_ctrl);
+                       proto_tree_add_boolean(cc_tree, hf_spx_connection_control_ext_header, tvb,
+                                              0, 1, conn_ctrl);
+               }
        }
 
        datastream_type = tvb_get_guint8(tvb, 1);
@@ -633,6 +660,14 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                proto_tree_add_uint(spx_tree, hf_spx_seq_nr, tvb,  6, 2, spx_seq);
                proto_tree_add_item(spx_tree, hf_spx_ack_nr, tvb,  8, 2, ENC_BIG_ENDIAN);
                proto_tree_add_item(spx_tree, hf_spx_all_nr, tvb, 10, 2, ENC_BIG_ENDIAN);
+               /*  field exists on ALL SPXII packets EXCEPT the first packet of
+                *  the session.  The first packet can be determined by checking
+                *  the destination ID field for a value of 0xffff (65535) and
+                *  that the SPXII bit is set in Connection Control.
+                */
+               if ((conn_ctrl & SPX_VII_PACKET) && tvb_get_ntohs(tvb, 4) != 0xffff) {
+                       proto_tree_add_item(spx_tree, hf_spx_neg_size, tvb, 12, 2, ENC_BIG_ENDIAN);
+               }
        }
 
        /*
@@ -755,16 +790,16 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                            tvb, 0, 0, spx_rexmit_info_p->num,
                            "This is a retransmission of frame %u",
                            spx_rexmit_info_p->num);
-                       if (tvb_length_remaining(tvb, SPX_HEADER_LEN) > 0) {
+                       if (tvb_length_remaining(tvb, hdr_len) > 0) {
                                proto_tree_add_text(spx_tree, tvb,
-                                   SPX_HEADER_LEN, -1,
+                                   hdr_len, -1,
                                    "Retransmitted data");
                        }
                }
                return;
        }
 
-       if (tvb_reported_length_remaining(tvb, SPX_HEADER_LEN) > 0) {
+       if (tvb_reported_length_remaining(tvb, hdr_len) > 0) {
                /*
                 * Call subdissectors based on the IPX socket numbers; a
                 * subdissector might have registered with our IPX socket
@@ -794,7 +829,7 @@ dissect_spx(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                spx_infox.eom = conn_ctrl & SPX_EOM;
                spx_infox.datastream_type = datastream_type;
 
-               next_tvb = tvb_new_subset_remaining(tvb, SPX_HEADER_LEN);
+               next_tvb = tvb_new_subset_remaining(tvb, hdr_len);
                if (dissector_try_uint_new(spx_socket_dissector_table, low_socket,
                    next_tvb, pinfo, tree, FALSE, &spx_infox))
                {
@@ -1335,12 +1370,12 @@ proto_register_ipx(void)
 
        static hf_register_info hf_spx[] = {
                { &hf_spx_connection_control,
-               { "Connection Control",         "spx.ctl",
+               { "Connection Control", "spx.ctl",
                  FT_UINT8,     BASE_HEX,       NULL,   0x0,
                  NULL, HFILL }},
 
                { &hf_spx_connection_control_sys,
-               { "System Packet",              "spx.ctl.sys",
+               { "System Packet",      "spx.ctl.sys",
                  FT_BOOLEAN,   8,      NULL,   SPX_SYS_PACKET,
                  NULL, HFILL }},
 
@@ -1359,6 +1394,26 @@ proto_register_ipx(void)
                  FT_BOOLEAN,   8,      NULL,   SPX_EOM,
                  NULL, HFILL }},
 
+               { &hf_spx_connection_control_v2,
+               { "SPXII Packet",       "spx.ctl.v2",
+                 FT_BOOLEAN,   8,      NULL,   SPX_VII_PACKET,
+                 NULL, HFILL }},
+
+               { &hf_spx_connection_control_neg_size,
+               { "Negotiate Size",     "spx.ctl.neg_size",
+                 FT_BOOLEAN,   8,      NULL,   SPX_NEG_SIZE,
+                 NULL, HFILL }},
+
+               { &hf_spx_connection_control_reserved,
+               { "Reserved",           "spx.ctl.reserved",
+                 FT_BOOLEAN,   8,      NULL,   SPX_RESERVED,
+                 NULL, HFILL }},
+
+               { &hf_spx_connection_control_ext_header,
+               { "Extended Header",    "spx.ctl.ext_header",
+                 FT_BOOLEAN,   8,      NULL,   SPX_EXT_HEADER,
+                 NULL, HFILL }},
+
                { &hf_spx_datastream_type,
                { "Datastream Type",            "spx.type",
                  FT_UINT8,     BASE_HEX,       NULL,   0x0,
@@ -1389,6 +1444,11 @@ proto_register_ipx(void)
                  FT_UINT16,    BASE_DEC,       NULL,   0x0,
                  NULL, HFILL }},
 
+               { &hf_spx_neg_size,
+               { "Negotiation Size",           "spx.neg_size",
+                 FT_UINT16,    BASE_DEC,       NULL,   0x0,
+                 NULL, HFILL }},
+
                { &hf_spx_rexmt_frame,
                { "Retransmitted Frame Number", "spx.rexmt_frame",
                  FT_FRAMENUM,  BASE_NONE,      NULL,   0x0,
@@ -1493,7 +1553,7 @@ proto_reg_handoff_ipx(void)
        ipx_handle = find_dissector("ipx");
        dissector_add_uint("udp.port", UDP_PORT_IPX, ipx_handle);
        dissector_add_uint("ethertype", ETHERTYPE_IPX, ipx_handle);
-    dissector_add_uint("chdlc.protocol", ETHERTYPE_IPX, ipx_handle);
+       dissector_add_uint("chdlc.protocol", ETHERTYPE_IPX, ipx_handle);
        dissector_add_uint("ppp.protocol", PPP_IPX, ipx_handle);
        dissector_add_uint("llc.dsap", SAP_NETWARE1, ipx_handle);
        dissector_add_uint("llc.dsap", SAP_NETWARE2, ipx_handle);
@@ -1523,3 +1583,16 @@ proto_reg_handoff_ipx(void)
 
        data_handle = find_dissector("data");
 }
+
+/*
+ * Editor modelines  -  http://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:
+ */
index 54ce100e6ac969a7bc720dffee90f6681055e3ec..74545fd34237e04139d344d2f234f68785f7967e 100644 (file)
@@ -169,7 +169,8 @@ dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int off
     if (eoc_offset == -1)
     {
         proto_tree_add_item(request_tree, hf_irc_request_command, tvb, offset, end_offset-offset, ENC_ASCII|ENC_NA);
-        col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", tvb_get_string(wmem_packet_scope(), tvb, offset, end_offset-offset));
+        col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)",
+              tvb_get_string_enc(wmem_packet_scope(), tvb, offset, end_offset-offset, ENC_ASCII|ENC_NA));
 
         /* Warn if there is a "numeric" command */
         if ((end_offset-offset == 3) &&
@@ -183,7 +184,7 @@ dissect_irc_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int off
     }
 
     proto_tree_add_item(request_tree, hf_irc_request_command, tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
-    str_command = tvb_get_string(wmem_packet_scope(), tvb, offset, eoc_offset-offset);
+    str_command = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
     col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", str_command);
 
     /* Warn if there is a "numeric" command */
@@ -337,7 +338,8 @@ dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int of
     if (eoc_offset == -1)
     {
         proto_tree_add_item(response_tree, hf_irc_response_command, tvb, offset, end_offset-offset, ENC_ASCII|ENC_NA);
-        col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", tvb_get_string(wmem_packet_scope(), tvb, offset, end_offset-offset));
+        col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)",
+              tvb_get_string_enc(wmem_packet_scope(), tvb, offset, end_offset-offset, ENC_ASCII|ENC_NA));
 
         /* if response command is numeric, allow it to be filtered as an integer */
         if ((end_offset-offset == 3) &&
@@ -353,7 +355,7 @@ dissect_irc_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int of
     }
 
     proto_tree_add_item(response_tree, hf_irc_response_command, tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
-    str_command = tvb_get_string(wmem_packet_scope(), tvb, offset, eoc_offset-offset);
+    str_command = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, eoc_offset-offset, ENC_ASCII|ENC_NA);
     col_append_fstr( pinfo->cinfo, COL_INFO, " (%s)", str_command);
 
     /* if response command is numeric, allow it to be filtered as an integer */
@@ -508,40 +510,40 @@ void
 proto_register_irc(void)
 {
     static hf_register_info hf[] = {
-        { &hf_irc_response, { "Response", "irc.response", FT_STRING, BASE_NONE,
+        { &hf_irc_response, { "Response", "irc.response", FT_STRING, STR_ASCII,
           NULL, 0x0, "Line of response message", HFILL }},
 
-        { &hf_irc_request, { "Request", "irc.request", FT_STRING, BASE_NONE,
+        { &hf_irc_request, { "Request", "irc.request", FT_STRING, STR_ASCII,
           NULL, 0x0, "Line of request message", HFILL }},
 
-        { &hf_irc_request_prefix, { "Prefix", "irc.request.prefix", FT_STRING, BASE_NONE,
+        { &hf_irc_request_prefix, { "Prefix", "irc.request.prefix", FT_STRING, STR_ASCII,
           NULL, 0x0, "Request prefix", HFILL }},
 
-        { &hf_irc_request_command, { "Command", "irc.request.command", FT_STRING, BASE_NONE,
+        { &hf_irc_request_command, { "Command", "irc.request.command", FT_STRING, STR_ASCII,
           NULL, 0x0, "Request command", HFILL }},
 
-        { &hf_irc_request_command_param, { "Parameter", "irc.request.command_parameter", FT_STRING, BASE_NONE,
+        { &hf_irc_request_command_param, { "Parameter", "irc.request.command_parameter", FT_STRING, STR_ASCII,
           NULL, 0x0, "Request command parameter", HFILL }},
 
-        { &hf_irc_request_trailer, { "Trailer", "irc.request.trailer", FT_STRING, BASE_NONE,
+        { &hf_irc_request_trailer, { "Trailer", "irc.request.trailer", FT_STRING, STR_ASCII,
           NULL, 0x0, "Request trailer", HFILL }},
 
-        { &hf_irc_response_prefix, { "Prefix", "irc.response.prefix", FT_STRING, BASE_NONE,
+        { &hf_irc_response_prefix, { "Prefix", "irc.response.prefix", FT_STRING, STR_ASCII,
           NULL, 0x0, "Response prefix", HFILL }},
 
-        { &hf_irc_response_command, { "Command", "irc.response.command", FT_STRING, BASE_NONE,
+        { &hf_irc_response_command, { "Command", "irc.response.command", FT_STRING, STR_ASCII,
           NULL, 0x0, "Response command", HFILL }},
 
         { &hf_irc_response_num_command, { "Command", "irc.response.num_command", FT_UINT16, BASE_DEC,
           NULL, 0x0, "Response (numeric) command", HFILL }},
 
-        { &hf_irc_response_command_param, { "Parameter", "irc.response.command_parameter", FT_STRING, BASE_NONE,
+        { &hf_irc_response_command_param, { "Parameter", "irc.response.command_parameter", FT_STRING, STR_ASCII,
           NULL, 0x0, "Response command parameter", HFILL }},
 
-        { &hf_irc_response_trailer, { "Trailer", "irc.response.trailer", FT_STRING, BASE_NONE,
+        { &hf_irc_response_trailer, { "Trailer", "irc.response.trailer", FT_STRING, STR_ASCII,
           NULL, 0x0, "Response trailer", HFILL }},
 
-        { &hf_irc_ctcp, { "CTCP Data", "irc.ctcp", FT_STRING, BASE_NONE,
+        { &hf_irc_ctcp, { "CTCP Data", "irc.ctcp", FT_STRING, STR_ASCII,
           NULL, 0x0, "Placeholder to dissect CTCP data", HFILL }}
     };
 
index f030f6577f17734f74f714f97c8409153d138d51..99bdfb9020ff85128d55213892dfe9922fdef48a 100644 (file)
@@ -1153,7 +1153,7 @@ dissect_ldap_LDAPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
      ldap_do_protocolop(actx->pinfo);
 
      if(parameter_tvb)
-        ldapstring = tvb_get_string(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0));
+        ldapstring = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb, 0), ENC_UTF_8|ENC_NA);
 
      if(hf_index == hf_ldap_baseObject) {
        /* this is search - put it on the scanline */
@@ -1289,7 +1289,7 @@ char *mechanism = NULL;
      * different type and/or mechanism.
      */
     if(!actx->pinfo->fd->flags.visited) {
-        mechanism = tvb_get_string(NULL, parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0));
+        mechanism = tvb_get_string_enc(NULL, parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), ENC_UTF_8|ENC_NA);
         ldap_info->first_auth_frame = 0;       /* not known until we see the bind reply */
         /*
          * If the mechanism in this request is an empty string (which is
@@ -2368,7 +2368,7 @@ dissect_ldap_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
         break;
 
     if(i == len) {
-      string = tvb_get_string(wmem_packet_scope(), next_tvb, 0, tvb_length_remaining(next_tvb, 0));
+      string = tvb_get_string_enc(wmem_packet_scope(), next_tvb, 0, tvb_length_remaining(next_tvb, 0), ENC_ASCII|ENC_NA);
       proto_item_set_text(actx->created_item, "AttributeValue: %s", string);
     }
   }
@@ -2872,7 +2872,7 @@ dissect_ldap_LDAPOID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
        if (!parameter_tvb)
                return offset;
 
-       object_identifier_id = tvb_get_string(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0));
+       object_identifier_id = tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), ENC_UTF_8|ENC_NA);
        name = oid_resolved_from_string(object_identifier_id);
 
        if(name){
@@ -4604,7 +4604,7 @@ dissect_ldap_oid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
  *       proto_tree_add_oid() instead.
  */
 
-       oid=tvb_get_string(wmem_packet_scope(), tvb, 0, tvb_length(tvb));
+       oid=tvb_get_string_enc(wmem_packet_scope(), tvb, 0, tvb_length(tvb), ENC_UTF_8|ENC_NA);
        if(!oid){
                return;
        }
index 4043e5dbb6ea370f0ac9aa17af1b7635bfa6884d..3687f394aeffe931cf019de595e89740216a7158 100644 (file)
@@ -5311,7 +5311,7 @@ dissect_lte_rrc_warningMessageSegment(tvbuff_t *warning_msg_seg_tvb, proto_tree
     cb_data_page_tvb = tvb_new_subset(warning_msg_seg_tvb, offset, length, length);
     cb_data_tvb = dissect_cbs_data(dataCodingScheme, cb_data_page_tvb, tree, pinfo, 0);
     if (cb_data_tvb) {
-      str = tvb_get_string(wmem_packet_scope(), cb_data_tvb, 0, tvb_length(cb_data_tvb));
+      str = tvb_get_string_enc(wmem_packet_scope(), cb_data_tvb, 0, tvb_length(cb_data_tvb), ENC_UTF_8|ENC_NA);
       proto_tree_add_string_format(tree, hf_lte_rrc_warningMessageSegment_decoded_page, warning_msg_seg_tvb, offset, 83,
                                    str, "Decoded Page %u: %s", i+1, str);
     }
@@ -18812,6 +18812,7 @@ dissect_lte_rrc_RRCConnectionSetup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
     /* We do release the configuration here instead of RRC Connection Release message */
     /* as the UE could have locally dropped the previous RRC Connection */
     set_mac_lte_drx_config_release(p_mac_lte_info->ueid, actx->pinfo);
+    /* TODO: also release PDCP security config here */
   }
   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
                                    ett_lte_rrc_RRCConnectionSetup, RRCConnectionSetup_sequence);
@@ -22299,6 +22300,10 @@ dissect_lte_rrc_SecurityAlgorithmConfig(tvbuff_t *tvb _U_, int offset _U_, asn1_
 
   p_security_algorithms = private_data_pdcp_security_algorithms(actx);
   p_security_algorithms->configuration_frame = actx->pinfo->fd->num;
+  p_security_algorithms->previous_configuration_frame = 0;
+  p_security_algorithms->previous_integrity = eia0;
+  p_security_algorithms->previous_ciphering = eea0;
+
   /* Look for UE identifier */
   p_pdcp_lte_info = (pdcp_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_pdcp_lte, 0);
   if (p_pdcp_lte_info != NULL) {
@@ -27943,11 +27948,21 @@ static const per_sequence_t SecurityModeFailure_sequence[] = {
 
 static int
 dissect_lte_rrc_SecurityModeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  mac_lte_info *p_mac_lte_info;
+  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+                                   ett_lte_rrc_SecurityModeFailure, SecurityModeFailure_sequence);
+
+  /* Look for UE identifier */
+  p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
+
+  if (p_mac_lte_info != NULL) {
+    /* Inform PDCP that the UE failed to execute the securityModeCommand */
+    set_pdcp_lte_security_algorithms_failed(p_mac_lte_info->ueid);
+  }
 
   col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
+  
 
-  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
-                                   ett_lte_rrc_SecurityModeFailure, SecurityModeFailure_sequence);
 
   return offset;
 }
diff --git a/epan/dissectors/packet-lwm.c b/epan/dissectors/packet-lwm.c
new file mode 100644 (file)
index 0000000..77bbe7e
--- /dev/null
@@ -0,0 +1,838 @@
+/* packet-lwm.c
+ * Dissector  routines for the ATMEL Lightweight Mesh 1.1.1
+ * Copyright 2013 Martin Leixner <info@sewio.net>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ *------------------------------------------------------------
+*/
+
+#include "config.h"
+
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/expert.h>
+
+#include "packet-ieee802154.h"
+
+/*LwMesh lengths*/
+#define LWM_HEADER_BASE_LEN            7
+#define LWM_MIC_LEN                    4
+#define LWM_MULTI_HEADER_LEN           2
+
+/*  Bit-masks for the FCF */
+#define LWM_FCF_ACK_REQUEST            0x01
+#define LWM_FCF_SEC_EN                 0x02
+
+#define LWM_FCF_LINK_LOCAL             0x04
+#define LWM_FCF_MULTICAST              0x08
+
+#define LWM_FCF_RESERVED               0xF0
+
+#define LWM_MULTI_NON_MEM_RAD_MASK          0x000F
+#define LWM_MULTI_NON_MEM_RAD_OFFSET        0
+
+#define LWM_MULTI_MAX_NON_MEM_RAD_MASK      0x00F0
+#define LWM_MULTI_MAX_NON_MEM_RAD_OFFSET    4
+
+#define LWM_MULTI_MEM_RAD_MASK              0x0F00
+#define LWM_MULTI_MEM_RAD_OFFSET            8
+
+#define LWM_MULTI_MAX_MEM_RAD_MASK          0xF000
+#define LWM_MULTI_MAX_MEM_RAD_OFFSET        12
+
+/*Endpoints*/
+#define LWM_SRC_ENDP_MASK               0xF0
+#define LWM_SRC_ENDP_OFFSET             4
+#define LWM_DST_ENDP_MASK               0x0F
+#define LWM_DST_ENDP_OFFSET             0
+
+/*Defined addresses*/
+#define LWM_BCAST_ADDR                    0xFFFF
+
+/*Command IDs*/
+#define LWM_CMD_ACK                      0x00
+#define LWM_CMD_ROUTE_ERR                0x01
+#define LWM_CMD_ROUTE_REQ                0x02
+#define LWM_CMD_ROUTE_REPLY              0x03
+
+/*Lengths of command frames*/
+#define LWM_CMD_FRAME_ACK_LEN              3
+#define LWM_CMD_FRAME_ROUTE_ERR_LEN        6
+#define LWM_CMD_FRAME_ROUTE_REQ_LEN        7
+#define LWM_CMD_FRAME_ROUTE_REPLY_LEN      8
+
+/*Values for multicast field*/
+#define LWM_CMD_MULTI_ADDR_FALSE           0
+#define LWM_CMD_MULTI_ADDR_TRUE            1
+
+/*Defined strings*/
+#define LWM_CMD_LINKQ_STRING            "(Sent by Originate node)"
+#define LWM_CMD_UNKNOWN_VAL_STRING      "Unknown command (0x%02x)"
+
+#define LWM_MULTI_UNICAST_STRING        "(Unicast)"
+#define LWM_MULTI_GROUP_STRING          "(Group ID)"
+
+/*  Function declarations */
+void proto_reg_handoff_lwm(void);
+
+/*  Dissector handles */
+static dissector_handle_t       data_handle;
+
+/* Dissection Routines. */
+static void dissect_lwm                       (tvbuff_t *, packet_info *, proto_tree *);
+static int  dissect_lwm_cmd_frame_ack         (tvbuff_t *, packet_info *, proto_tree *);
+static int  dissect_lwm_cmd_frame_route_err   (tvbuff_t *, packet_info *, proto_tree *);
+static int  dissect_lwm_cmd_frame_route_req   (tvbuff_t *, packet_info *, proto_tree *);
+static int  dissect_lwm_cmd_frame_route_reply (tvbuff_t *, packet_info *, proto_tree *);
+
+/*  Initialize protocol and registered fields. */
+static int proto_lwm = -1;
+
+static int hf_lwm_fcf = -1;
+static int hf_lwm_fcf_ack_req = -1;
+static int hf_lwm_fcf_security = -1;
+static int hf_lwm_fcf_linklocal = -1;
+static int hf_lwm_fcf_multicast = -1;
+static int hf_lwm_fcf_reserved = -1;
+static int hf_lwm_seq = -1;
+static int hf_lwm_src_addr = -1;
+static int hf_lwm_dst_addr = -1;
+static int hf_lwm_src_endp = -1;
+static int hf_lwm_dst_endp = -1;
+static int hf_lwm_multi_nmrad = -1;
+static int hf_lwm_multi_mnmrad = -1;
+static int hf_lwm_multi_mrad = -1;
+static int hf_lwm_multi_mmrad = -1;
+static int hf_lwm_mic = -1;
+static int hf_lwm_cmd = -1;
+static int hf_lwm_cmd_seq = -1;
+static int hf_lwm_cmd_cm = -1;
+static int hf_lwm_cmd_route_src  = -1;
+static int hf_lwm_cmd_route_dst  = -1;
+static int hf_lwm_cmd_route_multi  = -1;
+static int hf_lwm_cmd_linkquality  = -1;
+static int hf_lwm_cmd_forwlinkquality  = -1;
+static int hf_lwm_cmd_revlinkquality  = -1;
+
+/* Initialize protocol subtrees. */
+static gint ett_lwm = -1;
+static gint ett_lwm_fcf = -1;
+static gint ett_lwm_cmd_tree = -1;
+static gint ett_lwm_multi_tree = -1;
+
+static expert_field ei_lwm_mal_error = EI_INIT;
+static expert_field ei_lwm_n_src_broad = EI_INIT;
+static expert_field ei_lwm_mismatch_endp = EI_INIT;
+static expert_field ei_lwm_empty_payload = EI_INIT;
+
+
+static const value_string lwm_cmd_names[] = {
+    { LWM_CMD_ACK,          "LwMesh ACK" },
+    { LWM_CMD_ROUTE_ERR,    "Route Error" },
+    { LWM_CMD_ROUTE_REQ,    "Route Request" },
+    { LWM_CMD_ROUTE_REPLY,  "Route Reply" },
+    { 0, NULL }
+};
+
+static const value_string lwm_cmd_multi_names[] = {
+    { LWM_CMD_MULTI_ADDR_FALSE, "FALSE" },
+    { LWM_CMD_MULTI_ADDR_TRUE,  "TRUE" },
+    { 0, NULL }
+};
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm_heur
+ *  DESCRIPTION
+ *      Heuristic interpreter for the Lightweight Mesh.
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_into *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree Wireshark uses to display packet.
+ *  RETURNS
+ *      Boolean value, whether it handles the packet or not.
+ *---------------------------------------------------------------
+ */
+static gboolean
+dissect_lwm_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+
+    /* 1) first byte must have bits 0000xxxx */
+    if(tvb_get_guint8(tvb, 0) & LWM_FCF_RESERVED)
+        return (FALSE);
+
+    dissect_lwm(tvb, pinfo, tree);
+    return (TRUE);
+
+} /* dissect_lwm_heur */
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm
+ *  DESCRIPTION
+ *      Lightweight Mesh packet dissection routine for Wireshark.
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_info *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree Wireshark uses to display packet.
+ *  RETURNS
+ *      void
+ *---------------------------------------------------------------
+ */
+static void dissect_lwm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+    guint       lwm_header_len;
+
+    guint8      lwm_fcf;
+    gboolean    lwm_fcf_security;
+    gboolean    lwm_fcf_multicast;
+
+
+    guint8      lwm_seq;
+    guint16     lwm_src_addr;
+    guint16     lwm_dst_addr;
+    guint8      lwm_endp_field;
+    guint8      lwm_src_endp;
+    guint8      lwm_dst_endp;
+
+    proto_tree *lwm_tree        = NULL;
+    proto_item *ti_proto        = NULL;
+    proto_item *ti;
+    tvbuff_t   *new_tvb;
+
+    /*---------------------------------------------------------*/
+
+    /*Enter name of protocol to info field*/
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "LwMesh");
+    col_clear(pinfo->cinfo, COL_INFO);
+
+    /*Set base length of LWM header*/
+    lwm_header_len = LWM_HEADER_BASE_LEN;
+
+    /*--------------------------------------------------*/
+    /*                                                  */
+    /*        Create LwMesh dissector tree              */
+    /*                                                  */
+    /*--------------------------------------------------*/
+    if(tree){
+        /*Create subtree for the LwMesh*/
+        ti_proto = proto_tree_add_protocol_format(tree, proto_lwm, tvb, 0, -1, "Lightweight Mesh");
+        lwm_tree = proto_item_add_subtree(ti_proto, ett_lwm);
+    }
+
+    col_add_fstr(pinfo->cinfo, COL_INFO, "Lightweight Mesh");
+
+    /*--------------------------------------------------*/
+    /*                                                  */
+    /*        Display LwMesh dissector tree             */
+    /*                                                  */
+    /*--------------------------------------------------*/
+
+    /*Frame control fields*/
+    lwm_fcf = tvb_get_guint8(tvb, 0);
+
+    lwm_fcf_security  = (lwm_fcf & LWM_FCF_SEC_EN);
+    lwm_fcf_multicast = (lwm_fcf & LWM_FCF_MULTICAST);
+
+    if(tree){
+        proto_tree *field_tree;
+        ti = proto_tree_add_uint(lwm_tree, hf_lwm_fcf, tvb, 0, 1, lwm_fcf);
+
+        field_tree = proto_item_add_subtree(ti, ett_lwm_fcf);
+        proto_tree_add_item(field_tree, hf_lwm_fcf_ack_req,   tvb, 0, 1, ENC_NA);
+
+        proto_tree_add_item(field_tree, hf_lwm_fcf_security,  tvb, 0, 1, ENC_NA);
+        proto_tree_add_item(field_tree, hf_lwm_fcf_linklocal, tvb, 0, 1, ENC_NA);
+        proto_tree_add_item(field_tree, hf_lwm_fcf_multicast, tvb, 0, 1, ENC_NA);
+        proto_tree_add_item(field_tree, hf_lwm_fcf_reserved,  tvb, 0, 1, ENC_NA);
+    }
+
+    /*Sequence number*/
+    lwm_seq = tvb_get_guint8(tvb, 1);
+    proto_item_append_text(ti_proto, ", Sequence Number: %i", lwm_seq);
+    proto_tree_add_uint(lwm_tree, hf_lwm_seq, tvb, 1, 1, lwm_seq);
+
+    /*Network addresses*/
+
+    /*Parse Source address*/
+    lwm_src_addr   = tvb_get_letohs(tvb, 2);
+
+    ti = proto_tree_add_uint(lwm_tree, hf_lwm_src_addr, tvb, 2, 2, lwm_src_addr);
+
+    if(lwm_src_addr < 0x8000){
+        proto_item_append_text(ti, " (Routing node)");
+    }else{
+        proto_item_append_text(ti, " (Non-routing node)");
+    }
+
+    /*Check value of source address*/
+    if(lwm_src_addr == LWM_BCAST_ADDR){
+        expert_add_info(pinfo, lwm_tree, &ei_lwm_n_src_broad);
+    }
+
+    /*Parse Destination address*/
+    lwm_dst_addr   = tvb_get_letohs(tvb, 4);
+
+    if(lwm_dst_addr == LWM_BCAST_ADDR){
+        proto_tree_add_uint_format_value(lwm_tree, hf_lwm_dst_addr, tvb, 4, 2, lwm_dst_addr,
+                                         "Broadcast (0x%04x)", lwm_dst_addr);
+    }else{
+        ti = proto_tree_add_uint(lwm_tree, hf_lwm_dst_addr, tvb, 4, 2, lwm_dst_addr);
+
+        if(lwm_fcf_multicast){
+            proto_item_append_text(ti, " %s", LWM_MULTI_GROUP_STRING);
+        }else{
+            proto_item_append_text(ti, " %s", LWM_MULTI_UNICAST_STRING);
+
+            if(lwm_dst_addr < 0x8000){
+                proto_item_append_text(ti, " (Routing node)");
+            }else{
+                proto_item_append_text(ti, " (Non-routing node)");
+            }
+        }
+    }
+
+    /*Enter description to info field*/
+    col_append_fstr(pinfo->cinfo, COL_INFO, ", Nwk_Dst: 0x%04x, Nwk_Src: 0x%04x", lwm_dst_addr, lwm_src_addr);
+
+    /*Endpoints*/
+    lwm_endp_field = tvb_get_guint8(tvb, 6);
+    lwm_src_endp   = (lwm_endp_field & LWM_SRC_ENDP_MASK) >> LWM_SRC_ENDP_OFFSET;
+    lwm_dst_endp   = (lwm_endp_field & LWM_DST_ENDP_MASK) >> LWM_DST_ENDP_OFFSET;
+
+    ti = proto_tree_add_uint(lwm_tree, hf_lwm_src_endp, tvb, 6, 1, lwm_src_endp);
+    if(lwm_src_endp == 0){
+        proto_item_append_text(ti, " (Stack command endpoint)");
+    }
+
+    ti = proto_tree_add_uint(lwm_tree, hf_lwm_dst_endp, tvb, 6, 1, lwm_dst_endp);
+    if(lwm_dst_endp == 0){
+        proto_item_append_text(ti, " (Stack command endpoint)");
+    }
+
+    if( (lwm_src_endp == 0) && (lwm_dst_endp == 0)){
+        /*stack command endpoints*/
+
+    }
+    else if( (lwm_src_endp == 0) || (lwm_dst_endp == 0)){
+        /*If only one endpoint is 0, alert about that*/
+
+        col_append_str(pinfo->cinfo, COL_INFO, "[Stack command Endpoints mismatch]");
+
+        expert_add_info(pinfo, lwm_tree, &ei_lwm_mismatch_endp);
+    }
+
+    /*Multicast header*/
+    if( (lwm_fcf_multicast) ){
+
+        lwm_header_len  += LWM_MULTI_HEADER_LEN;
+
+        if(tree){
+            proto_tree *multi_tree;
+            guint16     lwm_multi_header;
+
+            lwm_multi_header =  tvb_get_letohs(tvb, 7);
+            ti = proto_tree_add_text(lwm_tree, tvb, 7, 2, "Multicast Header");
+            multi_tree = proto_item_add_subtree(ti, ett_lwm_multi_tree);
+
+            proto_tree_add_uint(multi_tree, hf_lwm_multi_nmrad, tvb, 7, 2,
+                                (lwm_multi_header & LWM_MULTI_NON_MEM_RAD_MASK) >> LWM_MULTI_NON_MEM_RAD_OFFSET);
+            proto_tree_add_uint(multi_tree, hf_lwm_multi_mnmrad, tvb, 7, 2,
+                                (lwm_multi_header & LWM_MULTI_MAX_NON_MEM_RAD_MASK) >> LWM_MULTI_MAX_NON_MEM_RAD_OFFSET);
+            proto_tree_add_uint(multi_tree, hf_lwm_multi_mrad, tvb, 7, 2,
+                                (lwm_multi_header & LWM_MULTI_MEM_RAD_MASK) >> LWM_MULTI_MEM_RAD_OFFSET);
+            proto_tree_add_uint(multi_tree, hf_lwm_multi_mmrad, tvb, 7, 2,
+                                (lwm_multi_header & LWM_MULTI_MAX_MEM_RAD_MASK) >> LWM_MULTI_MAX_MEM_RAD_OFFSET);
+        }
+    }
+
+
+    /*------------------------------*/
+    /*                              */
+    /*       Dissect payload        */
+    /*                              */
+    /*------------------------------*/
+
+    /*Note: exception will already have occurred if "short header"*/
+
+    if (tvb_reported_length(tvb) <= lwm_header_len) {
+        /*Empty payload*/
+        expert_add_info(pinfo, lwm_tree, &ei_lwm_empty_payload);
+        col_append_str(pinfo->cinfo, COL_INFO, "[Empty LwMesh Payload]");
+
+        return;
+    }
+
+    new_tvb = tvb_new_subset_remaining(tvb, lwm_header_len);
+
+    /*Encrypted data*/
+    if(lwm_fcf_security){
+        guint rlen;
+        gint  start;
+
+        /*MIC field*/
+        /*XXX: using -LWM_MIC_LEN for 'start' in the proto_tree_add_item() call fetches     */
+        /*     the correct bytes from the tvb; however the wrong 4 bytes (before the field) */
+        /*     are highlighted in the (GTK) GUI.                                            */
+        rlen = tvb_reported_length(new_tvb);
+        start = (rlen >= LWM_MIC_LEN) ? (rlen-LWM_MIC_LEN) : 0;
+        /*An exception will occur if there are not enough bytes for the MIC */
+        proto_tree_add_item(lwm_tree, hf_lwm_mic, new_tvb, start, LWM_MIC_LEN, ENC_BIG_ENDIAN);
+
+        col_clear(pinfo->cinfo, COL_INFO);  /*XXX: why ?*/
+        col_add_fstr(pinfo->cinfo, COL_INFO,
+                     "Encrypted data (%i byte(s)) ",
+                     tvb_reported_length(new_tvb) - LWM_MIC_LEN);
+        tvb_set_reported_length(new_tvb, tvb_reported_length(new_tvb) - LWM_MIC_LEN);
+        call_dissector(data_handle, new_tvb, pinfo, lwm_tree);
+        return;
+    }
+
+    /*stack command endpoint 0 and not secured*/
+    if( (lwm_src_endp == 0) && (lwm_dst_endp == 0) ){
+        proto_tree *lwm_cmd_tree;
+        guint8      lwm_cmd;
+        guint       len;
+
+        /*----------------------------------------------------------------------*/
+        /*                                                                      */
+        /*  Call command dissector (depends on value of first byte of payload)  */
+        /*                                                                      */
+        /*----------------------------------------------------------------------*/
+        lwm_cmd = tvb_get_guint8(new_tvb, 0);
+
+        col_clear(pinfo->cinfo, COL_INFO);  /*XXX: why ?*/
+        col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
+            val_to_str(lwm_cmd, lwm_cmd_names, LWM_CMD_UNKNOWN_VAL_STRING));
+
+        ti = proto_tree_add_text(lwm_tree, new_tvb, 0, -1, "%s",
+            val_to_str(lwm_cmd, lwm_cmd_names, LWM_CMD_UNKNOWN_VAL_STRING));
+        lwm_cmd_tree = proto_item_add_subtree(ti, ett_lwm_cmd_tree);
+
+        proto_tree_add_uint(lwm_cmd_tree, hf_lwm_cmd, new_tvb, 0, 1, lwm_cmd);
+
+        switch (lwm_cmd) {
+
+        case LWM_CMD_ACK:
+            len = dissect_lwm_cmd_frame_ack(new_tvb, pinfo, lwm_cmd_tree);
+            break;
+
+        case LWM_CMD_ROUTE_ERR:
+            len = dissect_lwm_cmd_frame_route_err(new_tvb, pinfo, lwm_cmd_tree);
+            break;
+
+        case LWM_CMD_ROUTE_REQ:
+            len = dissect_lwm_cmd_frame_route_req(new_tvb, pinfo, lwm_cmd_tree);
+            break;
+
+        case LWM_CMD_ROUTE_REPLY:
+            len = dissect_lwm_cmd_frame_route_reply(new_tvb, pinfo, lwm_cmd_tree);
+            break;
+
+        default:
+            len = 0; /*nothing processed*/
+            /*Unknown command*/
+            expert_add_info_format(pinfo, lwm_cmd_tree, &ei_lwm_mal_error, "Unknown command");
+            call_dissector(data_handle, new_tvb, pinfo, lwm_cmd_tree);
+            return;
+            break;
+        }
+
+        proto_item_set_len(ti, len);
+
+        /*Here only if additional data after valid 'cmd' data*/
+        /*Note: exception will have already occurred if tvb was missing required bytes for 'cmd'*/
+        /*      Report error if additional undissected data*/
+        if (len < tvb_reported_length(new_tvb)) {
+            /*unknown additional data*/
+            expert_add_info_format(pinfo, lwm_cmd_tree, &ei_lwm_mal_error,
+                "Size is %i byte(s), instead of %i bytes", tvb_reported_length(new_tvb), len);
+
+            new_tvb = tvb_new_subset_remaining(new_tvb, len);
+            call_dissector(data_handle, new_tvb, pinfo, lwm_tree);
+        }
+        return;
+    }
+    else{
+        /*unknown data*/
+        call_dissector(data_handle, new_tvb, pinfo, lwm_tree);
+        return;
+
+    }
+
+} /* dissect_lwm*/
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm_cmd_frame_ack
+ *  DESCRIPTION
+ *      LwMesh command frame - Ack.
+ *
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_info *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree wireshark uses to display packet.
+ *  RETURNS
+ *      int length          - amount of data processed
+ *---------------------------------------------------------------
+ */
+static int dissect_lwm_cmd_frame_ack(tvbuff_t *tvb, packet_info *pinfo, proto_tree *lwm_cmd_tree)
+{
+    guint8 lwm_seq;
+
+    /*Get fields*/
+    lwm_seq = tvb_get_guint8(tvb, 1);
+
+    col_append_fstr(pinfo->cinfo, COL_INFO, ", Sequence number: %d", lwm_seq);
+
+    if(lwm_cmd_tree){
+        proto_item_append_text(proto_tree_get_parent(lwm_cmd_tree), ", Sequence number: %d", lwm_seq);
+        proto_tree_add_uint(lwm_cmd_tree, hf_lwm_cmd_seq, tvb, 1, 1, lwm_seq);
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_cm,  tvb, 2, 1, ENC_NA);
+    }
+
+    return LWM_CMD_FRAME_ACK_LEN;
+
+} /* dissect_lwm_cmd_frame_ack*/
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm_cmd_frame_route_err
+ *  DESCRIPTION
+ *      LwMesh command frame - Route error.
+ *
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_info *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree wireshark uses to display packet.
+ *  RETURNS
+ *      int length          - amount of data processed
+ *---------------------------------------------------------------
+ */
+static int dissect_lwm_cmd_frame_route_err(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *lwm_cmd_tree)
+{
+    if(lwm_cmd_tree){
+        proto_item *ti;
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_src, tvb, 1, 2, ENC_LITTLE_ENDIAN);
+        ti = proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_dst, tvb, 3, 2, ENC_LITTLE_ENDIAN);
+
+        if(tvb_get_guint8(tvb, 5) == LWM_CMD_MULTI_ADDR_TRUE){
+            proto_item_append_text(ti, " %s", LWM_MULTI_GROUP_STRING);
+        }else{
+            proto_item_append_text(ti, " %s", LWM_MULTI_UNICAST_STRING);
+        }
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_multi, tvb, 5, 1, ENC_NA);
+    }
+
+    return LWM_CMD_FRAME_ROUTE_ERR_LEN;
+
+} /* dissect_lwm_cmd_frame_route_err*/
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm_cmd_frame_route_req
+ *  DESCRIPTION
+ *      LwMesh command frame - Route Request.
+ *
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_info *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree wireshark uses to display packet.
+ *  RETURNS
+ *      int length          - amount of data processed
+ *---------------------------------------------------------------
+ */
+static int dissect_lwm_cmd_frame_route_req(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *lwm_cmd_tree)
+{
+    if(lwm_cmd_tree){
+        proto_item *ti;
+        guint8      lwm_linkqual;
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_src, tvb, 1, 2, ENC_LITTLE_ENDIAN);
+        ti = proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_dst, tvb, 3, 2, ENC_LITTLE_ENDIAN);
+
+        if(tvb_get_guint8(tvb, 5) == LWM_CMD_MULTI_ADDR_TRUE){
+            proto_item_append_text(ti, " %s", LWM_MULTI_GROUP_STRING);
+        }else{
+            proto_item_append_text(ti, " %s", LWM_MULTI_UNICAST_STRING);
+        }
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_multi, tvb, 5, 1, ENC_NA);
+
+        lwm_linkqual  = tvb_get_guint8(tvb, 6);
+        ti = proto_tree_add_uint(lwm_cmd_tree, hf_lwm_cmd_linkquality, tvb, 6, 1, lwm_linkqual);
+        if(lwm_linkqual == 255){
+            proto_item_append_text(ti, " %s", LWM_CMD_LINKQ_STRING);
+        }
+    }
+
+    return LWM_CMD_FRAME_ROUTE_REQ_LEN;
+
+} /* dissect_lwm_cmd_frame_route_req*/
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      dissect_lwm_cmd_frame_route_reply
+ *  DESCRIPTION
+ *      LwMesh command frame - Route Reply.
+ *
+ *  PARAMETERS
+ *      tvbuff_t *tvb       - pointer to buffer containing raw packet.
+ *      packet_info *pinfo  - pointer to packet information fields
+ *      proto_tree *tree    - pointer to data tree wireshark uses to display packet.
+ *  RETURNS
+ *      int length          - amount of data processed
+ *---------------------------------------------------------------
+ */
+static int dissect_lwm_cmd_frame_route_reply(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *lwm_cmd_tree)
+{
+    if(lwm_cmd_tree){
+        proto_item *ti;
+        guint8      lwm_revlinkqual;
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_src, tvb, 1, 2, ENC_LITTLE_ENDIAN);
+        ti = proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_dst, tvb, 3, 2, ENC_LITTLE_ENDIAN);
+
+        if(tvb_get_guint8(tvb, 5) == LWM_CMD_MULTI_ADDR_TRUE){
+            proto_item_append_text(ti, " %s", LWM_MULTI_GROUP_STRING);
+        }else{
+            proto_item_append_text(ti, " %s", LWM_MULTI_UNICAST_STRING);
+        }
+
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_route_multi, tvb, 5, 1, ENC_NA);
+        proto_tree_add_item(lwm_cmd_tree, hf_lwm_cmd_forwlinkquality, tvb, 6, 1, ENC_NA);
+
+        lwm_revlinkqual = tvb_get_guint8(tvb, 7);
+        ti = proto_tree_add_uint(lwm_cmd_tree, hf_lwm_cmd_revlinkquality, tvb, 7, 1, lwm_revlinkqual);
+        if(lwm_revlinkqual == 255){
+            proto_item_append_text(ti, " %s", LWM_CMD_LINKQ_STRING);
+        }
+    }
+
+    return LWM_CMD_FRAME_ROUTE_REPLY_LEN;
+
+} /* dissect_lwm_cmd_frame_route_reply*/
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      proto_register_lwm
+ *  DESCRIPTION
+ *      IEEE 802.15.4 protocol registration routine.
+ *  PARAMETERS
+ *      none
+ *  RETURNS
+ *      void
+ *---------------------------------------------------------------
+ */
+void proto_register_lwm(void)
+{
+
+    static hf_register_info hf[] = {
+
+        /*Frame control field*/
+        { &hf_lwm_fcf,
+        { "Frame control field", "lwm.fcf", FT_UINT8, BASE_HEX, NULL, 0x0,
+        "Control information for the frame.", HFILL }},
+
+        { &hf_lwm_fcf_ack_req,
+        { "Acknowledgment Request", "lwm.ack_req", FT_BOOLEAN, 8, NULL, LWM_FCF_ACK_REQUEST,
+        "Specifies whether an acknowledgment is required from the destination node.", HFILL }},
+
+        { &hf_lwm_fcf_security,
+        { "Security Enabled", "lwm.security", FT_BOOLEAN, 8, NULL, LWM_FCF_SEC_EN,
+        "Specifies whether the frame payload is encrypted.", HFILL }},
+
+        { &hf_lwm_fcf_linklocal,
+        { "Link Local", "lwm.linklocal", FT_BOOLEAN, 8, NULL, LWM_FCF_LINK_LOCAL,
+        "It may be set to one to prevent neighboring nodes from rebroadcasting a frame.", HFILL }},
+
+        { &hf_lwm_fcf_multicast,
+        { "Multicast", "lwm.multicast", FT_BOOLEAN, 8, NULL, LWM_FCF_MULTICAST,
+        "If the Multicast subfield is set to one, Multicast Header should be present and the Destination Address is a group address.", HFILL }},
+
+        { &hf_lwm_fcf_reserved,
+        { "Reserved bits", "lwm.fcf.reserved", FT_UINT8, BASE_HEX, NULL, LWM_FCF_RESERVED,
+        "The 4 bits are reserved.", HFILL }},
+
+        /*Other fields*/
+        { &hf_lwm_seq,
+        { "Sequence Number", "lwm.seq", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies the sequence identifier for the frame.", HFILL }},
+
+        { &hf_lwm_src_addr,
+        { "Network Source Address", "lwm.src_addr", FT_UINT16, BASE_HEX, NULL, 0x0,
+        "Specifies the network address of the node originating the frame.", HFILL }},
+
+        { &hf_lwm_dst_addr,
+        { "Network Destination Address", "lwm.dst_addr", FT_UINT16, BASE_HEX, NULL, 0x0,
+        "Specifies the network address of the destination node or group address for multicast messages.", HFILL }},
+
+        { &hf_lwm_src_endp,
+        { "Source Endpoint", "lwm.src_endp", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies the source endpoint identifier.", HFILL }},
+
+        { &hf_lwm_dst_endp,
+        { "Destination Endpoint", "lwm.dst_endp", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies the destination endpoint identifier.", HFILL }},
+
+
+        /*Multicast header*/
+        { &hf_lwm_multi_nmrad,
+        { "Non-member Radius", "lwm.multi_nmrad", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies remaining radius (number of hops) for Non-members of multicast group.", HFILL }},
+
+        { &hf_lwm_multi_mnmrad,
+        { "Maximum Non-member Radius", "lwm.multi_mnmrad", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies maximum radius (number of hops) for Non-members of multicast group.", HFILL }},
+
+        { &hf_lwm_multi_mrad,
+        { "Member Radius", "lwm.multi_mrad", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies remaining radius (number of hops) for Members of multicast group.", HFILL }},
+
+        { &hf_lwm_multi_mmrad,
+        { "Maximum Member Radius", "lwm.multi_mmrad", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Specifies maximum radius (number of hops) for Members of multicast group.", HFILL }},
+
+
+        /*MIC, security*/
+        { &hf_lwm_mic,
+        { "Message Integrity Code", "lwm.mic", FT_UINT32, BASE_HEX, NULL, 0x0,
+        "Specifies Message Integrity Code (MIC).", HFILL }},
+
+
+        /*----------------------------------*/
+        /*                                    */
+        /*  Command Frames Specific Fields  */
+        /*                                    */
+        /*----------------------------------*/
+
+        { &hf_lwm_cmd,
+        { "Command ID", "lwm.cmd", FT_UINT8, BASE_HEX, VALS(lwm_cmd_names), 0x0,
+        "It contains Command ID value.", HFILL }},
+
+        /*  Command Frame - Ack */
+        { &hf_lwm_cmd_seq,
+        { "Sequence number", "lwm.cmd.seq", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "It contains a network sequence number of a frame that is being acknowledged.", HFILL }},
+
+        { &hf_lwm_cmd_cm,
+        { "Control Message", "lwm.cmd.cm", FT_UINT8, BASE_HEX, NULL, 0x0,
+        "It contains an arbitrary value that can be set on the sending side.", HFILL }},
+
+        /* Part of  Command Frames - Route Request, Route Reply*/
+        { &hf_lwm_cmd_route_src,
+        { "Source address", "lwm.cmd.route_src", FT_UINT16, BASE_HEX, NULL, 0x0,
+        "It contains a source network address from the frame that cannot be routed", HFILL }},
+
+        { &hf_lwm_cmd_route_dst,
+        { "Destination Address", "lwm.cmd.route_dst", FT_UINT16, BASE_HEX, NULL, 0x0,
+        "It contains a destination network address from the frame that cannot be routed", HFILL }},
+
+        { &hf_lwm_cmd_route_multi,
+          { "Multicast", "lwm.cmd.multi", FT_UINT8, BASE_HEX, VALS(&lwm_cmd_multi_names), 0x0,
+        "If it set to 0, Destination Address field contains a network address. If it set to 1, Destination Address field contains a group ID.", HFILL }},
+
+        /*  Part of Command Frame - Route Request */
+        { &hf_lwm_cmd_linkquality,
+        { "Link Quality", "lwm.cmd.linkq", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "It contains a link quality value of the potential route accumulated over all hops towards the destination.", HFILL }},
+
+        /*  Part of Command Frame - Route Reply */
+        { &hf_lwm_cmd_forwlinkquality,
+        { "Forward Link Quality", "lwm.cmd.flinkq", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "It contains a value of the Link Quality field from the corresponding Route Request Command Frame.", HFILL }},
+
+        { &hf_lwm_cmd_revlinkquality,
+        { "Reverse Link Quality", "lwm.cmd.rlinkq", FT_UINT8, BASE_DEC, NULL, 0x0,
+        "It contains a link quality value of the discovered route accumulated over all hops towards the originator.", HFILL }},
+
+
+    };
+
+    /* Subtrees */
+    static gint *ett[] = {
+        &ett_lwm,
+        &ett_lwm_fcf,
+        &ett_lwm_multi_tree,
+        &ett_lwm_cmd_tree
+    };
+
+    static ei_register_info ei[] = {
+        { &ei_lwm_mal_error,     { "lwm.malformed_error",   PI_MALFORMED,      PI_ERROR, "Malformed Packet", EXPFILL }},
+        { &ei_lwm_n_src_broad,   { "lwm.not_src_broadcast", PI_COMMENTS_GROUP, PI_NOTE,  "Source address can not be broadcast address !", EXPFILL }},
+        { &ei_lwm_mismatch_endp, { "lwm.mismatch_endp",     PI_COMMENTS_GROUP, PI_WARN,  "Stack command Endpoints mismatch (should be 0, both)!", EXPFILL }},
+        { &ei_lwm_empty_payload, { "lwm.empty_payload",     PI_COMMENTS_GROUP, PI_WARN,  "Empty LwMesh Payload!", EXPFILL }},
+
+
+    };
+
+    expert_module_t* expert_lwm;
+
+    /*  Register protocol name and description. */
+    proto_lwm = proto_register_protocol("Lightweight Mesh (v1.1.1)", "LwMesh", "lwm");
+
+    /*  Register header fields and subtrees. */
+    proto_register_field_array(proto_lwm, hf, array_length(hf));
+    proto_register_subtree_array(ett, array_length(ett));
+    expert_lwm = expert_register_protocol(proto_lwm);
+    expert_register_field_array(expert_lwm, ei, array_length(ei));
+
+    /*  Register dissector with Wireshark. */
+    register_dissector("lwm", dissect_lwm, proto_lwm);
+
+} /* proto_register_lwm */
+
+/*FUNCTION:------------------------------------------------------
+ *  NAME
+ *      proto_reg_handoff_lwm
+ *  DESCRIPTION
+ *      Registers the lwm dissector with Wireshark.
+ *      Will be called during Wireshark startup.
+ *  PARAMETERS
+ *      none
+ *  RETURNS
+ *      void
+ *---------------------------------------------------------------
+ */
+void proto_reg_handoff_lwm(void)
+{
+    data_handle     = find_dissector("data");
+
+    /* Register our dissector with IEEE 802.15.4 */
+    heur_dissector_add(IEEE802154_PROTOABBREV_WPAN, dissect_lwm_heur, proto_lwm);
+
+} /* proto_reg_handoff_lwm */
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
index de8d2d76e1449489854f58da156e46100da979f9..09308f8f61322b4b27820f920aa63cc867aa661b 100644 (file)
@@ -243,9 +243,9 @@ static int hf_mac_lte_drx_config_short_cycle_timer = -1;
 
 static int hf_mac_lte_drx_state = -1;
 static int hf_mac_lte_drx_state_long_cycle_offset = -1;
-static int hf_mac_lte_drx_state_long_cycle_on = -1;
+/* static int hf_mac_lte_drx_state_long_cycle_on = -1; */
 static int hf_mac_lte_drx_state_short_cycle_offset = -1;
-static int hf_mac_lte_drx_state_short_cycle_on = -1;
+/* static int hf_mac_lte_drx_state_short_cycle_on = -1; */
 static int hf_mac_lte_drx_state_inactivity_remaining = -1;
 static int hf_mac_lte_drx_state_onduration_remaining = -1;
 static int hf_mac_lte_drx_state_retransmission_remaining = -1;
@@ -6682,24 +6682,28 @@ void proto_register_mac_lte(void)
               0, 0x0, NULL, HFILL
             }
         },
+#if 0
         { &hf_mac_lte_drx_state_long_cycle_on,
             { "Long cycle current on",
               "mac-lte.drx-state.long-cycle-on", FT_BOOLEAN, BASE_NONE,
               0, 0x0, NULL, HFILL
             }
         },
+#endif
         { &hf_mac_lte_drx_state_short_cycle_offset,
             { "Short cycle offset",
               "mac-lte.drx-state.short-cycle-offset", FT_UINT16, BASE_DEC,
               0, 0x0, NULL, HFILL
             }
         },
+#if 0
         { &hf_mac_lte_drx_state_short_cycle_on,
             { "Short cycle current on",
               "mac-lte.drx-state.short-cycle-on", FT_BOOLEAN, BASE_NONE,
               0, 0x0, NULL, HFILL
             }
         },
+#endif
         { &hf_mac_lte_drx_state_inactivity_remaining,
             { "Inactivity remaining",
               "mac-lte.drx-state.inactivity-remaining", FT_UINT16, BASE_DEC,
index 66a8eb8ac792985da36f366130cc2a2b93dbf369..1eb87a416819e48a4a0a6f036f30ba3fc24bceda 100644 (file)
@@ -43,6 +43,7 @@
 #include "packet-gsm_map.h"
 #include "packet-gsm_sms.h"
 #include "packet-usb.h"
+#include "packet-mbim.h"
 
 void proto_register_mbim(void);
 void proto_reg_handoff_mbim(void);
@@ -551,6 +552,8 @@ static gboolean mbim_control_decode_unknown_itf = FALSE;
 
 static reassembly_table mbim_reassembly_table;
 
+static wmem_tree_t *mbim_uuid_ext_tree = NULL;
+
 static const fragment_items mbim_frag_items = {
     &ett_mbim_fragment,
     &ett_mbim_fragments,
@@ -568,11 +571,6 @@ static const fragment_items mbim_frag_items = {
     "MBIM fragments"
 };
 
-struct mbim_info {
-    guint32 req_frame;
-    guint32 resp_frame;
-};
-
 struct mbim_conv_info {
     wmem_tree_t *trans;
     wmem_tree_t *open;
@@ -605,9 +603,6 @@ static const value_string mbim_msg_type_vals[] = {
     { 0, NULL}
 };
 
-#define MBIM_COMMAND_QUERY 0
-#define MBIM_COMMAND_SET   1
-
 static const value_string mbim_command_type_vals[] = {
     { MBIM_COMMAND_QUERY, "Query"},
     { MBIM_COMMAND_SET, "Set"},
@@ -691,6 +686,7 @@ struct mbim_uuid {
 #define UUID_MS_HOSTSHUTDOWN 8
 #define UUID_MSFWID          9
 #define UUID_EXT_QMUX        10 /* Qualcomm proprietary UUID */
+#define UUID_EXT_IDX         255
 
 static const struct mbim_uuid mbim_uuid_service_id_vals[] = {
     { UUID_BASIC_CONNECT, {0xa289cc33, 0xbcbb, 0x8b4f, { 0xb6, 0xb0, 0x13, 0x3e, 0xc2, 0xaa, 0xe6, 0xdf}}},
@@ -1631,10 +1627,13 @@ static const int *mbim_descriptor_network_capabilities_fields[] = {
 };
 
 static guint8
-mbim_dissect_service_id_uuid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint hf, gint *offset)
+mbim_dissect_service_id_uuid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint hf,
+                             gint *offset, struct mbim_uuid_ext **uuid_ext_info)
 {
     e_guid_t uuid;
     guint i;
+    guint32 uuid_ext[4];
+    wmem_tree_key_t uuid_key[2];
 
     tvb_get_ntohguid(tvb, *offset, &uuid);
 
@@ -1643,6 +1642,28 @@ mbim_dissect_service_id_uuid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
             break;
         }
     }
+
+    if ((i == array_length(mbim_uuid_service_id_vals)) && uuid_ext_info) {
+        /* Let's check if UUID is known in extension table */
+        uuid_ext[0] = tvb_get_ntohl(tvb, *offset);
+        uuid_ext[1] = tvb_get_ntohl(tvb, *offset + 4);
+        uuid_ext[2] = tvb_get_ntohl(tvb, *offset + 8);
+        uuid_ext[3] = tvb_get_ntohl(tvb, *offset + 12);
+
+        uuid_key[0].length = 4;
+        uuid_key[0].key = uuid_ext;
+        uuid_key[1].length = 0;
+        uuid_key[1].key = NULL;
+
+        *uuid_ext_info = (struct mbim_uuid_ext *)wmem_tree_lookup32_array(mbim_uuid_ext_tree, uuid_key);
+        if (*uuid_ext_info) {
+            proto_tree_add_guid_format_value(tree, hf, tvb, *offset, 16, &uuid, "%s (%s)",
+                                             (*uuid_ext_info)->uuid_name, guid_to_ep_str(&uuid));
+            *offset += 16;
+            return UUID_EXT_IDX;
+        }
+    }
+
     proto_tree_add_guid_format_value(tree, hf, tvb, *offset, 16, &uuid, "%s (%s)",
                                      val_to_str_const(i, mbim_service_id_vals, "Unknown"), guid_to_ep_str(&uuid));
     *offset += 16;
@@ -1651,7 +1672,8 @@ mbim_dissect_service_id_uuid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
 }
 
 static guint32
-mbim_dissect_cid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, guint8 uuid_idx)
+mbim_dissect_cid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offset, guint8 uuid_idx,
+                 struct mbim_uuid_ext *uuid_ext_info)
 {
     guint32 cid;
 
@@ -1702,6 +1724,14 @@ mbim_dissect_cid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint *offs
             proto_tree_add_uint(tree, hf_mbim_uuid_ext_qmux_cid, tvb, *offset, 4, cid);
             col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", val_to_str_const(cid, mbim_uuid_ext_qmux_cid_vals, "Unknown"));
             break;
+        case UUID_EXT_IDX:
+            {
+                const gchar* cid_string = val_to_str_const(cid, uuid_ext_info->uuid_cid_list, "Unknown");
+
+                proto_tree_add_uint_format_value(tree, hf_mbim_cid, tvb, *offset, 4, cid, "%s (%u)", cid_string , cid);
+                col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", cid_string);
+            }
+            break;
         default:
             proto_tree_add_uint(tree, hf_mbim_cid, tvb, *offset, 4, cid);
             col_append_str(pinfo->cinfo, COL_INFO, ": Unknown");
@@ -2455,8 +2485,9 @@ mbim_dissect_device_service_element(tvbuff_t *tvb, packet_info *pinfo, proto_tre
 {
     guint8 uuid_idx;
     guint32 i, cid_count, cid;
+    struct mbim_uuid_ext *uuid_ext_info = NULL;
 
-    uuid_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_device_service_element_device_service_id, &offset);
+    uuid_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_device_service_element_device_service_id, &offset, &uuid_ext_info);
     proto_tree_add_bitmask(tree, tvb, offset, hf_mbim_device_service_element_dss_payload,
                            ett_mbim_bitmap, mbim_device_service_element_dss_payload_fields, ENC_LITTLE_ENDIAN);
     offset += 4;
@@ -2512,6 +2543,10 @@ mbim_dissect_device_service_element(tvbuff_t *tvb, packet_info *pinfo, proto_tre
                 proto_tree_add_uint_format_value(tree, hf_mbim_device_service_element_cid, tvb, offset, 4, cid, "%s (%u)",
                                                  val_to_str_const(cid, mbim_uuid_ext_qmux_cid_vals, "Unknown"), cid);
                 break;
+            case UUID_EXT_IDX:
+                proto_tree_add_uint_format_value(tree, hf_mbim_device_service_element_cid, tvb, offset, 4, cid, "%s (%u)",
+                                                 val_to_str_const(cid, uuid_ext_info->uuid_cid_list, "Unknown"), cid);
+                break;
             default:
                 proto_tree_add_uint(tree, hf_mbim_device_service_element_cid, tvb, offset, 4, cid);
                 break;
@@ -2565,8 +2600,9 @@ mbim_dissect_event_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
 {
     guint8 uuid_idx;
     guint32 i, cid_count, cid;
+    struct mbim_uuid_ext *uuid_ext_info = NULL;
 
-    uuid_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_event_entry_device_service_id, &offset);
+    uuid_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_event_entry_device_service_id, &offset, &uuid_ext_info);
     cid_count = tvb_get_letohl(tvb, offset);
     proto_tree_add_uint(tree, hf_mbim_event_entry_cid_count, tvb, offset, 4, cid_count);
     offset += 4;
@@ -2617,6 +2653,10 @@ mbim_dissect_event_entry(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
                 proto_tree_add_uint_format_value(tree, hf_mbim_device_service_element_cid, tvb, offset, 4, cid, "%s (%u)",
                                                  val_to_str_const(cid, mbim_uuid_ext_qmux_cid_vals, "Unknown"), cid);
                 break;
+            case UUID_EXT_IDX:
+                proto_tree_add_uint_format_value(tree, hf_mbim_device_service_element_cid, tvb, offset, 4, cid, "%s (%u)",
+                                                 val_to_str_const(cid, uuid_ext_info->uuid_cid_list, "Unknown"), cid);
+                break;
             default:
                 proto_tree_add_uint(tree, hf_mbim_event_entry_cid, tvb, offset, 4, cid);
                 break;
@@ -3426,7 +3466,7 @@ mbim_dissect_muticarrier_current_cid_list_req(tvbuff_t *tvb, packet_info *pinfo
 {
     guint8 service_idx;
 
-    service_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_multicarrier_current_cid_list_req_uuid, &offset);
+    service_idx = mbim_dissect_service_id_uuid(tvb, pinfo, tree, hf_mbim_multicarrier_current_cid_list_req_uuid, &offset, NULL);
     if (service_idx != UUID_MULTICARRIER) {
         expert_add_info_format(pinfo, NULL, &ei_mbim_unexpected_uuid_value,
                                "Unexpected UUID value, should be UUID_MULTICARRIER");
@@ -3459,7 +3499,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
     wmem_tree_key_t trans_id_key[3];
     conversation_t *conversation;
     struct mbim_conv_info *mbim_conv;
-    struct mbim_info *mbim_info;
+    struct mbim_info *mbim_info = NULL;
 
     if (mbim_control_decode_unknown_itf && (tvb_reported_length(tvb) < 12)) {
         return 0;
@@ -3526,6 +3566,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 guint8 uuid_idx;
                 fragment_head *frag_data;
                 tvbuff_t *frag_tvb;
+                struct mbim_uuid_ext *uuid_ext_info = NULL;
 
                 ti = proto_tree_add_text(mbim_tree, tvb, offset, 8, "Fragment Header");
                 subtree = proto_item_add_subtree(ti, ett_mbim_frag_header);
@@ -3576,9 +3617,12 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                     }
                 }
 
-                uuid_idx = mbim_dissect_service_id_uuid(frag_tvb, pinfo, mbim_tree, hf_mbim_device_service_id, &offset);
-                cid = mbim_dissect_cid(frag_tvb, pinfo, mbim_tree, &offset, uuid_idx);
+                uuid_idx = mbim_dissect_service_id_uuid(frag_tvb, pinfo, mbim_tree, hf_mbim_device_service_id, &offset, &uuid_ext_info);
+                cid = mbim_dissect_cid(frag_tvb, pinfo, mbim_tree, &offset, uuid_idx, uuid_ext_info);
                 cmd_type = tvb_get_letohl(frag_tvb, offset);
+                if (mbim_info) {
+                    mbim_info->cmd_type = cmd_type;
+                }
                 proto_tree_add_uint(mbim_tree, hf_mbim_command_type, frag_tvb, offset, 4, cmd_type);
                 col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str_const(cmd_type, mbim_command_type_vals, "Unknown"));
                 offset += 4;
@@ -3990,6 +4034,25 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                                 break;
                         }
                         break;
+                    case UUID_EXT_IDX:
+                        {
+                            gint cid_idx;
+                            mbim_dissect_fct dissect_cid;
+
+                            try_val_to_str_idx(cid, uuid_ext_info->uuid_cid_list, &cid_idx);
+                            if (cid_idx != -1) {
+                                dissect_cid = (cmd_type == MBIM_COMMAND_SET) ? uuid_ext_info->uuid_fct_list[cid_idx].cmd_set :
+                                    uuid_ext_info->uuid_fct_list[cid_idx].cmd_query;
+                                if (dissect_cid) {
+                                    dissect_cid(frag_tvb, pinfo, subtree, offset, mbim_info);
+                                } else if (info_buff_len) {
+                                    proto_tree_add_expert(subtree, pinfo, &ei_mbim_unexpected_info_buffer, frag_tvb, offset, info_buff_len);
+                                }
+                            } else {
+                                proto_tree_add_expert(subtree, pinfo, &ei_mbim_unexpected_msg, frag_tvb, offset, -1);
+                            }
+                        }
+                        break;
                     default:
                         if (info_buff_len) {
                             proto_tree_add_item(subtree, hf_mbim_info_buffer, frag_tvb, offset, info_buff_len, ENC_NA);
@@ -4035,6 +4098,7 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                 guint8 uuid_idx;
                 fragment_head *frag_data;
                 tvbuff_t *frag_tvb;
+                struct mbim_uuid_ext *uuid_ext_info = NULL;
 
                 ti = proto_tree_add_text(mbim_tree, tvb, offset, 8, "Fragment Header");
                 subtree = proto_item_add_subtree(ti, ett_mbim_frag_header);
@@ -4087,8 +4151,8 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                     }
                 }
 
-                uuid_idx = mbim_dissect_service_id_uuid(frag_tvb, pinfo, mbim_tree, hf_mbim_device_service_id, &offset);
-                cid = mbim_dissect_cid(frag_tvb, pinfo, mbim_tree, &offset, uuid_idx);
+                uuid_idx = mbim_dissect_service_id_uuid(frag_tvb, pinfo, mbim_tree, hf_mbim_device_service_id, &offset, &uuid_ext_info);
+                cid = mbim_dissect_cid(frag_tvb, pinfo, mbim_tree, &offset, uuid_idx, uuid_ext_info);
                 if (msg_type == MBIM_COMMAND_DONE) {
                     proto_tree_add_item(mbim_tree, hf_mbim_status, frag_tvb, offset, 4, ENC_LITTLE_ENDIAN);
                     offset += 4;
@@ -4459,6 +4523,25 @@ dissect_mbim_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
                                 break;
                         }
                         break;
+                    case UUID_EXT_IDX:
+                        {
+                            gint cid_idx;
+                            mbim_dissect_fct dissect_cid;
+
+                            try_val_to_str_idx(cid, uuid_ext_info->uuid_cid_list, &cid_idx);
+                            if (cid_idx != -1) {
+                                dissect_cid = (msg_type == MBIM_COMMAND_DONE) ? uuid_ext_info->uuid_fct_list[cid_idx].cmd_done :
+                                    uuid_ext_info->uuid_fct_list[cid_idx].ind_status;
+                                if (dissect_cid) {
+                                    dissect_cid(frag_tvb, pinfo, subtree, offset, mbim_info);
+                                } else if (info_buff_len) {
+                                    proto_tree_add_expert(subtree, pinfo, &ei_mbim_unexpected_info_buffer, frag_tvb, offset, info_buff_len);
+                                }
+                            } else {
+                                proto_tree_add_expert(subtree, pinfo, &ei_mbim_unexpected_msg, frag_tvb, offset, -1);
+                            }
+                        }
+                        break;
                     default:
                         proto_tree_add_item(subtree, hf_mbim_info_buffer, frag_tvb, offset, info_buff_len, ENC_NA);
                         break;
@@ -4722,6 +4805,21 @@ mbim_reassembly_init(void)
                           &addresses_reassembly_table_functions);
 }
 
+void mbim_register_uuid_ext(struct mbim_uuid_ext *uuid_ext)
+{
+    wmem_tree_key_t uuid_key[2];
+
+    if (!mbim_uuid_ext_tree) {
+        mbim_uuid_ext_tree = wmem_tree_new(wmem_epan_scope());
+    }
+
+    uuid_key[0].length = 4;
+    uuid_key[0].key = uuid_ext->uuid;
+    uuid_key[1].length = 0;
+    uuid_key[1].key = NULL;
+    wmem_tree_insert32_array(mbim_uuid_ext_tree, uuid_key, uuid_ext);
+}
+
 void
 proto_register_mbim(void)
 {
diff --git a/epan/dissectors/packet-mbim.h b/epan/dissectors/packet-mbim.h
new file mode 100644 (file)
index 0000000..c623023
--- /dev/null
@@ -0,0 +1,66 @@
+/* packet-mbim.h
+ * Routines for MBIM dissection
+ * Copyright 2013, Pascal Quantin <pascal.quantin@gmail.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ */
+
+#ifndef __PACKET_MBIM_H__
+#define __PACKET_MBIM_H__
+
+#include "ws_symbol_export.h"
+
+#define MBIM_COMMAND_QUERY 0
+#define MBIM_COMMAND_SET   1
+
+struct mbim_info {
+    guint32 req_frame;
+    guint32 resp_frame;
+    guint32 cmd_type;
+};
+
+typedef void (*mbim_dissect_fct) (tvbuff_t *, packet_info *, proto_tree *, gint /* offset */, struct mbim_info *);
+
+/* Structure listing the dissection function to be called for a given CID */
+struct mbim_cid_dissect {
+    mbim_dissect_fct cmd_set;
+    mbim_dissect_fct cmd_query;
+    mbim_dissect_fct cmd_done;
+    mbim_dissect_fct ind_status;
+};
+
+/* Structure handling the description of the UUID extension to be registered */
+struct mbim_uuid_ext {
+    /* UUID value stored in network byte order */
+    guint32 uuid[4];
+    /* UUID name to be displayed during dissection */
+    const gchar *uuid_name;
+    /* value_string array containing the CID list for this UUID */
+    const value_string *uuid_cid_list;
+    /* Array of the dissection functions per CID. Pointers can be NULL when no dissection is expected. */
+    /* BEWARE: the array must be ordered the same way as uuid_cid_list as it will be accessed with the CID index */
+    const struct mbim_cid_dissect *uuid_fct_list;
+};
+
+/* Function allowing to register a new UUID used during MBIM dissection */
+WS_DLL_PUBLIC void mbim_register_uuid_ext(struct mbim_uuid_ext *uuid_ext);
+
+#endif /* __PACKET_MBIM_H__ */
index ebe5a5c703d5c929e68e33f076cbde95c6bfee9b..dcbe2f5d5408e354a28ee3d03b42297c6e84c252 100644 (file)
@@ -110,7 +110,7 @@ static int hf_mip_pmipv4skipext_accesstechnology_type = -1;
 static int hf_mip_cvse_reserved = -1;
 static int hf_mip_cvse_vendor_org_id = -1;
 static int hf_mip_cvse_verizon_cvse_type = -1;
-static int hf_mip_cvse_3gpp2_cvse_type = -1;
+/* static int hf_mip_cvse_3gpp2_cvse_type = -1; */
 static int hf_mip_cvse_3gpp2_grekey = -1;
 static int hf_mip_cvse_vendor_cvse_type = -1;
 static int hf_mip_cvse_vendor_cvse_value = -1;
@@ -1358,11 +1358,13 @@ void proto_register_mip(void)
         FT_UINT16, BASE_DEC, VALS(mip_cvse_verizon_cvse_types), 0,
         NULL, HFILL }
     },
+#if 0
     { &hf_mip_cvse_3gpp2_cvse_type ,
       { "3GPP2 CVSE Type","mip.ext.cvse.3gpp2_type",
         FT_UINT16, BASE_DEC, NULL, 0,
         NULL, HFILL }
     },
+#endif
     { &hf_mip_cvse_3gpp2_grekey,
       { "GRE Key","mip.ext.cvse.3gpp2_grekey",
         FT_UINT16, BASE_DEC, NULL, 0,
index c4641192ec5bd8773a54a5dc1a24e17298ff99a5..b2a29ee724920644f6f5cfb07d6c216d201b518e 100644 (file)
@@ -965,6 +965,13 @@ nfs_name_snoop_add_name(int xid, tvbuff_t *tvb, int name_offset, int name_len, i
        nfs_name_snoop_t *nns, *old_nns;
        const char       *ptr;
 
+       if (name_len <= 0) {
+               /* Do we need some way to signal an error here? This could be
+                * programmatic or just a corrupt packet, depending on the
+                * caller... */
+               return;
+       }
+
        /* filter out all '.' and '..' names */
        if (!name) {
                ptr = (const char *)tvb_get_ptr(tvb, name_offset, name_len);
@@ -972,17 +979,17 @@ nfs_name_snoop_add_name(int xid, tvbuff_t *tvb, int name_offset, int name_len, i
                ptr = name;
        }
        if (ptr[0] == '.') {
-               if (ptr[1] == 0) {
+               if (name_len <= 1 || ptr[1] == 0) {
                        return;
                }
                if (ptr[1] == '.') {
-                       if (ptr[2] == 0) {
+                       if (name_len <= 2 || ptr[2] == 0) {
                                return;
                        }
                }
        }
 
-       nns = (nfs_name_snoop_t *)g_malloc(sizeof(nfs_name_snoop_t));
+       nns = g_new(nfs_name_snoop_t, 1);
 
        nns->fh_length = 0;
        nns->fh = NULL;
index 2ece6d529c2cfbf7e039d214ccb07b80b2c7525b..017d746f6acbde9b7daaad0fb03e0b8a60f83b9a 100644 (file)
@@ -50,11 +50,11 @@ static int hf_openflow_datapath_mac = -1;
 static int hf_openflow_datapath_impl = -1;
 static int hf_openflow_n_buffers = -1;
 static int hf_openflow_n_tables = -1;
-static int hf_openflow_auxiliary_id = -1;
-static int hf_openflow_pad3 = -1;
+/* static int hf_openflow_auxiliary_id = -1; */
+/* static int hf_openflow_pad3 = -1; */
 static int hf_openflow_capabilities = -1;
 static int hf_openflow_actions = -1;
-static int hf_openflow_reserved32 = -1;
+/* static int hf_openflow_reserved32 = -1; */
 static int hf_openflow_cap_flow_stats = -1;
 static int hf_openflow_table_stats = -1;
 static int hf_openflow_port_stats = -1;
@@ -118,12 +118,12 @@ static int hf_openflow_buffer_id = -1;
 static int hf_openflow_total_len = -1;
 static int hf_openflow_in_port = -1;
 static int hf_openflow_reason = -1;
-static int hf_openflow_table_id = -1;
+/* static int hf_openflow_table_id = -1; */
 static int hf_openflow_cookie = -1;
-static int hf_openflow_cookie_mask = -1;
+/* static int hf_openflow_cookie_mask = -1; */
 static int hf_openflow_padd8 = -1;
-static int hf_openflow_padd16 = -1;
-static int hf_openflow_padd48 = -1;
+/* static int hf_openflow_padd16 = -1; */
+/* static int hf_openflow_padd48 = -1; */
 static int hf_openflow_actions_len = -1;
 static int hf_openflow_action_type = -1;
 static int hf_openflow_action_len = -1;
@@ -139,7 +139,7 @@ static int hf_openflow_idle_timeout = -1;
 static int hf_openflow_hard_timeout = -1;
 static int hf_openflow_priority = -1;
 static int hf_openflow_out_port = -1;
-static int hf_openflow_out_group = -1;
+/* static int hf_openflow_out_group = -1; */
 static int hf_openflow_flags = -1;
 
 /* Initialize the subtree pointers */
@@ -840,16 +840,20 @@ proto_register_openflow_v1(void)
                FT_UINT8, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_auxiliary_id,
             { "auxiliary_id", "openflow.auxiliary_id",
                FT_UINT8, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
+#if 0
         { &hf_openflow_pad3,
             { "Padding", "openflow.pad3",
                FT_UINT24, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_capabilities,
             { "capabilities", "openflow.capabilities",
                FT_UINT32, BASE_HEX, NULL, 0x0,
@@ -860,11 +864,13 @@ proto_register_openflow_v1(void)
                FT_UINT32, BASE_HEX, NULL, 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_reserved32,
             { "Reserved", "openflow.reserved32",
                FT_UINT32, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_cap_flow_stats,
             { "Flow statistics", "openflow.flow_stats",
                FT_BOOLEAN, 32, NULL, OFPC_FLOW_STATS,
@@ -1135,36 +1141,44 @@ proto_register_openflow_v1(void)
                FT_UINT8, BASE_DEC, VALS(openflow_reason_values), 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_table_id,
             { "Table Id", "openflow.table_id",
                FT_UINT8, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_cookie,
             { "Cookie", "openflow.cookie",
                FT_UINT64, BASE_HEX, NULL, 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_cookie_mask,
             { "Cookie mask", "openflow.cookie",
                FT_UINT64, BASE_HEX, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_padd8,
             { "Padding", "openflow.padding8",
                FT_UINT8, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_padd16,
             { "Padding", "openflow.padding16",
                FT_UINT16, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
+#if 0
         { &hf_openflow_padd48,
             { "Padding", "openflow.padding48",
                FT_UINT64, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_actions_len,
             { "Actions length", "openflow.actions_len",
                FT_UINT16, BASE_DEC, NULL, 0x0,
@@ -1240,11 +1254,13 @@ proto_register_openflow_v1(void)
                FT_UINT32, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#if 0
         { &hf_openflow_out_group,
             { "Out group", "openflow.out_group",
                FT_UINT32, BASE_DEC, NULL, 0x0,
                NULL, HFILL }
         },
+#endif
         { &hf_openflow_flags,
             { "Flags", "openflow.flags",
                FT_UINT16, BASE_DEC, NULL, 0x0,
index efb82db135ae27db5bfda0dac0416cd8d7d9a23a..cf23897e34e3094c66463ebdc184d3a57bf0e58d 100644 (file)
@@ -9858,6 +9858,3 @@ proto_register_openflow_v5(void)
     expert_openflow_v5 = expert_register_protocol(proto_openflow_v5);
     expert_register_field_array(expert_openflow_v5, ei, array_length(ei));
 }
-
-
-    
\ No newline at end of file
index 5f7da63eff10264cb40945dae9604ee6859930e7..6df5cfd726196d4ab7249e9de482e8c066cc9e32 100644 (file)
@@ -284,7 +284,7 @@ static guint16 checksum (guint8 *buffer, gint len, gint offset)
   guint8  *hpp, *pls;
 
   if (len < offset+2) {
-    /* Buffer to small */
+    /* Buffer too small */
     return 0;
   }
 
index fe64f6b251c5cf53027c036dc0c82dad554180e8..e8317566eca7456fe32e518e32dd8caad24c01fd 100644 (file)
 #include <wsutil/wsgcrypt.h>
 #endif /* HAVE_LIBGCRYPT */
 
-/* Define this symbol if you have a working implementation of SNOW3G f8() and f9() available */
+/* Define this symbol if you have a working implementation of SNOW3G f8() and f9() available.
+   Note that the use of this algorithm is restricted, and that an administrative charge
+   may be applicable if you use it (see e.g. http://www.gsma.com/technicalprojects/fraud-security/security-algorithms).
+   A version of Wireshark with this enabled would not be distributable. */
 /* #define HAVE_SNOW3G */
-#ifdef HAVE_SNOW3G
-#include <epan/snow3g_algorithm.h>
-#endif
 
 #include "packet-rlc-lte.h"
 #include "packet-pdcp-lte.h"
@@ -1328,22 +1328,55 @@ void set_pdcp_lte_security_algorithms(guint16 ueid, pdcp_security_info_t *securi
     /* N.B. won't work for internal, non-RRC signalling methods... */
     pdcp_security_info_t *p_frame_security;
 
-    /* Copy security struct */
-    pdcp_security_info_t *p_security = wmem_new(wmem_file_scope(), pdcp_security_info_t);
-    *p_security = *security_info;
+    /* Create or update current settings, by UEID */
+    pdcp_security_info_t* ue_security =
+        (pdcp_security_info_t*)g_hash_table_lookup(pdcp_security_hash,
+                                                   GUINT_TO_POINTER((guint)ueid));
+    if (ue_security == NULL) {
+        /* Copy whole security struct */
+        ue_security = wmem_new(wmem_file_scope(), pdcp_security_info_t);
+        *ue_security = *security_info;
+
+        /* And add into security table */
+        g_hash_table_insert(pdcp_security_hash, GUINT_TO_POINTER((guint)ueid), ue_security);
+    }
+    else {
+        /* Just update existing entry already in table */
+        ue_security->previous_configuration_frame = ue_security->configuration_frame;
+        ue_security->previous_integrity = ue_security->integrity;
+        ue_security->previous_ciphering = ue_security->ciphering;
 
-    /* And add into security table */
-    g_hash_table_insert(pdcp_security_hash, GUINT_TO_POINTER((guint)ueid), p_security);
+        ue_security->configuration_frame = security_info->configuration_frame;
+        ue_security->integrity = security_info->integrity;
+        ue_security->ciphering = security_info->ciphering;
+        ue_security->seen_next_ul_pdu = FALSE;
+    }
 
-    /* Add an entry for this PDU already to use these settings, as otherwise it won't be present
+    /* Also add an entry for this PDU already to use these settings, as otherwise it won't be present
        when we query it on the first pass. */
     p_frame_security = wmem_new(wmem_file_scope(), pdcp_security_info_t);
-    *p_frame_security = *p_security;
+    *p_frame_security = *ue_security;
     g_hash_table_insert(pdcp_security_result_hash,
-                        get_ueid_frame_hash_key(ueid, security_info->configuration_frame, TRUE),
+                        get_ueid_frame_hash_key(ueid, ue_security->configuration_frame, TRUE),
                         p_frame_security);
 }
 
+/* UE failed to process SecurityModeCommand so go back to previous security settings */
+void set_pdcp_lte_security_algorithms_failed(guint16 ueid)
+{
+    /* Look up current state by UEID */
+    pdcp_security_info_t* ue_security =
+        (pdcp_security_info_t*)g_hash_table_lookup(pdcp_security_hash,
+                                                   GUINT_TO_POINTER((guint)ueid));
+    if (ue_security != NULL) {
+        /* TODO: could remove from table if previous_configuration_frame is 0 */
+        /* Go back to previous state */
+        ue_security->configuration_frame = ue_security->previous_configuration_frame;
+        ue_security->integrity = ue_security->previous_integrity;
+        ue_security->ciphering = ue_security->previous_ciphering;        
+    }
+}
+
 /* Decipher payload if algorithm is supported and plausible inputs are available */
 static tvbuff_t *decipher_payload(tvbuff_t *tvb, packet_info *pinfo, int *offset,
                                   pdu_security_settings_t *pdu_security_settings,
@@ -1512,6 +1545,7 @@ static guint32 calculate_digest(pdu_security_settings_t *pdu_security_settings,
 
                 mac = (u8*)snow3g_f9(pdu_security_settings->integrityKey,
                                      pdu_security_settings->count,
+                                     /* 'Fresh' is the bearer bits then zeros */
                                      pdu_security_settings->bearer << 27,
                                      pdu_security_settings->direction,
                                      message_data,
index b10cdda65bf3499f33ee14c1cfc7ee2e9e580404..c0b758d2f32c0fc754b5a13ede572d9240edc09c 100644 (file)
@@ -60,9 +60,14 @@ enum security_ciphering_algorithm_e { eea0, eea1, eea2 };
 typedef struct pdcp_security_info_t
 {
     guint32                             configuration_frame;
-    gboolean                            seen_next_ul_pdu; /* i.e. have we seen SecurityModeResponse */
+    gboolean                            seen_next_ul_pdu;  /* i.e. have we seen SecurityModeResponse */
     enum security_integrity_algorithm_e integrity;
     enum security_ciphering_algorithm_e ciphering;
+
+    /* Store previous settings so can revert if get SecurityModeFailure */
+    guint32                             previous_configuration_frame;
+    enum security_integrity_algorithm_e previous_integrity;
+    enum security_ciphering_algorithm_e previous_ciphering;
 } pdcp_security_info_t;
 
 
@@ -175,3 +180,7 @@ typedef struct pdcp_lte_info
 /* Function to configure ciphering & integrity algorithms */
 void set_pdcp_lte_security_algorithms(guint16 ueid, pdcp_security_info_t *security_info);
 
+/* Function to indicate securityModeCommand did not complete */
+void set_pdcp_lte_security_algorithms_failed(guint16 ueid);
+
+
index 36c6062d26809bc9f6625e1b268de420b1695ed4..7c375c3e59d0c604b7195c8948137a492a43417a 100644 (file)
  * Routines for PKCS#12: Personal Information Exchange packet dissection
  * Graeme Lunt 2006
  *
+ * See "PKCS #12 v1.1: Personal Information Exchange Syntax":
+ *
+ *    http://www.emc.com/emc-plus/rsa-labs/pkcs/files/h11301-wp-pkcs-12v1-1-personal-information-exchange-syntax.pdf
+ *
  * $Id$
  *
  * Wireshark - Network traffic analyzer
@@ -144,7 +148,7 @@ static int hf_pkcs12_encryptionScheme = -1;       /* AlgorithmIdentifier */
 static int hf_pkcs12_messageAuthScheme = -1;      /* AlgorithmIdentifier */
 
 /*--- End of included file: packet-pkcs12-hf.c ---*/
-#line 81 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 85 "../../asn1/pkcs12/packet-pkcs12-template.c"
 
 /* Initialize the subtree pointers */
 
@@ -172,7 +176,7 @@ static gint ett_pkcs12_PBES2Params = -1;
 static gint ett_pkcs12_PBMAC1Params = -1;
 
 /*--- End of included file: packet-pkcs12-ett.c ---*/
-#line 84 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 88 "../../asn1/pkcs12/packet-pkcs12-template.c"
 
 static void append_oid(proto_tree *tree, const char *oid)
 {
@@ -203,7 +207,7 @@ generate_key_or_iv(unsigned int id, tvbuff_t *salt_tvb, unsigned int iter,
   cur_keylen = 0;
 
   salt_size = tvb_length(salt_tvb);
-  salt_p = tvb_get_string(wmem_packet_scope(), salt_tvb, 0, salt_size);
+  salt_p = (char *)tvb_memdup(wmem_packet_scope(), salt_tvb, 0, salt_size);
 
   if (pw == NULL)
     pwlen = 0;
@@ -232,70 +236,77 @@ generate_key_or_iv(unsigned int id, tvbuff_t *salt_tvb, unsigned int iter,
   else
     memset (p, 0, 64);
 
-  for (;;){
+  for (;;) {
       err = gcry_md_open(&md, GCRY_MD_SHA1, 0);
-      if (gcry_err_code(err)) {
-                 return FALSE;
-         }
-      for (i = 0; i < 64; i++) {
-                 unsigned char lid = id & 0xFF;
-                 gcry_md_write (md, &lid, 1);
-         }
+      if (gcry_err_code(err))
+        {
+          return FALSE;
+        }
+      for (i = 0; i < 64; i++)
+        {
+          unsigned char lid = id & 0xFF;
+          gcry_md_write (md, &lid, 1);
+       }
 
-         gcry_md_write(md, buf_i, pw ? 128 : 64);
+      gcry_md_write(md, buf_i, pw ? 128 : 64);
 
       gcry_md_final (md);
       memcpy (hash, gcry_md_read (md, 0), 20);
 
-         gcry_md_close (md);
+      gcry_md_close (md);
 
-         for (i = 1; i < iter; i++)
-                 gcry_md_hash_buffer (GCRY_MD_SHA1, hash, hash, 20);
+      for (i = 1; i < iter; i++)
+        gcry_md_hash_buffer (GCRY_MD_SHA1, hash, hash, 20);
 
       for (i = 0; i < 20 && cur_keylen < req_keylen; i++)
-                 keybuf[cur_keylen++] = hash[i];
+        keybuf[cur_keylen++] = hash[i];
 
-         if (cur_keylen == req_keylen) {
-                 gcry_mpi_release (num_b1);
-                 return TRUE;          /* ready */
-         }
+      if (cur_keylen == req_keylen)
+      {
+        gcry_mpi_release (num_b1);
+        return TRUE;           /* ready */
+      }
 
       /* need more bytes. */
       for (i = 0; i < 64; i++)
-                 buf_b[i] = hash[i % 20];
+        buf_b[i] = hash[i % 20];
 
-         n = 64;
+      n = 64;
 
-         rc = gcry_mpi_scan (&num_b1, GCRYMPI_FMT_USG, buf_b, n, &n);
+      rc = gcry_mpi_scan (&num_b1, GCRYMPI_FMT_USG, buf_b, n, &n);
 
-         if (rc != 0) {
-                 return FALSE;
-         }
+      if (rc != 0)
+        {
+          return FALSE;
+        }
 
-         gcry_mpi_add_ui (num_b1, num_b1, 1);
+      gcry_mpi_add_ui (num_b1, num_b1, 1);
 
-         for (i = 0; i < 128; i += 64) {
-                 gcry_mpi_t num_ij;
+      for (i = 0; i < 128; i += 64)
+        {
+          gcry_mpi_t num_ij;
 
-                 n = 64;
-                 rc = gcry_mpi_scan (&num_ij, GCRYMPI_FMT_USG, buf_i + i, n, &n);
+          n = 64;
+          rc = gcry_mpi_scan (&num_ij, GCRYMPI_FMT_USG, buf_i + i, n, &n);
 
-                 if (rc != 0) {
-                         return FALSE;
-                 }
+          if (rc != 0)
+            {
+              return FALSE;
+            }
 
-                 gcry_mpi_add (num_ij, num_ij, num_b1);
-                 gcry_mpi_clear_highbit (num_ij, 64 * 8);
+          gcry_mpi_add (num_ij, num_ij, num_b1);
+          gcry_mpi_clear_highbit (num_ij, 64 * 8);
 
-                 n = 64;
+          n = 64;
 
-                 rc = gcry_mpi_print (GCRYMPI_FMT_USG, buf_i + i, n, &n, num_ij);
-                 if (rc != 0){
-                         return FALSE;
-                 }
+          rc = gcry_mpi_print (GCRYMPI_FMT_USG, buf_i + i, n, &n, num_ij);
+          if (rc != 0)
+            {
+              return FALSE;
+            }
 
-                 gcry_mpi_release (num_ij);
-         }
+          gcry_mpi_release (num_ij);
+        }
   }
 }
 
@@ -333,7 +344,7 @@ int PBE_decrypt_data(const char *object_identifier_id_param, tvbuff_t *encrypted
                return FALSE;
        }
 
-       encryption_algorithm = actx->external.direct_reference;
+       encryption_algorithm = x509af_get_last_algorithm_id();
 
        /* these are the only encryption schemes we understand for now */
        if(!strcmp(encryption_algorithm, PKCS12_PBE_3DES_SHA1_OID)) {
@@ -399,7 +410,7 @@ int PBE_decrypt_data(const char *object_identifier_id_param, tvbuff_t *encrypted
        datalen = tvb_length(encrypted_tvb);
        clear_data = (char *)g_malloc(datalen);
 
-       err = gcry_cipher_decrypt (cipher, clear_data, datalen, tvb_get_string(wmem_packet_scope(), encrypted_tvb, 0, datalen), datalen);
+       err = gcry_cipher_decrypt (cipher, clear_data, datalen, (char *)tvb_memdup(wmem_packet_scope(), encrypted_tvb, 0, datalen), datalen);
        if (gcry_err_code (err)) {
 
                proto_item_append_text(item, " [Failed to decrypt with password preference]");
@@ -1128,7 +1139,7 @@ static void dissect_PBMAC1Params_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
 
 
 /*--- End of included file: packet-pkcs12-fn.c ---*/
-#line 385 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 396 "../../asn1/pkcs12/packet-pkcs12-template.c"
 
 static int strip_octet_string(tvbuff_t *tvb)
 {
@@ -1160,7 +1171,7 @@ static void dissect_AuthenticatedSafe_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info
   if((offset = strip_octet_string(tvb)) > 0)
     dissect_pkcs12_AuthenticatedSafe(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkcs12_AuthenticatedSafe_PDU);
   else
-       proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
+    proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
 }
 
 static void dissect_SafeContents_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -1191,7 +1202,7 @@ void proto_register_pkcs12(void) {
 
   /* List of fields */
   static hf_register_info hf[] = {
-       { &hf_pkcs12_X509Certificate_PDU,
+    { &hf_pkcs12_X509Certificate_PDU,
       { "X509Certificate", "pkcs12.X509Certificate",
         FT_NONE, BASE_NONE, NULL, 0,
         "pkcs12.X509Certificate", HFILL }},
@@ -1416,7 +1427,7 @@ void proto_register_pkcs12(void) {
         "AlgorithmIdentifier", HFILL }},
 
 /*--- End of included file: packet-pkcs12-hfarr.c ---*/
-#line 452 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 463 "../../asn1/pkcs12/packet-pkcs12-template.c"
   };
 
   /* List of subtrees */
@@ -1447,7 +1458,7 @@ void proto_register_pkcs12(void) {
     &ett_pkcs12_PBMAC1Params,
 
 /*--- End of included file: packet-pkcs12-ettarr.c ---*/
-#line 458 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 469 "../../asn1/pkcs12/packet-pkcs12-template.c"
   };
   module_t *pkcs12_module;
 
@@ -1508,7 +1519,7 @@ void proto_reg_handoff_pkcs12(void) {
 
 
 /*--- End of included file: packet-pkcs12-dis-tab.c ---*/
-#line 490 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 501 "../../asn1/pkcs12/packet-pkcs12-template.c"
 
        register_ber_oid_dissector("1.2.840.113549.1.9.22.1", dissect_X509Certificate_OCTETSTRING_PDU, proto_pkcs12, "x509Certificate");
 
index a82ffba13fb05fac0ff7334e691cf0e916c20162..aa3cc290ffe325151eef4896c0fc7306cf1aa9ea 100644 (file)
@@ -492,7 +492,7 @@ dissect_pppoe_tags(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tr
                                                            tagstart+4, poe_tag_length, ENC_ASCII|ENC_NA);
                                        /* Show AC-Name in info column */
                                        col_append_fstr(pinfo->cinfo, COL_INFO, " AC-Name='%s'",
-                                                              tvb_get_string(wmem_packet_scope(), tvb, tagstart+4, poe_tag_length));
+                                                              tvb_get_string_enc(wmem_packet_scope(), tvb, tagstart+4, poe_tag_length, ENC_ASCII|ENC_NA));
                                        break;
                                case PPPOE_TAG_HOST_UNIQ:
                                        proto_tree_add_item(pppoe_tree, hf_pppoed_tag_host_uniq, tvb,
@@ -766,12 +766,12 @@ void proto_register_pppoed(void)
                        }
                },
                { &hf_pppoed_tag_service_name,
-                       { "Service-Name", "pppoed.tags.service_name", FT_STRING, BASE_NONE,
+                       { "Service-Name", "pppoed.tags.service_name", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
                { &hf_pppoed_tag_ac_name,
-                       { "AC-Name", "pppoed.tags.ac_name", FT_STRING, BASE_NONE,
+                       { "AC-Name", "pppoed.tags.ac_name", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
@@ -806,12 +806,12 @@ void proto_register_pppoed(void)
                        }
                },
                { &hf_pppoed_tag_vspec_circuit_id,
-                       { "Circuit ID", "pppoed.tags.circuit_id", FT_STRING, BASE_NONE,
+                       { "Circuit ID", "pppoed.tags.circuit_id", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
                { &hf_pppoed_tag_vspec_remote_id,
-                       { "Remote ID", "pppoed.tags.remote_id", FT_STRING, BASE_NONE,
+                       { "Remote ID", "pppoed.tags.remote_id", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
@@ -1001,17 +1001,17 @@ void proto_register_pppoed(void)
                        }
                },
                { &hf_pppoed_tag_service_name_error,
-                       { "Service-Name-Error", "pppoed.tags.service_name_error", FT_STRING, BASE_NONE,
+                       { "Service-Name-Error", "pppoed.tags.service_name_error", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
                { &hf_pppoed_tag_ac_system_error,
-                       { "AC-System-Error", "pppoed.tags.ac_system_error", FT_STRING, BASE_NONE,
+                       { "AC-System-Error", "pppoed.tags.ac_system_error", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                },
                { &hf_pppoed_tag_generic_error,
-                       { "Generic-Error", "pppoed.tags.generic_error", FT_STRING, BASE_NONE,
+                       { "Generic-Error", "pppoed.tags.generic_error", FT_STRING, STR_ASCII,
                                 NULL, 0x0, NULL, HFILL
                        }
                }
index c3df5266f283b22b30a8bb4cf41c5b3a041339cb..aaa1f1408323cbe0ef68a8e3192685ee4ab33a75 100644 (file)
@@ -245,14 +245,17 @@ void proto_register_redbackli(void) {
                { &hf_redbackli_sessid,
                        { "Session Id", "redbackli.sessid", FT_UINT32, BASE_DEC, NULL, 0x0,
                        "Session Identifier", HFILL }},
-               { &hf_redbackli_dir,
 #if 0 /* XXX: If one goes by the heuristic then this field can be variable length ??
          In the absence of any documentation We'll assume that's the case
          (even though 'direction' sounds like a fixed length field */
+               { &hf_redbackli_dir,
                        { "Direction", "redbackli.dir", FT_UINT8, BASE_DEC, NULL, 0x0,
-#endif
+                       NULL, HFILL }},
+#else
+               { &hf_redbackli_dir,
                        { "Direction", "redbackli.dir", FT_BYTES, BASE_NONE, NULL, 0x0,
                        NULL, HFILL }},
+#endif
                { &hf_redbackli_label,
                        { "Label", "redbackli.label", FT_STRING, BASE_NONE, NULL, 0x0,
                        NULL, HFILL }},
index 26294d3541f7b28cb88765e37a551e571bb67c1e..223e48a29ab8560c2277f412ed0d9c130b5c8d70 100644 (file)
@@ -398,7 +398,7 @@ dissect_lct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
 
             case 6:
                 proto_tree_add_item(lct_tree, hf_tsi48, tvb, offset, tsi_size, ENC_BIG_ENDIAN);
-                tsi = tvb_get_ntoh64(tvb, offset) & G_GUINT64_CONSTANT(0x0000FFFFFFFFFFFF);
+                tsi = tvb_get_ntoh48(tvb, offset);
                 break;
             default:
                 tsi = 0;
@@ -431,7 +431,7 @@ dissect_lct(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
 
             case 6:
                 proto_tree_add_item(lct_tree, hf_toi48, tvb, offset, toi_size, ENC_BIG_ENDIAN);
-                toi = tvb_get_ntoh64(tvb, offset) & G_GUINT64_CONSTANT(0x0000FFFFFFFFFFFF);
+                toi = tvb_get_ntoh48(tvb, offset);
                 break;
 
             case 8:
index 5567b8425e5c692bae04f6773322e44779a7723a..067e90fe5023a92f2714281942e7732753b9422c 100644 (file)
@@ -1260,7 +1260,10 @@ enum {
     RSVP_SESSION_TYPE_AGGREGATE_IPV6,
 
     RSVP_SESSION_TYPE_IPV4_UNI = 11,
-    RSVP_SESSION_TYPE_IPV4_E_NNI = 15
+
+    RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4 = 13,
+    RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6,
+    RSVP_SESSION_TYPE_IPV4_E_NNI
 };
 
 /*
@@ -2131,6 +2134,20 @@ summary_session(tvbuff_t *tvb, int offset)
                                   tvb_get_ntohs(tvb, offset+10),
                                   tvb_ip_to_str(tvb, offset+12));
         break;
+    case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4:
+        return wmem_strdup_printf(wmem_packet_scope(),
+                                  "SESSION: IPv4-P2MP LSP TUNNEL, PSMP ID %d, Tunnel ID %d, Ext Tunnel %s. ",
+                                  tvb_get_ntohl(tvb, offset+4),
+                                  tvb_get_ntohs(tvb, offset+10),
+                                  tvb_ip_to_str(tvb, offset+12));
+        break;
+    case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6:
+        return wmem_strdup_printf(wmem_packet_scope(),
+                                  "SESSION: IPv6-P2MP LSP TUNNEL, PSMP ID %d, Tunnel ID %d, Ext Tunnel %s. ",
+                                  tvb_get_ntohl(tvb, offset+4),
+                                  tvb_get_ntohs(tvb, offset+10),
+                                  tvb_ip6_to_str(tvb, offset+12));
+        break;
     case RSVP_SESSION_TYPE_IPV4_E_NNI:
         return wmem_strdup_printf(wmem_packet_scope(),
                                   "SESSION: IPv4-E-NNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
@@ -2316,6 +2333,36 @@ dissect_rsvp_session(proto_item *ti, proto_tree *rsvp_object_tree,
 
         break;
 
+    case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4:
+        proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+                            "C-type: 13 - IPv4 P2MP LSP TUNNEL");
+        proto_tree_add_item(rsvp_object_tree,
+                            hf_rsvp_filter[RSVPF_SESSION_IP],
+                            tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+        proto_tree_add_item(rsvp_object_tree,
+                            hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
+                            tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+        proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+                            "Extended Tunnel: %s",
+                            tvb_ip_to_str(tvb, offset2+8));
+        hidden_item = proto_tree_add_item(rsvp_object_tree,
+                                   hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
+                                   tvb, offset2+8, 4, ENC_BIG_ENDIAN);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+        /*
+         * Save this information to build the conversation request key
+         * later.
+         */
+        rsvph->session_type = RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4;
+        TVB_SET_ADDRESS(&rsvph->destination, AT_IPv4, tvb, offset2, 4);
+        rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+        rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+
+        break;
+
     case RSVP_SESSION_TYPE_IPV4_E_NNI:
         proto_tree_add_uint_format_value(rsvp_object_tree, hf_rsvp_ctype, tvb, offset+3, 1,
                             type, "15 - IPv4 E-NNI");
@@ -2642,7 +2689,7 @@ dissect_rsvp_hop(proto_item *ti, proto_tree *rsvp_object_tree,
     case 2:
         proto_tree_add_uint_format_value(rsvp_object_tree, hf_rsvp_ctype, tvb, offset+3, 1,
                             type, "2 - IPv6");
-        proto_tree_add_item(rsvp_object_tree, hf_rsvp_hop_neighbor_address_ipv6, tvb, offset2, 16, ENC_BIG_ENDIAN);
+        proto_tree_add_item(rsvp_object_tree, hf_rsvp_hop_neighbor_address_ipv6, tvb, offset2, 16, ENC_NA);
         proto_tree_add_item(rsvp_object_tree, hf_rsvp_hop_logical_interface, tvb, offset2+16, 4, ENC_BIG_ENDIAN);
         break;
 
@@ -6056,7 +6103,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                     proto_tree_add_item(rsvp_object_tree, hf_rsvp_3gpp_obj_ue_ipv4_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
                     offset+=4;
                 }else{
-                    proto_tree_add_item(rsvp_object_tree, hf_rsvp_3gpp_obj_ue_ipv6_addr, tvb, offset, 16, ENC_BIG_ENDIAN);
+                    proto_tree_add_item(rsvp_object_tree, hf_rsvp_3gpp_obj_ue_ipv6_addr, tvb, offset, 16, ENC_NA);
                     offset+=16;
                 }
                 /* D Reserved NS SR_ID Reserved P TFT Operation Code Number of Packet filters */
@@ -6145,7 +6192,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                             pf_cont_len-=11;
                             break;
                         case 32: /* IPv6 Source Address with Prefix Length */
-                            proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_src_ipv6, tvb, offset, 16, ENC_BIG_ENDIAN);
+                            proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_src_ipv6, tvb, offset, 16, ENC_NA);
                             offset+=16;
                             proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
                             offset++;
@@ -6153,7 +6200,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                             pf_cont_len-=20;
                             break;
                         case 33: /* IPv6 Destination Address with Prefix Length */
-                            proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_dst_ipv6, tvb, offset, 16, ENC_BIG_ENDIAN);
+                            proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_dst_ipv6, tvb, offset, 16, ENC_NA);
                             offset+=16;
                             proto_tree_add_item(flow_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
                             offset++;
@@ -6211,7 +6258,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                         case 129: /* Type 2 Routing Header with Prefix Length */
                             ti = proto_tree_add_text(flow_tree, tvb, offset, 17, "Type 2 Routing Header packet filter");
                             t2_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_T2]);
-                            proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_BIG_ENDIAN);
+                            proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_NA);
                             offset+=16;
                             proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
                             offset++;
@@ -6221,7 +6268,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                         case 130: /* Home Address Option with Prefix Length */
                             ti = proto_tree_add_text(flow_tree, tvb, offset, 17, "Home address Option packet filter");
                             t2_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_HO]);
-                            proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_BIG_ENDIAN);
+                            proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6, tvb, offset, 16, ENC_NA);
                             offset+=16;
                             proto_tree_add_item(t2_tree, hf_rsvp_3gpp_obj_pf_ipv6_prefix_length, tvb, offset, 1, ENC_BIG_ENDIAN);
                             offset++;
@@ -6285,7 +6332,7 @@ dissect_rsvp_3gpp_object(proto_tree *ti _U_, proto_tree *rsvp_object_tree,
                             tft_qos_list_len--;
 
                             /* R_QoS_SUB_BLOB X.S0011-004-D */
-                            ti = proto_tree_add_item(qos_tree, hf_rsvp_3gpp_r_qos_blob, tvb, offset, blob_len, ENC_BIG_ENDIAN);
+                            ti = proto_tree_add_item(qos_tree, hf_rsvp_3gpp_r_qos_blob, tvb, offset, blob_len, ENC_NA);
                             qos_sub_blob_tree = proto_item_add_subtree(ti, ett_treelist[TT_3GPP_OBJ_QOS_SUB_BLOB]);
 
                             proto_tree_add_item(qos_sub_blob_tree, hf_rsvp_3gpp_r_qos_blob_flow_pri, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -9033,7 +9080,7 @@ proto_register_rsvp(void)
       { &hf_rsvp_tspec_multiplier, { "Multiplier (MT)", "rsvp.tspec.multiplier", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_tspec_transparency, { "Transparency (T)", "rsvp.tspec.transparency", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_tspec_profile, { "Profile (P)", "rsvp.tspec.profile", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
-      { &hf_rsvp_tspec_signal_type_g709, { "Signal Type", "rsvp.tspec.signal_type", FT_UINT8, BASE_DECVALS(gmpls_g709_signal_type_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_tspec_signal_type_g709, { "Signal Type", "rsvp.tspec.signal_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_g709_signal_type_rvals), 0x0, NULL, HFILL }},
       { &hf_rsvp_tspec_number_of_multiplexed_components, { "Number of Multiplexed Components (NMC)", "rsvp.number_of_multiplexed_components", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_tspec_mtu, { "MTU", "rsvp.tspec.mtu", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_tspec_data, { "Data", "rsvp.tspec.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
@@ -9051,7 +9098,7 @@ proto_register_rsvp(void)
       { &hf_rsvp_flowspec_multiplier, { "Multiplier (MT)", "rsvp.flowspec.multiplier", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_flowspec_transparency, { "Transparency (T)", "rsvp.flowspec.transparency", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_flowspec_profile, { "Profile (P)", "rsvp.flowspec.profile", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
-      { &hf_rsvp_flowspec_signal_type_g709, { "Signal Type", "rsvp.flowspec.signal_type", FT_UINT8, BASE_DECVALS(gmpls_g709_signal_type_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_flowspec_signal_type_g709, { "Signal Type", "rsvp.flowspec.signal_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_g709_signal_type_rvals), 0x0, NULL, HFILL }},
       { &hf_rsvp_flowspec_number_of_multiplexed_components, { "Number of Multiplexed Components (NMC)", "rsvp.flowspec.number_of_multiplexed_components", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_flowspec_mtu, { "MTU", "rsvp.flowspec.mtu", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_adspec_message_format_version, { "Message format version", "rsvp.adspec.message_format_version", FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }},
@@ -9066,9 +9113,9 @@ proto_register_rsvp(void)
       { &hf_rsvp_label_request_min_vci, { "Min VCI", "rsvp.label_request.min_vci", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_label_request_max_vpi, { "Max VPI", "rsvp.label_request.max_vpi", FT_UINT16, BASE_DEC, NULL, 0x7f, NULL, HFILL }},
       { &hf_rsvp_label_request_max_vci, { "Max VCI", "rsvp.label_request.max_vci", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
-      { &hf_rsvp_label_request_lsp_encoding_type, { "LSP Encoding Type", "rsvp.label_request.lsp_encoding_type", FT_UINT8, BASE_DECVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
-      { &hf_rsvp_label_request_switching_type, { "Switching Type", "rsvp.label_request.switching_type", FT_UINT8, BASE_DECVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
-      { &hf_rsvp_g_pid, { "G-PID", "rsvp.label_request.g_pid", FT_UINT16, BASE_HEXVALS(gmpls_gpid_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_label_request_lsp_encoding_type, { "LSP Encoding Type", "rsvp.label_request.lsp_encoding_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_label_request_switching_type, { "Switching Type", "rsvp.label_request.switching_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_g_pid, { "G-PID", "rsvp.label_request.g_pid", FT_UINT16, BASE_HEX|BASE_RANGE_STRING, RVALS(gmpls_gpid_rvals), 0x0, NULL, HFILL }},
       { &hf_rsvp_label_request_data, { "Data", "rsvp.label_request.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_label_label, { "Label", "rsvp.label.label", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_label_generalized_label, { "Generalized Label", "rsvp.label.generalized_label", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }},
@@ -9130,8 +9177,8 @@ proto_register_rsvp(void)
       { &hf_rsvp_lsp_tunnel_if_id_length, { "Length", "rsvp.lsp_tunnel_if_id.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_lsp_tunnel_if_id_component_link_identifier, { "Component link identifier", "rsvp.lsp_tunnel_if_id.component_link_identifier", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_lsp_tunnel_if_id_component_link_identifier_ipv4, { "Component link identifier", "rsvp.lsp_tunnel_if_id.component_link_identifier_ipv4", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
-      { &hf_rsvp_lsp_tunnel_if_id_lsp_encoding_type, { "LSP Encoding Type", "rsvp.lsp_tunnel_if_id.lsp_encoding_type", FT_UINT8, BASE_DECVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
-      { &hf_rsvp_lsp_tunnel_if_id_switching_type, { "Switching Type", "rsvp.lsp_tunnel_if_id.switching_type", FT_UINT8, BASE_DECVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_lsp_tunnel_if_id_lsp_encoding_type, { "LSP Encoding Type", "rsvp.lsp_tunnel_if_id.lsp_encoding_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
+      { &hf_rsvp_lsp_tunnel_if_id_switching_type, { "Switching Type", "rsvp.lsp_tunnel_if_id.switching_type", FT_UINT8, BASE_DEC|BASE_RANGE_STRING, RVALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
       { &hf_rsvp_lsp_tunnel_if_id_signal_type, { "Signal Type", "rsvp.lsp_tunnel_if_id.signal_type", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &gmpls_sonet_signal_type_str_ext, 0x0, NULL, HFILL }},
       { &hf_rsvp_lsp_tunnel_if_id_connection_id, { "Sub Interface/Connection ID", "rsvp.lsp_tunnel_if_id.connection_id", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }},
       { &hf_rsvp_lsp_tunnel_if_id_sc_pc_id, { "SC PC ID", "rsvp.lsp_tunnel_if_id.sc_pc_id", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
index 77cbdaf18a2fbb9cfab613bbea8fe8d54e86534a..d1ffd97472dd9405a99fef8ce3184c816af3852e 100644 (file)
@@ -828,6 +828,9 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
                        /* ROS won't do this for us */
                        session->ros_op = (ROS_OP_INVOKE | ROS_OP_ARGUMENT);
                        /*offset=*/dissect_ber_external_type(FALSE, tree, next_tvb, 0, &asn1_ctx, -1, call_rtse_external_type_callback);
+                       top_tree = NULL;
+                       /* Return other than 0 to indicate that we handled this packet */
+                       return 1;
                } else {
                        offset = tvb_length (tvb);
                }
@@ -1004,7 +1007,7 @@ void proto_register_rtse(void) {
         NULL, HFILL }},
 
 /*--- End of included file: packet-rtse-hfarr.c ---*/
-#line 351 "../../asn1/rtse/packet-rtse-template.c"
+#line 354 "../../asn1/rtse/packet-rtse-template.c"
   };
 
   /* List of subtrees */
@@ -1026,7 +1029,7 @@ void proto_register_rtse(void) {
     &ett_rtse_CallingSSuserReference,
 
 /*--- End of included file: packet-rtse-ettarr.c ---*/
-#line 360 "../../asn1/rtse/packet-rtse-template.c"
+#line 363 "../../asn1/rtse/packet-rtse-template.c"
   };
 
   static ei_register_info ei[] = {
index 6f0ded91a77e071d10d4366496e3cc3f7d865d48..bb0b765c65da90cefca512f10c9cf11a3985253d 100644 (file)
@@ -1795,7 +1795,7 @@ dissect_sabp_cb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                if (unpacked_tvb != NULL){
                        if (tree != NULL){
                                proto_tree *cbs_page_subtree = proto_item_add_subtree(cbs_page_item, ett_sabp_cbs_page_content);
-                               proto_tree_add_string(cbs_page_subtree, hf_sabp_cbs_page_content, unpacked_tvb, 0, len, tvb_get_string(wmem_packet_scope(), unpacked_tvb, 0, len));
+                               proto_tree_add_item(cbs_page_subtree, hf_sabp_cbs_page_content, unpacked_tvb, 0, len, ENC_UTF_8|ENC_NA);
                        }
                }
 
index 944902342cf72b90dc56e726bdafbbd650ebd8b2..3d7296da8d6bb42ac183c4bcf52ab3d6c6ec7e45 100644 (file)
@@ -32,7 +32,7 @@
 #include <epan/tap.h>
 #include <epan/stats_tree.h>
 
-#define DEFAULT_SAMETIME_PORT  1533
+#define DEFAULT_SAMETIME_PORT 1533
 
 void proto_register_sametime(void);
 void proto_reg_handoff_sametime(void);
@@ -103,837 +103,852 @@ static int st_node_send_type = -1;
 static int st_node_user_status = -1;
 
 typedef struct SametimeTap {
-        gint message_type;
-        gint send_type;
-        gint user_status;
+   gint message_type;
+   gint send_type;
+   gint user_status;
 } SametimeTap;
 
-#define SAMETIME_MESSAGETYPE_HEARTBEAT         0x80
-#define SAMETIME_MESSAGETYPE_HANDSHAKE         0x0000
+#define SAMETIME_MESSAGETYPE_HEARTBEAT        0x80
+#define SAMETIME_MESSAGETYPE_HANDSHAKE        0x0000
 
-#define SAMETIME_MESSAGETYPE_HANDSHAKE_ACK     0x8000
-#define SAMETIME_MESSAGETYPE_HANDSHAKE_SYN     0x0025
-#define SAMETIME_MESSAGETYPE_LOGIN             0x0001
-#define SAMETIME_MESSAGETYPE_LOGIN_ACK         0x8001
-#define SAMETIME_MESSAGETYPE_LOGIN_REDIRECT    0x0018
-#define SAMETIME_MESSAGETYPE_LOGIN_CONTINUE    0x0016
+#define SAMETIME_MESSAGETYPE_HANDSHAKE_ACK    0x8000
+#define SAMETIME_MESSAGETYPE_HANDSHAKE_SYN    0x0025
+#define SAMETIME_MESSAGETYPE_LOGIN            0x0001
+#define SAMETIME_MESSAGETYPE_LOGIN_ACK        0x8001
+#define SAMETIME_MESSAGETYPE_LOGIN_REDIRECT   0x0018
+#define SAMETIME_MESSAGETYPE_LOGIN_CONTINUE   0x0016
 
-#define SAMETIME_MESSAGETYPE_CHANNEL_CREATE    0x0002
-#define SAMETIME_MESSAGETYPE_CHANNEL_DESTROY   0x0003
-#define SAMETIME_MESSAGETYPE_CHANNEL_SEND      0x0004
-#define SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT    0x0006
+#define SAMETIME_MESSAGETYPE_CHANNEL_CREATE   0x0002
+#define SAMETIME_MESSAGETYPE_CHANNEL_DESTROY  0x0003
+#define SAMETIME_MESSAGETYPE_CHANNEL_SEND     0x0004
+#define SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT   0x0006
 
-#define SAMETIME_MESSAGETYPE_SET_USER_STATUS   0x0009
-#define SAMETIME_MESSAGETYPE_SET_PRIVACY_LIST  0x000b
-#define SAMETIME_MESSAGETYPE_SENSE_SERVICE     0x0011
-#define SAMETIME_MESSAGETYPE_ADMIN             0x0019
-#define SAMETIME_MESSAGETYPE_ANNOUNCE          0x0022
+#define SAMETIME_MESSAGETYPE_SET_USER_STATUS  0x0009
+#define SAMETIME_MESSAGETYPE_SET_PRIVACY_LIST 0x000b
+#define SAMETIME_MESSAGETYPE_SENSE_SERVICE    0x0011
+#define SAMETIME_MESSAGETYPE_ADMIN            0x0019
+#define SAMETIME_MESSAGETYPE_ANNOUNCE         0x0022
 
 
 static const value_string messagetypenames[] = {
-       {  SAMETIME_MESSAGETYPE_HEARTBEAT,              "HEARTBEAT" },
-
-       {  SAMETIME_MESSAGETYPE_HANDSHAKE,              "HANDSHAKE" },
-       {  SAMETIME_MESSAGETYPE_HANDSHAKE_SYN,          "HANDSHAKE_SYN" },
-       {  SAMETIME_MESSAGETYPE_HANDSHAKE_ACK,          "HANDSHAKE_ACK" },
-       {  SAMETIME_MESSAGETYPE_LOGIN,                  "LOGIN" },
-       {  SAMETIME_MESSAGETYPE_LOGIN_ACK,              "LOGIN_ACK" },
-       {  SAMETIME_MESSAGETYPE_LOGIN_REDIRECT,         "LOGIN_REDIRECT" },
-       {  SAMETIME_MESSAGETYPE_LOGIN_CONTINUE,         "LOGIN_CONTINUE" },
-
-       {  SAMETIME_MESSAGETYPE_CHANNEL_CREATE,         "CHANNEL_CREATE" },
-       {  SAMETIME_MESSAGETYPE_CHANNEL_DESTROY,        "CHANNEL_DESTROY" },
-       {  SAMETIME_MESSAGETYPE_CHANNEL_SEND,           "CHANNEL_SEND" },
-       {  SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT,         "CHANNEL_ACCEPT" },
-
-       {  SAMETIME_MESSAGETYPE_SET_USER_STATUS,        "SET_USER_STATUS" },
-       {  SAMETIME_MESSAGETYPE_SET_PRIVACY_LIST,       "SET_PRIVACY_LIST" },
-       {  SAMETIME_MESSAGETYPE_SENSE_SERVICE,          "SENSE_SERVICE" },
-       {  SAMETIME_MESSAGETYPE_ADMIN,                  "ADMIN" },
-       {  SAMETIME_MESSAGETYPE_ANNOUNCE,               "ANNOUNCE" },
-
-       { 0, NULL }
+   {  SAMETIME_MESSAGETYPE_HEARTBEAT,        "HEARTBEAT" },
+
+   {  SAMETIME_MESSAGETYPE_HANDSHAKE,        "HANDSHAKE" },
+   {  SAMETIME_MESSAGETYPE_HANDSHAKE_SYN,    "HANDSHAKE_SYN" },
+   {  SAMETIME_MESSAGETYPE_HANDSHAKE_ACK,    "HANDSHAKE_ACK" },
+   {  SAMETIME_MESSAGETYPE_LOGIN,            "LOGIN" },
+   {  SAMETIME_MESSAGETYPE_LOGIN_ACK,        "LOGIN_ACK" },
+   {  SAMETIME_MESSAGETYPE_LOGIN_REDIRECT,   "LOGIN_REDIRECT" },
+   {  SAMETIME_MESSAGETYPE_LOGIN_CONTINUE,   "LOGIN_CONTINUE" },
+
+   {  SAMETIME_MESSAGETYPE_CHANNEL_CREATE,   "CHANNEL_CREATE" },
+   {  SAMETIME_MESSAGETYPE_CHANNEL_DESTROY,  "CHANNEL_DESTROY" },
+   {  SAMETIME_MESSAGETYPE_CHANNEL_SEND,     "CHANNEL_SEND" },
+   {  SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT,   "CHANNEL_ACCEPT" },
+
+   {  SAMETIME_MESSAGETYPE_SET_USER_STATUS,  "SET_USER_STATUS" },
+   {  SAMETIME_MESSAGETYPE_SET_PRIVACY_LIST, "SET_PRIVACY_LIST" },
+   {  SAMETIME_MESSAGETYPE_SENSE_SERVICE,    "SENSE_SERVICE" },
+   {  SAMETIME_MESSAGETYPE_ADMIN,            "ADMIN" },
+   {  SAMETIME_MESSAGETYPE_ANNOUNCE,         "ANNOUNCE" },
+
+   { 0, NULL }
 };
 
-#define SAMETIME_MESSAGEOPTION_ENCRYPT         0x4000
-#define SAMETIME_MESSAGEOPTION_HAS_ATTRIBS     0x8000
+#define SAMETIME_MESSAGEOPTION_ENCRYPT     0x4000
+#define SAMETIME_MESSAGEOPTION_HAS_ATTRIBS 0x8000
 
 static const value_string optionnames[] = {
-       {  0x0,                                 "" },
-       {  SAMETIME_MESSAGEOPTION_ENCRYPT,      "ENCRYPT" },
-       {  SAMETIME_MESSAGEOPTION_HAS_ATTRIBS,  "HAS_ATTRIBS" },
+   {  0x0,                                "" },
+   {  SAMETIME_MESSAGEOPTION_ENCRYPT,     "ENCRYPT" },
+   {  SAMETIME_MESSAGEOPTION_HAS_ATTRIBS, "HAS_ATTRIBS" },
 
-       { 0, NULL }
+   { 0, NULL }
 };
 
 static const value_string userstatusnames[] = {
-       { 0x0020, "ACTIVE" },   /* "I am available" */
-       { 0x0040, "IDLE" },     /* never seen in the wild, maybe non-pc :-) ? */
-       { 0x0060, "AWAY" },     /* "I am away from my computer now" */
-       { 0x0080, "BUSY" },     /* "Please do not disturb me" */
-       { 0x0008, "MEETING" },  /* "I am in a meeting" */
+   { 0x0020, "ACTIVE" },  /* "I am available" */
+   { 0x0040, "IDLE" },    /* never seen in the wild, maybe non-pc :-) ? */
+   { 0x0060, "AWAY" },    /* "I am away from my computer now" */
+   { 0x0080, "BUSY" },    /* "Please do not disturb me" */
+   { 0x0008, "MEETING" }, /* "I am in a meeting" */
 
-       { 0, NULL }
+   { 0, NULL }
 };
 
-#define SAMETIME_SENDTYPE_AWARE_ADD            0x0068
-#define SAMETIME_SENDTYPE_OPT_DO_SET           0x00c9
-#define SAMETIME_SENDTYPE_AWARE_SNAPSHOT       0x01f4
-#define SAMETIME_SENDTYPE_AWARE_UPDATE         0x01f5
-#define SAMETIME_SENDTYPE_OPT_GOT_SET          0x0259
+#define SAMETIME_SENDTYPE_AWARE_ADD      0x0068
+#define SAMETIME_SENDTYPE_OPT_DO_SET     0x00c9
+#define SAMETIME_SENDTYPE_AWARE_SNAPSHOT 0x01f4
+#define SAMETIME_SENDTYPE_AWARE_UPDATE   0x01f5
+#define SAMETIME_SENDTYPE_OPT_GOT_SET    0x0259
 
 static const value_string sendtypenames[] = {
-       { SAMETIME_SENDTYPE_AWARE_ADD,          "AWARE_ADD" },
-       { 0x0069,                               "AWARE_REMOVE" },
-       { SAMETIME_SENDTYPE_OPT_DO_SET,         "OPT_DO_SET" },
-       { 0x00cb,                               "OPT_WATCH" },
-       { SAMETIME_SENDTYPE_AWARE_SNAPSHOT,     "AWARE_SNAPSHOT" },
-       { SAMETIME_SENDTYPE_AWARE_UPDATE,       "AWARE_UPDATE" },
-       { SAMETIME_SENDTYPE_OPT_GOT_SET,        "OPT_GOT_SET" },
-       { 0x025a,                               "?" },
-       { 0x025d,                               "OPT_DID_SET" },
-
-       { 0, NULL }
+   { SAMETIME_SENDTYPE_AWARE_ADD,      "AWARE_ADD" },
+   { 0x0069,                           "AWARE_REMOVE" },
+   { SAMETIME_SENDTYPE_OPT_DO_SET,     "OPT_DO_SET" },
+   { 0x00cb,                           "OPT_WATCH" },
+   { SAMETIME_SENDTYPE_AWARE_SNAPSHOT, "AWARE_SNAPSHOT" },
+   { SAMETIME_SENDTYPE_AWARE_UPDATE,   "AWARE_UPDATE" },
+   { SAMETIME_SENDTYPE_OPT_GOT_SET,    "OPT_GOT_SET" },
+   { 0x025a,                           "?" },
+   { 0x025d,                           "OPT_DID_SET" },
+
+   { 0, NULL }
 };
 
 static const value_string awarenessnames[] = {
-       { 0x0002, "USER" },
-       { 0x0003, "GROUP" },
-       { 0x0008, "SERVER" },
-       { 0, NULL }
+   { 0x0002, "USER" },
+   { 0x0003, "GROUP" },
+   { 0x0008, "SERVER" },
+   { 0, NULL }
 };
 
 static const value_string codenames[] = {
-       { 0x00000011, "SERVICE_AWARE" },
-       { 0x00000015, "SERVICE_RESOLVE" },
-       { 0x00000018, "SERVICE_STORAGE" },
-       { 0x0000001a, "SERVICE_DIRECTORY" },
+   { 0x00000011, "SERVICE_AWARE" },
+   { 0x00000015, "SERVICE_RESOLVE" },
+   { 0x00000018, "SERVICE_STORAGE" },
+   { 0x0000001a, "SERVICE_DIRECTORY" },
 
-       { 0x80000011, "ERR_USER_SKETCHY" },
-       { 0x80000015, "ERR_TOKEN_INVALID" },
-       { 0x80000018, "ERR_PORT_IN_USE" },
-       { 0x80000022, "ERR_CHANNEL_DESTROYED" },
+   { 0x80000011, "ERR_USER_SKETCHY" },
+   { 0x80000015, "ERR_TOKEN_INVALID" },
+   { 0x80000018, "ERR_PORT_IN_USE" },
+   { 0x80000022, "ERR_CHANNEL_DESTROYED" },
 
-       { 0, NULL }
+   { 0, NULL }
 };
 
 
 static int
 add_text_item(tvbuff_t *tvb, proto_tree *tree, int offset, int hf)
 {
-       guint16 length;
+   guint16 length;
 
-       /* heuristic rule, string should start w/ valid character(s) */
-       if (! tvb_get_guint8(tvb, offset + 2))
-               return 0;
+   /* heuristic rule, string should start w/ valid character(s) */
+   if (! tvb_get_guint8(tvb, offset + 2))
+      return 0;
 
-       length = tvb_get_ntohs(tvb, offset);
-       if (length)     {
-               /* the string length must not exceed the packet length */
-               if (length > tvb_reported_length_remaining(tvb, offset + 2))
-                       return 0;
+   length = tvb_get_ntohs(tvb, offset);
+   if (length)        {
+      /* the string length must not exceed the packet length */
+      if (length > tvb_reported_length_remaining(tvb, offset + 2))
+         return 0;
 
-               /* add string length only if preferences is set */
-               if (global_sametime_show_length)
-                       proto_tree_add_item(tree, hf_sametime_field_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+      /* add string length only if preferences is set */
+      if (global_sametime_show_length)
+         proto_tree_add_item(tree, hf_sametime_field_length, tvb, offset, 2, ENC_BIG_ENDIAN);
 
-               /* add string */
-               proto_tree_add_string(tree, hf, tvb, offset + 2, length, tvb_get_string(wmem_packet_scope(), tvb, offset + 2, length));
-       }
+      /* add string */
+      proto_tree_add_string(tree, hf, tvb, offset + 2, length,
+            tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, length, ENC_ASCII|ENC_NA));
+   }
 
-       return 2 + length;
+   return 2 + length;
 }
 
 
 static guint16
 dissect_set_user_status(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       guint16 user_status;
+   guint16 user_status;
 
-       user_status = tvb_get_ntohs(tvb, offset);
-       proto_item_append_text(tree, ", %s", val_to_str(user_status, userstatusnames, "0x%04x"));
-       proto_tree_add_item(tree, hf_sametime_user_status, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       proto_tree_add_item(tree, hf_sametime_time, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   user_status = tvb_get_ntohs(tvb, offset);
+   proto_item_append_text(tree, ", %s", val_to_str(user_status, userstatusnames, "0x%04x"));
+   proto_tree_add_item(tree, hf_sametime_user_status, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   proto_tree_add_item(tree, hf_sametime_time, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 
-       return user_status;
+   return user_status;
 }
 
 
 static int
 dissect_handshake(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       proto_tree_add_item(tree, hf_sametime_handshake_major, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       proto_tree_add_item(tree, hf_sametime_handshake_minor, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       offset += 4;
-       proto_tree_add_item(tree, hf_sametime_handshake_srvrcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       proto_tree_add_item(tree, hf_sametime_login_type, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       offset += 6;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       offset += 8;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-       return offset;
+   proto_tree_add_item(tree, hf_sametime_handshake_major, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   proto_tree_add_item(tree, hf_sametime_handshake_minor, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   offset += 4;
+   proto_tree_add_item(tree, hf_sametime_handshake_srvrcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   proto_tree_add_item(tree, hf_sametime_login_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   offset += 6;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 8;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+   return offset;
 }
 
 
 static void
 dissect_handshake_ack(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       proto_tree_add_item(tree, hf_sametime_handshake_major, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       proto_tree_add_item(tree, hf_sametime_handshake_minor, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       offset += 4;
-       offset += 4;
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   proto_tree_add_item(tree, hf_sametime_handshake_major, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   proto_tree_add_item(tree, hf_sametime_handshake_minor, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   offset += 4;
+   offset += 4;
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 }
 
 
 static void
 dissect_login(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       offset += 2;
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 2;
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 }
 
 
 static void
 dissect_login_redirect(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       offset += 2;
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 2;
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 }
 
 
 static void
 dissect_login_ack(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       proto_tree_add_item(tree, hf_sametime_login_type, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       offset += 3;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       offset += 21;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   proto_tree_add_item(tree, hf_sametime_login_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 3;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   proto_tree_add_item(tree, hf_sametime_handshake_loclcalc_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 21;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 }
 
 
 static void
 dissect_channel_create(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       offset += 4;
-       proto_tree_add_item(tree, hf_sametime_channel_id, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-       proto_tree_add_item(tree, hf_sametime_channel_service, tvb, offset, 4, ENC_BIG_ENDIAN);
-       offset += 4;
-       offset += 8;
-       add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   offset += 4;
+   proto_tree_add_item(tree, hf_sametime_channel_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+   proto_tree_add_item(tree, hf_sametime_channel_service, tvb, offset, 4, ENC_BIG_ENDIAN);
+   offset += 4;
+   offset += 8;
+   add_text_item(tvb, tree, offset, hf_sametime_field_text);
 }
 
 
 static guint16
 dissect_channel_send(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       guint16 send_type, awareness;
-       guint na;
-
-       send_type = tvb_get_ntohs(tvb, offset);
-       proto_item_append_text(tree, ", %s", val_to_str(send_type, sendtypenames, "0x%04x"));
-       proto_tree_add_item(tree, hf_sametime_channel_send_type, tvb, offset, 2, ENC_BIG_ENDIAN);
-       offset += 2;
-
-       switch (send_type)      {
-       case SAMETIME_SENDTYPE_AWARE_ADD:
-               offset += 8;
-               awareness = tvb_get_ntohs(tvb, offset);
-               proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
-               proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-               add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-               break;
-
-       case SAMETIME_SENDTYPE_OPT_DO_SET:
-               offset += 20;
-               na = tvb_get_ntohl(tvb, offset);
-               offset += 4;
-               if (na == 0x33) {
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_country);
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_postalcode);
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_province);
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_city);
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_phone);
-                       offset += 1;
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_location_name);
-                       add_text_item(tvb, tree, offset, hf_sametime_location_timezone);
-               } else  {
-                       add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               }
-
-               break;
-
-       case SAMETIME_SENDTYPE_OPT_GOT_SET:
-               offset += 8;
-               awareness = tvb_get_ntohs(tvb, offset);
-               proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
-               proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-               while (tvb_reported_length_remaining(tvb, offset) > 2)  {
-                       int n = add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       offset += (n) ? n : 1;
-               }
-
-               break;
-
-       case SAMETIME_SENDTYPE_AWARE_SNAPSHOT:
-               offset += 12;
-               awareness = tvb_get_ntohs(tvb, offset);
-               proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
-               proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-               add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-               break;
-
-       case SAMETIME_SENDTYPE_AWARE_UPDATE:
-               offset += 4;
-               offset += 4;
-               awareness = tvb_get_ntohs(tvb, offset);
-               proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
-               proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-               offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               offset += 4;
-               if (tvb_get_guint8(tvb, offset))        {
-                       offset += 1;
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       dissect_set_user_status(tvb, tree, offset);
-               }
-
-               break;
-
-       case 0x0000:
-               offset += 14;
-               add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-               break;
-
-       case 0x0002:
-               offset += 8;
-               offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               offset += 3;
-               add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-               break;
-
-       case 0x0005:    /* XML */
-               if (26 <= tvb_reported_length_remaining(tvb, offset + 2))       {
-                       offset += 26;
-                       add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               }
-
-               break;
-
-       case 0x0007:
-               offset += 8;
-               if (4 <= tvb_reported_length_remaining(tvb, offset + 2))        {
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       offset += 3;
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               }
-
-               break;
-
-       case 0x025a:
-               offset += 10;
-               add_text_item(tvb, tree, offset, hf_sametime_field_text);
-
-               break;
-
-       default:
-               break;
-       }
-
-       return send_type;
+   guint16 send_type, awareness;
+   guint na;
+
+   send_type = tvb_get_ntohs(tvb, offset);
+   proto_item_append_text(tree, ", %s", val_to_str(send_type, sendtypenames, "0x%04x"));
+   proto_tree_add_item(tree, hf_sametime_channel_send_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+   offset += 2;
+
+   switch (send_type)        {
+      case SAMETIME_SENDTYPE_AWARE_ADD:
+         offset += 8;
+         awareness = tvb_get_ntohs(tvb, offset);
+         proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
+         proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
+         offset += 2;
+         add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+         break;
+
+      case SAMETIME_SENDTYPE_OPT_DO_SET:
+         offset += 20;
+         na = tvb_get_ntohl(tvb, offset);
+         offset += 4;
+         if (na == 0x33)        {
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_country);
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_postalcode);
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_province);
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_city);
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_phone);
+            offset += 1;
+            offset += add_text_item(tvb, tree, offset, hf_sametime_location_name);
+            add_text_item(tvb, tree, offset, hf_sametime_location_timezone);
+         } else        {
+            add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         }
+
+         break;
+
+      case SAMETIME_SENDTYPE_OPT_GOT_SET:
+         offset += 8;
+         awareness = tvb_get_ntohs(tvb, offset);
+         proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
+         proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
+         offset += 2;
+         while (tvb_reported_length_remaining(tvb, offset) > 2)        {
+            int n = add_text_item(tvb, tree, offset, hf_sametime_field_text);
+            offset += (n) ? n : 1;
+         }
+
+         break;
+
+      case SAMETIME_SENDTYPE_AWARE_SNAPSHOT:
+         offset += 12;
+         awareness = tvb_get_ntohs(tvb, offset);
+         proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
+         proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
+         offset += 2;
+         add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+         break;
+
+      case SAMETIME_SENDTYPE_AWARE_UPDATE:
+         offset += 4;
+         offset += 4;
+         awareness = tvb_get_ntohs(tvb, offset);
+         proto_item_append_text(tree, ", %s", val_to_str(awareness, awarenessnames, "0x%04x"));
+         proto_tree_add_item(tree, hf_sametime_channel_awareness, tvb, offset, 2, ENC_BIG_ENDIAN);
+         offset += 2;
+         offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         offset += 4;
+         if (tvb_get_guint8(tvb, offset))        {
+            offset += 1;
+            offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+            dissect_set_user_status(tvb, tree, offset);
+         }
+
+         break;
+
+      case 0x0000:
+         offset += 14;
+         add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+         break;
+
+      case 0x0002:
+         offset += 8;
+         offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         offset += 3;
+         add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+         break;
+
+      case 0x0005:        /* XML */
+         if (26 <= tvb_reported_length_remaining(tvb, offset + 2))        {
+            offset += 26;
+            add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         }
+
+         break;
+
+      case 0x0007:
+         offset += 8;
+         if (4 <= tvb_reported_length_remaining(tvb, offset + 2))        {
+            offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+            offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+            offset += 3;
+            offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+            add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         }
+
+         break;
+
+      case 0x025a:
+         offset += 10;
+         add_text_item(tvb, tree, offset, hf_sametime_field_text);
+
+         break;
+
+      default:
+         break;
+   }
+
+   return send_type;
 }
 
 
 static void
 dissect_channel_accept(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       offset += 34;
-       if (tvb_reported_length_remaining(tvb, offset + 2))     {
-               offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-               if (tvb_get_guint8(tvb, offset))        {
-                       offset += 1;
-                       offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
-                       dissect_set_user_status(tvb, tree, offset);
-               }
-       }
+   offset += 34;
+   if (tvb_reported_length_remaining(tvb, offset + 2))        {
+      offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+      if (tvb_get_guint8(tvb, offset))        {
+         offset += 1;
+         offset += add_text_item(tvb, tree, offset, hf_sametime_field_text);
+         dissect_set_user_status(tvb, tree, offset);
+      }
+   }
 }
 
 
 static void
 dissect_sense_service(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-       guint32 code;
+   guint32 code;
 
-       code = tvb_get_ntohl(tvb, offset);
-       proto_item_append_text(tree, ", %s", val_to_str(code, codenames, "0x%04x"));
-       proto_tree_add_item(tree, hf_sametime_code, tvb, offset, 4, ENC_BIG_ENDIAN);
+   code = tvb_get_ntohl(tvb, offset);
+   proto_item_append_text(tree, ", %s", val_to_str(code, codenames, "0x%04x"));
+   proto_tree_add_item(tree, hf_sametime_code, tvb, offset, 4, ENC_BIG_ENDIAN);
 }
 
 
 /*
-       here we really dissect the message(s)
+        here we really dissect the message(s)
 */
 static int
 dissect_sametime_content(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
 {
-       proto_tree *sametime_tree;
-       proto_item *ti;
-       static SametimeTap *sinfo;
-       gint message_type;
-       int packet_length, offset = 0;
-
-       /* we expect either 1 heartbeat byte (0x80) or a sametime message */
-       packet_length = tvb_reported_length_remaining(tvb, offset);
-       if (packet_length == 1) {
-               message_type = tvb_get_guint8(tvb, 0);
-
-       } else if (packet_length < 12)  {
-               message_type = -1;
-
-       } else  {
-               message_type = tvb_get_ntohs(tvb, 4);
-       }
-
-       /* add message type */
-       col_append_str(pinfo->cinfo, COL_INFO, val_to_str(message_type, messagetypenames, "0x%04x"));
-       col_append_str(pinfo->cinfo, COL_INFO, " ");
-
-       /* message type statistic */
-       sinfo = wmem_new(wmem_packet_scope(), struct SametimeTap);
-       sinfo->message_type = message_type;
-       sinfo->send_type = -1;
-       sinfo->user_status = -1;
-
-       /* packet detail tree */
-       ti = proto_tree_add_item(tree, proto_sametime, tvb, offset, -1, ENC_NA);
-       sametime_tree = proto_item_add_subtree(ti, ett_sametime);
-       proto_item_append_text(sametime_tree, ", %s", val_to_str(message_type, messagetypenames, "0x%04x"));
-
-       /* dissect message */
-       if (message_type == SAMETIME_MESSAGETYPE_HEARTBEAT)     {
-               proto_tree_add_item(sametime_tree, hf_sametime_heartbeat, tvb, offset, 1, ENC_BIG_ENDIAN);
-
-       } else if (message_type != -1)  {
-               proto_tree *options_tree;
-               proto_item *op;
-
-               /* first 4 bytes gives the length of the sametime message */
-               if (global_sametime_show_length)        {
-                       proto_tree_add_item(sametime_tree, hf_sametime_message_length, tvb, offset, 4, ENC_BIG_ENDIAN);
-               }
-               offset += 4;
-
-               /* next 2 bytes gives the message type */
-               proto_tree_add_item(sametime_tree, hf_sametime_message_type, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-
-               /* next 2 bytes are the message options */
-               op = proto_tree_add_item(sametime_tree, hf_sametime_message_options, tvb, offset, 2, ENC_BIG_ENDIAN);
-               options_tree = proto_item_add_subtree(op, ett_sametime_options);
-               proto_tree_add_item(options_tree, hf_sametime_message_options_attribute, tvb, offset, 2, ENC_BIG_ENDIAN);
-               proto_tree_add_item(options_tree, hf_sametime_message_options_encrypted, tvb, offset, 2, ENC_BIG_ENDIAN);
-               offset += 2;
-
-               /* next 4 bytes contains the channel id */
-               proto_tree_add_item(sametime_tree, hf_sametime_message_channel, tvb, offset, 4, ENC_BIG_ENDIAN);
-               offset += 4;
-
-               switch (message_type)
-               {
-               case SAMETIME_MESSAGETYPE_HANDSHAKE:
-                       dissect_handshake(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_HANDSHAKE_ACK:
-                       dissect_handshake_ack(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_HANDSHAKE_SYN:
-                       break;
-
-               case SAMETIME_MESSAGETYPE_LOGIN:
-                       dissect_login(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_LOGIN_REDIRECT:
-                       dissect_login_redirect(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_LOGIN_ACK:
-                       dissect_login_ack(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_CHANNEL_CREATE:
-                       dissect_channel_create(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_CHANNEL_SEND:
-                       sinfo->send_type = dissect_channel_send(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT:
-                       dissect_channel_accept(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_SET_USER_STATUS:
-                       sinfo->user_status = dissect_set_user_status(tvb, sametime_tree, offset);
-                       break;
-
-               case SAMETIME_MESSAGETYPE_SENSE_SERVICE:
-                       dissect_sense_service(tvb, sametime_tree, offset);
-                       break;
-
-               default:
-                       /* do not fill the statistics with useless data from encrypted packages */
-                       sinfo->message_type = -1;
-                       break;
-               }
-       }
-
-       tap_queue_packet(sametime_tap, pinfo, sinfo);
-       return tvb_length(tvb);
+   proto_tree *sametime_tree;
+   proto_item *ti;
+   static SametimeTap *sinfo;
+   gint message_type;
+   int packet_length, offset = 0;
+
+   /* we expect either 1 heartbeat byte (0x80) or a sametime message */
+   packet_length = tvb_reported_length_remaining(tvb, offset);
+   if (packet_length == 1)        {
+      message_type = tvb_get_guint8(tvb, 0);
+
+   } else if (packet_length < 12)        {
+      message_type = -1;
+
+   } else        {
+      message_type = tvb_get_ntohs(tvb, 4);
+   }
+
+   /* add message type */
+   col_append_str(pinfo->cinfo, COL_INFO, val_to_str(message_type, messagetypenames, "0x%04x"));
+   col_append_str(pinfo->cinfo, COL_INFO, " ");
+
+   /* message type statistic */
+   sinfo = wmem_new(wmem_packet_scope(), struct SametimeTap);
+   sinfo->message_type = message_type;
+   sinfo->send_type = -1;
+   sinfo->user_status = -1;
+
+   /* packet detail tree */
+   ti = proto_tree_add_item(tree, proto_sametime, tvb, offset, -1, ENC_NA);
+   sametime_tree = proto_item_add_subtree(ti, ett_sametime);
+   proto_item_append_text(sametime_tree, ", %s", val_to_str(message_type, messagetypenames, "0x%04x"));
+
+   /* dissect message */
+   if (message_type == SAMETIME_MESSAGETYPE_HEARTBEAT)        {
+      proto_tree_add_item(sametime_tree, hf_sametime_heartbeat, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+   } else if (message_type != -1) {
+      proto_tree *options_tree;
+      proto_item *op;
+
+      /* first 4 bytes gives the length of the sametime message */
+      if (global_sametime_show_length)        {
+         proto_tree_add_item(sametime_tree, hf_sametime_message_length, tvb, offset, 4, ENC_BIG_ENDIAN);
+      }
+      offset += 4;
+
+      /* next 2 bytes gives the message type */
+      proto_tree_add_item(sametime_tree, hf_sametime_message_type, tvb, offset, 2, ENC_BIG_ENDIAN);
+      offset += 2;
+
+      /* next 2 bytes are the message options */
+      op = proto_tree_add_item(sametime_tree, hf_sametime_message_options, tvb, offset, 2, ENC_BIG_ENDIAN);
+      options_tree = proto_item_add_subtree(op, ett_sametime_options);
+      proto_tree_add_item(options_tree, hf_sametime_message_options_attribute, tvb, offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(options_tree, hf_sametime_message_options_encrypted, tvb, offset, 2, ENC_BIG_ENDIAN);
+      offset += 2;
+
+      /* next 4 bytes contains the channel id */
+      proto_tree_add_item(sametime_tree, hf_sametime_message_channel, tvb, offset, 4, ENC_BIG_ENDIAN);
+      offset += 4;
+
+      switch (message_type)
+      {
+         case SAMETIME_MESSAGETYPE_HANDSHAKE:
+            dissect_handshake(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_HANDSHAKE_ACK:
+            dissect_handshake_ack(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_HANDSHAKE_SYN:
+            break;
+
+         case SAMETIME_MESSAGETYPE_LOGIN:
+            dissect_login(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_LOGIN_REDIRECT:
+            dissect_login_redirect(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_LOGIN_ACK:
+            dissect_login_ack(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_CHANNEL_CREATE:
+            dissect_channel_create(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_CHANNEL_SEND:
+            sinfo->send_type = dissect_channel_send(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_CHANNEL_ACCEPT:
+            dissect_channel_accept(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_SET_USER_STATUS:
+            sinfo->user_status = dissect_set_user_status(tvb, sametime_tree, offset);
+            break;
+
+         case SAMETIME_MESSAGETYPE_SENSE_SERVICE:
+            dissect_sense_service(tvb, sametime_tree, offset);
+            break;
+
+         default:
+            /* do not fill the statistics with useless data from encrypted packages */
+            sinfo->message_type = -1;
+            break;
+      }
+   }
+
+   tap_queue_packet(sametime_tap, pinfo, sinfo);
+   return tvb_length(tvb);
 }
 
 
 /*
-       tick statistics
+        tick statistics
 */
 static int
 sametime_stats_tree_packet(stats_tree* st, packet_info* pinfo _U_, epan_dissect_t* edt _U_, const void* p)
 {
-        const struct SametimeTap *pi = (const struct SametimeTap *)p;
+   const struct SametimeTap *pi = (const struct SametimeTap *)p;
 
-        tick_stat_node(st, st_str_packet, 0, FALSE);
-        if (pi->message_type != -1)
-               stats_tree_tick_pivot(st, st_node_message_type, val_to_str(pi->message_type, messagetypenames, "Unknown (0x%04x)"));
+   tick_stat_node(st, st_str_packet, 0, FALSE);
+   if (pi->message_type != -1)
+      stats_tree_tick_pivot(st, st_node_message_type, val_to_str(pi->message_type, messagetypenames, "Unknown (0x%04x)"));
 
-        if (pi->send_type != -1)
-               stats_tree_tick_pivot(st, st_node_send_type, val_to_str(pi->send_type, sendtypenames, "Unknown (0x%04x)"));
+   if (pi->send_type != -1)
+      stats_tree_tick_pivot(st, st_node_send_type, val_to_str(pi->send_type, sendtypenames, "Unknown (0x%04x)"));
 
-        if (pi->user_status != -1)
-               stats_tree_tick_pivot(st, st_node_user_status, val_to_str(pi->user_status, userstatusnames, "Unknown (0x%04x)"));
+   if (pi->user_status != -1)
+      stats_tree_tick_pivot(st, st_node_user_status, val_to_str(pi->user_status, userstatusnames, "Unknown (0x%04x)"));
 
-        return 1;
+   return 1;
 }
 
 
 /*
-       init statistic
+        init statistic
 */
 static void
 sametime_stats_tree_init(stats_tree* st)
 {
-        st_node_packet = stats_tree_create_node(st, st_str_packet, 0, TRUE);
-        st_node_message_type = stats_tree_create_pivot(st, st_str_message_type, st_node_packet);
-        st_node_send_type = stats_tree_create_pivot(st, st_str_send_type, st_node_packet);
-        st_node_user_status = stats_tree_create_pivot(st, st_str_user_status, st_node_packet);
+   st_node_packet = stats_tree_create_node(st, st_str_packet, 0, TRUE);
+   st_node_message_type = stats_tree_create_pivot(st, st_str_message_type, st_node_packet);
+   st_node_send_type = stats_tree_create_pivot(st, st_str_send_type, st_node_packet);
+   st_node_user_status = stats_tree_create_pivot(st, st_str_user_status, st_node_packet);
 }
 
 
 /*
-       length of the sametime message
+        length of the sametime message
 */
 static guint
 get_sametime_message_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
 {
-       /* XXX: Actually: the length of the tvb will always be 4 or greater at this point */
-       /*      because tcp_dissect_pdus was called with 4 as a required "fixed length".  */
-       /*      But newer variants of this protocol with a full encrypted network stream  */
-       /*      may require a more sophisticated dissection logic here                    */
-       guint32 N = tvb_length_remaining(tvb, offset);
+   /* XXX: Actually: the length of the tvb will always be 4 or greater at this point */
+   /*      because tcp_dissect_pdus was called with 4 as a required "fixed length".  */
+   /*        But newer variants of this protocol with a full encrypted network stream  */
+   /*        may require a more sophisticated dissection logic here                    */
+   guint32 N = tvb_length_remaining(tvb, offset);
 
-       return (N < 4) ? N : tvb_get_ntohl(tvb, offset) + 4;
+   return (N < 4) ? N : tvb_get_ntohl(tvb, offset) + 4;
 }
 
 
 /*
-       the dissector itself
+        the dissector itself
 */
 static int
 dissect_sametime(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-       col_set_str(pinfo->cinfo, COL_PROTOCOL, "SAMETIME");
-       col_clear(pinfo->cinfo,COL_INFO);
+   col_set_str(pinfo->cinfo, COL_PROTOCOL, "SAMETIME");
+   col_clear(pinfo->cinfo,COL_INFO);
 
-       tcp_dissect_pdus(tvb, pinfo, tree, global_sametime_reassemble_packets, 4,
-                        get_sametime_message_len, dissect_sametime_content, data);
-       return tvb_length(tvb);
+   tcp_dissect_pdus(tvb, pinfo, tree, global_sametime_reassemble_packets, 4,
+         get_sametime_message_len, dissect_sametime_content, data);
+   return tvb_length(tvb);
 }
 
 
 void
 proto_register_sametime(void)
 {
-       static hf_register_info hf[] = {
-               /*tcp payload is one byte : SAMETIME_MESSAGETYPE_HEARTBEAT*/
-               { &hf_sametime_heartbeat,
-                       { "heartbeat", "sametime.heartbeat",
-                       FT_UINT8, BASE_HEX,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-
-               /*sametime message header*/
-               { &hf_sametime_message_length,
-                       { "msg length", "sametime.message_length",
-                       FT_UINT32, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_message_type,
-                       { "msg type", "sametime.message_type",
-                       FT_UINT16, BASE_HEX,
-                       VALS(messagetypenames), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_message_options,
-                       { "msg options", "sametime.message_options",
-                       FT_UINT16, BASE_HEX,
-                       VALS(optionnames), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_message_options_encrypted,
-                       { "ENCRYPT", "sametime.message_options.encrypted",
-                       FT_BOOLEAN, 16,
-                       NULL, SAMETIME_MESSAGEOPTION_ENCRYPT,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_message_options_attribute,
-                       { "HAS_ATTRIBS", "sametime.message_options.attribute",
-                       FT_BOOLEAN, 16,
-                       NULL, SAMETIME_MESSAGEOPTION_HAS_ATTRIBS,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_message_channel,
-                       { "msg channel", "sametime.message_channel",
-                       FT_UINT32, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-
-               /*common fields within various message types*/
-               { &hf_sametime_field_length,
-                       { "length", "sametime.field_length",
-                       FT_UINT16, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_field_text,
-                       { "text", "sametime.field_text",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_code,
-                       { "code", "sametime.code",
-                       FT_UINT32, BASE_HEX,
-                       VALS(codenames), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_login_type,
-                       { "login type", "sametime.login_type",
-                       FT_UINT16, BASE_HEX,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_time,
-                       { "time", "sametime.time",
-                       FT_UINT32, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-
-               /*type handshake*/
-               { &hf_sametime_handshake_major,
-                       { "major", "sametime.handshake.major",
-                       FT_UINT16, BASE_HEX,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_handshake_minor,
-                       { "minor", "sametime.handshake.minor",
-                       FT_UINT16, BASE_HEX,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_handshake_srvrcalc_addr,
-                       { "srvr", "sametime.handshake.srvrcalc_addr",
-                       FT_IPv4, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_handshake_loclcalc_addr,
-                       { "locl", "sametime.handshake.loclcalc_addr",
-                       FT_IPv4, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-
-               /*type channel*/
-               { &hf_sametime_channel_service,
-                       { "service id", "sametime.channel.service",
-                       FT_UINT32, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_channel_id,
-                       { "channel id", "sametime.channel.id",
-                       FT_UINT32, BASE_DEC,
-                       NULL, 0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_channel_send_type,
-                       { "send type", "sametime.channel.send_type",
-                       FT_UINT16, BASE_HEX,
-                       VALS(sendtypenames), 0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_channel_awareness,
-                       { "awareness", "sametime.channel.awareness",
-                       FT_UINT16, BASE_HEX,
-                       VALS(awarenessnames), 0x0,
-                       NULL, HFILL }
-               },
-
-               /*type user status*/
-               { &hf_sametime_user_status,
-                       { "user status", "sametime.user_status_type",
-                       FT_UINT16, BASE_HEX,
-                       VALS(userstatusnames), 0x0,
-                       NULL, HFILL }
-               },
-
-                /*type location*/
-               { &hf_sametime_location_name,
-                       { "name", "sametime.location.name",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_city,
-                       { "city", "sametime.location.city",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_province,
-                       { "province", "sametime.location.province",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_postalcode,
-                       { "postal code", "sametime.location.postalcode",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_country,
-                       { "country", "sametime.location.country",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_phone,
-                       { "phone", "sametime.location.phone",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_sametime_location_timezone,
-                       { "time zone", "sametime.location.timezone",
-                       FT_STRING, BASE_NONE,
-                       NULL, 0x0,
-                       NULL, HFILL }
-               },
-       };
-
-       static gint *ett[] = {
-               &ett_sametime,
-               &ett_sametime_options
-       };
-
-       module_t *sametime_module;
-
-       proto_sametime = proto_register_protocol (
-               "Sametime Protocol", /* name */
-               "SAMETIME",          /* short name */
-               "sametime"           /* abbrev */
-               );
-       proto_register_field_array(proto_sametime, hf, array_length(hf));
-       proto_register_subtree_array(ett, array_length(ett));
-
-       sametime_tap = register_tap("sametime");
-
-       /* Preference setting */
-       sametime_module = prefs_register_protocol(proto_sametime, NULL);
-       prefs_register_bool_preference(sametime_module, "show_length",
-                                      "Show length",
-                                      "Show length of text field",
-                                      &global_sametime_show_length);
-       prefs_register_bool_preference(sametime_module, "reassemble",
-                                      "Reassemble","reassemble packets",
-                                      &global_sametime_reassemble_packets);
-       prefs_register_uint_preference(sametime_module, "tcp_port",
-                                      "SAMETIME port number",
-                                      "port number for sametime traffic",
-                                      10, &global_sametime_port);
+   static hf_register_info hf[] = {
+      /*tcp payload is one byte : SAMETIME_MESSAGETYPE_HEARTBEAT*/
+      { &hf_sametime_heartbeat,
+         { "heartbeat", "sametime.heartbeat",
+            FT_UINT8, BASE_HEX,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+
+      /*sametime message header*/
+      { &hf_sametime_message_length,
+         { "msg length", "sametime.message_length",
+            FT_UINT32, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_message_type,
+         { "msg type", "sametime.message_type",
+            FT_UINT16, BASE_HEX,
+            VALS(messagetypenames), 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_message_options,
+         { "msg options", "sametime.message_options",
+            FT_UINT16, BASE_HEX,
+            VALS(optionnames), 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_message_options_encrypted,
+         { "ENCRYPT", "sametime.message_options.encrypted",
+            FT_BOOLEAN, 16,
+            NULL, SAMETIME_MESSAGEOPTION_ENCRYPT,
+            NULL, HFILL }
+      },
+      { &hf_sametime_message_options_attribute,
+         { "HAS_ATTRIBS", "sametime.message_options.attribute",
+            FT_BOOLEAN, 16,
+            NULL, SAMETIME_MESSAGEOPTION_HAS_ATTRIBS,
+            NULL, HFILL }
+      },
+      { &hf_sametime_message_channel,
+         { "msg channel", "sametime.message_channel",
+            FT_UINT32, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+
+      /*common fields within various message types*/
+      { &hf_sametime_field_length,
+         { "length", "sametime.field_length",
+            FT_UINT16, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_field_text,
+         { "text", "sametime.field_text",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_code,
+         { "code", "sametime.code",
+            FT_UINT32, BASE_HEX,
+            VALS(codenames), 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_login_type,
+         { "login type", "sametime.login_type",
+            FT_UINT16, BASE_HEX,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_time,
+         { "time", "sametime.time",
+            FT_UINT32, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+
+      /*type handshake*/
+      { &hf_sametime_handshake_major,
+         { "major", "sametime.handshake.major",
+            FT_UINT16, BASE_HEX,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_handshake_minor,
+         { "minor", "sametime.handshake.minor",
+            FT_UINT16, BASE_HEX,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_handshake_srvrcalc_addr,
+         { "srvr", "sametime.handshake.srvrcalc_addr",
+            FT_IPv4, BASE_NONE,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_handshake_loclcalc_addr,
+         { "locl", "sametime.handshake.loclcalc_addr",
+            FT_IPv4, BASE_NONE,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+
+      /*type channel*/
+      { &hf_sametime_channel_service,
+         { "service id", "sametime.channel.service",
+            FT_UINT32, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_channel_id,
+         { "channel id", "sametime.channel.id",
+            FT_UINT32, BASE_DEC,
+            NULL, 0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_channel_send_type,
+         { "send type", "sametime.channel.send_type",
+            FT_UINT16, BASE_HEX,
+            VALS(sendtypenames), 0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_channel_awareness,
+         { "awareness", "sametime.channel.awareness",
+            FT_UINT16, BASE_HEX,
+            VALS(awarenessnames), 0x0,
+            NULL, HFILL }
+      },
+
+      /*type user status*/
+      { &hf_sametime_user_status,
+         { "user status", "sametime.user_status_type",
+            FT_UINT16, BASE_HEX,
+            VALS(userstatusnames), 0x0,
+            NULL, HFILL }
+      },
+
+      /*type location*/
+      { &hf_sametime_location_name,
+         { "name", "sametime.location.name",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_city,
+         { "city", "sametime.location.city",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_province,
+         { "province", "sametime.location.province",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_postalcode,
+         { "postal code", "sametime.location.postalcode",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_country,
+         { "country", "sametime.location.country",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_phone,
+         { "phone", "sametime.location.phone",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+      { &hf_sametime_location_timezone,
+         { "time zone", "sametime.location.timezone",
+            FT_STRING, STR_ASCII,
+            NULL, 0x0,
+            NULL, HFILL }
+      },
+   };
+
+   static gint *ett[] = {
+      &ett_sametime,
+      &ett_sametime_options
+   };
+
+   module_t *sametime_module;
+
+   proto_sametime = proto_register_protocol (
+         "Sametime Protocol", /* name */
+         "SAMETIME",          /* short name */
+         "sametime"           /* abbrev */
+         );
+   proto_register_field_array(proto_sametime, hf, array_length(hf));
+   proto_register_subtree_array(ett, array_length(ett));
+
+   sametime_tap = register_tap("sametime");
+
+   /* Preference setting */
+   sametime_module = prefs_register_protocol(proto_sametime, NULL);
+   prefs_register_bool_preference(sametime_module, "show_length",
+         "Show length",
+         "Show length of text field",
+         &global_sametime_show_length);
+   prefs_register_bool_preference(sametime_module, "reassemble",
+         "Reassemble","reassemble packets",
+         &global_sametime_reassemble_packets);
+   prefs_register_uint_preference(sametime_module, "tcp_port",
+         "SAMETIME port number",
+         "port number for sametime traffic",
+         10, &global_sametime_port);
 }
 
 
 /*
-       create / register
+        create / register
 */
 void
 proto_reg_handoff_sametime(void)
 {
-       static gboolean initialized = FALSE;
-       static guint saved_sametime_tcp_port;
-
-       if (!initialized) {
-               sametime_handle = new_create_dissector_handle(dissect_sametime, proto_sametime);
-               stats_tree_register("sametime", "sametime", "Sametime/Messages", 0,
-                                   sametime_stats_tree_packet,
-                                   sametime_stats_tree_init, NULL );
-               initialized = TRUE;
-       } else {
-               dissector_delete_uint("tcp.port", saved_sametime_tcp_port, sametime_handle);
-       }
-
-       dissector_add_uint("tcp.port", global_sametime_port, sametime_handle);
-       saved_sametime_tcp_port = global_sametime_port;
+   static gboolean initialized = FALSE;
+   static guint saved_sametime_tcp_port;
+
+   if (!initialized) {
+      sametime_handle = new_create_dissector_handle(dissect_sametime, proto_sametime);
+      stats_tree_register("sametime", "sametime", "Sametime/Messages", 0,
+            sametime_stats_tree_packet,
+            sametime_stats_tree_init, NULL );
+      initialized = TRUE;
+   } else {
+      dissector_delete_uint("tcp.port", saved_sametime_tcp_port, sametime_handle);
+   }
+
+   dissector_add_uint("tcp.port", global_sametime_port, sametime_handle);
+   saved_sametime_tcp_port = global_sametime_port;
 }
+
+
+/*
+ * Editor modelines  -  http://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:
+ */
index abf13ae5cc9988ea8f6ae58895721b2cc333eec8..e28d24339de749037e3d066edfd55851fc428e67 100644 (file)
@@ -31,6 +31,7 @@
 #include <glib.h>
 #include <epan/packet.h>
 #include <epan/asn1.h>
+#include <epan/prefs.h>
 
 #include "packet-gsm_a_common.h"
 #include "packet-e212.h"
 #define PSNAME "SGSAP"
 #define PFNAME "sgsap"
 
-/* The registered SCTP port number for SGsAP is 29118.
- * The payload protocol identifier to be used for SGsAP is 0.
- */
-#define SCTP_PORT_SGSAP 29118
 
 void proto_register_sgsap(void);
 void proto_reg_handoff_sgsap(void);
 
 /* Global variables */
 static dissector_handle_t gsm_a_dtap_handle;
-static guint gbl_sgsapSctpPort=SCTP_PORT_SGSAP;
 
+/* The registered SCTP port number for SGsAP is 29118.
+ * The payload protocol identifier to be used for SGsAP is 0.
+ */
+#define SGSAP_SCTP_PORT_RANGE "29118"
+static range_t *global_sgsap_port_range;
 
 /* Initialize the protocol and registered fields */
 static int proto_sgsap = -1;
@@ -1447,6 +1448,7 @@ dissect_sgsap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 void proto_register_sgsap(void) {
     guint        i;
     guint        last_offset;
+       module_t    *sgsap_module;
 
     /* List of fields */
 
@@ -1553,6 +1555,17 @@ void proto_register_sgsap(void) {
 
     /* Register dissector */
     register_dissector(PFNAME, dissect_sgsap, proto_sgsap);
+
+   /* Set default SCTP ports */
+    range_convert_str(&global_sgsap_port_range, SGSAP_SCTP_PORT_RANGE, MAX_SCTP_PORT);
+
+       sgsap_module = prefs_register_protocol(proto_sgsap, proto_reg_handoff_sgsap);
+
+    prefs_register_range_preference(sgsap_module, "sctp_ports",
+                                  "SGsAP SCTP port numbers",
+                                  "Port numbers used for SGsAP traffic "
+                                  "(default " SGSAP_SCTP_PORT_RANGE ")",
+                                  &global_sgsap_port_range, MAX_SCTP_PORT);
 }
 
 void
@@ -1563,7 +1576,7 @@ proto_reg_handoff_sgsap(void)
      */
     static gboolean Initialized = FALSE;
     static dissector_handle_t sgsap_handle;
-    static guint SctpPort;
+    static range_t *sgsap_port_range;
 
     sgsap_handle = find_dissector("sgsap");
     gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
@@ -1572,14 +1585,11 @@ proto_reg_handoff_sgsap(void)
         dissector_add_handle("sctp.port", sgsap_handle);   /* for "decode-as"  */
         Initialized=TRUE;
     } else {
-        if (SctpPort != 0) {
-            dissector_delete_uint("sctp.port", SctpPort, sgsap_handle);
-        }
+        dissector_delete_uint_range("sctp.port", sgsap_port_range, sgsap_handle);
+        g_free(sgsap_port_range);
     }
 
-    SctpPort = gbl_sgsapSctpPort;
-    if (SctpPort != 0) {
-        dissector_add_uint("sctp.port", SctpPort, sgsap_handle);
-    }
+    sgsap_port_range = range_copy(global_sgsap_port_range);
+    dissector_add_uint_range("sctp.port", sgsap_port_range, sgsap_handle);
 }
 
index 510e9266482c804b2757aa30d50ad084aa7362e9..7255367e3f23ff3aad0302f1c2978a6c7434746b 100644 (file)
@@ -3701,7 +3701,7 @@ guint sip_is_packet_resend(packet_info *pinfo,
 
                /* Allocate a new key and value */
                p_key = wmem_new(wmem_file_scope(), sip_hash_key);
-               p_val = wmem_new(wmem_file_scope(), sip_hash_value);
+               p_val = wmem_new0(wmem_file_scope(), sip_hash_value);
 
                /* Fill in key and value details */
                g_snprintf(p_key->call_id, MAX_CALL_ID_SIZE, "%s", call_id);
@@ -3717,7 +3717,6 @@ guint sip_is_packet_resend(packet_info *pinfo,
                p_val->cseq = cseq_number;
                g_strlcpy(p_val->method, cseq_method, MAX_CSEQ_METHOD_SIZE);
                p_val->transaction_state = nothing_seen;
-               p_val->frame_number = 0;
                if (line_type == REQUEST_LINE)
                {
                        p_val->request_time = pinfo->fd->abs_ts;
index bfcb669d9d4d470bde550fa8917729203c92eea5..0d0d2e3d2236bcbb6022409314695b3ee14e4fe0 100644 (file)
@@ -228,6 +228,7 @@ static int hf_smb2_lease_flags_break_in_progress = -1;
 static int hf_smb2_lease_duration = -1;
 static int hf_smb2_parent_lease_key = -1;
 static int hf_smb2_lease_epoch = -1;
+static int hf_smb2_lease_reserved = -1;
 static int hf_smb2_lease_break_reason = -1;
 static int hf_smb2_lease_access_mask_hint = -1;
 static int hf_smb2_lease_share_mask_hint = -1;
@@ -5256,8 +5257,9 @@ dissect_smb2_MxAc_buffer_response(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
  *  4 - lease state
  *  4 - lease flags
  *  8 - lease duration
- * 16 - pareant lease key
- *  4 - epoch
+ * 16 - parent lease key
+ *  2 - epoch
+ *  2 - reserved
  */
 #define SMB2_LEASE_STATE_READ_CACHING   0x00000001
 #define SMB2_LEASE_STATE_HANDLE_CACHING 0x00000002
@@ -5338,7 +5340,11 @@ dissect_SMB2_CREATE_LEASE_VX(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
        proto_tree_add_item(sub_tree, hf_smb2_parent_lease_key, tvb, offset, 16, ENC_LITTLE_ENDIAN);
        offset += 16;
 
-       proto_tree_add_item(sub_tree, hf_smb2_lease_epoch, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+       proto_tree_add_item(sub_tree, hf_smb2_lease_epoch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+       offset += 2;
+
+       proto_tree_add_item(sub_tree, hf_smb2_lease_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+       offset += 2;
 }
 
 static void
@@ -5841,9 +5847,9 @@ dissect_smb2_break_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
 
                /* Lease Break Notification */
 
-               /* reserved */
-               proto_tree_add_item(tree, hf_smb2_reserved, tvb, offset, 2, ENC_NA);
-               offset +=2;
+               /* new lease epoch */
+               proto_tree_add_item(tree, hf_smb2_lease_epoch, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+               offset += 2;
 
                /* lease flags */
                proto_tree_add_bitmask(tree, tvb, offset, hf_smb2_lease_flags,
@@ -7541,7 +7547,11 @@ proto_register_smb2(void)
                    NULL, 0, NULL, HFILL }},
 
                { &hf_smb2_lease_epoch,
-                 { "Lease Epoch", "smb2.lease.lease_oplock", FT_UINT32, BASE_HEX,
+                 { "Lease Epoch", "smb2.lease.lease_oplock", FT_UINT16, BASE_HEX,
+                   NULL, 0, NULL, HFILL }},
+
+               { &hf_smb2_lease_reserved,
+                 { "Lease Reserved", "smb2.lease.lease_reserved", FT_UINT16, BASE_HEX,
                    NULL, 0, NULL, HFILL }},
 
                { &hf_smb2_lease_break_reason,
index 052a8a001074ac89ba1a0da401f30c73c5b4a3d5..9035422db60c476ae6849d7f430036eb538f5a94 100644 (file)
@@ -1477,7 +1477,7 @@ smpp_handle_tlv(proto_tree *tree, tvbuff_t *tvb, int *offset)
                                  hf_smpp_source_bearer_type, offset);
                 break;
             case  0x0010:       /* source_telematics_id */
-                smpp_handle_int2(sub_tree, tvb,
+                smpp_handle_int1(sub_tree, tvb,
                                  hf_smpp_source_telematics_id, offset);
                 break;
             case  0x0017:       /* qos_time_to_live     */
@@ -3124,7 +3124,7 @@ proto_register_smpp(void)
         },
         {   &hf_smpp_source_telematics_id,
             {   "Telematic interworking (orig)", "smpp.source_telematics_id",
-                FT_UINT16, BASE_HEX, NULL, 0x00,
+                FT_UINT8, BASE_HEX, NULL, 0x00,
                 "Telematic interworking used for message submission.",
                 HFILL
             }
index 87a69c5b2d00f322dcca14469d0bdfbd48579fde..72a799258a8dcebb5d9e3ba13334adc5cf71e31c 100644 (file)
@@ -532,7 +532,7 @@ dissect_snmp_variable_date_and_time(proto_tree *tree,int hfid, tvbuff_t *tvb, in
              minutes,
              seconds,
              deci_seconds,
-             tvb_get_string(wmem_packet_scope(),tvb,offset+8,1),
+             tvb_get_string_enc(wmem_packet_scope(),tvb,offset+8,1,ENC_ASCII|ENC_NA),
              hour_from_utc,
              min_from_utc);
     }else{
index 240839c529d4e8f5f1e53687124cffc59f7588bf..4dc89c8d832888b3a317e1ad35489a272319e541 100644 (file)
@@ -1043,7 +1043,7 @@ const value_string tls_hello_extension_types[] = {
     { SSL_HND_HELLO_EXT_HEARTBEAT, "Heartbeat" },  /* RFC 6520 */
     { SSL_HND_HELLO_EXT_ALPN, "Application Layer Protocol Negotiation" }, /* draft-ietf-tls-applayerprotoneg-01 */
     { SSL_HND_HELLO_EXT_STATUS_REQUEST_V2, "status_request_v2" }, /* RFC 6961 */
-    { 35, "SessionTicket TLS" },  /* RFC 4507 */
+    { SSL_HND_HELLO_EXT_SESSION_TICKET, "SessionTicket TLS" },  /* RFC 4507 */
     { SSL_HND_HELLO_EXT_NPN, "next_protocol_negotiation"}, /* http://technotes.googlecode.com/git/nextprotoneg.html */
     { SSL_HND_HELLO_EXT_RENEG_INFO, "renegotiation_info" }, /* RFC 5746 */
     { 0, NULL }
@@ -3668,6 +3668,8 @@ ssl_session_init(SslDecryptSession* ssl_session)
     ssl_session->session_id.data = ssl_session->_session_id;
     ssl_session->client_random.data = ssl_session->_client_random;
     ssl_session->server_random.data = ssl_session->_server_random;
+       ssl_session->session_ticket.data = ssl_session->_session_ticket;
+       ssl_session->session_ticket.data_len = 0;
     ssl_session->master_secret.data_len = 48;
     ssl_session->server_data_for_iv.data_len = 0;
     ssl_session->server_data_for_iv.data = ssl_session->_server_data_for_iv;
@@ -4126,6 +4128,58 @@ ssl_restore_session(SslDecryptSession* ssl, GHashTable *session_hash)
     return TRUE;
 }
 
+/* store master secret into session data cache */
+void
+ssl_save_session_ticket(SslDecryptSession* ssl, GHashTable *session_hash)
+{
+    /* allocate stringinfo chunks for session id and master secret data*/
+    StringInfo* session_ticket;
+    StringInfo* master_secret;
+
+    if (ssl->session_ticket.data_len == 0) {
+        ssl_debug_printf("ssl_save_session_ticket - session ticket is empty!\n");
+        return;
+    }
+
+    session_ticket = (StringInfo *)wmem_alloc0(wmem_file_scope(), sizeof(StringInfo) + ssl->session_ticket.data_len);
+    master_secret = (StringInfo *)wmem_alloc0(wmem_file_scope(), 48 + sizeof(StringInfo));
+
+    master_secret->data = ((guchar*)master_secret+sizeof(StringInfo));
+
+    /*  ssl_hash() depends on session_id->data being aligned for guint access
+     *  so be careful in changing how it is allocated.
+     */
+    session_ticket->data = ((guchar*)session_ticket+sizeof(StringInfo));
+
+    ssl_data_set(session_ticket, ssl->session_ticket.data, ssl->session_ticket.data_len);
+    ssl_data_set(master_secret, ssl->master_secret.data, ssl->master_secret.data_len);
+    g_hash_table_insert(session_hash, session_ticket, master_secret);
+    ssl_print_string("ssl_save_session_ticket stored session_ticket", session_ticket);
+    ssl_print_string("ssl_save_session_ticket stored master secret", master_secret);
+}
+
+gboolean
+ssl_restore_session_ticket(SslDecryptSession* ssl, GHashTable *session_hash)
+{
+    StringInfo* ms;
+
+    if (ssl->session_ticket.data_len == 0) {
+        ssl_debug_printf("ssl_restore_session_ticket Cannot restore using an empty session ticket\n");
+        return FALSE;
+    }
+
+    ms = (StringInfo *)g_hash_table_lookup(session_hash, &ssl->session_ticket);
+
+    if (!ms) {
+        ssl_debug_printf("ssl_restore_session_ticket can't find stored session ticket\n");
+        return FALSE;
+    }
+    ssl_data_set(&ssl->master_secret, ms->data, ms->data_len);
+    ssl->state |= SSL_MASTER_SECRET;
+    ssl_debug_printf("ssl_restore_session_ticket master key retrieved\n");
+    return TRUE;
+}
+
 int
 ssl_is_valid_content_type(guint8 type)
 {
@@ -4747,6 +4801,23 @@ ssl_dissect_hnd_hello_ext_server_name(ssl_common_dissect_t *hf, tvbuff_t *tvb,
    return offset;
 }
 
+static gint
+ssl_dissect_hnd_hello_ext_session_ticket(ssl_common_dissect_t *hf, tvbuff_t *tvb,
+                                      proto_tree *tree, guint32 offset, guint32 ext_len, gboolean is_client, SslDecryptSession *ssl)
+{
+       if(is_client && ssl && ext_len != 0)
+       {
+               /*save the ticket on the ssl opaque so that we can use it as key on server hello */
+               tvb_memcpy(tvb,ssl->session_ticket.data, offset, ext_len);
+       ssl->session_ticket.data_len = ext_len;
+       }
+       proto_tree_add_bytes_format(tree, hf->hf.hs_ext_data,
+                                tvb, offset, ext_len, NULL,
+                                "Data (%u byte%s)",
+                                ext_len, plurality(ext_len, "", "s"));
+    return offset + ext_len;
+}
+
 void
 ssl_dissect_hnd_cert_url(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree, guint32 offset)
 {
@@ -4950,14 +5021,14 @@ ssl_dissect_hnd_hello_ext_ec_point_formats(ssl_common_dissect_t *hf, tvbuff_t *t
 
 gint
 ssl_dissect_hnd_hello_ext(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree,
-                          guint32 offset, guint32 left, gboolean is_client)
+                          guint32 offset, guint32 left, gboolean is_client, SslDecryptSession *ssl)
 {
     guint16     extension_length;
     guint16     ext_type;
     guint16     ext_len;
     proto_item *pi;
     proto_tree *ext_tree;
-
+       
     if (left < 2)
         return offset;
 
@@ -5027,6 +5098,9 @@ ssl_dissect_hnd_hello_ext(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *t
                                 tvb, offset, 1, ENC_BIG_ENDIAN);
             offset += ext_len;
             break;
+               case SSL_HND_HELLO_EXT_SESSION_TICKET:
+                       offset = ssl_dissect_hnd_hello_ext_session_ticket(hf, tvb, ext_tree, offset, ext_len, is_client, ssl);
+                       break;
         default:
             proto_tree_add_bytes_format(ext_tree, hf->hf.hs_ext_data,
                                         tvb, offset, ext_len, NULL,
index 471b7713533cd059409afea4542d19736b48b5d7..7bbd3a4365743eb00d809fcfd8c91db0925e698b 100644 (file)
 #define SSL_HND_HELLO_EXT_HEARTBEAT          0x000f
 #define SSL_HND_HELLO_EXT_ALPN               0x0010
 #define SSL_HND_HELLO_EXT_STATUS_REQUEST_V2  0x0011
+#define SSL_HND_HELLO_EXT_SESSION_TICKET        0x0023
 #define SSL_HND_HELLO_EXT_RENEG_INFO         0xff01
 #define SSL_HND_HELLO_EXT_NPN                0x3374
 #define SSL_HND_CERT_URL_TYPE_INDIVIDUAL_CERT       1
@@ -333,9 +334,11 @@ typedef struct {
 typedef struct _SslDecryptSession {
     guchar _master_secret[48];
     guchar _session_id[256];
+       guchar _session_ticket[1024];
     guchar _client_random[32];
     guchar _server_random[32];
     StringInfo session_id;
+       StringInfo session_ticket;
     StringInfo server_random;
     StringInfo client_random;
     StringInfo master_secret;
@@ -567,6 +570,12 @@ ssl_save_session(SslDecryptSession* ssl, GHashTable *session_hash);
 extern gboolean
 ssl_restore_session(SslDecryptSession* ssl, GHashTable *session_hash);
 
+extern void
+ssl_save_session_ticket(SslDecryptSession* ssl, GHashTable *session_hash);
+
+extern gboolean
+ssl_restore_session_ticket(SslDecryptSession* ssl, GHashTable *session_hash);
+
 extern gint
 ssl_is_valid_content_type(guint8 type);
 
@@ -629,7 +638,7 @@ typedef struct ssl_common_dissect {
 
 extern gint
 ssl_dissect_hnd_hello_ext(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree,
-                          guint32 offset, guint32 left, gboolean is_client);
+                          guint32 offset, guint32 left, gboolean is_client, SslDecryptSession *ssl);
 
 extern gint
 ssl_dissect_hash_alg_list(ssl_common_dissect_t *hf, tvbuff_t *tvb, proto_tree *tree,
index 290f237b35e43872661fab9638421ad7b765189a..64bfb5fba1a4700442e1be9bc434b6d2656a72d1 100644 (file)
@@ -535,7 +535,8 @@ static void dissect_ssl3_hnd_srv_hello(tvbuff_t *tvb,
 
 static void dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb,
                                        proto_tree *tree,
-                                       guint32 offset, guint32 length);
+                                       guint32 offset, guint32 length,
+                                       SslDecryptSession *ssl);
 
 static void dissect_ssl3_hnd_cert(tvbuff_t *tvb,
                                   proto_tree *tree, guint32 offset, packet_info *pinfo);
@@ -2023,7 +2024,7 @@ dissect_ssl3_handshake(tvbuff_t *tvb, packet_info *pinfo,
                 break;
 
             case SSL_HND_NEWSESSION_TICKET:
-                dissect_ssl3_hnd_new_ses_ticket(tvb, ssl_hand_tree, offset, length);
+                dissect_ssl3_hnd_new_ses_ticket(tvb, ssl_hand_tree, offset, length, ssl);
                 break;
 
             case SSL_HND_CERTIFICATE:
@@ -2255,6 +2256,11 @@ dissect_ssl3_hnd_hello_common(tvbuff_t *tvb, proto_tree *tree,
                     ssl_debug_printf("  found master secret in keylog file\n");
                 }
             }
+                       /* if the session_ids match, then there is a chance that we need to restore a session_ticket */
+                       if(ssl->session_ticket.data_len != 0)
+                       {
+                               ssl_restore_session_ticket(ssl, ssl_session_hash);
+                       }
         } else {
             tvb_memcpy(tvb,ssl->session_id.data, offset+33, session_id_length);
             ssl->session_id.data_len = session_id_length;
@@ -2323,7 +2329,6 @@ dissect_ssl3_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
         ssl_set_server(ssl, &pinfo->dst, pinfo->ptype, pinfo->destport);
         ssl_find_private_key(ssl, ssl_key_hash, ssl_associations, pinfo);
     }
-
     if (tree || ssl)
     {
         /* show the client version */
@@ -2331,18 +2336,17 @@ dissect_ssl3_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
             proto_tree_add_item(tree, hf_ssl_handshake_client_version, tvb,
                             offset, 2, ENC_BIG_ENDIAN);
         offset += 2;
-
         /* show the fields in common with server hello */
         offset += dissect_ssl3_hnd_hello_common(tvb, tree, offset, ssl, 0);
-
         /* tell the user how many cipher suites there are */
         cipher_suite_length = tvb_get_ntohs(tvb, offset);
-        if (!tree)
-            return;
+
+               /* even if there's no tree, we'll have to dissect the whole record to get to the extensions.
+                * we will continue with tree==NULL */
+               
         proto_tree_add_uint(tree, hf_ssl_handshake_cipher_suites_len,
                         tvb, offset, 2, cipher_suite_length);
         offset += 2;            /* skip opaque length */
-
         if (cipher_suite_length > 0)
         {
             tvb_ensure_bytes_exist(tvb, offset, cipher_suite_length);
@@ -2376,13 +2380,11 @@ dissect_ssl3_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
                 cipher_suite_length -= 2;
             }
         }
-
         /* tell the user how many compression methods there are */
         compression_methods_length = tvb_get_guint8(tvb, offset);
         proto_tree_add_uint(tree, hf_ssl_handshake_comp_methods_len,
                             tvb, offset, 1, compression_methods_length);
         offset += 1;
-
         if (compression_methods_length > 0)
         {
             tvb_ensure_bytes_exist(tvb, offset, compression_methods_length);
@@ -2419,11 +2421,10 @@ dissect_ssl3_hnd_cli_hello(tvbuff_t *tvb, packet_info *pinfo,
                 compression_methods_length--;
             }
         }
-
         if (length > offset - start_offset)
         {
             ssl_dissect_hnd_hello_ext(&dissect_ssl3_hf, tvb, tree, offset,
-                                       length - (offset - start_offset), TRUE);
+                                       length - (offset - start_offset), TRUE, ssl);
         }
     }
 }
@@ -2498,19 +2499,19 @@ no_cipher:
         if (length > offset - start_offset)
         {
             ssl_dissect_hnd_hello_ext(&dissect_ssl3_hf, tvb, tree, offset,
-                                       length - (offset - start_offset), FALSE);
+                                       length - (offset - start_offset), FALSE, ssl);
         }
     }
 }
 
 static void
 dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb, proto_tree *tree,
-                              guint32 offset, guint32 length)
+                              guint32 offset, guint32 length, SslDecryptSession *ssl)
 {
     guint       nst_len;
     proto_item *ti;
     proto_tree *subtree;
-
+       guint16 session_ticket_length = 0;
 
     nst_len = tvb_get_ntohs(tvb, offset+4);
     if (6 + nst_len != length) {
@@ -2524,11 +2525,22 @@ dissect_ssl3_hnd_new_ses_ticket(tvbuff_t *tvb, proto_tree *tree,
                         tvb, offset, 4, ENC_BIG_ENDIAN);
     offset += 4;
 
+       
+       session_ticket_length = tvb_get_ntohs(tvb, offset);
     proto_tree_add_uint(subtree, hf_ssl_handshake_session_ticket_len,
         tvb, offset, 2, nst_len);
+       offset += 2;
+
+       /* save the session ticket to cache */
+       if(ssl){
+               tvb_memcpy(tvb,ssl->session_ticket.data, offset, session_ticket_length);
+               ssl->session_ticket.data_len = session_ticket_length;
+               ssl_save_session_ticket(ssl, ssl_session_hash);
+       }
+
     /* Content depends on implementation, so just show data! */
     proto_tree_add_item(subtree, hf_ssl_handshake_session_ticket,
-            tvb, offset + 2, nst_len, ENC_NA);
+            tvb, offset, nst_len, ENC_NA);
 }
 
 static void
index d75e59c273c3af3e75609515e27d17b55e457927..e6c83516cdf4b4dd89fee27b0cc9ed5212cce3fc 100644 (file)
@@ -584,7 +584,7 @@ dissect_t124_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
 
        if(next_tvb) {
 
-       ns = tvb_get_string(NULL, t124NSIdentifier, 0, tvb_length(t124NSIdentifier));
+       ns = tvb_get_string_enc(NULL, t124NSIdentifier, 0, tvb_length(t124NSIdentifier), ENC_ASCII|ENC_NA);
        if(ns != NULL) {
                dissector_try_string(t124_ns_dissector_table, ns, next_tvb, actx->pinfo, top_tree, NULL);
                g_free(ns);
index 19ab3dd2c40a5adce66579445032aef33c7e9d57..199e98587abd4f074713525b25b4fd076f912287 100644 (file)
@@ -177,6 +177,7 @@ static gint ett_x509af_DSS_Params = -1;
 
 /*--- End of included file: packet-x509af-ett.c ---*/
 #line 56 "../../asn1/x509af/packet-x509af-template.c"
+static const char *algorithm_id;
 
 /*--- Included file: packet-x509af-fn.c ---*/
 #line 1 "../../asn1/x509af/packet-x509af-fn.c"
@@ -217,6 +218,8 @@ dissect_x509af_T_algorithmId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
     offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509af_algorithm_id, &actx->external.direct_reference);
 
 
+  algorithm_id = actx->external.direct_reference;
+
   if(actx->external.direct_reference) {
     name = oid_resolved_from_string(actx->external.direct_reference);
 
@@ -232,7 +235,7 @@ dissect_x509af_T_algorithmId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
 
 static int
 dissect_x509af_T_parameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 82 "../../asn1/x509af/x509af.cnf"
+#line 84 "../../asn1/x509af/x509af.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
@@ -323,7 +326,7 @@ static const ber_choice_t SubjectName_choice[] = {
 
 static int
 dissect_x509af_SubjectName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 109 "../../asn1/x509af/x509af.cnf"
+#line 111 "../../asn1/x509af/x509af.cnf"
 
   const char* str;
     offset = dissect_ber_choice(actx, tree, tvb, offset,
@@ -369,7 +372,7 @@ dissect_x509af_SubjectPublicKeyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
 static int
 dissect_x509af_T_extnId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 88 "../../asn1/x509af/x509af.cnf"
+#line 90 "../../asn1/x509af/x509af.cnf"
   const char *name;
 
     offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509af_extension_id, &actx->external.direct_reference);
@@ -399,7 +402,7 @@ dissect_x509af_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
 
 static int
 dissect_x509af_T_extnValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 99 "../../asn1/x509af/x509af.cnf"
+#line 101 "../../asn1/x509af/x509af.cnf"
   gint8 ber_class;
   gboolean pc, ind;
   gint32 tag;
@@ -886,7 +889,12 @@ static void dissect_DSS_Params_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
 
 
 /*--- End of included file: packet-x509af-fn.c ---*/
-#line 57 "../../asn1/x509af/packet-x509af-template.c"
+#line 58 "../../asn1/x509af/packet-x509af-template.c"
+
+const char *x509af_get_last_algorithm_id(void) {
+  return algorithm_id;
+}
+
 
 static int
 dissect_pkix_crl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
@@ -1223,7 +1231,7 @@ void proto_register_x509af(void) {
         "INTEGER", HFILL }},
 
 /*--- End of included file: packet-x509af-hfarr.c ---*/
-#line 93 "../../asn1/x509af/packet-x509af-template.c"
+#line 99 "../../asn1/x509af/packet-x509af-template.c"
   };
 
   /* List of subtrees */
@@ -1266,7 +1274,7 @@ void proto_register_x509af(void) {
     &ett_x509af_DSS_Params,
 
 /*--- End of included file: packet-x509af-ettarr.c ---*/
-#line 99 "../../asn1/x509af/packet-x509af-template.c"
+#line 105 "../../asn1/x509af/packet-x509af-template.c"
   };
 
   /* Register protocol */
@@ -1309,7 +1317,7 @@ void proto_reg_handoff_x509af(void) {
 
 
 /*--- End of included file: packet-x509af-dis-tab.c ---*/
-#line 127 "../../asn1/x509af/packet-x509af-template.c"
+#line 133 "../../asn1/x509af/packet-x509af-template.c"
 
        /*XXX these should really go to a better place but since that
          I have not that ITU standard, ill put it here for the time
index 760b8a9b4f279a3d1595578bec37dae6f2272e77..13ff245a45a478056bc85777945f46a4f08b4b5c 100644 (file)
@@ -66,5 +66,7 @@ void dissect_x509af_Certificate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, p
 /*--- End of included file: packet-x509af-exp.h ---*/
 #line 30 "../../asn1/x509af/packet-x509af-template.h"
 
+extern const char* x509af_get_last_algorithm_id(void);
+
 #endif  /* PACKET_X509AF_H */
 
index f61f33f3a45aa8595dbfa66898b0330bf00ebb29..83621340031a46b0a43c5e3ee351a3df7b98b72f 100644 (file)
@@ -281,11 +281,11 @@ dissect_zcl_appl_idt_attr_data(proto_tree *tree, tvbuff_t *tvb, guint *offset, g
             ti = proto_tree_add_text(tree, tvb, *offset, 8, "Basic Identification: 0x%" G_GINT64_MODIFIER "x", value64);
             sub_tree = proto_item_add_subtree(ti, ett_zbee_zcl_appl_idt_basic);
 
-            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_company_id, tvb, *offset, 2, ENC_BIG_ENDIAN);
+            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_company_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
             *offset += 2;
-            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_brand_id, tvb, *offset, 2, ENC_BIG_ENDIAN);
+            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_brand_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
             *offset += 2;
-            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_prod_type_id, tvb, *offset, 2, ENC_BIG_ENDIAN);
+            proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_prod_type_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN);
             *offset += 2;
             proto_tree_add_item(sub_tree, hf_zbee_zcl_appl_idt_ceced_spec_ver, tvb, *offset, 1, ENC_NA);
             *offset += 1;
index 838536307803fff3afea76aacebbd61e7c88e420..cc8491795f8ff8f61babc4164ee85827fef81853 100644 (file)
@@ -104,49 +104,27 @@ eventlog_dissect_element_Record_sid_offset(tvbuff_t *tvb, int offset, packet_inf
        return offset;
 }
 
-
-static int
-eventlog_get_unicode_string_length(tvbuff_t *tvb, int offset)
-{
-       int len;
-
-       len=0;
-       while(1){
-               if(!tvb_get_ntohs(tvb, offset+len*2)){
-                       len++;
-                       break;
-               }
-               len++;
-       }
-
-       return len;
-}
-
 static int
 eventlog_dissect_element_Record_source_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 *drep _U_)
 {
-       char *str;
-       int len;
+       guint len;
 
-       len=eventlog_get_unicode_string_length(tvb, offset);
-       str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, offset, len, TRUE);
-       proto_tree_add_string_format(tree, hf_eventlog_Record_source_name, tvb, offset, len*2, str, "source_name: %s", str);
+       len=tvb_unicode_strsize(tvb, offset);
+       proto_tree_add_item(tree, hf_eventlog_Record_source_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
 
-       offset+=len*2;
+       offset+=len;
        return offset;
 }
 
 static int
 eventlog_dissect_element_Record_computer_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 *drep _U_)
 {
-       char *str;
-       int len;
+       guint len;
 
-       len=eventlog_get_unicode_string_length(tvb, offset);
-       str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, offset, len, TRUE);
-       proto_tree_add_string_format(tree, hf_eventlog_Record_computer_name, tvb, offset, len*2, str, "computer_name: %s", str);
+       len=tvb_unicode_strsize(tvb, offset);
+       proto_tree_add_item(tree, hf_eventlog_Record_computer_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
 
-       offset+=len*2;
+       offset+=len;
        return offset;
 }
 
@@ -176,13 +154,11 @@ static int
 eventlog_dissect_element_Record_strings(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 *drep _U_)
 {
        while(string_offset && num_of_strings){
-               char *str;
-               int len;
+               guint len;
 
-               len=eventlog_get_unicode_string_length(tvb, string_offset);
-               str=tvb_get_faked_unicode(wmem_packet_scope(), tvb, string_offset, len, TRUE);
-               proto_tree_add_string_format(tree, hf_eventlog_Record_string, tvb, string_offset, len*2, str, "string: %s", str);
-               string_offset+=len*2;
+               len=tvb_unicode_strsize(tvb, string_offset);
+               proto_tree_add_item(tree, hf_eventlog_Record_string, tvb, string_offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+               string_offset+=len;
        
                num_of_strings--;
        }
index f596576d606c173974c91776885a7a42ae9e08ec..86fbb1d8f3b2e7586c6dc5aa70504741a10bbd25 100644 (file)
@@ -1,6 +1,6 @@
 PRIVATE ENTERPRISE NUMBERS
 
-(last updated 2014-01-12)
+(last updated 2014-01-26)
 
 SMI Network Management Private Enterprise Codes:
 
@@ -28183,7 +28183,7 @@ Decimal
       ishamir&senterprise.com
 7057
   SuSE Linux AG
-    Carsten Hoeger
+    Ralf Haferkamp
       suse-oid&suse.de
 7058
   BB4 Technologies Inc
@@ -76347,9 +76347,9 @@ da Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa
     M. Wortmann
       kontakt&activ-net.de
 19199
-  SHC Netzwerktechnik
+  SHC Netzwerktechnik GmbH
     Hans Lang
-      hal&shcnet.de
+      hal&shc.eu
 19200
   MMG
     Hans Lang
@@ -76364,8 +76364,8 @@ da Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa
       nrtrinidad&eastern.com.ph
 19203
   DAI-Labor
-    Jens Bräuer
-      jens.braeuer&dai-labor.de
+    Sahin Albayrak
+      admins&dai-labor.de
 19204
   Milano Medien GmbH
     Alexander Gräf
@@ -100107,9 +100107,9 @@ Minas Gerais
     Kenji Terao
       terao&comdesign.co.jp
 25135
-  Ministerul Comunicatiilor si Tehnologiei Informatiei
-    Viorel Gaftea
-      viorel.gaftea&mcti.ro
+  Ministerul pentru Societatea Informațională (previous was 'Ministerul Comunicatiilor si Tehnologiei Informatiei')
+    Augustin Jianu
+      augustin.jianu&msinf.ro
 25136
   Haute Ecole Arc
     Romain Voumard
@@ -120874,8 +120874,8 @@ Decentralization / Helenic Public Administra
       cole.moody&ibec.net
 30323
   Eigen LLC
-    Daniel Elven
-      daniel.elven&eigen.com
+    Troy DesBiens
+      troy.desbiens&eigen.com
 30324
   Interface Masters, Inc.
     Ben Askarinam
@@ -128449,9 +128449,9 @@ Decentralization / Helenic Public Administra
     motomichi tanaka
       mtanaka&sios.com
 32217
-  BÖWE Systec AG
+  BÖWE Systec GmbH
     Wolfgang Meinelt
-      meinelt.mailcom&boewe-systec.de
+      wolfgang.meinelt&boewe-systec.com
 32218
   tedman.com
     Ted Leung
@@ -139002,9 +139002,9 @@ Decentralization / Helenic Public Administra
     Yonadav Leitersdorf
       yonadav&indeni.com
 34855
-  MobileTick Ltd,
+  Votiro Ltd. (previous was 'MobileTick Ltd')
     Aviv Grafi
-      aviv&mobiletick.com
+      aviv&votiro.com
 34856
   ALTAVIA SA
     François ROUSSEAU
@@ -154128,8 +154128,8 @@ Decentralization / Helenic Public Administra
       dmcclain&falconsteel.com
 38636
   Starfish Technologies Limited
-    Andrew Dix
-      andrew&starfish.tv
+    Graham Neden-Watts
+      graham&starfish.tv
 38637
   U2 Systems
     Tony Ching
@@ -171886,6 +171886,294 @@ Decentralization / Helenic Public Administra
   SKY Interactive
     James Yong
       james.yong&skyinteractive.com.au
+43076
+  Greiner Holding AG
+    Servicedesk
+      servicedesk&greiner.at
+43077
+  TUI Marine
+    Shawn LoPresto
+      shawn.lopresto&tuimarine.com
+43078
+  Lindvik
+    Kristian Lindvik
+      kristian&lindvik.com
+43079
+  Zimmer GmbH
+    Matt Addy
+      matt.addy&zimmer.com
+43080
+  Atlantic Corporation of Wilmington, Inc.
+    Robbie Walker
+      robbiew&atlanticpkg.com
+43081
+  intellec
+    Christian Jucker
+      christian.jucker&intellec.ch
+43082
+  Informatik Service Gesellschaft mbH
+    EL Ghouat Nor-eddine
+      ne.elghouat&isg-cgn.de
+43083
+  IMEN RAYANE SHRGH Co.
+    Hassan Hamzeloue monfared
+      info&imenrayaneh.com
+43084
+  Webtown Informatika Kft.
+    Peter Felber
+      wtsysop&webtown.hu
+43085
+  Detroit R & D, Inc.
+    David Putt
+      info&detroitrandd.com
+43086
+  NHS Sistemas Eletronicos
+    Thiago Wiezbicki
+      thiago.wiezbicki&nhs.com.br
+43087
+  xCelor LLC
+    Vahan Sardaryan
+      vahan&x-celor.com
+43088
+  Measurlogic Inc.
+    John Stratford
+      john&measurlogic.com
+43089
+  Dualog AS
+    Vidar Berg
+      vidar&dualog.com
+43090
+  KVADOS, a.s.
+    Milan Dadok
+      dadok&kvados.cz
+43091
+  SAP integrator Ltd.
+    Anthony Pankov
+      info&sapintegrator.com
+43092
+  Habermehl
+    Martin Habermehl
+      Martin&Habermehls.de
+43093
+  Xiamen Faratronic Co., Ltd.
+    Xiang Bai
+      bx&faratronic.com.cn
+43094
+  HyperWallet Systems Inc
+    Mark E.S. Bernard
+      mbernard&hyperwallet.com
+43095
+  Service2Media B.V.
+    Gerben van der Stouwe
+      gvanderstouwe&service2media.com
+43096
+  James Guse (JAG Enterprises)
+    James Guse
+      guse3&beryk.com
+43097
+  ROTH + WEBER GmbH
+    Stephan Frisch
+      software-entwicklung&rowe.de
+43098
+  Martem AS
+    Roland Uuesoo
+      roland&martem.ee
+43099
+  Embrionix Design inc.
+    Sithideth Viengkhou
+      sviengkhou&embrionix.com
+43100
+  Strata Decision Technology, L.L.C.
+    Joshua Bautista
+      it&stratadecision.com
+43101
+  Alphavida
+    Stuart Cianos
+      scianos&alphavida.com
+43102
+  Regional Municipality of Peel
+    Arthur Michalec
+      arthur.michalec&peelregion.ca
+43103
+  Caradigm
+    Sampath Damodarasamy
+      Sampath.Damodarasamy&Caradigm.com
+43104
+  CyberSecure IPS
+    Steve Sohn
+      steve.sohn&cybersecureips.com
+43105
+  CyberFlow Analytics, Inc.
+    Steve Hinkle
+      stevehinkle&cyberflowanalytics.com
+43106
+  PERK Innovation GmbH
+    Michael Pauen
+      michael.pauen&perk-innovation.com
+43107
+  Waclaw Schiller (Torinthiel)
+    Waclaw Schiller
+      iana-pen&torinthiel.pl
+43108
+  Attend Systems, LLC
+    Noah Groth
+      ngroth&attendsystems.com
+43109
+  dataFASCIA Corporation
+    Bill Lattin
+      blattin&datafascia.com
+43110
+  LTD «Bradbury Lab»
+    Evgeny Novikov
+      evn&bradburylab.com
+43111
+  VNT Software
+    Mirit Manor
+      mirit&vnt-software.com
+43112
+  Picsearch AB (publ)
+    Navid Abdi
+      sysadmin&picsearch.com
+43113
+  Screen9 AB
+    Navid Abdi
+      sysadmin&screen9.com
+43114
+  Kantonsapotheke Zürich
+    Clau Deplazes
+      clau.deplazes&kaz.zh.ch
+43115
+  Forêts & Bois de l'Est
+    Alain JACQUET
+      contact&foretsetboisdelest.com
+43116
+  Berghof Automation GmbH
+    Dr. Arno Rabold
+      Arno.Rabold&berghof.com
+43117
+  National Stock Exchange Of India Limited
+    Prasad Addagatla
+      prasada&nse.co.in
+43118
+  NORDSYS GmbH
+    Stefan Sander
+      penadmin&nordsys.de
+43119
+  Altibox AS
+    Jan-Frode Myklebust
+      jf&altibox.no
+43120
+  Peshawar Business School
+    Muhammad Amjad
+      amjid49&yahoo.com
+43121
+  Ypsomed AG
+    Patrick Hostettler
+      dnsadmin&itsroot.net
+43122
+  Summit Networks
+    Daniel Korndorfer
+      daniel.korndorfer&summitnetworks.com.br
+43123
+  Instituto Nacional para la Evaluación de la Educación
+    Saul Castro Olvera
+      scastro&inee.edu.mx
+43124
+  PasswordBox Inc.
+    Francois Proulx
+      francois&passwordbox.com
+43125
+  System Studies Incorporated
+    Eric Malmberg
+      eric&airtalk.com
+43126
+  US Fire Insurance Company
+    Amos Desrosiers
+      amos.desrosiers&cfins.com
+43127
+  Oliver Manz (ips manz consulting)
+    Oliver Manz
+      ips&omanz.de
+43128
+  TangentOrg
+    Brian Aker
+      brian&tangent.org
+43129
+  Meijo University
+    Toshihiko KATO
+      ccoffice&meijo-u.ac.jp
+43130
+  Amplesky Communication Technologies Ltd.
+    Huang SongTao
+      snmpoid&amplesky.com
+43131
+  Ternopil State Medical University
+    Kovalok Volodymyr
+      admin&tdmu.edu.ua
+43132
+  CJSC Svyaz engineering
+    Evgeniy Chudaykin
+      e.chudaykin&sipower.ru
+43133
+  mailgarant (Meint Post)
+    Meint Post
+      meint&meint.net
+43134
+  Advanced Fiber Products LLC
+    Wojciech Przeczkowski
+      wprzeczkowski&afpgco.com
+43135
+  adis.ca
+    Adi Linden
+      adi&adis.ca
+43136
+  Digital Footprints International, LLC; DBA Internet Identity
+    Rod Rasmussen
+      iana-pen&internetidentity.com
+43137
+  Raven Rocks Computer Services Group, Inc.
+    Charles Hopkins
+      charlesghopkins&gmail.com
+43138
+  Multapplied Networks, Inc.
+    Matthew Fox
+      support&multapplied.net
+43139
+  Glutonus SRL
+    Vladimir Tanase
+      vtanase&glutonus.md
+43140
+  Xora, Inc.
+    James Graham
+      jgraham&xora.com
+43141
+  RVTN.org
+    Vladimir Voskoboynikov
+      vladv&rvtn.org
+43142
+  St. Mary's International School
+    DJ Feldmeyer
+      administrator&smis.ac.jp
+43143
+  Nanjing Sinovatio Technology Co. ltd
+    Ning Zhang
+      zhang.ning&sinovatio.com
+43144
+  HMS Industrial Networks
+    Magnus Hansson
+      Ianacontact&hms.se
+43145
+  Vasily Nushtakin (Home Router)
+    Vasily Nushtakin
+      nushtakin.vasily&gmail.com
+43146
+  VanWesten.net
+    Erik Jan van Westen
+      erik&vanwesten.net
+43147
+  Best Theratronics Ltd.
+    Lloyd Smith
+      lloyd.smith&theratronics.ca
 
 
 End of Document
index 719f2af1ee675bf54e5ec76eeb932ee52f863c5d..5b2d846af1f93dc0cadca0399c1ce1284e45ac6e 100644 (file)
 #include "except.h"
 
 #ifdef _WIN32
-#if _MSC_VER < 1500
-/* IsDebuggerPresent() needs this #define! */
-#define _WIN32_WINNT 0x0400
-#endif
 #include <windows.h>
 #include "exceptions.h"
 #endif
 
-#define XCEPT_BUFFER_SIZE      1024
+#define XCEPT_BUFFER_SIZE 1024
 
 #ifdef KAZLIB_POSIX_THREADS
 
@@ -94,23 +90,23 @@ int except_init(void)
     assert (init_counter < INT_MAX);
 
     if (init_counter++ == 0) {
-       int top_ok = (pthread_key_create(&top_key, 0) == 0);
-       int uh_ok = (pthread_key_create(&uh_key, 0) == 0);
-       int alloc_ok = (pthread_key_create(&alloc_key, 0) == 0);
-       int dealloc_ok = (pthread_key_create(&dealloc_key, 0) == 0);
-
-       if (!top_ok || !uh_ok || !alloc_ok || !dealloc_ok) {
-           retval = 0;
-           init_counter = 0;
-           if (top_ok)
-               pthread_key_delete(top_key);
-           if (uh_ok)
-               pthread_key_delete(uh_key);
-           if (alloc_ok)
-               pthread_key_delete(alloc_key);
-           if (dealloc_ok)
-               pthread_key_delete(dealloc_key);
-       }
+        int top_ok = (pthread_key_create(&top_key, 0) == 0);
+        int uh_ok = (pthread_key_create(&uh_key, 0) == 0);
+        int alloc_ok = (pthread_key_create(&alloc_key, 0) == 0);
+        int dealloc_ok = (pthread_key_create(&dealloc_key, 0) == 0);
+
+        if (!top_ok || !uh_ok || !alloc_ok || !dealloc_ok) {
+            retval = 0;
+            init_counter = 0;
+            if (top_ok)
+                pthread_key_delete(top_key);
+            if (uh_ok)
+                pthread_key_delete(uh_key);
+            if (alloc_ok)
+                pthread_key_delete(alloc_key);
+            if (dealloc_ok)
+                pthread_key_delete(dealloc_key);
+        }
     }
 
     pthread_mutex_unlock(&init_mtx);
@@ -125,16 +121,16 @@ void except_deinit(void)
     assert (init_counter > 0);
 
     if (--init_counter == 0) {
-       pthread_key_delete(top_key);
-       pthread_key_delete(uh_key);
-       pthread_key_delete(alloc_key);
-       pthread_key_delete(dealloc_key);
+        pthread_key_delete(top_key);
+        pthread_key_delete(uh_key);
+        pthread_key_delete(alloc_key);
+        pthread_key_delete(dealloc_key);
     }
 
     pthread_mutex_unlock(&init_mtx);
 }
 
-#else  /* no thread support */
+#else /* no thread support */
 
 static int init_counter;
 static void unhandled_catcher(except_t *);
@@ -179,9 +175,9 @@ void except_deinit(void)
 static int match(const volatile except_id_t *thrown, const except_id_t *caught)
 {
     int group_match = (caught->except_group == XCEPT_GROUP_ANY ||
-       caught->except_group == thrown->except_group);
+        caught->except_group == thrown->except_group);
     int code_match = (caught->except_code == XCEPT_CODE_ANY ||
-       caught->except_code == thrown->except_code);
+        caught->except_code == thrown->except_code);
 
     return group_match && code_match;
 }
@@ -191,31 +187,31 @@ G_GNUC_NORETURN WS_MSVC_NORETURN static void do_throw(except_t *except)
     struct except_stacknode *top;
 
     assert (except->except_id.except_group != 0 &&
-       except->except_id.except_code != 0);
+        except->except_id.except_code != 0);
 
     for (top = get_top(); top != 0; top = top->except_down) {
-       if (top->except_type == XCEPT_CLEANUP) {
-           top->except_info.except_cleanup->except_func(top->except_info.except_cleanup->except_context);
-       } else {
-           struct except_catch *catcher = top->except_info.except_catcher;
-           const except_id_t *pi = catcher->except_id;
-           size_t i;
-
-           assert (top->except_type == XCEPT_CATCHER);
-           except_free(catcher->except_obj.except_dyndata);
-
-           for (i = 0; i < catcher->except_size; pi++, i++) {
-               if (match(&except->except_id, pi)) {
-                   catcher->except_obj = *except;
-                   set_top(top);
-                   longjmp(catcher->except_jmp, 1);
-               }
-           }
-       }
+        if (top->except_type == XCEPT_CLEANUP) {
+            top->except_info.except_cleanup->except_func(top->except_info.except_cleanup->except_context);
+        } else {
+            struct except_catch *catcher = top->except_info.except_catcher;
+            const except_id_t *pi = catcher->except_id;
+            size_t i;
+
+            assert (top->except_type == XCEPT_CATCHER);
+            except_free(catcher->except_obj.except_dyndata);
+
+            for (i = 0; i < catcher->except_size; pi++, i++) {
+                if (match(&except->except_id, pi)) {
+                    catcher->except_obj = *except;
+                    set_top(top);
+                    longjmp(catcher->except_jmp, 1);
+                }
+            }
+        }
     }
 
     set_top(top);
-    get_catcher()(except);     /* unhandled exception */
+    get_catcher()(except); /* unhandled exception */
     abort();
 }
 
@@ -223,12 +219,12 @@ static void unhandled_catcher(except_t *except)
 {
     if (except->except_message == NULL) {
         fprintf(stderr, "Unhandled exception (group=%ld, code=%ld)\n",
-               except->except_id.except_group,
-               except->except_id.except_code);
+                except->except_id.except_group,
+                except->except_id.except_code);
     } else {
         fprintf(stderr, "Unhandled exception (\"%s\", group=%ld, code=%ld)\n",
-               except->except_message, except->except_id.except_group,
-               except->except_id.except_code);
+                except->except_message, except->except_id.except_group,
+                except->except_id.except_code);
     }
     abort();
 }
@@ -240,7 +236,7 @@ static void stack_push(struct except_stacknode *node)
 }
 
 void except_setup_clean(struct except_stacknode *esn,
-       struct except_cleanup *ecl, void (*cleanf)(void *), void *context)
+        struct except_cleanup *ecl, void (*cleanf)(void *), void *context)
 {
     esn->except_type = XCEPT_CLEANUP;
     ecl->except_func = cleanf;
@@ -250,7 +246,7 @@ void except_setup_clean(struct except_stacknode *esn,
 }
 
 void except_setup_try(struct except_stacknode *esn,
-       struct except_catch *ech, const except_id_t id[], size_t size)
+        struct except_catch *ech, const except_id_t id[], size_t size)
 {
    ech->except_id = id;
    ech->except_size = size;
@@ -373,7 +369,7 @@ void *except_alloc(size_t size)
     void *ptr = get_alloc()(size);
 
     if (ptr == 0)
-       except_throw(XCEPT_BAD_ALLOC, 0, "out of memory");
+        except_throw(XCEPT_BAD_ALLOC, 0, "out of memory");
     return ptr;
 }
 
@@ -399,7 +395,7 @@ static void bottom_level(void)
     fgets(buf, sizeof buf, stdin);
 
     if (buf[0] >= 0 && toupper(buf[0]) == 'Y')
-       except_throw(1, 1, "nasty exception");
+        except_throw(1, 1, "nasty exception");
 }
 
 static void top_level(void)
@@ -422,33 +418,33 @@ int main(int argc, char **argv)
     /* outer */
     except_try_push(catch, 2, &ex);
     if (!ex) {
-       /* inner */
-       except_try_push(catch, 2, &ex);
-       if (!ex) {
-           top_level();
-       } else {
-           /* inner catch */
-           msg = except_message(ex);
-           if (msg == NULL) {
-               printf("caught exception (inner): s=%ld, c=%ld\n",
-                      except_group(ex), except_code(ex));
-           } else {
-               printf("caught exception (inner): \"%s\", s=%ld, c=%ld\n",
-                      msg, except_group(ex), except_code(ex));
-           }
-           except_rethrow(ex);
-       }
-       except_try_pop();
+        /* inner */
+        except_try_push(catch, 2, &ex);
+        if (!ex) {
+            top_level();
+        } else {
+            /* inner catch */
+            msg = except_message(ex);
+            if (msg == NULL) {
+                printf("caught exception (inner): s=%ld, c=%ld\n",
+                       except_group(ex), except_code(ex));
+            } else {
+                printf("caught exception (inner): \"%s\", s=%ld, c=%ld\n",
+                       msg, except_group(ex), except_code(ex));
+            }
+            except_rethrow(ex);
+        }
+        except_try_pop();
     } else {
-       /* outer catch */
-       msg = except_message(ex);
-       if (msg == NULL) {
-           printf("caught exception (outer): s=%ld, c=%ld\n",
-                  except_group(ex), except_code(ex));
-       } else {
-           printf("caught exception (outer): \"%s\", s=%ld, c=%ld\n",
-                  except_message(ex), except_group(ex), except_code(ex));
-       }
+        /* outer catch */
+        msg = except_message(ex);
+        if (msg == NULL) {
+            printf("caught exception (outer): s=%ld, c=%ld\n",
+                   except_group(ex), except_code(ex));
+        } else {
+            printf("caught exception (outer): \"%s\", s=%ld, c=%ld\n",
+                   except_message(ex), except_group(ex), except_code(ex));
+        }
     }
     except_try_pop();
     except_throw(99, 99, "exception in main");
@@ -457,3 +453,16 @@ int main(int argc, char **argv)
 
 
 #endif
+
+/*
+ * Editor modelines  -  http://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:
+ */
index a9dcfb437c369152a543a23477b2e0010a859efc..cdadaa3bfb5b44fbff639a73d7a0236bd33afe26 100644 (file)
@@ -38,8 +38,8 @@
 #include <assert.h>
 #include "ws_symbol_export.h"
 
-#define XCEPT_GROUP_ANY        0
-#define XCEPT_CODE_ANY 0
+#define XCEPT_GROUP_ANY 0
+#define XCEPT_CODE_ANY  0
 #define XCEPT_BAD_ALLOC 1
 
 #ifdef __cplusplus
@@ -79,16 +79,16 @@ struct except_stacknode {
     struct except_stacknode *except_down;
     enum except_stacktype except_type;
     union {
-       struct except_catch *except_catcher;
-       struct except_cleanup *except_cleanup;
+        struct except_catch *except_catcher;
+        struct except_cleanup *except_cleanup;
     } except_info;
 };
 
 /* private functions made external so they can be used in macros */
 extern void except_setup_clean(struct except_stacknode *,
-       struct except_cleanup *, void (*)(void *), void *);
+        struct except_cleanup *, void (*)(void *), void *);
 WS_DLL_PUBLIC void except_setup_try(struct except_stacknode *,
-       struct except_catch *, const except_id_t [], size_t);
+        struct except_catch *, const except_id_t [], size_t);
 WS_DLL_PUBLIC struct except_stacknode *except_pop(void);
 
 /* public interface functions */
@@ -125,61 +125,74 @@ WS_DLL_PUBLIC void except_free(void *);
  * void except_try_pop(void);
  */
 
-#define except_cleanup_push(F, C)                              \
-    {                                                          \
-       struct except_stacknode except_sn;                      \
-       struct except_cleanup except_cl;                        \
-       except_setup_clean(&except_sn, &except_cl, F, C)
+#define except_cleanup_push(F, C)                               \
+    {                                                           \
+        struct except_stacknode except_sn;                      \
+        struct except_cleanup except_cl;                        \
+        except_setup_clean(&except_sn, &except_cl, F, C)
 
-#define except_cleanup_pop(E)                                  \
-       except_pop();                                           \
-       if (E)                                                  \
-           except_cl.except_func(except_cl.except_context);    \
+#define except_cleanup_pop(E)                                   \
+        except_pop();                                           \
+        if (E)                                                  \
+            except_cl.except_func(except_cl.except_context);    \
     }
 
-#define except_checked_cleanup_pop(F, E)                       \
-       except_pop();                                           \
-       assert (except_cl.except_func == (F));                  \
-       if (E)                                                  \
-           except_cl.except_func(except_cl.except_context);    \
+#define except_checked_cleanup_pop(F, E)                        \
+            except_pop();                                       \
+        assert (except_cl.except_func == (F));                  \
+        if (E)                                                  \
+            except_cl.except_func(except_cl.except_context);    \
     }
 
 
 /* --- Variants to allow nesting of except_cleanup_push w/o "shadowing" variables */
-#define except_cleanup_push_pfx(pfx, F, C)                             \
-    {                                                                  \
-       struct except_stacknode pfx##_except_sn;                        \
-       struct except_cleanup pfx##_except_cl;                          \
-       except_setup_clean(&pfx##_except_sn, &pfx##_except_cl, F, C)
-
-#define except_cleanup_pop_pfx(pfx, E)                                 \
-       except_pop();                                                   \
-       if (E)                                                          \
-           pfx##_except_cl.except_func(pfx##_except_cl.except_context);\
+#define except_cleanup_push_pfx(pfx, F, C)                      \
+    {                                                           \
+        struct except_stacknode pfx##_except_sn;                \
+        struct except_cleanup pfx##_except_cl;                  \
+        except_setup_clean(&pfx##_except_sn, &pfx##_except_cl, F, C)
+
+#define except_cleanup_pop_pfx(pfx, E)                          \
+        except_pop();                                           \
+        if (E)                                                  \
+            pfx##_except_cl.except_func(pfx##_except_cl.except_context);\
     }
 
-#define except_checked_cleanup_pop_pfx(pfx, F, E)                      \
-       except_pop();                                                   \
-       assert (pfx##_except_cl.except_func == (F));                    \
-       if (E)                                                          \
-           pfx##_except_cl.except_func(pfx##_except_cl.except_context);\
+#define except_checked_cleanup_pop_pfx(pfx, F, E)               \
+            except_pop();                                       \
+        assert (pfx##_except_cl.except_func == (F));            \
+        if (E)                                                  \
+            pfx##_except_cl.except_func(pfx##_except_cl.except_context);\
     }
 /* ---------- */
 
 
-#define except_try_push(ID, NUM, PPE)                          \
-     {                                                         \
-       struct except_stacknode except_sn;                      \
-       struct except_catch except_ch;                          \
-       except_setup_try(&except_sn, &except_ch, ID, NUM);      \
-       if (setjmp(except_ch.except_jmp))                       \
-           *(PPE) = &except_ch.except_obj;                     \
-       else                                                    \
-           *(PPE) = 0
+#define except_try_push(ID, NUM, PPE)                           \
+     {                                                          \
+        struct except_stacknode except_sn;                      \
+        struct except_catch except_ch;                          \
+        except_setup_try(&except_sn, &except_ch, ID, NUM);      \
+        if (setjmp(except_ch.except_jmp))                       \
+            *(PPE) = &except_ch.except_obj;                     \
+        else                                                    \
+            *(PPE) = 0
 
-#define except_try_pop()                                       \
-       except_free(except_ch.except_obj.except_dyndata);       \
-       except_pop();                                           \
+#define except_try_pop()                                        \
+        except_free(except_ch.except_obj.except_dyndata);       \
+        except_pop();                                           \
     }
 
 #endif /* XCEPT_H */
+
+/*
+ * Editor modelines  -  http://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:
+ */
index 62fb62cbd3b4479e94199cf13b7824b8cd6e99b2..bb91f277971bcbf3544ab5b95f51c6806843d224 100644 (file)
@@ -50,14 +50,12 @@ bytes_fvalue_free(fvalue_t *fv)
 
 
 static void
-bytes_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+bytes_fvalue_set(fvalue_t *fv, GByteArray *value)
 {
-       g_assert(already_copied);
-
        /* Free up the old value, if we have one */
        bytes_fvalue_free(fv);
 
-       fv->value.bytes = (GByteArray *)value;
+       fv->value.bytes = value;
 }
 
 static int
@@ -163,7 +161,7 @@ bytes_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
 }
 
 static void
-common_fvalue_set(fvalue_t *fv, guint8* data, guint len)
+common_fvalue_set(fvalue_t *fv, const guint8* data, guint len)
 {
        /* Free up the old value, if we have one */
        bytes_fvalue_free(fv);
@@ -173,46 +171,39 @@ common_fvalue_set(fvalue_t *fv, guint8* data, guint len)
 }
 
 static void
-ax25_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ax25_fvalue_set(fvalue_t *fv, const guint8 *value)
 {
-       g_assert(!already_copied);
-       common_fvalue_set(fv, (guint8 *)value, FT_AX25_ADDR_LEN);
+       common_fvalue_set(fv, value, FT_AX25_ADDR_LEN);
 }
 
 static void
-vines_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+vines_fvalue_set(fvalue_t *fv, const guint8 *value)
 {
-       g_assert(!already_copied);
-       common_fvalue_set(fv, (guint8 *)value, FT_VINES_ADDR_LEN);
+       common_fvalue_set(fv, value, FT_VINES_ADDR_LEN);
 }
 
 static void
-ether_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ether_fvalue_set(fvalue_t *fv, const guint8 *value)
 {
-       g_assert(!already_copied);
-       common_fvalue_set(fv, (guint8*)value, FT_ETHER_LEN);
+       common_fvalue_set(fv, value, FT_ETHER_LEN);
 }
 
 static void
-oid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+oid_fvalue_set(fvalue_t *fv, GByteArray *value)
 {
-       g_assert(already_copied);
-
        /* Free up the old value, if we have one */
        bytes_fvalue_free(fv);
 
-       fv->value.bytes = (GByteArray *)value;
+       fv->value.bytes = value;
 }
 
 static void
-system_id_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+system_id_fvalue_set(fvalue_t *fv, GByteArray *value)
 {
-       g_assert(already_copied);
-
        /* Free up the old value, if we have one */
        bytes_fvalue_free(fv);
 
-       fv->value.bytes = (GByteArray *)value;
+       fv->value.bytes = value;
 }
 
 static gpointer
@@ -222,13 +213,13 @@ value_get(fvalue_t *fv)
 }
 
 static gboolean
-bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+bytes_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
 {
        GByteArray      *bytes;
 
        bytes = g_byte_array_new();
 
-       g_byte_array_append(bytes, (guint8 *)s, (guint)strlen(s));
+       g_byte_array_append(bytes, (const guint8 *)s, (guint)strlen(s));
 
        /* Free up the old value, if we have one */
        bytes_fvalue_free(fv);
@@ -238,7 +229,7 @@ bytes_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
 }
 
 static gboolean
-bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+bytes_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        GByteArray      *bytes;
        gboolean        res;
@@ -263,7 +254,7 @@ bytes_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Log
 }
 
 static gboolean
-ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+ax25_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        /*
         * Don't log a message if this fails; we'll try looking it
@@ -321,7 +312,7 @@ ax25_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
 }
 
 static gboolean
-vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+vines_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        /*
         * Don't log a message if this fails; we'll try looking it
@@ -350,7 +341,7 @@ vines_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
 }
 
 static gboolean
-ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+ether_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        guint8  *mac;
 
@@ -381,12 +372,12 @@ ether_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc
                return FALSE;
        }
 
-       ether_fvalue_set(fv, mac, FALSE);
+       ether_fvalue_set(fv, mac);
        return TRUE;
 }
 
 static gboolean
-oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        GByteArray      *bytes;
        gboolean        res;
@@ -420,7 +411,7 @@ oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFu
 }
 
 static gboolean
-rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+rel_oid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        GByteArray      *bytes;
        gboolean        res;
@@ -448,7 +439,7 @@ rel_oid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, L
 }
 
 static gboolean
-system_id_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+system_id_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        /*
         * Don't log a message if this fails; we'll try looking it
@@ -677,28 +668,33 @@ ftype_register_bytes(void)
 {
 
        static ftype_t bytes_type = {
-               FT_BYTES,                                       /* ftype */
-               "FT_BYTES",                                     /* name */
+               FT_BYTES,                       /* ftype */
+               "FT_BYTES",                     /* name */
                "Sequence of bytes",            /* pretty_name */
-               0,                                                      /* wire_size */
-               bytes_fvalue_new,                       /* new_value */
-               bytes_fvalue_free,                      /* free_value */
+               0,                              /* wire_size */
+               bytes_fvalue_new,               /* new_value */
+               bytes_fvalue_free,              /* free_value */
                bytes_from_unparsed,            /* val_from_unparsed */
-               bytes_from_string,                      /* val_from_string */
-               bytes_to_repr,                          /* val_to_string_repr */
-               bytes_repr_len,                         /* len_string_repr */
-
-               bytes_fvalue_set,                       /* set_value */
-               NULL,                                           /* set_value_uinteger */
-               NULL,                                           /* set_value_sinteger */
-               NULL,                                           /* set_value_integer64 */
-               NULL,                                           /* set_value_floating */
-
-               value_get,                                      /* get_value */
-               NULL,                                           /* get_value_uinteger */
-               NULL,                                           /* get_value_sinteger */
-               NULL,                                           /* get_value_integer64 */
-               NULL,                                           /* get_value_floating */
+               bytes_from_string,              /* val_from_string */
+               bytes_to_repr,                  /* val_to_string_repr */
+               bytes_repr_len,                 /* len_string_repr */
+
+               bytes_fvalue_set,               /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               NULL,                           /* set_value_uinteger */
+               NULL,                           /* set_value_sinteger */
+               NULL,                           /* set_value_integer64 */
+               NULL,                           /* set_value_floating */
+
+               value_get,                      /* get_value */
+               NULL,                           /* get_value_uinteger */
+               NULL,                           /* get_value_sinteger */
+               NULL,                           /* get_value_integer64 */
+               NULL,                           /* get_value_floating */
 
                cmp_eq,
                cmp_ne,
@@ -726,7 +722,12 @@ ftype_register_bytes(void)
                bytes_to_repr,                  /* val_to_string_repr */
                bytes_repr_len,                 /* len_string_repr */
 
-               bytes_fvalue_set,               /* set_value */
+               bytes_fvalue_set,               /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -764,7 +765,12 @@ ftype_register_bytes(void)
                bytes_to_repr,                  /* val_to_string_repr */
                bytes_repr_len,                 /* len_string_repr */
 
-               ax25_fvalue_set,                /* set_value */
+               NULL,                           /* set_value_byte_array */
+               ax25_fvalue_set,                /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_integer */
                NULL,                           /* set_value_integer64 */
@@ -797,12 +803,17 @@ ftype_register_bytes(void)
                FT_VINES_ADDR_LEN,              /* wire_size */
                bytes_fvalue_new,               /* new_value */
                bytes_fvalue_free,              /* free_value */
-               vines_from_unparsed,    /* val_from_unparsed */
+               vines_from_unparsed,            /* val_from_unparsed */
                NULL,                           /* val_from_string */
                bytes_to_repr,                  /* val_to_string_repr */
                bytes_repr_len,                 /* len_string_repr */
 
-               vines_fvalue_set,               /* set_value */
+               NULL,                           /* set_value_byte_array */
+               vines_fvalue_set,               /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_integer */
                NULL,                           /* set_value_integer64 */
@@ -840,7 +851,12 @@ ftype_register_bytes(void)
                bytes_to_repr,                  /* val_to_string_repr */
                bytes_repr_len,                 /* len_string_repr */
 
-               ether_fvalue_set,               /* set_value */
+               NULL,                           /* set_value_byte_array */
+               ether_fvalue_set,               /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -878,7 +894,12 @@ ftype_register_bytes(void)
                oid_to_repr,                    /* val_to_string_repr */
                oid_repr_len,                   /* len_string_repr */
 
-               oid_fvalue_set,         /* set_value */
+               oid_fvalue_set,         /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -916,7 +937,12 @@ ftype_register_bytes(void)
                rel_oid_to_repr,                /* val_to_string_repr */
                rel_oid_repr_len,               /* len_string_repr */
 
-               oid_fvalue_set,         /* set_value (same as full oid) */
+               oid_fvalue_set,         /* set_value_byte_array (same as full oid) */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -954,7 +980,12 @@ ftype_register_bytes(void)
                system_id_to_repr,              /* val_to_string_repr */
                bytes_repr_len,                 /* len_string_repr */
 
-               system_id_fvalue_set,   /* set_value */
+               system_id_fvalue_set,   /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index 6c81838cb9eaee37d1c255cdc428c5fece2e5316..7df01003bb042629f4b0e477db0569342d980fc2 100644 (file)
@@ -49,7 +49,7 @@ value_get_floating(fvalue_t *fv)
 }
 
 static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        char    *endptr = NULL;
 
@@ -166,7 +166,12 @@ ftype_register_double(void)
                float_val_to_repr,              /* val_to_string_repr */
                float_val_repr_len,             /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_snteger */
                NULL,                           /* set_value_integer64 */
@@ -204,7 +209,12 @@ ftype_register_double(void)
                double_val_to_repr,             /* val_to_string_repr */
                double_val_repr_len,            /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index 191694bee67bbb31a68aff1e824ea55c6312f9c6..205ffc453dac450d14df20eff9277b558e80b032 100644 (file)
 #include <epan/to_str.h>
 
 static void
-guid_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+guid_fvalue_set_guid(fvalue_t *fv, const e_guid_t *value)
 {
-    g_assert(!already_copied);
-    fv->value.guid = *(e_guid_t*)value;
+    fv->value.guid = *value;
 }
 
 static gpointer
@@ -44,10 +43,11 @@ value_get(fvalue_t *fv)
 }
 
 static gboolean
-get_guid(char *s, e_guid_t *guid)
+get_guid(const char *s, e_guid_t *guid)
 {
     size_t i, n;
-    char *p, digits[9];
+    const char *p;
+    char digits[9];
     static const char fmt[] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
 
     n = strlen(s);
@@ -87,7 +87,7 @@ get_guid(char *s, e_guid_t *guid)
 }
 
 static gboolean
-guid_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+guid_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
      e_guid_t guid;
 
@@ -140,7 +140,12 @@ ftype_register_guid(void)
         guid_to_repr,        /* val_to_string_repr */
         guid_repr_len,       /* len_string_repr */
 
-        guid_fvalue_set,     /* set_value */
+        NULL,                /* set_value_byte_array */
+        NULL,                /* set_value_bytes */
+        guid_fvalue_set_guid, /* set_value_guid */
+        NULL,                /* set_value_time */
+        NULL,                /* set_value_string */
+        NULL,                /* set_value_tvbuff */
         NULL,                /* set_value_uinteger */
         NULL,                /* set_value_sinteger */
         NULL,                /* set_value_integer64 */
index be401a0b3ad7b827587be77ca2f135c87f862f4a..aeaf7507101dd619ebe1f79387006797e0075236 100644 (file)
@@ -64,7 +64,7 @@ get_sinteger(fvalue_t *fv)
 
 
 static gboolean
-uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
+uint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
                   guint32 max)
 {
        unsigned long value;
@@ -117,31 +117,31 @@ uint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF
 }
 
 static gboolean
-uint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT32);
 }
 
 static gboolean
-uint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return uint_from_unparsed (fv, s, allow_partial_value, logfunc, 0xFFFFFF);
 }
 
 static gboolean
-uint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT16);
 }
 
 static gboolean
-uint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+uint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return uint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXUINT8);
 }
 
 static gboolean
-sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
+sint_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc,
                   gint32 max, gint32 min)
 {
        long value;
@@ -202,25 +202,25 @@ sint_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogF
 }
 
 static gboolean
-sint32_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint32_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT32, G_MININT32);
 }
 
 static gboolean
-sint24_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint24_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return sint_from_unparsed (fv, s, allow_partial_value, logfunc, 0x7FFFFF, -0x800000);
 }
 
 static gboolean
-sint16_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint16_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT16, G_MININT16);
 }
 
 static gboolean
-sint8_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value, LogFunc logfunc)
+sint8_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        return sint_from_unparsed (fv, s, allow_partial_value, logfunc, G_MAXINT8, G_MININT8);
 }
@@ -258,7 +258,7 @@ uinteger_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, char *buf)
 }
 
 static gboolean
-ipxnet_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+ipxnet_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        guint32         val;
        gboolean        known;
@@ -379,7 +379,7 @@ get_integer64(fvalue_t *fv)
 }
 
 static gboolean
-uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+uint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        guint64 value;
        char    *endptr;
@@ -424,7 +424,7 @@ uint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, Lo
 }
 
 static gboolean
-sint64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+sint64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        gint64 value;
        char   *endptr;
@@ -613,7 +613,7 @@ bool_ne(const fvalue_t *a, const fvalue_t *b)
 
 /* EUI64-specific */
 static gboolean
-eui64_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+eui64_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
 
        /*
@@ -664,7 +664,12 @@ ftype_register_integers(void)
                uinteger_to_repr,               /* val_to_string_repr */
                uinteger_repr_len,              /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                set_uinteger,           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -701,8 +706,13 @@ ftype_register_integers(void)
                uinteger_to_repr,               /* val_to_string_repr */
                uinteger_repr_len,              /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_uinteger */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
@@ -738,8 +748,13 @@ ftype_register_integers(void)
                uinteger_to_repr,               /* val_to_string_repr */
                uinteger_repr_len,              /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_integer */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_integer */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
@@ -775,14 +790,19 @@ ftype_register_integers(void)
                uinteger_to_repr,               /* val_to_string_repr */
                uinteger_repr_len,              /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_uinteger */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
-               get_uinteger,           /* get_value_integer */
+               get_uinteger,                   /* get_value_integer */
                NULL,                           /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
@@ -812,16 +832,21 @@ ftype_register_integers(void)
                uinteger64_to_repr,             /* val_to_string_repr */
                uinteger64_repr_len,            /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
-               set_integer64,          /* set_value_integer64 */
+               set_integer64,                  /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
                NULL,                           /* get_value_uinteger */
                NULL,                           /* get_value_sinteger */
-               get_integer64,          /* get_value_integer64 */
+               get_integer64,                  /* get_value_integer64 */
                NULL,                           /* get_value_floating */
 
                cmp_eq64,
@@ -849,9 +874,14 @@ ftype_register_integers(void)
                integer_to_repr,                /* val_to_string_repr */
                integer_repr_len,               /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
-               set_sinteger,           /* set_value_sinteger */
+               set_sinteger,                   /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
@@ -886,15 +916,20 @@ ftype_register_integers(void)
                integer_to_repr,                /* val_to_string_repr */
                integer_repr_len,               /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
-               set_sinteger,           /* set_value_sinteger */
+               set_sinteger,                   /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
                NULL,                           /* get_value_uinteger */
-               get_sinteger,           /* get_value_sinteger */
+               get_sinteger,                   /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
 
@@ -923,9 +958,14 @@ ftype_register_integers(void)
                integer_to_repr,                /* val_to_string_repr */
                integer_repr_len,               /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
-               set_sinteger,           /* set_value_sinteger */
+               set_sinteger,                   /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
@@ -960,15 +1000,20 @@ ftype_register_integers(void)
                integer_to_repr,                /* val_to_string_repr */
                integer_repr_len,               /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
-               set_sinteger,           /* set_value_sinteger */
+               set_sinteger,                   /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
                NULL,                           /* get_value_uinteger */
-               get_sinteger,           /* get_value_sinteger */
+               get_sinteger,                   /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
 
@@ -997,16 +1042,21 @@ ftype_register_integers(void)
                integer64_to_repr,              /* val_to_string_repr */
                integer64_repr_len,             /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
-               set_integer64,          /* set_value_integer64 */
+               set_integer64,                  /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
                NULL,                           /* get_value_uinteger */
                NULL,                           /* get_value_sinteger */
-               get_integer64,          /* get_value_integer64 */
+               get_integer64,                  /* get_value_integer64 */
                NULL,                           /* get_value_floating */
 
                cmp_eq64,
@@ -1034,14 +1084,19 @@ ftype_register_integers(void)
                boolean_to_repr,                /* val_to_string_repr */
                boolean_repr_len,               /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_uinteger */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
-               get_uinteger,           /* get_value_uinteger */
+               get_uinteger,                   /* get_value_uinteger */
                NULL,                           /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
@@ -1072,14 +1127,19 @@ ftype_register_integers(void)
                ipxnet_to_repr,                 /* val_to_string_repr */
                ipxnet_repr_len,                /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_uinteger */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_uinteger */
                NULL,                           /* get_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
-               get_uinteger,           /* get_value_uinteger */
+               get_uinteger,                   /* get_value_uinteger */
                NULL,                           /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
@@ -1110,14 +1170,19 @@ ftype_register_integers(void)
                uinteger_to_repr,               /* val_to_string_repr */
                uinteger_repr_len,              /* len_string_repr */
 
-               NULL,                           /* set_value */
-               set_uinteger,           /* set_value_uinteger */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
+               set_uinteger,                   /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
                NULL,                           /* set_value_floating */
 
                NULL,                           /* get_value */
-               get_uinteger,           /* get_value_uinteger */
+               get_uinteger,                   /* get_value_uinteger */
                NULL,                           /* get_value_sinteger */
                NULL,                           /* get_value_integer64 */
                NULL,                           /* get_value_floating */
@@ -1145,10 +1210,15 @@ ftype_register_integers(void)
                NULL,                           /* free_value */
                eui64_from_unparsed,            /* val_from_unparsed */
                NULL,                           /* val_from_string */
-               eui64_to_repr,          /* val_to_string_repr */
-               eui64_repr_len,         /* len_string_repr */
-
-               NULL,                           /* set_value */
+               eui64_to_repr,                  /* val_to_string_repr */
+               eui64_repr_len,                 /* len_string_repr */
+
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                set_integer64,                  /* set_value_integer64 */
index f3d59c4bc8818a9ebd4f51b69e87481dbe82a69a..b8f70ce91a2988e1f48d34ef2f1fa2224e64c44b 100644 (file)
@@ -44,13 +44,13 @@ value_get(fvalue_t *fv)
 }
 
 static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        guint32 addr;
        unsigned int nmask_bits;
 
-       char *has_slash;
-       char *net_str, *addr_str;
+       const char *has_slash;
+       const char *net_str, *addr_str;
        fvalue_t *nmask_fvalue;
 
        /* Look for CIDR: Is there a single slash in the string? */
@@ -178,7 +178,12 @@ ftype_register_ipv4(void)
                val_to_repr,                    /* val_to_string_repr */
                val_repr_len,                   /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                set_uinteger,           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index 00890b61995d7290d30d492dce3f631df587972e..47a6624319155a2997e319c88bb2da4e49c393d1 100644 (file)
 #include <epan/emem.h>
 
 static void
-ipv6_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+ipv6_fvalue_set(fvalue_t *fv, const guint8 *value)
 {
-       g_assert(!already_copied);
-
        memcpy(fv->value.ipv6.addr.bytes, value, FT_IPv6_LEN);
        fv->value.ipv6.prefix = 128;
 }
 
 static gboolean
-ipv6_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+ipv6_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
-       char *has_slash, *addr_str;
+       const char *has_slash, *addr_str;
        unsigned int nmask_bits;
        fvalue_t *nmask_fvalue;
 
@@ -227,7 +225,12 @@ ftype_register_ipv6(void)
                ipv6_to_repr,                   /* val_to_string_repr */
                ipv6_repr_len,                  /* len_string_repr */
 
-               ipv6_fvalue_set,                /* set_value */
+               NULL,                           /* set_value_byte_array */
+               ipv6_fvalue_set,                /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index 956d7e9259346749b2ac71a6ad8fbc1384d30b73..6359fd99295614c870ace449a66bf373623afeb5 100644 (file)
@@ -41,7 +41,12 @@ ftype_register_none(void)
                NULL,                           /* val_to_string_repr */
                NULL,                           /* len_string_repr */
 
-               NULL,                           /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index bce9616d7e200fb70ac023109daef30787ee1bc5..ac2d106cd16343ee3faa1d22d076a830603e4905 100644 (file)
@@ -75,7 +75,7 @@ raw_flag_needed(const gchar *pattern)
 /* Generate a FT_PCRE from a parsed string pattern.
  * Uses the specified logfunc() to report errors. */
 static gboolean
-val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc)
+val_from_string(fvalue_t *fv, const char *pattern, LogFunc logfunc)
 {
     GError *regex_error = NULL;
     GRegexCompileFlags cflags = G_REGEX_OPTIMIZE;
@@ -113,7 +113,7 @@ val_from_string(fvalue_t *fv, char *pattern, LogFunc logfunc)
 /* Generate a FT_PCRE from an unparsed string pattern.
  * Uses the specified logfunc() to report errors. */
 static gboolean
-val_from_unparsed(fvalue_t *fv, char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *pattern, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
     g_assert(! allow_partial_value);
 
@@ -137,13 +137,12 @@ gregex_to_repr(fvalue_t *fv, ftrepr_t rtype, char *buf)
 /* BEHOLD - value contains the string representation of the regular expression,
  * and we want to store the compiled PCRE RE object into the value. */
 static void
-gregex_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+gregex_fvalue_set(fvalue_t *fv, const char *value)
 {
     g_assert(value != NULL);
     /* Free up the old value, if we have one */
     gregex_fvalue_free(fv);
-    g_assert(! already_copied);
-    val_from_unparsed(fv, (char *)value, FALSE, NULL);
+    val_from_unparsed(fv, value, FALSE, NULL);
 }
 
 static gpointer
@@ -167,7 +166,12 @@ ftype_register_pcre(void)
         gregex_to_repr,     /* val_to_string_repr */
         gregex_repr_len,    /* len_string_repr */
 
-        gregex_fvalue_set,  /* set_value */
+        NULL,               /* set_value_byte_array */
+        NULL,               /* set_value_bytes */
+        NULL,               /* set_value_guid */
+        NULL,               /* set_value_time */
+        gregex_fvalue_set,  /* set_value_string */
+        NULL,               /* set_value_tvbuff */
         NULL,               /* set_value_uinteger */
         NULL,               /* set_value_sinteger */
         NULL,               /* set_value_integer64 */
index db0c62796013d70e30b5fbfd58d23f1e13431838..03bb1647a52a339d313463b472d1b69aab444cb0 100644 (file)
@@ -45,17 +45,14 @@ string_fvalue_free(fvalue_t *fv)
 }
 
 static void
-string_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+string_fvalue_set_string(fvalue_t *fv, const gchar *value)
 {
        DISSECTOR_ASSERT(value != NULL);
 
        /* Free up the old value, if we have one */
        string_fvalue_free(fv);
 
-       if (already_copied)
-               fv->value.string = (gchar *)value; /* must be g_ allocated */
-       else
-               fv->value.string = (gchar *)g_strdup((const gchar *)value);
+       fv->value.string = (gchar *)g_strdup(value);
 }
 
 static int
@@ -95,7 +92,7 @@ value_get(fvalue_t *fv)
 }
 
 static gboolean
-val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
 {
        /* Free up the old value, if we have one */
        string_fvalue_free(fv);
@@ -105,7 +102,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
 }
 
 static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        fvalue_t *fv_bytes;
 
@@ -247,7 +244,12 @@ ftype_register_string(void)
                string_to_repr,                 /* val_to_string_repr */
                string_repr_len,                /* len_string_repr */
 
-               string_fvalue_set,              /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               string_fvalue_set_string,       /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -284,7 +286,12 @@ ftype_register_string(void)
                string_to_repr,                 /* val_to_string_repr */
                string_repr_len,                /* len_string_repr */
 
-               string_fvalue_set,              /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               string_fvalue_set_string,       /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -321,7 +328,12 @@ ftype_register_string(void)
                string_to_repr,                 /* val_to_string_repr */
                string_repr_len,                /* len_string_repr */
 
-               string_fvalue_set,              /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               string_fvalue_set_string,       /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index 16a946f646e32049cd2849c1a0ccaaaa64981d26..e0493535ec0495265264a7787dc74da2e8dded17 100644 (file)
@@ -113,11 +113,11 @@ cmp_le(const fvalue_t *a, const fvalue_t *b)
  * Returns true on success, false on failure.
  */
 static gboolean
-get_nsecs(char *startp, int *nsecs)
+get_nsecs(const char *startp, int *nsecs)
 {
        int ndigits;
        int scale;
-       char *p;
+       const char *p;
        int val;
        int digit;
        int i;
@@ -171,9 +171,10 @@ get_nsecs(char *startp, int *nsecs)
 }
 
 static gboolean
-relative_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+relative_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
-       char    *curptr, *endptr;
+       const char    *curptr;
+       char *endptr;
         gboolean negative = FALSE;
 
        curptr = s;
@@ -236,7 +237,7 @@ fail:
 
 
 static gboolean
-absolute_val_from_string(fvalue_t *fv, char *s, LogFunc logfunc)
+absolute_val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc)
 {
        struct tm tm;
        char    *curptr;
@@ -300,7 +301,7 @@ fail:
 }
 
 static gboolean
-absolute_val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+absolute_val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        return absolute_val_from_string(fv, s, logfunc);
 }
@@ -313,10 +314,9 @@ time_fvalue_new(fvalue_t *fv)
 }
 
 static void
-time_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+time_fvalue_set(fvalue_t *fv, const nstime_t *value)
 {
-       g_assert(!already_copied);
-       memcpy(&(fv->value.time), value, sizeof(nstime_t));
+       fv->value.time = *value;
 }
 
 static gpointer
@@ -374,7 +374,12 @@ ftype_register_time(void)
                absolute_val_to_repr,           /* val_to_string_repr */
                absolute_val_repr_len,          /* len_string_repr */
 
-               time_fvalue_set,                /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               time_fvalue_set,                /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
@@ -411,7 +416,12 @@ ftype_register_time(void)
                relative_val_to_repr,           /* val_to_string_repr */
                relative_val_repr_len,          /* len_string_repr */
 
-               time_fvalue_set,                /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               time_fvalue_set,                /* set_value_time */
+               NULL,                           /* set_value_string */
+               NULL,                           /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index e7bacae0628c4e42cc639823cbd185f540a48a3b..83fa643f01002e0a01c9a3569747500da838add5 100644 (file)
@@ -48,14 +48,12 @@ value_free(fvalue_t *fv)
 }
 
 static void
-value_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+value_set(fvalue_t *fv, tvbuff_t *value)
 {
-       g_assert(already_copied);
-
        /* Free up the old value, if we have one */
        value_free(fv);
 
-       fv->value.tvb = (tvbuff_t *)value;
+       fv->value.tvb = value;
 }
 
 static void
@@ -65,7 +63,7 @@ free_tvb_data(void *data)
 }
 
 static gboolean
-val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
+val_from_string(fvalue_t *fv, const char *s, LogFunc logfunc _U_)
 {
        tvbuff_t *new_tvb;
        guint8 *private_data;
@@ -89,7 +87,7 @@ val_from_string(fvalue_t *fv, char *s, LogFunc logfunc _U_)
 }
 
 static gboolean
-val_from_unparsed(fvalue_t *fv, char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
+val_from_unparsed(fvalue_t *fv, const char *s, gboolean allow_partial_value _U_, LogFunc logfunc)
 {
        fvalue_t *fv_bytes;
        tvbuff_t *new_tvb;
@@ -429,7 +427,12 @@ ftype_register_tvbuff(void)
                val_to_repr,                    /* val_to_string_repr */
                val_repr_len,                   /* len_string_repr */
 
-               value_set,                      /* set_value */
+               NULL,                           /* set_value_byte_array */
+               NULL,                           /* set_value_bytes */
+               NULL,                           /* set_value_guid */
+               NULL,                           /* set_value_time */
+               NULL,                           /* set_value_string */
+               value_set,                      /* set_value_tvbuff */
                NULL,                           /* set_value_uinteger */
                NULL,                           /* set_value_sinteger */
                NULL,                           /* set_value_integer64 */
index cdc19c546ffff7b9d12c846fd96c6877030619c5..fb4ae31a3696de4e3d69fc14cfa0b24b10366c68 100644 (file)
@@ -49,12 +49,17 @@ void ftype_register_pcre(void);
 typedef void (*FvalueNewFunc)(fvalue_t*);
 typedef void (*FvalueFreeFunc)(fvalue_t*);
 
-typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, char*, gboolean, LogFunc);
-typedef gboolean (*FvalueFromString)(fvalue_t*, char*, LogFunc);
+typedef gboolean (*FvalueFromUnparsed)(fvalue_t*, const char*, gboolean, LogFunc);
+typedef gboolean (*FvalueFromString)(fvalue_t*, const char*, LogFunc);
 typedef void (*FvalueToStringRepr)(fvalue_t*, ftrepr_t, char*volatile);
 typedef int (*FvalueStringReprLen)(fvalue_t*, ftrepr_t);
 
-typedef void (*FvalueSetFunc)(fvalue_t*, gpointer, gboolean);
+typedef void (*FvalueSetByteArrayFunc)(fvalue_t*, GByteArray *);
+typedef void (*FvalueSetBytesFunc)(fvalue_t*, const guint8 *);
+typedef void (*FvalueSetGuidFunc)(fvalue_t*, const e_guid_t *);
+typedef void (*FvalueSetTimeFunc)(fvalue_t*, const nstime_t *);
+typedef void (*FvalueSetStringFunc)(fvalue_t*, const gchar *value);
+typedef void (*FvalueSetTvbuffFunc)(fvalue_t*, tvbuff_t *value);
 typedef void (*FvalueSetUnsignedIntegerFunc)(fvalue_t*, guint32);
 typedef void (*FvalueSetSignedIntegerFunc)(fvalue_t*, gint32);
 typedef void (*FvalueSetInteger64Func)(fvalue_t*, guint64);
@@ -84,7 +89,12 @@ struct _ftype_t {
        FvalueStringReprLen     len_string_repr;
 
        /* could be union */
-       FvalueSetFunc           set_value;
+       FvalueSetByteArrayFunc  set_value_byte_array;
+       FvalueSetBytesFunc      set_value_bytes;
+       FvalueSetGuidFunc       set_value_guid;
+       FvalueSetTimeFunc       set_value_time;
+       FvalueSetStringFunc     set_value_string;
+       FvalueSetTvbuffFunc     set_value_tvbuff;
        FvalueSetUnsignedIntegerFunc    set_value_uinteger;
        FvalueSetSignedIntegerFunc              set_value_sinteger;
        FvalueSetInteger64Func  set_value_integer64;
index a409c9ce1e63c8baec2b9a5b71741752427be506..2ea14287463fc5c06ed66abc739fef11d3ff1143 100644 (file)
@@ -227,7 +227,7 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype)
 }
 
 fvalue_t*
-fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc)
+fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc)
 {
        fvalue_t        *fv;
 
@@ -246,7 +246,7 @@ fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogF
 }
 
 fvalue_t*
-fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc)
+fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc)
 {
        fvalue_t        *fv;
 
@@ -408,16 +408,51 @@ fvalue_slice(fvalue_t *fv, drange_t *d_range)
        drange_foreach_drange_node(d_range, slice_func, &slice_data);
 
        new_fv = fvalue_new(FT_BYTES);
-       fvalue_set(new_fv, slice_data.bytes, TRUE);
+       fvalue_set_byte_array(new_fv, slice_data.bytes);
        return new_fv;
 }
 
 
 void
-fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+fvalue_set_byte_array(fvalue_t *fv, GByteArray *value)
 {
-       g_assert(fv->ftype->set_value);
-       fv->ftype->set_value(fv, value, already_copied);
+       g_assert(fv->ftype->set_value_byte_array);
+       fv->ftype->set_value_byte_array(fv, value);
+}
+
+void
+fvalue_set_bytes(fvalue_t *fv, const guint8 *value)
+{
+       g_assert(fv->ftype->set_value_bytes);
+       fv->ftype->set_value_bytes(fv, value);
+}
+
+void
+fvalue_set_guid(fvalue_t *fv, const e_guid_t *value)
+{
+       g_assert(fv->ftype->set_value_guid);
+       fv->ftype->set_value_guid(fv, value);
+}
+
+void
+fvalue_set_time(fvalue_t *fv, const nstime_t *value)
+{
+       g_assert(fv->ftype->set_value_time);
+       fv->ftype->set_value_time(fv, value);
+}
+
+void
+fvalue_set_string(fvalue_t *fv, const gchar *value)
+{
+       g_assert(fv->ftype->set_value_string);
+       fv->ftype->set_value_string(fv, value);
+}
+
+void
+fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value)
+{
+       g_assert(fv->ftype->set_value_tvbuff);
+       fv->ftype->set_value_tvbuff(fv, value);
 }
 
 void
index 05bd42513eb227d3d9bbbf06d9f85a4020f68202..dcfeb0b3f356fbaf22d3b0ba14fd1202b13b8303 100644 (file)
@@ -208,10 +208,10 @@ fvalue_init(fvalue_t *fv, ftenum_t ftype);
 
 WS_DLL_PUBLIC
 fvalue_t*
-fvalue_from_unparsed(ftenum_t ftype, char *s, gboolean allow_partial_value, LogFunc logfunc);
+fvalue_from_unparsed(ftenum_t ftype, const char *s, gboolean allow_partial_value, LogFunc logfunc);
 
 fvalue_t*
-fvalue_from_string(ftenum_t ftype, char *s, LogFunc logfunc);
+fvalue_from_string(ftenum_t ftype, const char *s, LogFunc logfunc);
 
 /* Returns the length of the string required to hold the
  * string representation of the the field value.
@@ -243,7 +243,22 @@ const char*
 fvalue_type_name(fvalue_t *fv);
 
 void
-fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied);
+fvalue_set_byte_array(fvalue_t *fv, GByteArray *value);
+
+void
+fvalue_set_bytes(fvalue_t *fv, const guint8 *value);
+
+void
+fvalue_set_guid(fvalue_t *fv, const e_guid_t *value);
+
+void
+fvalue_set_time(fvalue_t *fv, const nstime_t *value);
+
+void
+fvalue_set_string(fvalue_t *fv, const gchar *value);
+
+void
+fvalue_set_tvbuff(fvalue_t *fv, tvbuff_t *value);
 
 void
 fvalue_set_uinteger(fvalue_t *fv, guint32 value);
index 169319bbac3098747f5e22980d5de6671b05330c..fcc748977e66f651b43e1a196a10f734227f95d5 100644 (file)
@@ -633,11 +633,8 @@ static void register_mibs(void) {
                 hf.hfinfo.strings           = NULL;
                 hf.hfinfo.bitmask           = 0;
                 hf.hfinfo.blurb             = smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_ALL);
-                hf.hfinfo.id                = -1;
-                hf.hfinfo.parent            = 0;
-                hf.hfinfo.ref_type          = HF_REF_TYPE_NONE;
-                hf.hfinfo.same_name_prev_id = -1;
-                hf.hfinfo.same_name_next    = NULL;
+                /* HFILL */
+                HFILL_INIT(hf);
 
                                /* Don't allow duplicate blurb/name */
                                if (strcmp(hf.hfinfo.blurb, hf.hfinfo.name) == 0) {
@@ -711,12 +708,8 @@ static void register_mibs(void) {
                                        hf.hfinfo.strings           = NULL;
                                        hf.hfinfo.bitmask           = 0;
                                        hf.hfinfo.blurb             = NULL;
-                                       hf.hfinfo.id                = -1;
-                                       hf.hfinfo.parent            = 0;
-                                       hf.hfinfo.ref_type          = HF_REF_TYPE_NONE;
-                                       hf.hfinfo.same_name_prev_id = -1;
-                                       hf.hfinfo.same_name_next    = NULL;
-
+                    /* HFILL */
+                    HFILL_INIT(hf);
 
                                        D(5,("\t\t\tIndex: name=%s subids=%d key_type=%d",
                                                 key->name, key->num_subids, key->key_type ));
index f8f86794a5e4205cc090db132732a3bf7c7cddd7..22842273453be55a9c4ae74924787ea8235fac04 100644 (file)
@@ -180,7 +180,7 @@ proto_tree_set_bytes(field_info *fi, const guint8* start_ptr, gint length);
 static void
 proto_tree_set_bytes_tvb(field_info *fi, tvbuff_t *tvb, gint offset, gint length);
 static void
-proto_tree_set_time(field_info *fi, nstime_t *value_ptr);
+proto_tree_set_time(field_info *fi, const nstime_t *value_ptr);
 static void
 proto_tree_set_string(field_info *fi, const char* value);
 static void
@@ -1990,7 +1990,7 @@ ptvcursor_advance(ptvcursor_t* ptvc, gint length)
 static void
 proto_tree_set_protocol_tvb(field_info *fi, tvbuff_t *tvb)
 {
-       fvalue_set(&fi->value, tvb, TRUE);
+       fvalue_set_tvbuff(&fi->value, tvb);
 }
 
 /* Add a FT_PROTOCOL to a proto_tree */
@@ -2102,7 +2102,7 @@ proto_tree_set_bytes(field_info *fi, const guint8* start_ptr, gint length)
        if (length > 0) {
                g_byte_array_append(bytes, start_ptr, length);
        }
-       fvalue_set(&fi->value, bytes, TRUE);
+       fvalue_set_byte_array(&fi->value, bytes);
 }
 
 
@@ -2115,7 +2115,7 @@ proto_tree_set_bytes_tvb(field_info *fi, tvbuff_t *tvb, gint offset, gint length
 /* Add a FT_*TIME to a proto_tree */
 proto_item *
 proto_tree_add_time(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
-                   gint length, nstime_t *value_ptr)
+                   gint length, const nstime_t *value_ptr)
 {
        proto_item        *pi;
        header_field_info *hfinfo;
@@ -2171,11 +2171,11 @@ proto_tree_add_time_format(proto_tree *tree, int hfindex, tvbuff_t *tvb,
 
 /* Set the FT_*TIME value */
 static void
-proto_tree_set_time(field_info *fi, nstime_t *value_ptr)
+proto_tree_set_time(field_info *fi, const nstime_t *value_ptr)
 {
        DISSECTOR_ASSERT(value_ptr != NULL);
 
-       fvalue_set(&fi->value, value_ptr, FALSE);
+       fvalue_set_time(&fi->value, value_ptr);
 }
 
 /* Add a FT_IPXNET to a proto_tree */
@@ -2366,7 +2366,7 @@ static void
 proto_tree_set_ipv6(field_info *fi, const guint8* value_ptr)
 {
        DISSECTOR_ASSERT(value_ptr != NULL);
-       fvalue_set(&fi->value, (gpointer) value_ptr, FALSE);
+       fvalue_set_bytes(&fi->value, value_ptr);
 }
 
 static void
@@ -2437,7 +2437,7 @@ static void
 proto_tree_set_guid(field_info *fi, const e_guid_t *value_ptr)
 {
        DISSECTOR_ASSERT(value_ptr != NULL);
-       fvalue_set(&fi->value, (gpointer) value_ptr, FALSE);
+       fvalue_set_guid(&fi->value, value_ptr);
 }
 
 static void
@@ -2519,7 +2519,7 @@ proto_tree_set_oid(field_info *fi, const guint8* value_ptr, gint length)
        if (length > 0) {
                g_byte_array_append(bytes, value_ptr, length);
        }
-       fvalue_set(&fi->value, bytes, TRUE);
+       fvalue_set_byte_array(&fi->value, bytes);
 }
 
 static void
@@ -2540,7 +2540,7 @@ proto_tree_set_system_id(field_info *fi, const guint8* value_ptr, gint length)
        if (length > 0) {
                g_byte_array_append(bytes, value_ptr, length);
        }
-       fvalue_set(&fi->value, bytes, TRUE);
+       fvalue_set_byte_array(&fi->value, bytes);
 }
 
 static void
@@ -2769,7 +2769,7 @@ proto_item_append_string(proto_item *pi, const char *str)
                new_str = ep_strconcat(old_str, str, NULL);
        else
                new_str = str;
-       fvalue_set(&fi->value, (gpointer) new_str, FALSE);
+       fvalue_set_string(&fi->value, new_str);
 }
 
 /* Set the FT_STRING value */
@@ -2777,9 +2777,9 @@ static void
 proto_tree_set_string(field_info *fi, const char* value)
 {
        if (value) {
-               fvalue_set(&fi->value, (gpointer) value, FALSE);
+               fvalue_set_string(&fi->value, value);
        } else {
-               fvalue_set(&fi->value, (gpointer) "[ Null ]", FALSE);
+               fvalue_set_string(&fi->value, "[ Null ]");
        }
 }
 
@@ -2819,7 +2819,7 @@ proto_tree_add_ax25(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start, gi
 static void
 proto_tree_set_ax25(field_info *fi, const guint8* value)
 {
-       fvalue_set(&fi->value, (gpointer) value, FALSE);
+       fvalue_set_bytes(&fi->value, value);
 }
 
 static void
@@ -2832,7 +2832,7 @@ proto_tree_set_ax25_tvb(field_info *fi, tvbuff_t *tvb, gint start)
 static void
 proto_tree_set_vines(field_info *fi, const guint8* value)
 {
-       fvalue_set(&fi->value, (gpointer) value, FALSE);
+       fvalue_set_bytes(&fi->value, value);
 }
 
 static void
@@ -2901,7 +2901,7 @@ proto_tree_add_ether_format(proto_tree *tree, int hfindex, tvbuff_t *tvb,
 static void
 proto_tree_set_ether(field_info *fi, const guint8* value)
 {
-       fvalue_set(&fi->value, (gpointer) value, FALSE);
+       fvalue_set_bytes(&fi->value, value);
 }
 
 static void
@@ -4379,7 +4379,7 @@ proto_item_add_subtree(proto_item *pi,    const gint idx) {
 }
 
 proto_tree *
-proto_item_get_subtree(const proto_item *pi) {
+proto_item_get_subtree(proto_item *pi) {
        field_info *fi;
 
        if (!pi)
@@ -4411,7 +4411,7 @@ proto_item_get_parent_nth(proto_item *ti, int gen) {
 
 
 proto_item *
-proto_tree_get_parent(const proto_tree *tree) {
+proto_tree_get_parent(proto_tree *tree) {
        if (!tree)
                return NULL;
        return (proto_item *)tree;
@@ -4503,10 +4503,11 @@ int
 proto_register_protocol(const char *name, const char *short_name,
                        const char *filter_name)
 {
-       protocol_t *protocol, *existing_protocol = NULL;
+       protocol_t *protocol;
+       const protocol_t *existing_protocol = NULL;
        header_field_info *hfinfo;
        int proto_id;
-       char *existing_name;
+       const char *existing_name;
        gint *key;
        guint i;
        guchar c;
@@ -4531,7 +4532,7 @@ proto_register_protocol(const char *name, const char *short_name,
        key  = (gint *)g_malloc (sizeof(gint));
        *key = wrs_str_hash(name);
 
-       existing_name = (char *)g_hash_table_lookup(proto_names, key);
+       existing_name = (const char *)g_hash_table_lookup(proto_names, key);
        if (existing_name != NULL) {
                /* g_error will terminate the program */
                g_error("Duplicate protocol name \"%s\"!"
@@ -4539,7 +4540,7 @@ proto_register_protocol(const char *name, const char *short_name,
        }
        g_hash_table_insert(proto_names, key, (gpointer)name);
 
-       existing_name = (char *)g_hash_table_lookup(proto_short_names, (gpointer)short_name);
+       existing_name = (const char *)g_hash_table_lookup(proto_short_names, (gpointer)short_name);
        if (existing_name != NULL) {
                g_error("Duplicate protocol short_name \"%s\"!"
                        " This might be caused by an inappropriate plugin or a development error.", short_name);
@@ -4558,7 +4559,7 @@ proto_register_protocol(const char *name, const char *short_name,
                        " Allowed are lower characters, digits, '-', '_' and '.'."
                        " This might be caused by an inappropriate plugin or a development error.", filter_name);
        }
-       existing_protocol = (protocol_t *)g_hash_table_lookup(proto_filter_names, (gpointer)filter_name);
+       existing_protocol = (const protocol_t *)g_hash_table_lookup(proto_filter_names, (gpointer)filter_name);
        if (existing_protocol != NULL) {
                g_error("Duplicate protocol filter_name \"%s\"!"
                        " This might be caused by an inappropriate plugin or a development error.", filter_name);
@@ -4701,14 +4702,14 @@ proto_get_id(const protocol_t *protocol)
 
 int proto_get_id_by_filter_name(const gchar* filter_name)
 {
-       protocol_t *protocol = NULL;
+       const protocol_t *protocol = NULL;
 
        if(!filter_name){
                fprintf(stderr, "No filter name present");
                DISSECTOR_ASSERT(filter_name);
        }
 
-       protocol = (protocol_t *)g_hash_table_lookup(proto_filter_names, (gpointer)filter_name);
+       protocol = (const protocol_t *)g_hash_table_lookup(proto_filter_names, (gpointer)filter_name);
 
        if (protocol == NULL)
                return -1;
index 4b4053284f2c1c2c2410c2359d9a8fc98fadcda7..7a294f0c3b5b2231f5f6fbe52da747f7d8a95770 100644 (file)
@@ -383,11 +383,11 @@ struct _header_field_info {
        const char              *blurb;          /**< [FIELDDESCR] Brief description of field */
 
        /* ------- set by proto routines (prefilled by HFILL macro, see below) ------ */
-       int                      id;             /**< Field ID */
-       int                      parent;         /**< parent protocol tree */
-       hf_ref_type              ref_type;       /**< is this field referenced by a filter */
-       int                      same_name_prev_id; /**< ID of previous hfinfo with same abbrev */
-       header_field_info       *same_name_next; /**< Link to next hfinfo with same abbrev */
+       int                                  id;                /**< Field ID */
+       int                                      parent;            /**< parent protocol tree */
+       hf_ref_type                      ref_type;          /**< is this field referenced by a filter */
+       int                  same_name_prev_id; /**< ID of previous hfinfo with same abbrev */
+       header_field_info       *same_name_next;    /**< Link to next hfinfo with same abbrev */
 };
 
 /**
@@ -397,6 +397,13 @@ struct _header_field_info {
  */
 #define HFILL -1, 0, HF_REF_TYPE_NONE, -1, NULL
 
+#define HFILL_INIT(hf)   \
+       hf.hfinfo.id                            = -1;   \
+       hf.hfinfo.parent                        = 0;   \
+       hf.hfinfo.ref_type                      = HF_REF_TYPE_NONE;   \
+       hf.hfinfo.same_name_prev_id     = -1;   \
+       hf.hfinfo.same_name_next        = NULL;   
+
 /** Used when registering many fields at once, using proto_register_field_array() */
 typedef struct hf_register_info {
        int                             *p_id;  /**< written to by register() function */
@@ -659,7 +666,7 @@ WS_DLL_PUBLIC proto_tree* proto_item_add_subtree(proto_item *ti, const gint idx)
 /** Get an existing subtree under an item.
  @param ti the parent item of the subtree
  @return the subtree or NULL */
-WS_DLL_PUBLIC proto_tree* proto_item_get_subtree(const proto_item *ti);
+WS_DLL_PUBLIC proto_tree* proto_item_get_subtree(proto_item *ti);
 
 /** Get the parent of a subtree item.
  @param ti the child item in the subtree
@@ -754,7 +761,7 @@ proto_tree_prime_hfid(proto_tree *tree, const int hfid);
 /** Get a parent item of a subtree.
  @param tree the tree to get the parent from
  @return parent item */
-WS_DLL_PUBLIC proto_item* proto_tree_get_parent(const proto_tree *tree);
+WS_DLL_PUBLIC proto_item* proto_tree_get_parent(proto_tree *tree);
 
 /** Get the root tree from any subtree.
  @param tree the tree to get the root from
@@ -901,7 +908,7 @@ proto_tree_add_bytes_format(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint s
  @return the newly created item */
 WS_DLL_PUBLIC proto_item *
 proto_tree_add_time(proto_tree *tree, int hfindex, tvbuff_t *tvb, gint start,
-       gint length, nstime_t* value_ptr);
+       gint length, const nstime_t* value_ptr);
 
 /** Add a formatted FT_ABSOLUTE_TIME or FT_RELATIVE_TIME to a proto_tree, with
     the format generating the string for the value and with the field name
index 5315020a9059d344be4117979452e8752eb4c7de..7b56aeca395364507d37c672dacd7b5655a61df2 100644 (file)
@@ -582,29 +582,22 @@ abs_time_to_ep_str(const nstime_t *abs_time, const absolute_time_display_e fmt,
        const char *zonename = "???";
        gchar *buf = NULL;
 
-#if (defined _WIN32) && (_MSC_VER < 1500)
-       /* calling localtime() on MSVC 2005 with huge values causes it to crash */
-       /* XXX - find the exact value that still does work */
-       /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-       if(abs_time->secs > 2000000000) {
-               tmp = NULL;
-       } else
-#endif
-               switch (fmt) {
 
-                       case ABSOLUTE_TIME_UTC:
-                       case ABSOLUTE_TIME_DOY_UTC:
-                               tmp = gmtime(&abs_time->secs);
-                               zonename = "UTC";
-                               break;
+       switch (fmt) {
 
-                       case ABSOLUTE_TIME_LOCAL:
-                               tmp = localtime(&abs_time->secs);
-                               if (tmp) {
-                                       zonename = get_zonename(tmp);
-                               }
-                               break;
-               }
+               case ABSOLUTE_TIME_UTC:
+               case ABSOLUTE_TIME_DOY_UTC:
+                       tmp = gmtime(&abs_time->secs);
+                       zonename = "UTC";
+                       break;
+
+               case ABSOLUTE_TIME_LOCAL:
+                       tmp = localtime(&abs_time->secs);
+                       if (tmp) {
+                               zonename = get_zonename(tmp);
+                       }
+                       break;
+       }
        if (tmp) {
                switch (fmt) {
 
@@ -666,29 +659,21 @@ abs_time_secs_to_ep_str(const time_t abs_time, const absolute_time_display_e fmt
        const char *zonename = "???";
        gchar *buf = NULL;
 
-#if (defined _WIN32) && (_MSC_VER < 1500)
-       /* calling localtime() on MSVC 2005 with huge values causes it to crash */
-       /* XXX - find the exact value that still does work */
-       /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-       if(abs_time > 2000000000) {
-               tmp = NULL;
-       } else
-#endif
-               switch (fmt) {
+       switch (fmt) {
 
-                       case ABSOLUTE_TIME_UTC:
-                       case ABSOLUTE_TIME_DOY_UTC:
-                               tmp = gmtime(&abs_time);
-                               zonename = "UTC";
-                               break;
+               case ABSOLUTE_TIME_UTC:
+               case ABSOLUTE_TIME_DOY_UTC:
+                       tmp = gmtime(&abs_time);
+                       zonename = "UTC";
+                       break;
 
-                       case ABSOLUTE_TIME_LOCAL:
-                               tmp = localtime(&abs_time);
-                               if (tmp) {
-                                       zonename = get_zonename(tmp);
-                               }
-                               break;
-               }
+               case ABSOLUTE_TIME_LOCAL:
+                       tmp = localtime(&abs_time);
+                       if (tmp) {
+                               zonename = get_zonename(tmp);
+                       }
+                       break;
+       }
        if (tmp) {
                switch (fmt) {
 
index 12d608a4e38922ed214b9f2a0db67feedae62cf6..a0371a7423ff64112fb56c2f0c6bd8602bf28afd 100644 (file)
@@ -1741,43 +1741,6 @@ tvb_memeql(tvbuff_t *tvb, const gint offset, const guint8 *str, size_t size)
        }
 }
 
-/* Convert a string from Unicode to ASCII.     At the moment we fake it by
- * replacing all non-ASCII characters with a '.' )-:   The len parameter is
- * the number of guint16's to convert from Unicode.
- *
- * If scope is set to NULL, returned buffer is allocated by g_malloc()
- * and must be g_free by the caller. Otherwise memory is automatically
- * freed when the scope lifetime is reached.
- */
-/* XXX: This has been replaced by tvb_get_string() */
-char *
-tvb_get_faked_unicode(wmem_allocator_t *scope, tvbuff_t *tvb, int offset,
-                     const int len, const gboolean little_endian)
-{
-       char    *buffer;
-       int      i;
-       guint16  character;
-
-       /* Make sure we have enough data before allocating the buffer,
-          so we don't blow up if the length is huge. */
-       tvb_ensure_bytes_exist(tvb, offset, 2*len);
-
-       /* We know we won't throw an exception, so we don't have to worry
-          about leaking this buffer. */
-       buffer = (char *)wmem_alloc(scope, len + 1);
-
-       for (i = 0; i < len; i++) {
-               character = little_endian ? tvb_get_letohs(tvb, offset)
-                                         : tvb_get_ntohs(tvb, offset);
-               buffer[i] = character < 256 ? character : '.';
-               offset += 2;
-       }
-
-       buffer[len] = 0;
-
-       return buffer;
-}
-
 /*
  * Format the data in the tvb from offset for length ...
  */
@@ -1850,18 +1813,62 @@ tvb_format_stringzpad_wsp(tvbuff_t *tvb, const gint offset, const gint size)
 #define UNREPL 0x00FFFD
 
 /*
- * Given a tvbuff, an offset, and a length, allocate a buffer big enough
- * to hold a non-null-terminated string of that length at that offset,
- * plus a trailing '\0', copy the string into it, and return a pointer
- * to the string.
+ * All string functions below take a scope as an argument.
+ *
+ * 
  * If scope is NULL, memory is allocated with g_malloc() and user must
  * explicitly free it with g_free().
  * If scope is not NULL, memory is allocated with the corresponding pool
  * lifetime.
- * Throws an exception if the tvbuff ends before the string does.
+ *
+ * All functions throw an exception if the tvbuff ends before the string
+ * does.
  */
-guint8 *
-tvb_get_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, const gint length)
+
+/*
+ * Given a tvbuff, an offset, and a length, treat the string of bytes
+ * referred to by them as an ASCII string, with all bytes with the
+ * high-order bit set being invalid, and return a pointer to a
+ * UTF-8 string.
+ *
+ * Octets with the highest bit set will be converted to the Unicode
+ * REPLACEMENT CHARACTER.
+ */
+static guint8 *
+tvb_get_ascii_string(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint length)
+{
+       wmem_strbuf_t *str;
+
+       tvb_ensure_bytes_exist(tvb, offset, length); /* make sure length = -1 fails */
+
+       str = wmem_strbuf_new(scope, "");
+
+       while (length > 0) {
+               guint8 ch = tvb_get_guint8(tvb, offset);
+
+               if (ch < 0x80)
+                       wmem_strbuf_append_c(str, ch);
+               else
+                       wmem_strbuf_append_unichar(str, UNREPL);
+               offset++;
+               length--;
+       }
+       wmem_strbuf_append_c(str, '\0');
+
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str
+          (like when strbuf is no longer needed) */
+       return (guint8 *) wmem_strbuf_get_str(str);
+}
+
+/*
+ * Given a tvbuff, an offset, and a length, treat the string of bytes
+ * referred to by them as a UTF-8 string, and return a pointer to that
+ * string.
+ *
+ * XXX - should map invalid UTF-8 sequences to UNREPL.
+ */
+static guint8 *
+tvb_get_utf_8_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, const gint length)
 {
        guint8       *strbuf;
 
@@ -1872,6 +1879,12 @@ tvb_get_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, const
        return strbuf;
 }
 
+/*
+ * Given a tvbuff, an offset, and a length, treat the string of bytes
+ * referred to by them as an ISO 8859/1 string, with all bytes with the
+ * high-order bit set being invalid, and return a pointer to a UTF-8
+ * string.
+ */
 static guint8 *
 tvb_get_string_8859_1(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint length)
 {
@@ -1902,11 +1915,13 @@ tvb_get_string_8859_1(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint
 }
 
 /*
- * Given a string encoded using octet per character, with octets with
- * the high-order bit clear being ASCII, and a translation table that
- * maps values for other octets to 2-byte Unicode Basic Multilingual
- * Plane characters (including REPLACEMENT CHARACTER), return a UTF-8
- * string with the same characters.
+ * Given a tvbuff, an offset, and a length, and a translation table,
+ * treat the string of bytes referred to by them as a string encoded
+ * using one octet per character, with octets with the high-order bit
+ * clear being ASCII and octets with the high-order bit set being
+ * mapped by the translation table to 2-byte Unicode Basic Multilingual
+ * Plane characters (including REPLACEMENT CHARACTER), and return a
+ * pointer to a UTF-8 string.
  */
 static guint8 *
 tvb_get_string_unichar2(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint length, const gunichar2 table[0x80])
@@ -1931,18 +1946,14 @@ tvb_get_string_unichar2(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gin
 }
 
 /*
- * Given a UCS-2 encoded string containing characters from the
- * Basic Multilingual Plane (plane 0) of Unicode, return a UTF-8
- * string with the same characters.
- *
- * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN
+ * Given a tvbuff, and offset, and a length, treat the string of bytes
+ * referred to by them as a UCS-2 encoded string containing characters
+ * from the Basic Multilingual Plane (plane 0) of Unicode, return a
+ * pointer to a UTF-8 string.
  *
- * Specify length in bytes
+ * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN.
  *
- * If scope is NULL, memory is allocated with g_malloc() and user must
- * explicitly free it with g_free().
- * If scope is not NULL, memory is allocated with the corresponding pool
- * lifetime.
+ * Specify length in bytes.
  *
  * XXX - should map lead and trail surrogate values to REPLACEMENT
  * CHARACTERs (0xFFFD)?
@@ -1981,28 +1992,24 @@ tvb_get_ucs_2_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
 
        tvb_ensure_bytes_exist(tvb, offset, length);
        strbuf = tvb_extract_ucs_2_string(scope, tvb, offset, length, encoding);
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
 /*
- * Given a UTF-16 encoded Unicode string, return a UTF-8 string with the
- * same characters.
- *
- * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN
+ * Given a tvbuff, and offset, and a length, treat the string of bytes
+ * referred to by them as a UTF-16 encoded string, return a pointer to
+ * a UTF-8 string.
  *
- * Specify length in bytes
+ * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN.
  *
- * If scope is NULL, memory is allocated with g_malloc() and user must
- * explicitly free it with g_free().
- * If scope is not NULL, memory is allocated with the corresponding pool
- * lifetime.
+ * Specify length in bytes.
  *
  * XXX - should map surrogate errors to REPLACEMENT CHARACTERs (0xFFFD).
  * XXX - should map code points > 10FFFF to REPLACEMENT CHARACTERs.
  * XXX - if there are an odd number of bytes, should put a
  * REPLACEMENT CHARACTER at the end.
  */
-
 static wmem_strbuf_t *
 tvb_extract_utf_16_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint size, const guint encoding)
 {
@@ -2087,22 +2094,19 @@ tvb_get_utf_16_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
 
        tvb_ensure_bytes_exist(tvb, offset, length);
        strbuf = tvb_extract_utf_16_string(scope, tvb, offset, length, encoding);
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
 /*
- * Given a UCS-4-encoded Unicode string, return a UTF-8 string with the
- * same characters.
+ * Given a tvbuff, and offset, and a length, treat the string of bytes
+ * referred to by them as a UCS-4 encoded string, return a pointer to
+ * a UTF-8 string.
  *
  * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN
  *
  * Specify length in bytes
  *
- * If scope is NULL, memory is allocated with g_malloc() and user must
- * explicitly free it with g_free().
- * If scope is not NULL, memory is allocated with the corresponding pool
- * lifetime.
- *
  * XXX - should map lead and trail surrogate values to a "substitute"
  * UTF-8 character?
  * XXX - should map code points > 10FFFF to REPLACEMENT CHARACTERs.
@@ -2142,6 +2146,7 @@ tvb_get_ucs_4_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
 
        tvb_ensure_bytes_exist(tvb, offset, length);
        strbuf = tvb_extract_ucs_4_string(scope, tvb, offset, length, encoding);
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
@@ -2314,6 +2319,7 @@ tvb_get_ts_23_038_7bits_string(wmem_allocator_t *scope, tvbuff_t *tvb,
                wmem_strbuf_append_unichar(strbuf, UNREPL);
        }
 
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
@@ -2323,13 +2329,6 @@ tvb_get_ts_23_038_7bits_string(wmem_allocator_t *scope, tvbuff_t *tvb,
  * at that offset, plus a trailing '\0', copy into the buffer the
  * string as converted from the appropriate encoding to UTF-8, and
  * return a pointer to the string.
- *
- * Throws an exception if the tvbuff ends before the string does.
- *
- * If scope is NULL, memory is allocated with g_malloc() and user must
- * explicitly free it with g_free().
- * If scope is not NULL, memory is allocated with the corresponding pool
- * lifetime.
  */
 guint8 *
 tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
@@ -2350,11 +2349,8 @@ tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
                 * was a gboolean for the byte order, not an
                 * encoding value, and passed non-zero values
                 * other than TRUE to mean "little-endian".
-                *
-                * XXX - should map all octets with the 8th bit
-                * set REPLACEMENT CHARACTERs.
                 */
-               strbuf = tvb_get_string(scope, tvb, offset, length);
+               strbuf = tvb_get_ascii_string(scope, tvb, offset, length);
                break;
 
        case ENC_UTF_8:
@@ -2363,10 +2359,8 @@ tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
                 * points to a "substitute" UTF-8 character?
                 * XXX - should map code points > 10FFFF to REPLACEMENT
                 * CHARACTERs.
-                * XXX - should map invalid UTF-8 sequences to
-                * REPLACEMENT CHARACTERs.
                 */
-               strbuf = tvb_get_string(scope, tvb, offset, length);
+               strbuf = tvb_get_utf_8_string(scope, tvb, offset, length);
                break;
 
        case ENC_UTF_16:
@@ -2481,20 +2475,54 @@ tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
 }
 
 /*
- * Given a tvbuff and an offset, with the offset assumed to refer to
- * a null-terminated string, find the length of that string (and throw
- * an exception if the tvbuff ends before we find the null), allocate
- * a buffer big enough to hold the string, copy the string into it,
- * and return a pointer to the string. Also return the length of the
- * string (including the terminating null) through a pointer.
- *
- * If scope is NULL, memory is allocated with g_malloc() and user must
- * explicitly free it with g_free().
- * If scope is not NULL, memory is allocated with the corresponding pool
- * lifetime.
+ * Get an ASCII string; this should not be used in new code.
  */
 guint8 *
-tvb_get_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint *lengthp)
+tvb_get_string(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
+                            const gint length)
+{
+       return tvb_get_ascii_string(scope, tvb, offset, length);
+}
+
+/*
+ * These routines are like the above routines, except that they handle
+ * null-terminated strings.  They find the length of that string (and
+ * throw an exception if the tvbuff ends before we find the null), and
+ * also return through a pointer the length of the string, in bytes,
+ * including the terminating null (the terminating null being 2 bytes
+ * for UCS-2 and UTF-16, 4 bytes for UCS-4, and 1 byte for other
+ * encodings).
+ */
+static guint8 *
+tvb_get_ascii_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint *lengthp)
+{
+       guint   size, i;
+       wmem_strbuf_t *str;
+
+       str = wmem_strbuf_new(scope, "");
+
+       size   = tvb_strsize(tvb, offset);
+       for (i = 0; i < size; i++) {
+               guint8 ch = tvb_get_guint8(tvb, offset);
+
+               if (ch < 0x80)
+                       wmem_strbuf_append_c(str, ch);
+               else
+                       wmem_strbuf_append_unichar(str, UNREPL);
+               offset++;
+       }
+       /* No need to append '\0' - we processed the NUL in the loop above. */
+
+       if (lengthp)
+               *lengthp = size;
+
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str
+          (like when strbuf is no longer needed) */
+       return (guint8 *) wmem_strbuf_get_str(str);
+}
+
+static guint8 *
+tvb_get_utf_8_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint *lengthp)
 {
        guint   size;
        guint8 *strptr;
@@ -2555,15 +2583,6 @@ tvb_get_const_stringz(tvbuff_t *tvb, const gint offset, gint *lengthp)
        return strptr;
 }
 
-/*
- * Version of tvb_get_stringz() that handles the Basic Multilingual Plane
- * (plane 0) of Unicode, with each code point encoded in 16 bits.
- *
- * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN.
- *
- * Returns an allocated UTF-8 string and updates lengthp pointer with
- * length of string (in bytes), including the terminating (2-byte) NUL.
- */
 static gchar *
 tvb_get_ucs_2_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint *lengthp, const guint encoding)
 {
@@ -2577,17 +2596,10 @@ tvb_get_ucs_2_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
        if (lengthp)
                *lengthp = size;
 
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
-/*
- * Version of tvb_get_stringz() that handles UTF-16.
- *
- * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN.
- *
- * Returns an allocated UTF-8 string and updates lengthp pointer with
- * length of string (in bytes), including the terminating (2-byte) NUL.
- */
 static gchar *
 tvb_get_utf_16_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint *lengthp, const guint encoding)
 {
@@ -2601,17 +2613,10 @@ tvb_get_utf_16_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset
        if (lengthp)
                *lengthp = size;
 
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
-/*
- * Version of tvb_get_stringz() that handles UCS-4.
- *
- * Encoding parameter should be ENC_BIG_ENDIAN or ENC_LITTLE_ENDIAN.
- *
- * Returns an allocated UTF-8 string and updates lengthp pointer with
- * length of string (in bytes), including the terminating (4-byte) NUL.
- */
 static gchar *
 tvb_get_ucs_4_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, gint *lengthp, const guint encoding)
 {
@@ -2633,6 +2638,7 @@ tvb_get_ucs_4_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
        if (lengthp)
                *lengthp = size; /* Number of *bytes* processed */
 
+       /* XXX, discarding constiness, should we have some function which "take-over" strbuf->str (like when strbuf is no longer needed) */
        return (gchar*)wmem_strbuf_get_str(strbuf);
 }
 
@@ -2654,19 +2660,18 @@ tvb_get_stringz_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, g
                 * was a gboolean for the byte order, not an
                 * encoding value, and passed non-zero values
                 * other than TRUE to mean "little-endian".
-                *
-                * XXX - should map all octets with the 8th bit
-                * not set to a "substitute" UTF-8 character.
                 */
-               strptr = tvb_get_stringz(scope, tvb, offset, lengthp);
+               strptr = tvb_get_ascii_stringz(scope, tvb, offset, lengthp);
                break;
 
        case ENC_UTF_8:
                /*
                 * XXX - should map all invalid UTF-8 sequences
                 * to a "substitute" UTF-8 character.
+                * XXX - should map code points > 10FFFF to REPLACEMENT
+                * CHARACTERs.
                 */
-               strptr = tvb_get_stringz(scope, tvb, offset, lengthp);
+               strptr = tvb_get_utf_8_stringz(scope, tvb, offset, lengthp);
                break;
 
        case ENC_UTF_16:
@@ -2775,6 +2780,16 @@ tvb_get_stringz_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, g
        return strptr;
 }
 
+/*
+ * Get an ASCII string; this should not be used in new code.
+ */
+guint8 *
+tvb_get_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset,
+                            gint *lengthp)
+{
+       return tvb_get_ascii_stringz(scope, tvb, offset, lengthp);
+}
+
 /* Looks for a stringz (NUL-terminated string) in tvbuff and copies
  * no more than bufsize number of bytes, including terminating NUL, to buffer.
  * Returns length of string (not including terminating NUL), or -1 if the string was
index 97e38efb1a2425feeefe639b77a676a999ce15ee..be7db043f3378647598ad99dbeffc2f2e5767b34 100644 (file)
@@ -436,19 +436,6 @@ WS_DLL_PUBLIC guint tvb_unicode_strsize(tvbuff_t *tvb, const gint offset);
 WS_DLL_PUBLIC gint tvb_strnlen(tvbuff_t *tvb, const gint offset,
     const guint maxlength);
 
-/** Convert a string from Unicode to ASCII.  At the moment we fake it by
- * assuming all characters are ASCII  )-:  The len parameter is the number
- * of guint16's to convert from Unicode.
- *
- * XXX - These functions have been superceded by tvb_get_unicode_string()
- *
- * If scope is set to NULL, returned buffer is allocated by g_malloc()
- * and must be g_free by the caller. Otherwise memory is automatically
- * freed when the scope lifetime is reached.
- */
-WS_DLL_PUBLIC char *tvb_get_faked_unicode(wmem_allocator_t *scope,
-    tvbuff_t *tvb, int offset, const int len, const gboolean little_endian);
-
 /**
  * Format the data in the tvb from offset for size ...
  */
@@ -479,16 +466,19 @@ extern gchar *tvb_format_stringzpad_wsp(tvbuff_t *tvb, const gint offset,
 
 /**
  * Given a tvbuff, an offset, and a length, allocate a buffer big enough
- * to hold a non-null-terminated string of that length at that offset,
- * plus a trailing zero, copy the string into it, and return a pointer
- * to the string.
+ * to hold a string of length characters plus a trailing '\0'. Copy length
+ * characters, starting at offset, from the tvbuff into the buffer and return
+ * a pointer to the buffer.
  *
  * Throws an exception if the tvbuff ends before the string does.
  *
- * tvb_get_string() returns a string allocated.
+ * tvb_get_string() handles 7-bit ASCII strings, with characters
+ *                   with the 8th bit set are converted to the
+ *                   Unicode REPLACEMENT CHARACTER.
  *
  * tvb_get_string_enc() takes a string encoding as well, and converts to UTF-8
- *                   from the encoding.
+ *                   from the encoding, possibly mapping some characters
+ *                   to the REPLACEMENT CHARACTER.
  *
  * If scope is set to NULL it is the user's responsibility to g_free()
  * the memory allocated by tvb_memdup(). Otherwise memory is
@@ -521,10 +511,13 @@ WS_DLL_PUBLIC gchar *tvb_get_ts_23_038_7bits_string(wmem_allocator_t *scope,
  * and return a pointer to the string.  Also return the length of the
  * string (including the terminating null) through a pointer.
  *
- * tvb_get_stringz() returns a string
+ * tvb_get_stringz() handles 7-bit ASCII strings, with characters
+ *                   with the 8th bit set are converted to the
+ *                   Unicode REPLACEMENT CHARACTER.
  *
- * tvb_get_stringz_enc() takes a string encoding as well, and converts to
- *                   UTF-8 from the encoding.
+ * tvb_get_stringz_enc() takes a string encoding as well, and converts to UTF-8
+ *                   from the encoding, possibly mapping some characters
+ *                   to the REPLACEMENT CHARACTER.
  *
  * tvb_get_const_stringz() returns a constant (unmodifiable) string that does
  *                   not need to be freed, instead it will automatically be
index d3abde0349e5361861869d5d9e46e222a20cea60..bfb18382754b296d01234ca9b800b1986d0bc5a8 100644 (file)
@@ -309,6 +309,10 @@ WSLUA_METHOD ProgDlg_update(lua_State* L) { /* Appends text */
         WSLUA_ERROR(ProgDlg_update,"GUI not available");
     }
 
+    if (!pd) {
+        WSLUA_ERROR(ProgDlg_update,"Cannot be called for something not a ProgDlg");
+    }
+
     g_free(pd->task);
     pd->task = g_strdup(task);
 
diff --git a/file.c b/file.c
index da53ea2274e6431f9ae3ca4b00d54d0facef2d6e..1603d95784ad758ff685e448351cf3d5edc6b8c7 100644 (file)
--- a/file.c
+++ b/file.c
@@ -1548,11 +1548,18 @@ cf_merge_files(char **out_filenamep, int in_file_count,
     destroy_progress_dlg(progbar);
 
   merge_close_in_files(in_file_count, in_files);
-  if (!got_read_error && !got_write_error) {
+  if (!got_write_error) {
     if (!wtap_dump_close(pdh, &write_err))
       got_write_error = TRUE;
-  } else
-    wtap_dump_close(pdh, &close_err);
+  } else {
+    /*
+     * We already got a write error; no need to report another
+     * write error on close.
+     *
+     * Don't overwrite the earlier write error.
+     */
+    (void)wtap_dump_close(pdh, &close_err);
+  }
 
   if (got_read_error) {
     /*
@@ -1618,8 +1625,9 @@ cf_merge_files(char **out_filenamep, int in_file_count,
 
       case WTAP_ERR_UNSUPPORTED_ENCAP:
         /*
-         * This is a problem with the particular frame we're writing;
-         * note that, and give the frame number.
+         * This is a problem with the particular frame we're writing and
+         * the file type and subtype we're writing; note that, and report
+         * the frame number and file type/subtype.
          */
         display_basename = g_filename_display_basename(in_file->filename);
         simple_error_message_box(
@@ -1629,6 +1637,20 @@ cf_merge_files(char **out_filenamep, int in_file_count,
         g_free(display_basename);
         break;
 
+      case WTAP_ERR_PACKET_TOO_LARGE:
+        /*
+         * This is a problem with the particular frame we're writing and
+         * the file type and subtype we're writing; note that, and report
+         * the frame number and file type/subtype.
+         */
+        display_basename = g_filename_display_basename(in_file->filename);
+        simple_error_message_box(
+                      "Frame %u of \"%s\" is too large for a \"%s\" file.",
+                      in_file->packet_num, display_basename,
+                      wtap_file_type_subtype_string(file_type));
+        g_free(display_basename);
+        break;
+
       default:
         display_basename = g_filename_display_basename(out_filename);
         simple_error_message_box(
@@ -4140,14 +4162,26 @@ save_packet(capture_file *cf _U_, frame_data *fdata,
 
       case WTAP_ERR_UNSUPPORTED_ENCAP:
         /*
-         * This is a problem with the particular frame we're writing;
-         * note that, and give the frame number.
+         * This is a problem with the particular frame we're writing and
+         * the file type and subtype we're writing; note that, and report
+         * the frame number and file type/subtype.
          */
         simple_error_message_box(
                       "Frame %u has a network type that can't be saved in a \"%s\" file.",
                       fdata->num, wtap_file_type_subtype_string(args->file_type));
         break;
 
+      case WTAP_ERR_PACKET_TOO_LARGE:
+        /*
+         * This is a problem with the particular frame we're writing and
+         * the file type and subtype we're writing; note that, and report
+         * the frame number and file type/subtype.
+         */
+        simple_error_message_box(
+                      "Frame %u is larger than Wireshark supports in a \"%s\" file.",
+                      fdata->num, wtap_file_type_subtype_string(args->file_type));
+        break;
+
       default:
         display_basename = g_filename_display_basename(args->fname);
         simple_error_message_box(
index b3f6b55a26abdce688b2d4ada63989b15b811a95..9c0cd25769c7477bdb53a5a17bb026b908b3eb5e 100755 (executable)
@@ -55,6 +55,7 @@
 use strict;
 
 use Time::Local;
+use File::Basename;
 use POSIX qw(strftime);
 use Getopt::Long;
 use Pod::Usage;
@@ -68,6 +69,7 @@ my $tortoise_file = "tortoise_template";
 my $last_change = 0;
 my $revision = 0;
 my $repo_path = "unknown";
+my $git_description = undef;
 my $get_svn = 0;
 my $set_svn = 0;
 my $set_version = 0;
@@ -79,6 +81,7 @@ my %version_pref = (
        "version_build" => 0,
 
        "enable"        => 1,
+       "git_client"    => 0,
        "svn_client"    => 1,
        "tortoise_svn"  => 0,
        "format"        => "SVN %Y%m%d%H%M%S",
@@ -98,10 +101,11 @@ my $info_cmd = "";
 # Ensure we run with correct locale
 $ENV{LANG} = "C";
 $ENV{LC_ALL} = "C";
+$ENV{GIT_PAGER} = "";
 
 # Run "svn info".  Parse out the most recent modification time and the
 # revision number.
-sub read_svn_info {
+sub read_repo_info {
        my $line;
        my $version_format = $version_pref{"format"};
        my $package_format = "";
@@ -117,7 +121,10 @@ sub read_svn_info {
                $package_format = $version_pref{"pkg_format"};
        }
 
-       if (-d "$srcdir/.svn" or -d "$srcdir/../.svn") {
+       if (-d "$srcdir/.git" && ! -d "$srcdir/.git/svn") {
+               $info_source = "Command line (git)";
+               $version_pref{"git_client"} = 1;
+       } elsif (-d "$srcdir/.svn" or -d "$srcdir/../.svn") {
                $info_source = "Command line (svn info)";
                $info_cmd = "svn info $srcdir";
        } elsif (-d "$srcdir/.git/svn") {
@@ -125,7 +132,75 @@ sub read_svn_info {
                $info_cmd = "(cd $srcdir; git svn info)";
        }
 
-       if ($version_pref{"svn_client"}) {
+       #Git can give us:
+       #
+       # A big ugly hash: git rev-parse HEAD
+       # 1ddc83849075addb0cac69a6fe3782f4325337b9
+       #
+       # A small ugly hash: git rev-parse --short HEAD
+       # 1ddc838
+       #
+       # The upstream branch path: git rev-parse --abbrev-ref --symbolic-full-name @{upstream}
+       # origin/master-1.8
+       #
+       # A version description: git describe --tags --dirty
+       # wireshark-1.8.12-15-g1ddc838
+       #
+       # Number of commits in this branch: git rev-list --count HEAD
+       # 48879
+       #
+       # Number of commits since 1.8.0: git rev-list --count 5e212d72ce098a7fec4332cbe6c22fcda796a018..HEAD
+       # 320
+       #
+       # Refs: git ls-remote code.wireshark.org:wireshark
+       # ea19c7f952ce9fc53fe4c223f1d9d6797346258b (r48972, changed version to 1.11.0)
+
+       if ($version_pref{"git_client"}) {
+               eval {
+                       use warnings "all";
+                       no warnings "all";
+
+                       chomp($line = qx{git log -1 --pretty=format:%at});
+                       if (defined($line)) {
+                               $last_change = $line;
+                       }
+
+                       # Commits in current (master-1.8) branch. We may want to use
+                       # a different number.
+                       chomp($line = qx{git rev-list --count ea19c7f952ce9fc53fe4c223f1d9d6797346258b..HEAD});
+                       if (defined($line)) {
+                               $revision = $line;
+                       }
+
+                       chomp($line = qx{git ls-remote --get-url origin});
+                       if (defined($line)) {
+                               $repo_url = $line;
+                       }
+
+                       # Probably not quite what we're looking for
+                       chomp($line = qx{git rev-parse --abbrev-ref --symbolic-full-name \@\{upstream\}});
+                       if (defined($line)) {
+                               $repo_path = basename($line);
+                       }
+
+
+                       # XXX After the SVN->git migration we'll create tags for 1.11.x.
+                       # Until then we'll fake it.
+                       #chomp($line = qx{git describe --tags --dirty});
+                       chomp($line = qx{git rev-parse --short HEAD});
+                       if (defined($line)) {
+                               #$git_description = $line;
+                               $git_description = "wireshark-1.11." . $version_pref{"version_minor"} .
+                                       "-$revision-g$line";
+                       }
+
+                       1;
+               };
+
+               if ($last_change && $revision && $repo_url && $repo_path) {
+                       $do_hack = 0;
+               }
+       } elsif ($version_pref{"svn_client"}) {
                eval {
                        use warnings "all";
                        no warnings "all";
@@ -510,7 +585,11 @@ sub print_svn_revision
        my $svn_revision;
        my $needs_update = 1;
 
-       if ($last_change && $revision) {
+       if ($git_description) {
+               $svn_revision = "#define SVNVERSION \"" .
+                       $git_description . "\"\n" .
+                       "#define SVNPATH \"" . $repo_path . "\"\n";
+       } elsif ($last_change && $revision) {
                $svn_revision = "#define SVNVERSION \"SVN Rev " .
                        $revision . "\"\n" .
                        "#define SVNPATH \"" . $repo_path . "\"\n";
@@ -586,7 +665,7 @@ sub get_config {
 
 &get_config();
 
-&read_svn_info();
+&read_repo_info();
 
 &print_svn_revision;
 
diff --git a/manuf b/manuf
index ed02511af981b612036f2d0ab0f75bcb8f12a5fd..7b3081719cfaaee93dfa1b2f8fa0beecad3cfebd 100644 (file)
--- a/manuf
+++ b/manuf
@@ -75,7 +75,7 @@
 00:00:14       Netronix
 00:00:15       Datapoin               # DATAPOINT CORPORATION
 00:00:16       DuPontPi               # DU PONT PIXEL SYSTEMS     .
-00:00:17       Tekelec
+00:00:17       Oracle
 00:00:18       WebsterC               # WEBSTER COMPUTER CORPORATION
 00:00:19       AppliedD               # APPLIED DYNAMICS INTERNATIONAL
 00:00:1A       AMD
 00:06:F5       Alps                   # ALPS Co,. Ltd.
 00:06:F6       Cisco                  # CISCO SYSTEMS, INC.
 00:06:F7       Alps                   # ALPS Co,. Ltd.
-00:06:F8       CpuTechn               # CPU Technology, Inc.
+00:06:F8       Boeing                 # The Boeing Company
 00:06:F9       MitsuiZo               # Mitsui Zosen Systems Research Inc.
 00:06:FA       IpSquare               # IP SQUARE Co, Ltd.
 00:06:FB       HitachiP               # Hitachi Printing Solutions, Ltd.
 00:07:6D       Flexligh               # Flexlight Networks
 00:07:6E       Sinetica               # Sinetica Corporation Limited
 00:07:6F       Synoptic               # Synoptics Limited
-00:07:70       Locusnet               # Locusnetworks Corporation
+00:07:70       Ubiquoss               # Ubiquoss Inc
 00:07:71       Embedded               # Embedded System Corporation
 00:07:72       AlcatelS               # Alcatel Shanghai Bell Co., Ltd.
 00:07:73       AscomPow               # Ascom Powerline Communications Ltd.
 00:A0:84       Dataplex               # Dataplex Pty Ltd
 00:A0:85       Private
 00:A0:86       AmberWav               # AMBER WAVE SYSTEMS, INC.
-00:A0:87       ZarlinkS               # Zarlink Semiconductor Ltd.
+00:A0:87       Microsem               # Microsemi Corporation
 00:A0:88       Essentia               # ESSENTIAL COMMUNICATIONS
 00:A0:89       XpointTe               # XPOINT TECHNOLOGIES, INC.
 00:A0:8A       Brooktro               # BROOKTROUT TECHNOLOGY, INC.
 04:3D:98       Chongqin               # ChongQing QingJia Electronics CO.,LTD
 04:44:A1       TeleconG               # TELECON GALICIA,S.A.
 04:46:65       MurataMa               # Murata Manufacturing Co., Ltd.
+04:48:9A       Apple
 04:4A:50       RamaxelT               # Ramaxel Technology (Shenzhen) limited company
 04:4B:FF       Guangzho               # GuangZhou Hedy Digital Technology Co., Ltd
 04:4C:EF       FujianSa               # Fujian Sanao Technology Co.,Ltd
 08:68:EA       EitoElec               # EITO ELECTRONICS CO., LTD.
 08:6D:F2       Shenzhen               # Shenzhen MIMOWAVE Technology Co.,Ltd
 08:70:45       Apple
+08:74:F6       Winterha               # Winterhalter Gastronom GmbH
 08:75:72       ObeluxOy               # Obelux Oy
 08:76:18       VieTechn               # ViE Technologies Sdn. Bhd.
 08:76:95       AutoIndu               # Auto Industrial Co., Ltd.
 0C:5A:19       AxtionSd               # Axtion Sdn Bhd
 0C:5C:D8       DoliElek               # DOLI Elektronik GmbH
 0C:60:76       HonHaiPr               # Hon Hai Precision Ind. Co.,Ltd.
+0C:63:FC       NanjingS               # Nanjing Signway Technology Co., Ltd
 0C:68:03       Cisco
 0C:6E:4F       Primevol               # PrimeVOLT Co., Ltd.
 0C:71:5D       SamsungE               # Samsung Electronics Co.,Ltd
 14:36:05       Nokia                  # Nokia Corporation
 14:37:3B       Procom                 # PROCOM Systems
 14:3A:EA       Dynapowe               # Dynapower Company LLC
+14:3D:F2       BeijingS               # Beijing Shidai Hongyuan Network Communication Co.,Ltd
 14:3E:60       Alcatel-               # Alcatel-Lucent
 14:41:E2       MonacoEn               # Monaco Enterprises, Inc.
 14:43:19       Creative               # Creative&Link Technology Limited
 14:49:E0       SamsungE               # Samsung Electro Mechanics co.,LTD.
 14:4C:1A       MaxCommu               # Max Communication GmbH
 14:54:12       Entis                  # Entis Co., Ltd.
+14:56:45       Savitech               # Savitech Corp.
 14:5A:05       Apple
 14:5B:D1       ArrisGro               # ARRIS Group, Inc.
 14:60:80       Zte                    # zte corporation
 1C:17:D3       Cisco                  # CISCO SYSTEMS, INC.
 1C:18:4A       Shenzhen               # ShenZhen RicherLink Technologies Co.,LTD
 1C:19:DE       Eyevis                 # eyevis GmbH
+1C:1A:C0       Apple
 1C:1B:68       ArrisGro               # ARRIS Group, Inc.
+1C:1C:FD       DalianHi               # Dalian Hi-Think Computer Technology, Corp
 1C:1D:67       Shenzhen               # Shenzhen Huawei Communication Technologies Co., Ltd
 1C:1D:86       Cisco
 1C:33:4D       ItsTelec               # ITS Telecom
 20:89:86       Zte                    # zte corporation
 20:91:8A       Profalux
 20:91:D9       IM                     # I'M SPA
+20:9A:E9       Volacomm               # Volacomm Co., Ltd
 20:9B:A5       JiaxingG               # JIAXING GLEAD Electronics Co.,Ltd
 20:A2:E7       Lee-Dick               # Lee-Dickens Ltd
+20:A7:87       BointecT               # Bointec Taiwan Corporation Limited
 20:AA:25       Ip-NetLl               # IP-NET LLC
 20:AA:4B       Cisco-Li               # Cisco-Linksys, LLC
 20:B0:F7       Enclustr               # Enclustra GmbH
 28:2C:B2       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 28:31:52       HuaweiTe               # HUAWEI TECHNOLOGIES CO.,LTD
 28:34:10       EnigmaDi               # Enigma Diagnostics Limited
+28:34:A2       Cisco
 28:37:37       Apple
 28:38:CF       Gen2wave
 28:39:E7       PrecenoT               # Preceno Technology Pte.Ltd.
 2C:36:F8       Cisco                  # CISCO SYSTEMS, INC.
 2C:37:31       Shenzhen               # ShenZhen Yifang Digital Technology Co.,LTD
 2C:39:96       Sagemcom
+2C:39:C1       Ciena                  # Ciena Corporation
 2C:3A:28       FagorEle               # Fagor Electrónica
 2C:3B:FD       NetstorT               # Netstor Technology Co., Ltd.
 2C:3E:CF       Cisco
 30:52:5A       Nst                    # NST Co., LTD
 30:55:ED       TrexNetw               # Trex Network LLC
 30:57:AC       Irlab                  # IRLAB LTD.
+30:59:B7       Microsof               # Microsoft
 30:5D:38       Beissbar               # Beissbarth
 30:60:23       ArrisGro               # ARRIS Group, Inc.
 30:61:12       Pav                    # PAV GmbH
 34:51:C9       Apple
 34:5B:11       EviHeat                # EVI HEAT AB
 34:5C:40       CargtHol               # Cargt Holdings LLC
+34:5D:10       Wytek
 34:61:78       Boeing                 # The Boeing Company
 34:68:4A       Terawork               # Teraworks Co., Ltd.
 34:6B:D3       HuaweiTe               # Huawei Technologies Co., Ltd
 34:78:77       O-NetCom               # O-NET Communications(Shenzhen) Limited
 34:7E:39       NokiaDan               # Nokia Danmark A/S
 34:81:37       UnicardS               # UNICARD SA
+34:81:C4       Avm                    # AVM GmbH
 34:82:DE       KayoTech               # Kayo Technology, Inc.
 34:83:02       Iforcom                # iFORCOM Co., Ltd
 34:84:46       Ericsson               # Ericsson AB
 34:E0:CF       Zte                    # zte corporation
 34:E0:D7       Dongguan               # DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD
 34:E2:FD       Apple
+34:E4:2A       Automati               # Automatic Bar Controls Inc.
 34:EF:44       2wire
 34:EF:8B       NttCommu               # NTT Communications Corporation
 34:F3:9B       Wizlan                 # WizLAN Ltd.
 40:12:E4       Compass-               # Compass-EOS
 40:13:D9       GlobalEs               # Global ES
 40:15:97       ProtectA               # Protect America, Inc.
+40:16:7E       AsustekC               # ASUSTek COMPUTER INC.
 40:16:9F       Tp-LinkT               # TP-LINK TECHNOLOGIES CO., LTD.
 40:16:FA       EkmMeter               # EKM Metering
 40:18:B1       Aerohive               # Aerohive Networks Inc.
 44:13:19       WkkTechn               # WKK TECHNOLOGY LTD.
 44:18:4F       Fitview
 44:19:B6       Hangzhou               # Hangzhou Hikvision Digital Technology Co.,Ltd.
+44:1E:91       ArvidaIn               # ARVIDA Intelligent Electronics Technology  Co.,Ltd.
 44:1E:A1       Hewlett-               # Hewlett-Packard Company
 44:23:AA       Farmage                # Farmage Co., Ltd.
 44:25:BB       BambooEn               # Bamboo Entertainment Corporation
 48:5D:60       Azurewav               # Azurewave Technologies, Inc.
 48:60:BC       Apple
 48:61:A3       Concern"               # Concern "Axion" JSC
+48:62:76       HuaweiTe               # HUAWEI TECHNOLOGIES CO.,LTD
 48:6B:91       Fleetwoo               # Fleetwood Group Inc.
 48:6E:73       Pica8                  # Pica8, Inc.
 48:6F:D2       Storsimp               # StorSimple Inc
 50:C0:06       Carmanah               # Carmanah Signs
 50:C2:71       Securete               # SECURETECH INC
 50:C5:8D       JuniperN               # Juniper Networks
+50:C7:BF       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 50:C9:71       GnNetcom               # GN Netcom A/S
 50:C9:A0       SkipperE               # SKIPPER Electronics AS
 50:CC:F8       SamsungE               # Samsung Electro Mechanics
 54:AE:27       Apple
 54:B6:20       SuhdolE&               # SUHDOL E&C Co.Ltd.
 54:BE:F7       Pegatron               # PEGATRON CORPORATION
+54:C8:0F       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 54:CD:A7       FujianSh               # Fujian Shenzhou Electronic Co.,Ltd
 54:CD:EE       Shenzhen               # ShenZhen Apexis Electronic Co.,Ltd
 54:D0:ED       AximComm               # AXIM Communications
 60:DB:2A       Hns
 60:DE:44       HuaweiTe               # HUAWEI TECHNOLOGIES CO.,LTD
 60:E0:0E       ShinseiE               # SHINSEI ELECTRONICS CO LTD
+60:E3:27       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 60:E9:56       AylaNetw               # Ayla Networks, Inc
 60:EB:69       QuantaCo               # Quanta computer Inc.
 60:F1:3D       Jablocom               # JABLOCOM s.r.o.
 6C:09:D6       Digiques               # Digiquest Electronics LTD
 6C:0E:0D       SonyEric               # Sony Ericsson Mobile Communications AB
 6C:0F:6A       JdcTech                # JDC Tech Co., Ltd.
+6C:14:F7       Erhardt+               # Erhardt+Leimer GmbH
 6C:15:F9       Nautroni               # Nautronix Limited
 6C:18:11       DecaturE               # Decatur Electronics
 6C:20:56       Cisco
 6C:A7:80       Nokia                  # Nokia Corporation
 6C:A9:06       Telefiel               # Telefield Ltd
 6C:A9:6F       Transpac               # TransPacket AS
+6C:AA:B3       RuckusWi               # Ruckus Wireless
 6C:AB:4D       DigitalP               # Digital Payment Technologies
 6C:AC:60       Venetex                # Venetex Corp
 6C:AD:3F       HubbellB               # Hubbell Building Automation, Inc.
 70:2F:4B       Polyvisi               # PolyVision Inc.
 70:2F:97       AavaMobi               # Aava Mobile Oy
 70:30:18       Avaya                  # Avaya, Inc
+70:30:5D       Ubiquoss               # Ubiquoss Inc
 70:30:5E       NanjingZ               # Nanjing Zhongke Menglian Information Technology Co.,LTD
 70:31:87       Acx                    # ACX GmbH
 70:32:D5       AthenaWi               # Athena Wireless Communications Inc
 70:5E:AA       ActionTa               # Action Target, Inc.
 70:60:DE       Lavision               # LaVision GmbH
 70:61:73       Calantec               # Calantec GmbH
+70:62:B8       D-LinkIn               # D-Link International
 70:64:17       OrbisTec               # ORBIS TECNOLOGIA ELECTRICA S.A.
 70:65:82       SuzhouHa               # Suzhou Hanming Technologies Co., Ltd.
 70:6F:81       Private
 70:B1:4E       Pace                   # Pace plc
 70:B2:65       HiltronS               # Hiltron s.r.l.
 70:B3:D5       IeeeRegi               # IEEE REGISTRATION AUTHORITY  - Please see OUI36 public listing for more information.
+70:B3:D5:04:40:00/36   DonElect               # Don Electronics Ltd
 70:B3:D5:0A:90:00/36   Proconne               # ProConnections, Inc.
 70:B3:D5:0A:A0:00/36   Wanco                  # Wanco Inc
 70:B3:D5:0E:00:00/36   Plcis
 70:B3:D5:13:90:00/36   Tunstall               # Tunstall A/S
 70:B3:D5:18:30:00/36   EvcoSPA                # Evco S.p.a.
 70:B3:D5:18:40:00/36   Xv360Opt               # XV360 Optical Information Systems Ltd.
+70:B3:D5:19:00:00/36   FantomWi               # Fantom Wireless, Inc.
 70:B3:D5:28:F0:00/36   Overline               # Overline Systems
 70:B3:D5:29:D0:00/36   Xtech2Si               # XTech2 SIA
+70:B3:D5:30:80:00/36   DsdMicro               # DSD MICROTECHNOLOGY,INC.
+70:B3:D5:35:C0:00/36   AcsElect               # ACS electronics srl
 70:B3:D5:3C:20:00/36   Cellular               # Cellular Specialties, Inc.
 70:B3:D5:3D:E0:00/36   ElomacEl               # ELOMAC Elektronik GmbH
 70:B3:D5:3E:D0:00/36   UltraEle               # Ultra Electronics Sonar System Division
+70:B3:D5:40:A0:00/36   MonroeEl               # Monroe Electronics, Inc.
+70:B3:D5:42:F0:00/36   Sintokog               # SINTOKOGIO, LTD
+70:B3:D5:5A:80:00/36   Farmobil               # Farmobile
 70:B3:D5:6B:60:00/36   Inradios               # INRADIOS GmbH
 70:B3:D5:6D:30:00/36   Deuta-We               # DEUTA-WERKE GmbH
+70:B3:D5:70:20:00/36   SensorHi               # Sensor Highway Ltd
 70:B3:D5:81:40:00/36   Ingenieu               # Ingenieurbuero SOMTRONIK
 70:B3:D5:87:10:00/36   OsoTechn               # Oso Technologies
 70:B3:D5:90:80:00/36   Accusoni               # Accusonic
+70:B3:D5:91:80:00/36   GlovaRai               # Glova Rail A/S
 70:B3:D5:99:40:00/36   KeffNetw               # KeFF Networks
+70:B3:D5:9F:40:00/36   TbandSrl               # Tband srl
 70:B3:D5:AE:90:00/36   CariElec               # Cari Electronic
 70:B3:D5:B3:D0:00/36   Inras                  # Inras GmbH
+70:B3:D5:C2:C0:00/36   DromontS               # Dromont S.p.A.
+70:B3:D5:C8:D0:00/36   KstTechn               # KST Technology
 70:B3:D5:D8:B0:00/36   LenoxiAu               # Lenoxi Automation s.r.o.
 70:B3:D5:D9:E0:00/36   GrupoEpe               # GRUPO EPELSA S.L.
+70:B3:D5:DD:D0:00/36   BioRadLa               # BIO RAD LABORATORIES
+70:B3:D5:EC:D0:00/36   Sbs-Fein               # SBS-Feintechnik GmbH & Co. KG
 70:B3:D5:ED:C0:00/36   JDKoftin               # J.D. Koftinoff Software, Ltd.
 70:B3:D5:ED:D0:00/36   SolarNet               # Solar Network & Partners
 70:B3:D5:EF:90:00/36   Critical               # Critical Link
 70:B3:D5:F6:20:00/36   Frs                    # FRS GmbH & Co. KG
 70:B3:D5:F6:30:00/36   ArsProdu               # Ars Products
+70:B3:D5:FD:10:00/36   Redrat                 # RedRat Ltd
 70:B5:99       Embedded               # Embedded Technologies s.r.o.
 70:B9:21       Fiberhom               # FiberHome Telecommunication Technologies CO.,LTD
 70:C6:AC       BoschAut               # Bosch Automotive Aftermarket
 78:45:C4       Dell                   # Dell Inc
 78:46:C4       DaehapHy               # DAEHAP HYPER-TECH
 78:47:1D       SamsungE               # Samsung Electronics Co.,Ltd
+78:48:59       HewlettP               # Hewlett Packard
 78:49:1D       Will-Bur               # The Will-Burt Company
 78:4B:08       FRobotic               # f.robotics acquisitions ltd
 78:4B:87       MurataMa               # Murata Manufacturing Co.,Ltd.
 78:D3:4F       Pace-O-M               # Pace-O-Matic, Inc.
 78:D3:8D       Hongkong               # HONGKONG YUNLINK TECHNOLOGY LIMITED
 78:D5:B5       Navielek               # NAVIELEKTRO KY
+78:D6:6F       Aristocr               # Aristocrat Technologies Australia Pty. Ltd.
 78:D6:F0       SamsungE               # Samsung Electro Mechanics
 78:D7:52       HuaweiTe               # HUAWEI TECHNOLOGIES CO.,LTD
 78:D9:9F       NucomHk                # NuCom HK Ltd.
 80:3B:9A       Ghe-CesE               # ghe-ces electronic ag
 80:3F:5D       Winstars               # Winstars Technology Ltd
 80:3F:D6       BytesAtW               # bytes at work AG
+80:41:4E       BbkElect               # BBK Electronics Corp., Ltd.,
 80:42:7C       AdolfTed               # Adolf Tedsen GmbH & Co. KG
 80:47:31       PacketDe               # Packet Design, Inc.
 80:48:A5       SichuanT               # SICHUAN TIANYI COMHEART TELECOM CO.,LTD
 88:53:D4       HuaweiTe               # Huawei Technologies Co., Ltd
 88:57:6D       XtaElect               # XTA Electronics Ltd
 88:5A:92       Cisco
+88:5B:DD       Aerohive               # Aerohive Networks Inc.
 88:5C:4F       AlcatelL               # Alcatel Lucent
 88:61:5A       SianoMob               # Siano Mobile Silicon Ltd.
 88:68:5C       Shenzhen               # Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd
 90:A7:83       JswPacif               # JSW PACIFIC CORPORATION
 90:A7:C1       PakedgeD               # Pakedge Device and Software Inc.
 90:AC:3F       Brightsi               # BrightSign LLC
+90:AE:1B       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 90:B1:1C       Dell                   # Dell Inc.
 90:B1:34       ArrisGro               # ARRIS Group, Inc.
 90:B2:1F       Apple
 98:34:9D       KraussMa               # Krauss Maffei Technologies GmbH
 98:35:71       Sub10                  # Sub10 Systems Ltd
 98:35:B8       Assemble               # Assembled Products Corporation
+98:37:13       PtNavico               # PT.Navicom Indonesia
 98:3B:16       AmpakTec               # AMPAK Technology Inc
 98:3F:9F       ChinaSsj               # China SSJ (Suzhou) Network Technology Inc.
 98:42:46       SolIndus               # SOL INDUSTRY PTE., LTD
 9C:22:0E       TascanSe               # TASCAN Service GmbH
 9C:28:40       Discover               # Discovery Technology,LTD..
 9C:28:BF       Continen               # Continental Automotive Czech Republic s.r.o.
+9C:28:EF       HuaweiTe               # HUAWEI TECHNOLOGIES CO.,LTD
 9C:2A:70       HonHaiPr               # Hon Hai Precision Ind. Co.,Ltd.
 9C:31:78       FoshanHu               # Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd
 9C:31:B6       KuliteSe               # Kulite Semiconductor Products Inc
@@ -21537,6 +21584,7 @@ A0:CE:C8        CeLink                 # CE LINK LIMITED
 A0:CF:5B       Cisco                  # CISCO SYSTEMS, INC.
 A0:D1:2A       AxproTec               # AXPRO Technology Inc.
 A0:D3:C1       HewlettP               # Hewlett Packard
+A0:DA:92       NanjingG               # Nanjing Glarun Atten Technology Co. Ltd.
 A0:DC:04       Becker-A               # Becker-Antriebe GmbH
 A0:DD:97       Polarlin               # PolarLink Technologies, Ltd
 A0:DD:E5       Sharp                  # SHARP Corporation
@@ -21603,6 +21651,8 @@ A4:7A:A4        ArrisGro               # ARRIS Group, Inc.
 A4:7A:CF       VibicomC               # VIBICOM COMMUNICATIONS INC.
 A4:7C:14       Chargest               # ChargeStorm AB
 A4:7C:1F       GlobalMi               # Global Microwave Systems Inc.
+A4:7E:39       Zte                    # zte corporation
+A4:81:EE       Nokia                  # Nokia Corporation
 A4:85:6B       QElectro               # Q Electronics Ltd
 A4:89:5B       ArkInfos               # ARK INFOSOLUTIONS PVT LTD
 A4:90:05       ChinaGre               # CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD
@@ -21713,6 +21763,7 @@ A8:97:DC        Ibm
 A8:98:C6       Shinbo                 # Shinbo Co., Ltd.
 A8:99:5C       Aizo                   # aizo ag
 A8:9B:10       Inmotion               # inMotion Ltd.
+A8:A6:68       Zte                    # zte corporation
 A8:AD:3D       Alcatel-               # Alcatel-Lucent Shanghai Bell Co., Ltd
 A8:B0:AE       Leoni
 A8:B1:D4       Cisco                  # CISCO SYSTEMS, INC.
@@ -21811,6 +21862,8 @@ AC:9C:E4        Alcatel-               # Alcatel-Lucent Shanghai Bell Co., Ltd
 AC:A0:16       Cisco                  # CISCO SYSTEMS, INC.
 AC:A2:2C       BaycityT               # Baycity Technologies Ltd
 AC:A4:30       Peerless               # Peerless AV
+AC:A9:19       Trekstor               # TrekStor GmbH
+AC:A9:A0       Audioeng               # Audioengine, Ltd.
 AC:AB:8D       LyngsoMa               # Lyngso Marine A/S
 AC:B3:13       ArrisGro               # ARRIS Group, Inc.
 AC:B8:59       UnibandE               # Uniband Electronic Corp,
@@ -22052,6 +22105,7 @@ B8:26:D4        Furukawa               # Furukawa Industrial S.A. Produtos Elétricos
 B8:27:EB       Raspberr               # Raspberry Pi Foundation
 B8:28:8B       ParkerHa               # Parker Hannifin
 B8:29:F7       BlasterT               # Blaster Tech
+B8:2A:72       Dell                   # Dell Inc
 B8:2A:DC       EfrEurop               # EFR Europäische Funk-Rundsteuerung GmbH
 B8:2C:A0       Honeywel               # Honeywell HomMed
 B8:30:A8       Road-Tra               # Road-Track Telematics Development
@@ -22080,11 +22134,13 @@ B8:6C:E8      SamsungE               # Samsung Electronics Co.,Ltd
 B8:70:F4       CompalIn               # COMPAL INFORMATION (KUNSHAN) CO., LTD.
 B8:74:24       Viessman               # Viessmann Elektronik GmbH
 B8:74:47       Converge               # Convergence Technologies
+B8:75:C0       Paypal                 # PayPal, Inc.
 B8:76:3F       HonHaiPr               # Hon Hai Precision Ind. Co.,Ltd.
 B8:77:C3       DecagonD               # Decagon Devices, Inc.
 B8:78:2E       Apple
 B8:79:7E       SecureMe               # Secure Meters (UK) Limited
 B8:7A:C9       Siemens                # Siemens Ltd.
+B8:7C:F2       Aerohive               # Aerohive Networks Inc.
 B8:87:1E       GoodMind               # Good Mind Industries Co., Ltd.
 B8:87:A8       StepAhea               # Step Ahead Innovations Inc.
 B8:88:E3       CompalIn               # COMPAL INFORMATION (KUNSHAN) CO., LTD
@@ -22271,6 +22327,7 @@ C0:57:BC        Avaya                  # Avaya, Inc
 C0:58:A7       Pico                   # Pico Systems 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.
 C0:62:6B       Cisco                  # CISCO SYSTEMS, INC.
 C0:63:94       Apple
 C0:64:C6       Nokia                  # Nokia Corporation
@@ -22480,6 +22537,7 @@ C8:94:D2        JiangsuD               # Jiangsu Datang  Electronic Products Co., Ltd
 C8:97:9F       Nokia                  # Nokia Corporation
 C8:9C:1D       Cisco                  # CISCO SYSTEMS, INC.
 C8:9C:DC       Elitegro               # ELITEGROUP COMPUTER SYSTEM CO., LTD.
+C8:9F:1D       Shenzhen               # SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD
 C8:9F:42       VdiiInno               # VDII Innovation AB
 C8:A0:30       TexasIns               # Texas Instruments
 C8:A1:B6       Shenzhen               # Shenzhen Longway Technologies Co., Ltd
@@ -22522,6 +22580,7 @@ C8:EF:2E        BeijingG               # Beijing Gefei Tech. Co., Ltd
 C8:F3:6B       YamatoSc               # Yamato Scale Co.,Ltd.
 C8:F3:86       Shenzhen               # Shenzhen Xiaoniao Technology Co.,Ltd
 C8:F4:06       Avaya                  # Avaya, Inc
+C8:F6:50       Apple
 C8:F6:8D       SETechno               # S.E.TECHNOLOGIES LIMITED
 C8:F7:04       Building               # Building Block Video
 C8:F7:33       IntelCor               # Intel Corporate
@@ -22602,11 +22661,13 @@ CC:AF:78      HonHaiPr               # Hon Hai Precision Ind. Co.,Ltd.
 CC:B2:55       D-LinkIn               # D-Link International
 CC:B3:F8       FujitsuI               # FUJITSU ISOTEC LIMITED
 CC:B5:5A       Fraunhof               # Fraunhofer ITWM
+CC:B6:91       Necmagnu               # NECMagnusCommunications
 CC:B8:88       AnbSecur               # AnB Securite s.a.
 CC:B8:F1       EagleKin               # EAGLE KINGDOM TECHNOLOGIES LIMITED
 CC:BD:35       Steinel                # Steinel GmbH
 CC:BE:71       Optilogi               # OptiLogix BV
 CC:C1:04       AppliedT               # Applied Technical Systems
+CC:C3:EA       Motorola               # Motorola Mobility LLC
 CC:C5:0A       Shenzhen               # SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD
 CC:C6:2B       Tri-Syst               # Tri-Systems Corporation
 CC:C8:D7       CiasElet               # CIAS Elettronica srl
@@ -22670,10 +22731,12 @@ D0:66:7B      SamsungE               # Samsung Electronics Co., LTD
 D0:67:E5       Dell                   # Dell Inc
 D0:69:9E       LuminexL               # LUMINEX Lighting Control Equipment
 D0:69:D0       VertoMed               # Verto Medical Solutions, LLC
+D0:72:DC       Cisco
 D0:73:7F       Mini-Cir               # Mini-Circuits
 D0:73:8E       DongOhPr               # DONG OH PRECISION CO., LTD.
 D0:73:D5       LifiLabs               # LIFI LABS MANAGEMENT PTY LTD
 D0:75:BE       RenoA&E                # Reno A&E
+D0:76:50       IeeeRegi               # IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
 D0:7A:B5       HuaweiTe               # Huawei Technologies Co., Ltd
 D0:7D:E5       ForwardP               # Forward Pay Systems, Inc.
 D0:7E:28       HewlettP               # Hewlett Packard
@@ -22702,6 +22765,7 @@ D0:C1:B1        SamsungE               # Samsung Electronics Co.,Ltd
 D0:C2:82       Cisco                  # CISCO SYSTEMS, INC.
 D0:C4:2F       Tamagawa               # Tamagawa Seiki Co.,Ltd.
 D0:C7:89       Cisco
+D0:C7:C0       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 D0:CD:E1       Scientec               # Scientech Electronics
 D0:CF:5E       EnergyMi               # Energy Micro AS
 D0:D0:FD       Cisco                  # CISCO SYSTEMS, INC.
@@ -22824,6 +22888,7 @@ D4:D7:48        Cisco                  # CISCO SYSTEMS, INC.
 D4:D8:98       KoreaCno               # Korea CNO Tech Co., Ltd
 D4:D9:19       Gopro
 D4:DF:57       Alpinion               # Alpinion Medical Systems
+D4:E0:8E       Valuehd                # ValueHD Corporation
 D4:E3:2C       SSiedleS               # S. Siedle & Sohne
 D4:E3:3F       Alcatel-               # Alcatel-Lucent
 D4:E8:B2       SamsungE               # Samsung Electronics
@@ -23188,6 +23253,7 @@ E4:C6:E6        MophieLl               # Mophie, LLC
 E4:C7:22       Cisco
 E4:C8:06       CeiecEle               # Ceiec Electric Technology Inc.
 E4:CE:8F       Apple
+E4:D3:32       Tp-LinkT               # TP-LINK TECHNOLOGIES CO.,LTD.
 E4:D3:F1       Cisco
 E4:D5:3D       HonHaiPr               # Hon Hai Precision Ind. Co.,Ltd.
 E4:D7:1D       OrayaThe               # Oraya Therapeutics
@@ -23756,6 +23822,7 @@ FC:AF:6A        Conemtec               # Conemtech AB
 FC:B0:C4       Shanghai               # Shanghai DareGlobal Technologies Co., Ltd
 FC:BB:A1       Shenzhen               # Shenzhen Minicreate Technology Co.,Ltd
 FC:C2:3D       Atmel                  # Atmel Corporation
+FC:C2:DE       MurataMa               # Murata Manufacturing Co., Ltd.
 FC:C7:34       SamsungE               # Samsung Electronics Co.,Ltd
 FC:C8:97       Zte                    # ZTE Corporation
 FC:CC:E4       Ascon                  # Ascon Ltd.
index 054fdb4ed4b18acb69d0b9c0f9ff621af9e2fe6e..578ab5e3d4ec3061e96f4478f9d2c922bb2f3289 100644 (file)
@@ -468,11 +468,18 @@ main(int argc, char *argv[])
   }
 
   merge_close_in_files(in_file_count, in_files);
-  if (!got_read_error && !got_write_error) {
+  if (!got_write_error) {
     if (!wtap_dump_close(pdh, &write_err))
       got_write_error = TRUE;
-  } else
-    wtap_dump_close(pdh, &close_err);
+  } else {
+    /*
+     * We already got a write error; no need to report another
+     * write error on close.
+     *
+     * Don't overwrite the earlier write error.
+     */
+    (void)wtap_dump_close(pdh, &close_err);
+  }
 
   if (got_read_error) {
     /*
@@ -500,11 +507,24 @@ main(int argc, char *argv[])
 
     case WTAP_ERR_UNSUPPORTED_ENCAP:
       /*
-       * This is a problem with the particular frame we're writing;
-       * note that, and give the frame number.
+       * This is a problem with the particular frame we're writing and
+       * the file type and subtype we're wwriting; note that, and
+       * report the frame number and file type/subtype.
+       */
+      fprintf(stderr, "mergecap: Frame %u of \"%s\" has a network type that can't be saved in a \"%s\" file.\n",
+              in_file->packet_num, in_file->filename,
+              wtap_file_type_subtype_string(file_type));
+      break;
+
+    case WTAP_ERR_PACKET_TOO_LARGE:
+      /*
+       * This is a problem with the particular frame we're writing and
+       * the file type and subtype we're wwriting; note that, and
+       * report the frame number and file type/subtype.
        */
-      fprintf(stderr, "mergecap: Frame %u of \"%s\" has a network type that can't be saved in a file with that format\n.",
-              in_file->packet_num, in_file->filename);
+      fprintf(stderr, "mergecap: Frame %u of \"%s\" is too large for a \"%s\" file\n.",
+              in_file->packet_num, in_file->filename,
+              wtap_file_type_subtype_string(file_type));
       break;
 
     default:
diff --git a/nio-ie5.c b/nio-ie5.c
deleted file mode 100644 (file)
index 6ad3311..0000000
--- a/nio-ie5.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (c) 2000, Red Hat, Inc.
- *
- *     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.
- *
- *     A copy of the GNU General Public License can be found at
- *     http://www.gnu.org/
- *
- * Written by DJ Delorie <dj@cygnus.com>
- * Modified by Ulf Lamping to meet Wireshark use
- *
- */
-
-/* The purpose of this file is to manage internet downloads using the
-   Internet Explorer version 5 DLLs.  To use this method, the user
-   must already have installed and configured IE5.  */
-
-#include "windows.h"
-#include <wininet.h>
-#include "nio-ie5.h"
-
-#include <glib.h>
-
-static HINTERNET internet = 0;
-
-
-
-netio_ie5_t * 
-netio_ie5_connect (char const *url)
-{
-  int resend = 0;
-  DWORD type, type_s;
-  netio_ie5_t * netio_ie5_conn;
-  DWORD dw_ret;
-  DWORD flags =
- /*    INTERNET_FLAG_DONT_CACHE |*/
-    INTERNET_FLAG_KEEP_CONNECTION |
-    INTERNET_FLAG_PRAGMA_NOCACHE |
-    INTERNET_FLAG_RELOAD |
-    INTERNET_FLAG_NO_CACHE_WRITE |
-    INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_PASSIVE;
-
-  if (internet == 0)
-    {
-      HINSTANCE h = ws_load_library("wininet.dll");
-      if (!h)
-       {
-          /* XXX - how to return an error code? */
-          g_warning("Failed to load wininet.dll");
-         return NULL;
-       }
-      /* pop-up dialup dialog box */
-      /* XXX - do we need the dialup box or simply don't attempt an update in this case? */
-      dw_ret = InternetAttemptConnect (0);
-      if (dw_ret != ERROR_SUCCESS) {
-        g_warning("InternetAttemptConnect failed: %u", dw_ret);
-        return NULL;
-      }
-      internet = InternetOpen ("Wireshark Update", INTERNET_OPEN_TYPE_PRECONFIG,
-                              NULL, NULL, 0);
-      if(internet == NULL) {
-        g_warning("InternetOpen failed %u", GetLastError());
-        return NULL;
-      }
-    }
-
-  netio_ie5_conn = g_malloc(sizeof(netio_ie5_t));
-
-  netio_ie5_conn->connection = InternetOpenUrl (internet, url, NULL, 0, flags, 0);
-
-try_again:
-
-#if 0
-       /* XXX - implement this option */
-  if (net_user && net_passwd)
-    {
-      InternetSetOption (connection, INTERNET_OPTION_USERNAME,
-                        net_user, strlen (net_user));
-      InternetSetOption (connection, INTERNET_OPTION_PASSWORD,
-                        net_passwd, strlen (net_passwd));
-    }
-#endif
-
-#if 0
-       /* XXX - implement this option */
-  if (net_proxy_user && net_proxy_passwd)
-    {
-      InternetSetOption (connection, INTERNET_OPTION_PROXY_USERNAME,
-                        net_proxy_user, strlen (net_proxy_user));
-      InternetSetOption (connection, INTERNET_OPTION_PROXY_PASSWORD,
-                        net_proxy_passwd, strlen (net_proxy_passwd));
-    }
-#endif
-
-  if (resend)
-    if (!HttpSendRequest (netio_ie5_conn->connection, 0, 0, 0, 0))
-      netio_ie5_conn->connection = 0;
-
-  if (!netio_ie5_conn->connection)
-    {
-      switch(GetLastError ()) {
-      case ERROR_INTERNET_EXTENDED_ERROR:
-          {
-         char buf[2000];
-         DWORD e, l = sizeof (buf);
-         InternetGetLastResponseInfo (&e, buf, &l);
-         MessageBox (0, buf, "Internet Error", 0);
-          }
-          break;
-      case ERROR_INTERNET_NAME_NOT_RESOLVED:
-          g_warning("Internet error: The servername could not be resolved");
-          break;
-      case ERROR_INTERNET_CANNOT_CONNECT:
-          g_warning("Internet error: Could not connect to the server");
-          break;
-      default:
-          g_warning("Internet error: %u", GetLastError ());
-      }
-      return NULL;
-    }
-
-  type_s = sizeof (type);
-  InternetQueryOption (netio_ie5_conn->connection, INTERNET_OPTION_HANDLE_TYPE,
-                      &type, &type_s);
-
-  switch (type)
-    {
-    case INTERNET_HANDLE_TYPE_HTTP_REQUEST:
-    case INTERNET_HANDLE_TYPE_CONNECT_HTTP:
-      type_s = sizeof (DWORD);
-      if (HttpQueryInfo (netio_ie5_conn->connection,
-                        HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
-                        &type, &type_s, NULL))
-       {
-         if (type == 401)      /* authorization required */
-           {
-             netio_ie5_flush_io (netio_ie5_conn);
-              /* XXX - query net_user && net_passwd from user
-             get_auth (NULL);*/
-             resend = 1;
-             goto try_again;
-           }
-         else if (type == 407) /* proxy authorization required */
-           {
-             netio_ie5_flush_io (netio_ie5_conn);
-              /* XXX - query net_proxy_user && net_proxy_passwd from user
-             get_proxy_auth (NULL);*/
-             resend = 1;
-             goto try_again;
-           }
-         else if (type >= 300)
-           {
-              g_warning("Failed with HTTP response %u", type);
-              g_free(netio_ie5_conn);
-             return NULL;
-           }
-       }
-    }
-       
-       return netio_ie5_conn;
-}
-
-void
-netio_ie5_flush_io (netio_ie5_t * netio_e5_conn)
-{
-  DWORD actual = 0;
-  char buf[1024];
-  do
-    {
-      InternetReadFile (netio_e5_conn->connection, buf, 1024, &actual);
-    }
-  while (actual > 0);
-}
-
-void
-netio_ie5_disconnect (netio_ie5_t * netio_e5_conn)
-{
-  if (netio_e5_conn->connection)
-    InternetCloseHandle (netio_e5_conn->connection);
-  g_free(netio_e5_conn);
-}
-
-int
-netio_ie5_ok (netio_ie5_t * netio_e5_conn)
-{
-  return (netio_e5_conn->connection == NULL) ? 0 : 1;
-}
-
-int
-netio_ie5_read (netio_ie5_t * netio_e5_conn, char *buf, int nbytes)
-{
-  DWORD actual;
-  if (InternetReadFile (netio_e5_conn->connection, buf, nbytes, &actual))
-    return actual;
-  return -1;
-}
diff --git a/nio-ie5.h b/nio-ie5.h
deleted file mode 100644 (file)
index d5e9568..0000000
--- a/nio-ie5.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (c) 2000, Red Hat, Inc.
- *
- *     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.
- *
- *     A copy of the GNU General Public License can be found at
- *     http://www.gnu.org/
- *
- * Written by DJ Delorie <dj@cygnus.com>
- * Modified by Ulf Lamping to meet Wireshark use
- *
- */
-
-#ifndef SETUP_NIO_IE5_H
-#define SETUP_NIO_IE5_H
-
-/* see nio-ie5.c */
-
-typedef struct netio_ie5_s {
-    HINTERNET connection;
-} netio_ie5_t;
-
-netio_ie5_t * netio_ie5_connect (char const *url);
-void netio_ie5_disconnect (netio_ie5_t * netio_e5_conn);
-int netio_ie5_ok (netio_ie5_t * netio_e5_conn);
-int netio_ie5_read (netio_ie5_t * netio_e5_conn, char *buf, int nbytes);
-void netio_ie5_flush_io (netio_ie5_t * netio_e5_conn);
-
-#endif /* SETUP_NIO_IE5_H */
index 5bc4ff94b7824f8078318b27e72e792f9a5dc019..0ff2cefc50559d52e60df52df9770d3b1cbf132b 100644 (file)
@@ -365,4 +365,4 @@ void proto_reg_handoff_mac_mgmt_msg(void)
        mgt_msg_handle = find_dissector("mac_mgmt_msg_mob_asc_rep_handler");
        if (mgt_msg_handle)
                dissector_add_uint( "wmx.mgmtmsg", MAC_MGMT_MSG_MOB_ASC_REP, mgt_msg_handle );
-}
\ No newline at end of file
+}
index d7606f85796478011fbf17c4df183c163d25e8ef..82780593dcbc58b2ea4ac87b53c920244c0ed03a 100644 (file)
@@ -166,4 +166,4 @@ proto_reg_handoff_mac_mgmt_msg_fpc(void)
 
        fpc_handle = create_dissector_handle(dissect_mac_mgmt_msg_fpc_decoder, proto_mac_mgmt_msg_fpc_decoder);
        dissector_add_uint("wmx.mgmtmsg", MAC_MGMT_MSG_FPC, fpc_handle);
-}
\ No newline at end of file
+}
index 9bf0d9977c1fbf84b1c6823a0fb309adf68d3c00..7c4689103f18adf56f3148b48af5b646232c9f9b 100644 (file)
@@ -1595,8 +1595,8 @@ gint dissect_ulmap_ie( proto_tree *ie_tree, const guint8 *bufptr, gint offset, g
     nibble = offset;
 
     /* 8.4.5.4 UL-MAP IE format - table 287 */
-    cid = NIB_WORD(nibble, bufptr);
-    uiuc = NIB_NIBBLE(nibble + 4, bufptr);
+    cid = TVB_NIB_WORD(nibble, tvb);
+    uiuc = TVB_NIB_NIBBLE(nibble + 4, tvb);
 
     if (uiuc == 0)
     {
index 53b05b7e0c57383c762b38aba11ee279cc4a1ba7..7eca8f5fb25bf8fd6b01688fa053abc7f99efa76 100644 (file)
     (((n) & 1) \
     ?  (b)[(n)/2] & NIBBLE_MASK \
     : ((b)[(n)/2] >> 4) & NIBBLE_MASK)
+#define TVB_NIB_NIBBLE(n,t) \
+    (((n) & 1) \
+    ?  tvb_get_guint8((t), (n)/2) & NIBBLE_MASK \
+    : (tvb_get_guint8((t), (n)/2) >> 4) & NIBBLE_MASK)
 
 /* extract the byte at the given nibble address 'n' of buffer 'b' */
 #define NIB_BYTE(n,b) \
     : pletoh16((b) + (n)/2)
     ? (pletoh32((b)+(n)/2) >> 12) & 0x0000FFFF \
     */
+#define TVB_NIB_WORD(n,t) \
+    (n) & 1 \
+    ? (gint)((tvb_get_ntohl((t), (n)/2) >> 12) & 0x0000FFFF) \
+    : tvb_get_ntohs((t), (n)/2)
 
 /* extract the word at the given nibble address 'n' of buffer 'b' */
 #define NIB_LONG(n,b) \
index b43ca318f2422b4fa92399f329ba5f09e372d0ea..c7706aba03ccce7271ca836e97d9c92f017f4ff7 100644 (file)
@@ -142,8 +142,8 @@ frame_write(FrameRecord_t *frame, wtap *wth, wtap_dumper *pdh, Buffer *buf,
 static int
 frames_compare(gconstpointer a, gconstpointer b)
 {
-    const FrameRecord_t *frame1 = *(const FrameRecord_t **) a;
-    const FrameRecord_t *frame2 = *(const FrameRecord_t **) b;
+    const FrameRecord_t *frame1 = *(const FrameRecord_t *const *) a;
+    const FrameRecord_t *frame2 = *(const FrameRecord_t *const *) b;
 
     const nstime_t *time1 = &frame1->time;
     const nstime_t *time2 = &frame2->time;
index ee6cdf34d5138cf2a3ca50ff86e6f62dee24f7d2..ef5968351137dcc8c54171618f378392f0a58e14 100644 (file)
--- a/services
+++ b/services
@@ -5126,8 +5126,8 @@ iwlistener       2866/tcp # iwlistener [Fred_Surr] [Fred_Surr]
 iwlistener       2866/udp # iwlistener [Fred_Surr] [Fred_Surr]
 esps-portal      2867/tcp # esps-portal [Nicholas_Stowfis] [Nicholas_Stowfis]
 esps-portal      2867/udp # esps-portal [Nicholas_Stowfis] [Nicholas_Stowfis]
-npep-messaging   2868/tcp # NPEP Messaging [Kristian_A_Bognaes] [Kristian_A_Bognaes]
-npep-messaging   2868/udp # NPEP Messaging [Kristian_A_Bognaes] [Kristian_A_Bognaes]
+npep-messaging   2868/tcp # Norman Proprietaqry Events Protocol [Norman_Safeground_AS] [Kristian_A_Bognaes] 2014-01-15
+npep-messaging   2868/udp # Norman Proprietaqry Events Protocol [Norman_Safeground_AS] [Kristian_A_Bognaes] 2014-01-15
 icslap           2869/tcp # ICSLAP [Richard_Lamb] [Richard_Lamb]
 icslap           2869/udp # ICSLAP [Richard_Lamb] [Richard_Lamb]
 daishi           2870/tcp # daishi [Patrick_Chipman] [Patrick_Chipman]
@@ -9893,6 +9893,7 @@ vmware-fdm       8182/udp # VMware Fault Domain Manager [Ron_Passerini] [Ron_Pas
 proremote        8183/tcp # ProRemote [Alex_Lelievre] [Alex_Lelievre] 2009-08-18
 itach            8184/tcp # Remote iTach Connection [Barend_Jacobus_van_d] [Barend_Jacobus_van_d] 2010-04-27
 itach            8184/udp # Remote iTach Connection [Barend_Jacobus_van_d] [Barend_Jacobus_van_d] 2010-04-27
+limnerpressure   8191/tcp # Limner Pressure [Aaron_Kleinsteiber] [Aaron_Kleinsteiber] 2014-01-16
 spytechphone     8192/tcp # SpyTech Phone Service [Bill_Kay] [Bill_Kay] 2006-04
 spytechphone     8192/udp # SpyTech Phone Service [Bill_Kay] [Bill_Kay] 2006-04
 blp1             8194/tcp # Bloomberg data API [Albert_Hou] [Albert_Hou] 2006-05
@@ -10518,6 +10519,9 @@ irisa           11000/tcp # IRISA [V_A_Brauner] [V_A_Brauner]
 irisa           11000/udp # IRISA [V_A_Brauner] [V_A_Brauner]
 metasys         11001/tcp # Metasys [Tobin_Schuster] [Tobin_Schuster]
 metasys         11001/udp # Metasys [Tobin_Schuster] [Tobin_Schuster]
+cefd-vmp        10023/udp # Comtech EF-Data's Vipersat Management Protocol [Comtech] [Nathan_Jeffords] 2014-01-23
+weave           11095/tcp # Nest device-to-device and device-to-service application protocol [Nest_Labs_Inc] [Grant_Erickson] 2014-01-16
+weave           11095/udp # Nest device-to-device and device-to-service application protocol [Nest_Labs_Inc] [Grant_Erickson] 2014-01-16
 origo-sync      11103/tcp # OrigoDB Server Sync Interface [Devrex_Labs] [Robert_Friberg] 2013-03-29
 netapp-icmgmt   11104/tcp # NetApp Intercluster Management [Craig_Everhart] [Craig_Everhart] 2010-07-06
 netapp-icdata   11105/tcp # NetApp Intercluster Data [Craig_Everhart] [Craig_Everhart] 2010-07-06
@@ -10703,6 +10707,7 @@ hde-lcesrvr-2   14937/tcp # hde-lcesrvr-2 [Horizon_Digital_Ente] [Horizon_Digita
 hde-lcesrvr-2   14937/udp # hde-lcesrvr-2 [Horizon_Digital_Ente] [Horizon_Digital_Ente]
 hydap           15000/tcp # Hypack Data Aquisition [HYPACK_Inc] [Mircea_Neacsu] 2011-10-27
 hydap           15000/udp # Hypack Data Aquisition [HYPACK_Inc] [Mircea_Neacsu] 2011-10-27
+onep-tls        15002/tcp # Open Network Environment TLS [Cisco_3] [Andrew_Thurber] 2014-01-21
 v2g-secc        15118/udp # v2g Supply Equipment Communication Controller Discovery Protocol [Holger_Lochner] [Holger_Lochner] 2011-04-06
 xpilot          15345/tcp # XPilot Contact Port [Bert_Gijsbers] [Bert_Gijsbers]
 xpilot          15345/udp # XPilot Contact Port [Bert_Gijsbers] [Bert_Gijsbers]
index 842f11b9b776d5ded92fbedd9a84b2b783ae8ea3..2585140f8e98dc1246e954b3188c902ccfc57dd8 100755 (executable)
@@ -58,7 +58,18 @@ fi
 #
 
 git ls-remote --heads gerrit &> /dev/null
-if [ $? -ne 0 ] ; then exit_err "Can't find a remote named \"gerrit\"" ; fi
+if [ $? -ne 0 ] ; then
+    exit_err "Can't find a remote named \"gerrit\".\nAdd one with one of\n" \
+    "\n    git remote add gerrit https://your.username@code.wireshark.org/review/wireshark" \
+    "\n    git remote add gerrit ssh://your.username@code.wireshark.org:29418/wireshark"
+fi
+
+if [ ! -f "$COMMIT_MSG_HOOK" ] ; then
+    exit_err "Can't find a commit-msg hook.\nDownload it with one with one of\n" \
+    "\n    curl -Lo .git/hooks/commit-msg https://code.wireshark.org/review/tools/hooks/commit-msg" \
+    "\n    scp -p -P 29418 your.username@code.wireshark.org:hooks/commit-msg .git/hooks/"
+fi
+
 
 #
 # Make sure our working directory is clean
@@ -66,24 +77,33 @@ if [ $? -ne 0 ] ; then exit_err "Can't find a remote named \"gerrit\"" ; fi
 
 git diff --quiet HEAD || exit_err "You have changes in your working directory. Please clean them up."
 
+#
+# Make sure we're up to date
+#
+git fetch gerrit
+
 #
 # Find our change
 #
 
 CHANGE="$1"
 LONG_HASH=""
+TOPIC=""
 
 if [ -z "$CHANGE" ] ; then exit_err ; fi
 
 if [[ $CHANGE = r* ]] ; then
     # Subversion
     SVN_REV=${CHANGE:1}
-    LONG_HASH=`git log master --grep "svn path=/trunk/; revision=${SVN_REV}\$" -1 --format=format:%H`
+    LONG_HASH=`git log gerrit/master --grep "svn path=/trunk/; revision=${SVN_REV}\$" -1 --format=format:%H`
     if [ -z "$LONG_HASH" ] ; then exit_err "Can't find SVN revision $CHANGE" ; fi
+    TOPIC="/backport-$CHANGE"
 else
     # Git
     LONG_HASH=`git rev-parse $CHANGE`
+    SHORT_HASH=`git rev-parse --short $CHANGE`
     if [ -z "$LONG_HASH" ] ; then exit_err "Can't find git commit $CHANGE" ; fi
+    TOPIC="/backport-g$SHORT_HASH"
 fi
 
 #
@@ -99,7 +119,7 @@ if [[ $UPSTREAM_NAME != master-[0-9].[0-9]* ]] ; then
     exit_err "Can't backport to remote branch $UPSTREAM_NAME."
 fi
 
-PUSH_CMD="git push gerrit HEAD:refs/for/$UPSTREAM_NAME"
+PUSH_CMD="git push gerrit HEAD:refs/for/${UPSTREAM_NAME}${TOPIC}"
 
 #
 # On with the show
index face22c7939aafe1f256a848027d57fccd11f619..1a8f54bf690bfedfe3f7466ba91b3dea03f5c160 100755 (executable)
@@ -77,8 +77,9 @@ if [ $VALGRIND -eq 1 ]; then
     RUNNER="`dirname $0`/valgrind-wireshark.sh"
     COMMON_ARGS="-b $BIN_DIR $COMMON_ARGS"
     declare -a RUNNER_ARGS=("" "-T")
-    # Valgrind requires more resources, so bump our limits to 1.5 times normal
-    MAX_CPU_TIME=`expr 3 \* $MAX_CPU_TIME / 2`
+    # Valgrind requires more resources, so permit 1.5x memory and 2x time
+    # (1.5x time is too small for a few large captures in the menagerie)
+    MAX_CPU_TIME=`expr 2 \* $MAX_CPU_TIME`
     MAX_VMEM=`expr 3 \* $MAX_VMEM / 2`
 else
     # Not using valgrind, use regular tshark.
index 7bc9f746c6648d456eaccdd199c80bc6e6a4a884..d87cb36ae04528a715e6787e97a9794193f3af13 100644 (file)
@@ -3136,7 +3136,7 @@ PRIVATE void tplt_xfer(const char *name, FILE *in, FILE *out, int *lineno)
     (*lineno)++;
     iStart = 0;
     if( name ){
-      for(i=0; line[i] && i<LINESIZE; i++){
+      for(i=0; i<LINESIZE && line[i]; i++){
         if( line[i]=='P' && i<(LINESIZE-5) && strncmp(&line[i],"Parse",5)==0
           && (i==0 || !safe_isalpha(line[i-1]))
         ){
@@ -3422,10 +3422,8 @@ PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
       }
     }
   }
-  if( rp->code ){
-    cp = append_str(0,0,0,0);
-    rp->code = Strsafe(cp?cp:"");
-  }
+  cp = append_str(0,0,0,0);
+  rp->code = Strsafe(cp?cp:"");
 }
 
 /*
index 1e58c50f8bc1f569e2f9c742e028beedd69d3f2d..51ac2717fadf9e3defd2cf1b0fe9aa5dd356de5a 100755 (executable)
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /bin/bash
 
 #
 # runlex.sh
@@ -36,7 +36,14 @@ then
        echo "Usage: runlex <lex/flex command to run> [ arguments ]" 1>&2
        exit 1
 fi
-LEX="$1"
+
+if [ -n "${OS#Windows}" ] ; then
+       LEX=`cygpath --unix $1`
+        echo "$1 -> $LEX"
+else
+       LEX="$1"
+fi
+
 shift
 #
 # Check whether we have it.
@@ -95,7 +102,7 @@ done
 #
 # OK, run it.
 #
-echo "Running ${LEX}"
+echo "Running ${LEX} -o$outfile $flags $@"
 ${LEX} -o"$outfile" $flags "$@"
 
 #
index 37367453edf3de6ec744e091d5ccfbf4695be164..d41818caa90d03eb47327846ef0c319c5c7e8482 100644 (file)
--- a/tshark.c
+++ b/tshark.c
@@ -3204,8 +3204,9 @@ load_cap_file(capture_file *cf, char *save_file, int out_file_type,
 
               case WTAP_ERR_UNSUPPORTED_ENCAP:
                 /*
-                 * This is a problem with the particular frame we're writing;
-                 * note that, and give the frame number.
+                 * This is a problem with the particular frame we're writing
+                 * and the file type and subtype we're writing; note that,
+                 * and report the frame number and file type/subtype.
                  *
                  * XXX - framenum is not necessarily the frame number in
                  * the input file if there was a read filter.
@@ -3216,6 +3217,21 @@ load_cap_file(capture_file *cf, char *save_file, int out_file_type,
                         wtap_file_type_subtype_short_string(out_file_type));
                 break;
 
+              case WTAP_ERR_PACKET_TOO_LARGE:
+                /*
+                 * This is a problem with the particular frame we're writing
+                 * and the file type and subtype we're writing; note that,
+                 * and report the frame number and file type/subtype.
+                 *
+                 * XXX - framenum is not necessarily the frame number in
+                 * the input file if there was a read filter.
+                 */
+                fprintf(stderr,
+                        "Frame %u of \"%s\" is too large for a \"%s\" file.\n",
+                        framenum, cf->filename,
+                        wtap_file_type_subtype_short_string(out_file_type));
+                break;
+
               default:
                 show_capture_file_io_error(save_file, err, FALSE);
                 break;
@@ -3271,8 +3287,9 @@ load_cap_file(capture_file *cf, char *save_file, int out_file_type,
 
             case WTAP_ERR_UNSUPPORTED_ENCAP:
               /*
-               * This is a problem with the particular frame we're writing;
-               * note that, and give the frame number.
+               * This is a problem with the particular frame we're writing
+               * and the file type and subtype we're writing; note that,
+               * and report the frame number and file type/subtype.
                */
               fprintf(stderr,
                       "Frame %u of \"%s\" has a network type that can't be saved in a \"%s\" file.\n",
@@ -3280,6 +3297,18 @@ load_cap_file(capture_file *cf, char *save_file, int out_file_type,
                       wtap_file_type_subtype_short_string(out_file_type));
               break;
 
+            case WTAP_ERR_PACKET_TOO_LARGE:
+              /*
+               * This is a problem with the particular frame we're writing
+               * and the file type and subtype we're writing; note that,
+               * and report the frame number and file type/subtype.
+               */
+              fprintf(stderr,
+                      "Frame %u of \"%s\" is too large for a \"%s\" file.\n",
+                      framenum, cf->filename,
+                      wtap_file_type_subtype_short_string(out_file_type));
+              break;
+
             default:
               show_capture_file_io_error(save_file, err, FALSE);
               break;
index b7b768d922411e5cad55f4230e09cc14dc280786..07f9aea0be8c5e2e5ed380c471937bbdd9ebe110 100644 (file)
@@ -37,8 +37,9 @@ set(COMMON_UI_SRC
        preference_utils.c
        profile.c
        recent.c
-       ssl_key_export.c
        software_update.c
+       ssl_key_export.c
+       tap_export_pdu.c
        tap-megaco-common.c
        tap-rtp-common.c
        tap-sctp-analysis.c
index 7cb273164b6f06a79286503c661ae5028348e90b..8813ad9f6937875cc99e20a710a5432673fec917 100644 (file)
@@ -60,6 +60,7 @@ WIRESHARK_UI_SRC = \
        recent.c                \
        software_update.c       \
        ssl_key_export.c        \
+       tap_export_pdu.c        \
        tap-megaco-common.c     \
        tap-rtp-common.c        \
        tap-sctp-analysis.c \
@@ -92,6 +93,7 @@ noinst_HEADERS = \
        simple_dialog.h         \
        software_update.h       \
        ssl_key_export.h        \
+       tap_export_pdu.h        \
        tap-megaco-common.h     \
        tap-rtp-common.h        \
        tap-sctp-analysis.h  \
index 61258ea2d40fd3e5aa53fdde7796783a8a5122a6..bd3a22c5c2e5fc968cc2930f10cd57ec6a242d49 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkafpstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _afpstat_t {
        GtkWidget *win;
index 28e2c9d051ddb10f03065540d5b9bd0af74f523e..7b95f2e9032e512b4f5fccc8a6a13128b57de822 100644 (file)
@@ -56,6 +56,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkansi_a_stat(void);
+
 enum
 {
    IEI_COLUMN,
index 32fdb049f2e449858293187835a84254c674d769..70dfb8e0a4411e916c245743567295e5d79174ee 100644 (file)
@@ -55,6 +55,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkansi_map_stat(void);
+
 enum
 {
     OP_CODE_COLUMN,
index b465532b91083d98f27afd1dd16fdeeb05966b62..d7f57db9ef5e9ee579e3c0d1e2fc2247da69004f 100644 (file)
@@ -43,6 +43,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkdhcpstat(void);
+
 typedef const char *bootp_info_value_t;
 
 /* used to keep track of the statistics for an entire program interface */
index d12f14e60294307ae07790eea37209dd5da70231..a87f58baa012d96422a0ac600d84670b77296f04 100644 (file)
@@ -94,7 +94,7 @@ static int camelsrt_packet(void *phs,
                           const void *phi)
 {
   struct camelsrt_t *hs=(struct camelsrt_t *)phs;
-  const struct camelsrt_info_t * pi=(struct camelsrt_info_t *)phi;
+  const struct camelsrt_info_t * pi=(const struct camelsrt_info_t *)phi;
   int i;
 
   for (i=1; i<NB_CAMELSRT_CATEGORY; i++) {
index 4ca389a45ecaaee4e7a5f463c7692efb9aaeb1da..9e852629f22d702325c76b9d57c2d4b4270a82cd 100644 (file)
@@ -2180,7 +2180,7 @@ file_export_pdu_ok_cb(GtkWidget *widget _U_, gpointer data)
     }
   }
 
-  do_export_pdu(data);
+  export_pdu_action(data);
 }
 
 
index c245ee0b109046690a62f89ca6d83cdcf9d1eed9..3262a700c48a37b33ea467216063629502a53536 100644 (file)
@@ -83,6 +83,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkcomparestat(void);
+
 /* From colorize conversion */
 #define COLOR_N        1
 
index 12ef06f74c49cb9223efdd76b1e1cd407a8b579e..df0498c636c808c2912321c8685ec41ab518dc3e 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_eth_conversation(void);
+
 static int
 eth_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 611c4999d8b3ccc0c5c158975f2599fef0a907b6..6dc0b3e9fefd0b1a8ccb5edb443984cfc1e39428 100644 (file)
@@ -39,6 +39,7 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_fc_conversation(void);
 
 static int
 fc_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
index 2b52d8169836b017dbb6afc4239314d43e8fea38..1b8580b5f6a1814f5f70b2c459f77c633e8c3f3e 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_fddi_conversation(void);
+
 static int
 fddi_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 5e84f8766c473f72f0c674d2372819cce62e4e41..df092c365c44f3af3cd98ddc9836c678d198ad90 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_ip_conversation(void);
+
 static int
 ip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 666632ac167e6a400c024c6939df5ce50a1b7657..2c57bfd4137807981081195f3d664649ddd389db 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_ipv6_conversation(void);
+
 static int
 ipv6_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index f09fb39fa9d6e2ae7135844cccf3c61599113a36..66dfb0a7a9bfc3f28d86c7328ccec609e93a0cc4 100644 (file)
@@ -38,6 +38,7 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_ipx_conversation(void);
 
 static int
 ipx_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
index de82cc8b7982a40a0eec63a494b9f0631963d384..28e32819f9e1212d42fa8fd7dec3695d20e732ed 100644 (file)
@@ -39,6 +39,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_jxta_conversation(void);
+
 static int
 jxta_conversation_packet(void *pct, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *vip)
 {
index 2b938b91b599650852e94cd4359d9be2a89a8e39..aa2f28b06d263291c93492fa67f827029b246481 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_ncp_conversation(void);
+
 static int
 ncp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index ac2af88e660437ac152e8ccfad1c3c6733be397c..5d105d4428a26f46cf3c41157fb2e162ceaa7b59 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_rsvp_conversation(void);
+
 static int
 rsvp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 02d37a832d4031b8940ca99bc33ead1405968d0a..3c4f8de5f2bbe86a5849c34307cf88076a14aff3 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_sctp_conversation(void);
+
 static int
 sctp_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index bbe9048a67f94ab5bf66e77b270b904940208719..cc630c52a51d86744db86fa7f00c894683f69fca 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_tcpip_conversation(void);
+
 static int
 tcpip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 91c8a369278ca8c3c5dc3ea62c06d44911734467..5857b7ab253122c037d0262bba344ae6f908dcf7 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_udpip_conversation(void);
+
 static int
 udpip_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 76a469a698707e5c7ba5b8c1d56946b869b642b9..6326c8ac81203d8b5831e32826f5b49bac8b4533 100644 (file)
@@ -37,6 +37,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_usb_conversation(void);
+
 static int
 usb_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip _U_)
 {
index ca1f69973c7784beecde15c9dab60ef812d10596..74c17feb52657e481c7251e1b7b85e09ee2b42a4 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/conversations_table.h"
 
+void register_tap_listener_wlan_conversation(void);
+
 static int
 wlan_conversation_packet(void *pct, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 5a3e384dba25869fc6d60846987e5bb95373283b..8dc86ee302047d4427b8ed48cb3b6a6d6a253977 100644 (file)
@@ -59,6 +59,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkdcerpcstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _dcerpcstat_t {
        GtkWidget *win;
index c4603418c5c51142e2ca7b4c9d4fdde847a68d2f..c59c212472b189458b514f02973e600e03cd168d 100644 (file)
@@ -50,6 +50,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkdiameterstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _diameterstat_t {
        GtkWidget *win;
index 608496d4694b35b02e193b3969e80cf1b85af49b..7996d59408479690c2339d38b4a9ca44a3ef787c 100644 (file)
@@ -134,25 +134,25 @@ decode_proto_add_to_list (const gchar *table_name _U_, ftenum_t selector_type,
 
     switch (selector_type) {
 
-    case FT_UINT8:
-    case FT_UINT16:
-    case FT_UINT24:
-    case FT_UINT32:
-        port = GPOINTER_TO_UINT(key);
-        /* Hack: Use fixed width rj str so alpha sort (strcmp) will sort field numerically */
-        str = g_strdup_printf ("%10d", port);
-        proto_add_to_list(tree_info, store, str, proto_name);
-        g_free (str);
-        break;
-
-    case FT_STRING:
-    case FT_STRINGZ:
-        str = (gchar*) key;
-        proto_add_to_list(tree_info, store, str, proto_name);
-        break;
-
-    default:
-        g_assert_not_reached();
+        case FT_UINT8:
+        case FT_UINT16:
+        case FT_UINT24:
+        case FT_UINT32:
+            port = GPOINTER_TO_UINT(key);
+            /* Hack: Use fixed width rj str so alpha sort (strcmp) will sort field numerically */
+            str = g_strdup_printf ("%10d", port);
+            proto_add_to_list(tree_info, store, str, proto_name);
+            g_free (str);
+            break;
+
+        case FT_STRING:
+        case FT_STRINGZ:
+            str = (gchar*) key;
+            proto_add_to_list(tree_info, store, str, proto_name);
+            break;
+
+        default:
+            g_assert_not_reached();
     }
 
 }
@@ -177,19 +177,19 @@ table_name_add_to_list(dissector_tables_tree_info_t  *tree_info,
 static void
 display_heur_dissector_table_entries(gpointer data, gpointer user_data)
 {
-       heur_dtbl_entry_t *dtbl_entry = (heur_dtbl_entry_t *)data;
-       dissector_tables_tree_info_t  *tree_info = (dissector_tables_tree_info_t*)user_data;
-       GtkTreeStore       *store;
-
-       if(dtbl_entry->protocol){
-
-               store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_info->tree))); /* Get store */
-               proto_add_to_list(tree_info, store, 
-                       (gchar *)proto_get_protocol_long_name(dtbl_entry->protocol), 
-                       proto_get_protocol_short_name(dtbl_entry->protocol));
-       }else{
-               g_warning("no protocol info");
-       }
+    heur_dtbl_entry_t            *dtbl_entry = (heur_dtbl_entry_t *)data;
+    dissector_tables_tree_info_t *tree_info  = (dissector_tables_tree_info_t*)user_data;
+    GtkTreeStore                 *store;
+
+    if (dtbl_entry->protocol) {
+
+        store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_info->tree))); /* Get store */
+        proto_add_to_list(tree_info, store,
+                          (gchar *)proto_get_protocol_long_name(dtbl_entry->protocol),
+                          proto_get_protocol_short_name(dtbl_entry->protocol));
+    }else{
+        g_warning("no protocol info");
+    }
 
 
 }
@@ -199,17 +199,17 @@ display_heur_dissector_table_names(const char *table_name, gpointer table, gpoin
 {
     dissector_tables_trees_t      *dis_tbl_trees;
     dissector_tables_tree_info_t  *tree_info;
-       heur_dissector_list_t *list;
-        
-       tree_info = g_new(dissector_tables_tree_info_t, 1);
-       dis_tbl_trees = (dissector_tables_trees_t*)w;
-       list = (heur_dissector_list_t *)table;
+    heur_dissector_list_t *list;
+
+    tree_info = g_new(dissector_tables_tree_info_t, 1);
+    dis_tbl_trees = (dissector_tables_trees_t*)w;
+    list = (heur_dissector_list_t *)table;
 
-       table_name_add_to_list(tree_info, dis_tbl_trees->heuristic_tree_wgt, "", table_name);
+    table_name_add_to_list(tree_info, dis_tbl_trees->heuristic_tree_wgt, "", table_name);
 
-       if(table){
-               g_slist_foreach (*list, display_heur_dissector_table_entries, tree_info);
-       }
+    if (table) {
+        g_slist_foreach (*list, display_heur_dissector_table_entries, tree_info);
+    }
 
 }
 
@@ -242,7 +242,7 @@ display_dissector_table_names(const char *table_name, const char *ui_name, gpoin
     g_free(tree_info);
 }
 
-static GtkWidget*
+static GtkWidget *
 init_table(void)
 {
     GtkTreeStore      *store;
@@ -366,7 +366,7 @@ dissector_tables_dlg_init(void)
     gtk_box_pack_start(GTK_BOX(temp_page), scrolled_window, TRUE, TRUE, 0);
     gtk_widget_show(scrolled_window);
 
-       /* We must display TOP LEVEL Widget before calling init_table() */
+    /* We must display TOP LEVEL Widget before calling init_table() */
     gtk_widget_show_all(dissector_tables_dlg_w);
     g_signal_connect(dissector_tables_dlg_w, "destroy", G_CALLBACK(win_destroy_cb), NULL);
 
@@ -375,7 +375,7 @@ dissector_tables_dlg_init(void)
 
     dissector_all_heur_tables_foreach_table(display_heur_dissector_table_names, (gpointer)&dis_tbl_trees);
 
-       sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.str_tree_wgt)));
+    sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.str_tree_wgt)));
     gtk_tree_sortable_set_sort_column_id(sortable, TABLE_UI_NAME_COL, GTK_SORT_ASCENDING);
 
     sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.uint_tree_wgt)));
@@ -390,8 +390,21 @@ void
 dissector_tables_dlg_cb(GtkWidget *w _U_, gpointer d _U_)
 {
     if (dissector_tables_dlg_w) {
-          reactivate_window(dissector_tables_dlg_w);
+        reactivate_window(dissector_tables_dlg_w);
     } else {
-          dissector_tables_dlg_init();
+        dissector_tables_dlg_init();
     }
 }
+
+/*
+ * Editor modelines  -  http://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:
+ */
index 865ccc7490ec2af6ac567383f9dbb09adb0ba69a..07859a86064b0f37fc8f55b4b83512144f8f4259 100644 (file)
@@ -35,8 +35,6 @@
 #include <epan/tap.h>
 #include <epan/exported_pdu.h>
 
-#include "ui/alert_box.h"
-#include "ui/simple_dialog.h"
 
 #include "ui/gtk/capture_file_dlg.h"
 #include "ui/gtk/dlg_utils.h"
 
 #include "ui/gtk/old-gtk-compat.h"
 
+#include "ui/tap_export_pdu.h"
 #include "ui/gtk/export_pdu_dlg.h"
 
 static GtkWidget *export_pdu_dlg = NULL;
 
 
-typedef struct _exp_pdu_t {
+typedef struct _exp_pdu_dlg_t {
     GtkWidget   *filter_widget;
     GtkWidget   *tap_name_widget;
-    int          pkt_encap;
-    wtap_dumper* wdh;
-} exp_pdu_t;
-
-
-/* Main entry point to the tap */
-static int
-export_pdu_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt _U_, const void *data)
-{
-    const exp_pdu_data_t *exp_pdu_data = (const exp_pdu_data_t *)data;
-    exp_pdu_t  *exp_pdu_tap_data = (exp_pdu_t *)tapdata;
-    struct wtap_pkthdr pkthdr;
-    int err;
-    int buffer_len;
-    guint8 *packet_buf;
-
-    buffer_len = exp_pdu_data->tvb_length + exp_pdu_data->tlv_buffer_len;
-    packet_buf = (guint8 *)g_malloc(buffer_len);
-
-    if(exp_pdu_data->tlv_buffer_len > 0){
-        memcpy(packet_buf, exp_pdu_data->tlv_buffer, exp_pdu_data->tlv_buffer_len);
-        g_free(exp_pdu_data->tlv_buffer);
-    }
-    if(exp_pdu_data->tvb_length > 0){
-        tvb_memcpy(exp_pdu_data->pdu_tvb, packet_buf+exp_pdu_data->tlv_buffer_len, 0, exp_pdu_data->tvb_length);
-    }
-    pkthdr.ts.secs   = pinfo->fd->abs_ts.secs;
-    pkthdr.ts.nsecs  = pinfo->fd->abs_ts.nsecs;
-    pkthdr.caplen    = pkthdr.len = buffer_len;
-
-    pkthdr.pkt_encap = exp_pdu_tap_data->pkt_encap;
-    pkthdr.interface_id = 0;
-    pkthdr.presence_flags = 0;
-    pkthdr.opt_comment = g_strdup(pinfo->pkt_comment);
-    pkthdr.drop_count = 0;
-    pkthdr.pack_flags = 0;
-    pkthdr.presence_flags = WTAP_HAS_CAP_LEN|WTAP_HAS_INTERFACE_ID|WTAP_HAS_TS|WTAP_HAS_PACK_FLAGS;
-
-    wtap_dump(exp_pdu_tap_data->wdh, &pkthdr, packet_buf, &err);
-
-    g_free(packet_buf);
-    g_free(pkthdr.opt_comment);
-
-    return FALSE; /* Do not redraw */
-}
-
-static void
-export_pdu_reset(void *data _U_)
-{
-
-}
-
-/* Redraw the whole stats window */
-static void
-export_pdu_draw(void *data _U_)
-{
-
-}
-
-static void
-exp_pdu_file_open(exp_pdu_t *exp_pdu_tap_data)
-{
-    int   import_file_fd;
-    char *tmpname, *capfile_name;
-    int   err;
-
-    /* pcapng defs */
-    wtapng_section_t            *shb_hdr;
-    wtapng_iface_descriptions_t *idb_inf;
-    wtapng_if_descr_t            int_data;
-    GString                     *os_info_str;
-    char                         appname[100];
-
-    /* Choose a random name for the temporary import buffer */
-    import_file_fd = create_tempfile(&tmpname, "Wireshark_PDU_");
-    capfile_name = g_strdup(tmpname);
-
-    /* Create data for SHB  */
-    os_info_str = g_string_new("");
-    get_os_version_info(os_info_str);
-
-    g_snprintf(appname, sizeof(appname), "Wireshark " VERSION "%s", wireshark_svnversion);
-
-    shb_hdr = g_new(wtapng_section_t,1);
-    shb_hdr->section_length = -1;
-    /* options */
-    shb_hdr->opt_comment    = g_strdup_printf("Dump of PDU:s from %s", cfile.filename);
-    shb_hdr->shb_hardware   = NULL;                    /* UTF-8 string containing the
-                                                       * description of the hardware used to create this section.
-                                                       */
-    shb_hdr->shb_os         = os_info_str->str;        /* UTF-8 string containing the name
-                                                       * of the operating system used to create this section.
-                                                       */
-    g_string_free(os_info_str, FALSE);                /* The actual string is not freed */
-    shb_hdr->shb_user_appl  = appname;                /* UTF-8 string containing the name
-                                                       *  of the application used to create this section.
-                                                       */
-
-
-    /* Create fake IDB info */
-    idb_inf = g_new(wtapng_iface_descriptions_t,1);
-    idb_inf->number_of_interfaces = 1;
-    idb_inf->interface_data = g_array_new(FALSE, FALSE, sizeof(wtapng_if_descr_t));
-
-    /* create the fake interface data */
-    int_data.wtap_encap            = WTAP_ENCAP_WIRESHARK_UPPER_PDU;
-    int_data.time_units_per_second = 1000000; /* default microsecond resolution */
-    int_data.link_type             = wtap_wtap_encap_to_pcap_encap(WTAP_ENCAP_WIRESHARK_UPPER_PDU);
-    int_data.snap_len              = WTAP_MAX_PACKET_SIZE;
-    int_data.if_name               = g_strdup("Fake IF, PDU->Export");
-    int_data.opt_comment           = NULL;
-    int_data.if_description        = NULL;
-    int_data.if_speed              = 0;
-    int_data.if_tsresol            = 6;
-    int_data.if_filter_str         = NULL;
-    int_data.bpf_filter_len        = 0;
-    int_data.if_filter_bpf_bytes   = NULL;
-    int_data.if_os                 = NULL;
-    int_data.if_fcslen             = -1;
-    int_data.num_stat_entries      = 0;          /* Number of ISB:s */
-    int_data.interface_statistics  = NULL;
-
-    g_array_append_val(idb_inf->interface_data, int_data);
-
-    exp_pdu_tap_data->wdh = wtap_dump_fdopen_ng(import_file_fd, WTAP_FILE_TYPE_SUBTYPE_PCAPNG, WTAP_ENCAP_WIRESHARK_UPPER_PDU, WTAP_MAX_PACKET_SIZE, FALSE, shb_hdr, idb_inf, &err);
-    if (exp_pdu_tap_data->wdh == NULL) {
-        open_failure_alert_box(capfile_name, err, TRUE);
-        goto end;
-    }
-
-
-    /* Run the tap */
-    cf_retap_packets(&cfile);
-
-
-    if (!wtap_dump_close(exp_pdu_tap_data->wdh, &err)) {
-        write_failure_alert_box(capfile_name, err);
-    }
-
-    remove_tap_listener(exp_pdu_tap_data);
-
-    if (cf_open(&cfile, capfile_name, TRUE /* temporary file */, &err) != CF_OK) {
-        open_failure_alert_box(capfile_name, err, FALSE);
-        goto end;
-    }
-
-    switch (cf_read(&cfile, FALSE)) {
-    case CF_READ_OK:
-    case CF_READ_ERROR:
-    /* Just because we got an error, that doesn't mean we were unable
-       to read any of the file; we handle what we could get from the
-       file. */
-    break;
-
-    case CF_READ_ABORTED:
-    /* The user bailed out of re-reading the capture file; the
-       capture file has been closed - just free the capture file name
-       string and return (without changing the last containing
-       directory). */
-    break;
-    }
-
-end:
-    g_free(capfile_name);
-}
+    exp_pdu_t    exp_pdu_tap_data;
+} exp_pdu_dlg_t;
 
 
 static void
@@ -231,35 +67,18 @@ export_pdu_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)
 }
 
 void
-do_export_pdu(gpointer data)
+export_pdu_action(gpointer data)
 {
-    const char *filter = NULL;
-    GString    *error_string;
-    exp_pdu_t  *exp_pdu_tap_data = (exp_pdu_t *)data;
+    const char     *filter = NULL;
+    exp_pdu_dlg_t  *exp_pdu_dlg_data = (exp_pdu_dlg_t *)data;
     gchar      *tap_name = NULL;
 
-    filter = gtk_entry_get_text(GTK_ENTRY(exp_pdu_tap_data->filter_widget));
-    tap_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(exp_pdu_tap_data->tap_name_widget));
-
-    /* Register this tap listener now */
-    error_string = register_tap_listener(tap_name,            /* The name of the tap we want to listen to */
-                                         exp_pdu_tap_data,    /* instance identifier/pointer to a struct holding
-                                                             * all state variables */
-                                         filter,              /* pointer to a filter string */
-                                         TL_REQUIRES_NOTHING, /* flags for the tap listener */
-                                         export_pdu_reset,
-                                         export_pdu_packet,
-                                         export_pdu_draw);
-    if (error_string){
-        /* Error.  We failed to attach to the tap. Clean up */
-        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", error_string->str);
-        g_free(exp_pdu_tap_data);
-        g_string_free(error_string, TRUE);
-        return;
-    }
+    filter = gtk_entry_get_text(GTK_ENTRY(exp_pdu_dlg_data->filter_widget));
+    tap_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(exp_pdu_dlg_data->tap_name_widget));
 
-    exp_pdu_file_open(exp_pdu_tap_data);
+    do_export_pdu(filter, tap_name, &(exp_pdu_dlg_data->exp_pdu_tap_data));
     window_destroy(export_pdu_dlg);
+    g_free(exp_pdu_dlg_data);
 }
 
 
@@ -269,7 +88,7 @@ export_pdu_show_cb(GtkWidget *w _U_, gpointer d _U_)
 
     GtkWidget  *main_vb, *bbox, *close_bt, *ok_bt;
     GtkWidget  *grid, *filter_bt;
-    exp_pdu_t  *exp_pdu_tap_data;
+    exp_pdu_dlg_t  *exp_pdu_dlg_data;
     const char *filter = NULL;
     guint         row;
 
@@ -286,8 +105,8 @@ export_pdu_show_cb(GtkWidget *w _U_, gpointer d _U_)
         return;
     }
 
-    exp_pdu_tap_data = (exp_pdu_t *)g_malloc(sizeof(exp_pdu_t));
-    exp_pdu_tap_data->pkt_encap = wtap_wtap_encap_to_pcap_encap(WTAP_ENCAP_WIRESHARK_UPPER_PDU); 
+    exp_pdu_dlg_data = (exp_pdu_dlg_t *)g_malloc(sizeof(exp_pdu_dlg_t));
+    exp_pdu_dlg_data->exp_pdu_tap_data.pkt_encap = wtap_wtap_encap_to_pcap_encap(WTAP_ENCAP_WIRESHARK_UPPER_PDU);
 
     export_pdu_dlg = window_new(GTK_WINDOW_TOPLEVEL, "Wireshark: Export PDU:s to pcap-ng file");
 
@@ -312,33 +131,33 @@ export_pdu_show_cb(GtkWidget *w _U_, gpointer d _U_)
     gtk_widget_show(filter_bt);
 
     /* Entry */
-    exp_pdu_tap_data->filter_widget=gtk_entry_new();
-    g_signal_connect(exp_pdu_tap_data->filter_widget, "changed", G_CALLBACK(filter_te_syntax_check_cb), NULL);
+    exp_pdu_dlg_data->filter_widget=gtk_entry_new();
+    g_signal_connect(exp_pdu_dlg_data->filter_widget, "changed", G_CALLBACK(filter_te_syntax_check_cb), NULL);
     g_object_set_data(G_OBJECT(grid), E_FILT_AUTOCOMP_PTR_KEY, NULL);
-    g_signal_connect(exp_pdu_tap_data->filter_widget, "key-press-event", G_CALLBACK (filter_string_te_key_pressed_cb), NULL);
-    g_object_set_data(G_OBJECT(filter_bt), E_FILT_TE_PTR_KEY, exp_pdu_tap_data->filter_widget);
+    g_signal_connect(exp_pdu_dlg_data->filter_widget, "key-press-event", G_CALLBACK (filter_string_te_key_pressed_cb), NULL);
+    g_object_set_data(G_OBJECT(filter_bt), E_FILT_TE_PTR_KEY, exp_pdu_dlg_data->filter_widget);
 
     filter=gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget));
     if(filter){
-        gtk_entry_set_text(GTK_ENTRY(exp_pdu_tap_data->filter_widget), filter);
+        gtk_entry_set_text(GTK_ENTRY(exp_pdu_dlg_data->filter_widget), filter);
     } else {
-        colorize_filter_te_as_empty(exp_pdu_tap_data->filter_widget);
+        colorize_filter_te_as_empty(exp_pdu_dlg_data->filter_widget);
     }
 
-    ws_gtk_grid_attach_defaults(GTK_GRID(grid), exp_pdu_tap_data->filter_widget, 1, row, 1, 1);
-    gtk_widget_show(exp_pdu_tap_data->filter_widget);
+    ws_gtk_grid_attach_defaults(GTK_GRID(grid), exp_pdu_dlg_data->filter_widget, 1, row, 1, 1);
+    gtk_widget_show(exp_pdu_dlg_data->filter_widget);
     row++;
 
     /* Select which tap to run */
     /* Combo box */
-    exp_pdu_tap_data->tap_name_widget = gtk_combo_box_text_new();
-    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_tap_data->tap_name_widget), EXPORT_PDU_TAP_NAME_LAYER_7);
-    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_tap_data->tap_name_widget), EXPORT_PDU_TAP_NAME_LAYER_3);
-    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_tap_data->tap_name_widget), EXPORT_PDU_TAP_NAME_DVB_CI);
-    gtk_combo_box_set_active(GTK_COMBO_BOX(exp_pdu_tap_data->tap_name_widget), 0);
+    exp_pdu_dlg_data->tap_name_widget = gtk_combo_box_text_new();
+    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_dlg_data->tap_name_widget), EXPORT_PDU_TAP_NAME_LAYER_7);
+    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_dlg_data->tap_name_widget), EXPORT_PDU_TAP_NAME_LAYER_3);
+    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(exp_pdu_dlg_data->tap_name_widget), EXPORT_PDU_TAP_NAME_DVB_CI);
+    gtk_combo_box_set_active(GTK_COMBO_BOX(exp_pdu_dlg_data->tap_name_widget), 0);
 
-    ws_gtk_grid_attach_defaults(GTK_GRID(grid), exp_pdu_tap_data->tap_name_widget, 0, row, 1, 1);
-    gtk_widget_show(exp_pdu_tap_data->tap_name_widget);
+    ws_gtk_grid_attach_defaults(GTK_GRID(grid), exp_pdu_dlg_data->tap_name_widget, 0, row, 1, 1);
+    gtk_widget_show(exp_pdu_dlg_data->tap_name_widget);
 
     /* Setup the button row */
 
@@ -350,7 +169,7 @@ export_pdu_show_cb(GtkWidget *w _U_, gpointer d _U_)
     gtk_widget_set_tooltip_text(close_bt, "Close this dialog");
 
     ok_bt =  (GtkWidget *)g_object_get_data(G_OBJECT(bbox), GTK_STOCK_OK);
-    g_signal_connect(ok_bt, "clicked", G_CALLBACK(file_export_pdu_ok_cb), exp_pdu_tap_data);
+    g_signal_connect(ok_bt, "clicked", G_CALLBACK(file_export_pdu_ok_cb), exp_pdu_dlg_data);
     gtk_widget_grab_default(ok_bt);
     gtk_widget_set_tooltip_text(ok_bt, "Export PDU:s to a temporary capture file");
 
index b6bed0542857e24584543ade8c9cbb70919bebc2..eba66720a1c422bf38431d25420928c3eed2e4f5 100644 (file)
@@ -27,7 +27,7 @@
 #define __EXPORT_PDU_DLG_H__
 
 void export_pdu_show_cb(GtkWidget *widget, gpointer data);
-void do_export_pdu(gpointer data);
+void export_pdu_action(gpointer data);
 
 #endif /* __EXPORT_PDU_DLG_H__ */
 
index e0974e2bf482644e6ead28778c1ebc2b0dc3e6d8..5b0650872e2288a78eef587fc0b10350a737dff4 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkfcstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _fcstat_t {
        GtkWidget *win;
index 516d8772010c6cdca579f2a5429cef910476e750..0264a8b476153844cba763251908493f9ff6dc37 100644 (file)
@@ -47,6 +47,8 @@
 #include "ui/gtk/main.h"
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_flow_graph(void);
+
 static seq_analysis_info_t *graph_analysis       = NULL;
 static graph_analysis_data_t *graph_analysis_data = NULL;
 
index 11583fa0a26279317085a243d1c0cc17e176d220..cc0cde0026f4dc426f8c14a2110b4ed8f88577af 100644 (file)
@@ -62,6 +62,7 @@
 #include "ui/gtk/gtkglobals.h"
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkfunnel(void);
 
 struct _funnel_text_window_t {
     GtkWidget* win;
index a2f06a77dabb18dddd81486e6d8262b58cc9724c..728ccd1a57ddfab7a28fb69f59d04398e133b6e3 100644 (file)
@@ -55,6 +55,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkgsm_a_stat(void);
+
 enum
 {
     IEI_COLUMN,
index 44aed65725f7ff6e06201ab2507967eed15f84d5..b9b44ec3f9a9279f4c867d8dc5717682236af9a3 100644 (file)
@@ -57,6 +57,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkgsm_map_stat(void);
+
 enum
 {
     ID_COLUMN,
index 863508383862a63fffa608329f72f6a13ab6d6ab..a6eec519823ed0718df1cceda1060f7d657ccb66 100644 (file)
@@ -54,6 +54,7 @@
 
 #define SUM_STR_MAX 1024
 
+void register_tap_listener_gtkgsm_map_summary(void);
 
 static void
 add_string_to_box(gchar *str, GtkWidget *box)
index f230d5f206e0f1f9d99b6ed95b968a22e709462d..c40931b5354b514cf26f8c9d032efe2e71faa69a 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkgtpstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _gtpstat_t {
        GtkWidget *win;
index 69937793ea3864e930513a01e97e175b3125c140..c082d7131174044147649bf67c7aef16fdc033a2 100644 (file)
@@ -48,6 +48,7 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtk_h225counter(void);
 static void gtk_h225counter_init(const char *opt_arg, void *userdata);
 
 static tap_param h225_counter_params[] = {
index 39d299772597105e358d9bd1d34df3ca80cc5ab1..1142c2b12134afd83d477aed6de60bc32e50df27 100644 (file)
@@ -49,6 +49,7 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtk_h225rassrt(void);
 static void gtk_h225rassrt_init(const char *opt_arg, void *userdata);
 
 static tap_param h225_rassrt_params[] = {
index edf0a1038c6a34767c582dda7044b4013a52222a..0fea53abb6bb5bb912b400d46b230895b342dc9c 100644 (file)
@@ -38,6 +38,7 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_eth_hostlist(void);
 
 static int
 eth_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
index 63daaab926da155e71d3e58d18f088aae24948c3..f6425f1918a6e7cca70df70f9a883325f45b8d5b 100644 (file)
@@ -39,6 +39,7 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_fc_hostlist(void);
 
 static int
 fc_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
index fcb26e3363b62aa23ebc0bd53d49a363895a201c..bf25e9e9ae66c958cca0f5a547c8b94562f88719 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_fddi_hostlist(void);
+
 static int
 fddi_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 7c26766b767235bf3f8e26f6e221f754d3af61b9..2d49bab81a8d19333b7b9447f9b9f11838738897 100644 (file)
@@ -40,6 +40,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_ip_hostlist(void);
+
 static int
 ip_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 4181b4cef67d8c889afb535c2d9dd6e52f4744a1..ed6e391a96a08e92a1c8d155465fe45634660332 100644 (file)
@@ -41,6 +41,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_ipv6_hostlist(void);
+
 static int
 ipv6_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 8da378576ae8abeeeab627a96ee2512065c2cebe..1331728a3c69345ad0a5ac339c45a3d11ce948d6 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_ipx_hostlist(void);
+
 static int
 ipx_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index b169277ea24ce9e96dd617c8cc42503b832bf502..d71f9608dc0d48bd13e5055dc301c5d3a3549732 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_jxta_hostlist(void);
+
 static int
 jxta_hostlist_packet(void *pit, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *vip)
 {
index 4693feeacb467ca04ab14f4039f3920610e15086..15b3f08a40fc74e804e181819ca95c5369057f70 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_ncp_hostlist(void);
+
 static int
 ncp_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip _U_)
 {
index 85dfed4d600f571d6b2d946ea015ba0d69eb811f..b1f2dcc44fdca0d8ab577c39527a177212fb7b89 100644 (file)
@@ -39,6 +39,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_rsvp_hostlist(void);
+
 static int
 rsvp_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 69f28f2c66abc912135fa451df0bc288f0e8146d..a62e3dc9700548b59593715fd4a94b54dd3194a1 100644 (file)
@@ -37,6 +37,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_sctp_hostlist(void);
+
 static int
 sctp_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 1e78fb0e6c649196df4cab970c3bbc406dc71b3f..12f17b7e1a6616b29f2f0c2359d6f4e8279811d2 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_tcpip_hostlist(void);
+
 static int
 tcpip_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index abf64d42ad79bab3b93d5ed7a74c5decfa4e81dd..55a42f75ad11729c4b6f6873fdc8b596483d1815 100644 (file)
@@ -38,6 +38,8 @@
 #include "ui/gtk/gui_stat_menu.h"
 #include "ui/gtk/hostlist_table.h"
 
+void register_tap_listener_wlan_hostlist(void);
+
 static int
 wlan_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const void *vip)
 {
index 03f84388a635f3a613e972175476471a84628fcf..571595e903c040657d1197cd503c7c4e223a73fe 100644 (file)
@@ -90,6 +90,8 @@
 
 #include "frame_tvbuff.h"
 
+void register_tap_listener_iax2_analysis(void);
+
 enum
 {
        PACKET_COLUMN,
index 28a79449242ff6010c49d76a5bbf4c1685d91435..f183ec3514f0860dca5d1de03b8f4d44f2125e7a 100644 (file)
@@ -56,6 +56,8 @@
 #include "ui/gtk/old-gtk-compat.h"
 #include "ui/gtk/gui_utils.h"
 
+void register_tap_listener_gtk_iostat(void);
+
 #define MAX_GRAPHS           5
 
 #define MAX_YSCALE          28
index 398bfc37e039571e95685ee396ba0444dcfc9b05..21c4ccf5117853c8ff487276fecbc2b197636e0f 100644 (file)
@@ -47,6 +47,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkldapstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _ldapstat_t {
        GtkWidget *win;
index b47872d355cc3d5db0700842ac8ca8c9f42a36a4..17cd6a32cd66ecfa9b2069c0092f19bba4ffc9ac 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_mac_lte_stat(void);
+
 /**********************************************/
 /* Table column identifiers and title strings */
 
index 6613145b9bfa3ad72cfe2b5a54bbdfd91a4ecf4f..c6bd7318b553204ffaaf4d234cdc089e3ea7e11d 100644 (file)
 #endif
 
 #ifdef _WIN32 /* Needed for console I/O */
-#if _MSC_VER < 1500
-/* AttachConsole() needs this #define! */
-/* But we're not calling it from here any more; do we need this? */
-#define _WIN32_WINNT 0x0501
-#endif
 
 #include <fcntl.h>
 #include <conio.h>
index 18a994fdc5e3cfb73652dccc8f418a4ac310ded7..ff0835cdc3b889ff1ae1171f720b2c45c6795fb0 100644 (file)
@@ -54,6 +54,8 @@
 #include "ui/gtk/gtkglobals.h"
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_mcast_stream_dlg(void);
+
 /* Capture callback data keys */
 #define E_MCAST_ENTRY_1     "burst_interval"
 #define E_MCAST_ENTRY_2     "burst_alarm"
index 6e6a9b29147279aecdafc89a69ab1219f70811d8..9110c49eec234c022701d61da08b08883a7e7fa6 100644 (file)
@@ -53,6 +53,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkmegacostat(void);
+
 static void
 megacostat_reset(void *pms)
 {
index 08c51c3c6561980f60874567c0039e5cb710cac6..cafd32c4f070674337790fc57470a5ab1801bc53 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkmgcpstat(void);
+
 #define NUM_TIMESTATS 10
 
 /* used to keep track of the statistics for an entire program interface */
index efbd03625b72aebc409e117d1292203aee92c997..49d686131d4575b56b967aafbe54d9677c340140 100644 (file)
@@ -56,6 +56,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkmtp3_stat(void);
+
 enum
 {
     OPC_COLUMN,
index 72686c16c2d7fc7757e36975d6f14325109c5294..7fb05a8eadc968587b3743c5f64278e463d6044d 100644 (file)
@@ -51,6 +51,7 @@
 
 #define SUM_STR_MAX 1024
 
+void register_tap_listener_gtkmtp3_summary(void);
 
 typedef struct _my_columns_t {
     guint32           value;
index 46c9bda4379ec31a791bb188dfb556dde041451c..9b9645f2abc5e5ec1f0489c3b515187bb8f90f0d 100644 (file)
@@ -45,6 +45,7 @@
 #include "ui/gtk/gtkglobals.h"
 #include "ui/gtk/main.h"
 
+void register_tap_listener_gtkncpstat(void);
 
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _ncpstat_t {
index 8eea17ec193b7954b9b7a81ff40ab0a0f1b67f53..1f22d9ddf63e3c444f8ff290de4be6a87ea71ba1 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkradiusstat(void);
+
 #define NUM_COLUMNS 11
 
 typedef enum _radius_category {
index fcac96aac37e489475b79bbfdc4439c7240b4f2d..5bba4089d6cbf5aa8b6cb5841e00028ddd5ea82f 100644 (file)
@@ -53,6 +53,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_rlc_lte_stat(void);
+
 /**********************************************/
 /* Table column identifiers and title strings */
 
index 9504d81cd7ae5ac16e8bc5e7acd5dc1548220264..b6b2486ba4ac48e34ce739647551bc1654fec82c 100644 (file)
@@ -53,6 +53,8 @@
 
 #define NANOSECS_PER_SEC 1000000000
 
+void register_tap_listener_gtkrpcprogs(void);
+
 static GtkWidget *win   = NULL;
 static GtkWidget *grid  = NULL;
 static int num_progs    = 0;
index 86d8af8ea5fd06d53cd14c4948b8cee3b27f119f..865b7174ec7498d0ceb860b2e726438de2ff8efb 100644 (file)
@@ -56,6 +56,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkrpcstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _rpcstat_t {
        GtkWidget *win;
index b894fc75653f8573cb4e8924ccc68743f67d5069..b38e48699076a42795de322f12ecfc3eed0e79b1 100644 (file)
@@ -97,6 +97,8 @@
 
 #include "frame_tvbuff.h"
 
+void register_tap_listener_rtp_analysis(void);
+
 enum
 {
        PACKET_COLUMN,
index 7d48c4faf2073a54703139169688deca1a7ea17e..7e2d580a40479962840e6da3306b1206c9249245 100644 (file)
@@ -59,6 +59,8 @@ static const gchar FWD_LABEL_TEXT[] = "Select a forward stream with left mouse b
 static const gchar FWD_ONLY_LABEL_TEXT[] = "Select a forward stream with Ctrl + left mouse button";
 static const gchar REV_LABEL_TEXT[] = "Select a reverse stream with Ctrl + left mouse button";
 
+void register_tap_listener_rtp_stream_dlg(void);
+
 /****************************************************************************/
 /* pointer to the one and only dialog window */
 static GtkWidget *rtp_stream_dlg = NULL;
index 54b13fe74f1b521b69c61368e2cdfbf358da1654..2f9379038a5f00ad57e52c633b18fbc1c8391602 100644 (file)
@@ -59,6 +59,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkscsistat(void);
+
 /* used to keep track of the statistics for an entire scsi command set */
 typedef struct _scsistat_t {
        GtkWidget        *win;
index afbbae7f8b812c066f583896484b52d427973ea0..ec1db1ef48f7a85d55457dcaae090dfa0b5f0f1e 100644 (file)
@@ -51,7 +51,7 @@
 #include "ui/tap-sctp-analysis.h"
 #include "ui/gtk/sctp_stat_gtk.h"
 
-
+void register_tap_listener_sctpstat(void);
 static void sctpstat_init(const char *opt_arg, void *userdata);
 
 static tap_param sctp_stat_params[] = {
index f05a04feb6ac670836e277077684e5fe726004bf..72a4e03e347d8264f6761d4e64d82e784469d8fe 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtksmb2stat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _smb2stat_t {
        GtkWidget *win;
index 90cd55b2accb7f176a38cb0b7dea1a0f08255991..762b8d0b7705d1e4aa9ee2d44678676def0be1a4 100644 (file)
@@ -48,6 +48,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtksmbstat(void);
+
 /* used to keep track of the statistics for an entire program interface */
 typedef struct _smbstat_t {
        GtkWidget *win;
index c337ae9af2133ff6d0816529889ce221dba9f17d..57495d9b0cb0ace545ef571fd5c6f471297e7821 100644 (file)
@@ -65,6 +65,8 @@
 #include "ui/win32/file_dlg_win32.h"
 #endif
 
+void register_tap_listener_stats_tree_stat(void);
+
 struct _st_node_pres {
        GtkTreeIter*    iter;
 };
index a64bcc15e4dfa6716c3fcfda385da0727debdb75..67a0878b9eaa0b78789656edae41a5045eb43997 100644 (file)
@@ -117,14 +117,6 @@ time_to_string(char *string_buff, gulong string_buff_size, time_t ti_time)
 {
   struct tm *ti_tm;
 
-#if (defined _WIN32) && (_MSC_VER < 1500)
-  /* calling localtime() on MSVC 2005 with huge values causes it to crash */
-  /* XXX - find the exact value that still does work */
-  /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-  if (ti_time > 2000000000) {
-      ti_tm = NULL;
-  } else
-#endif
   ti_tm = localtime(&ti_time);
   if (ti_tm == NULL) {
     g_snprintf(string_buff, string_buff_size, "Not representable");
index 57b07098c022e7e5747e30a6dadb2d23c6b74c31..337059b19af9409cf0dc6d269e96bbf1c1f4f6e6 100644 (file)
@@ -70,6 +70,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_voip_calls_dlg(void);
+
 /****************************************************************************/
 /* pointer to the one and only dialog window */
 static GtkWidget *voip_calls_dlg = NULL;
index 2301623e37e2ca87938c22e5ee3fe74f017b4e12..025dd9f61f1f82cd83f46c1b1dd4df0dfd769fb2 100644 (file)
@@ -51,6 +51,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_wlanstat(void);
+
 enum {
     BSSID_COLUMN,
     CHANNEL_COLUMN,
index 1dc53c07bdd59a2e6c1a181a35706dec1bf27035..276373a1a457fc548b047df86fb10ff5b9bf795b 100644 (file)
@@ -43,6 +43,8 @@
 
 #include "ui/gtk/old-gtk-compat.h"
 
+void register_tap_listener_gtkwspstat(void);
+
 /* Used to keep track of the statistics for a specific PDU type */
 typedef struct _wsp_pdu_t {
        GtkLabel        *widget;
index 1f4f8646ab3fa5799a5bce437f0fe6d433d7e6cb..7fa1740b73d009c5f74852d7facbc00fd6f35195 100644 (file)
@@ -2034,7 +2034,7 @@ void MainWindow::on_actionHelpCheckForUpdates_triggered()
 
 void MainWindow::on_actionHelpAbout_triggered()
 {
-    AboutDialog *about_dialog = new AboutDialog(this);;
+    AboutDialog *about_dialog = new AboutDialog(this);
 
     if (about_dialog->isMinimized() == true)
     {
index c9f1750d014f119de84aada0d9b4754cbba51ba3..cfbab94744efcb874a2fe02912672cae6f45b553 100644 (file)
@@ -1,6 +1,65 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="de_DE">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <source>About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;span size=\&quot;x-large\&quot; weight=\&quot;bold\&quot;&gt;Network Protocol Analyzer&lt;/span&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Folders</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Typical Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ByteViewTab</name>
     <message>
     </message>
 </context>
 <context>
-    <name>CapturePreferencesFrame</name>
+    <name>CaptureFilterCombo</name>
     <message>
-        <source>Frame</source>
+        <source>Capture filter selector</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CaptureFilterEdit</name>
     <message>
-        <source>Default interface</source>
+        <source>Capture filter entry</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Enter a capture filter %1</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CaptureInterfacesDialog</name>
     <message>
-        <source>Capture packets in promiscuous mode</source>
+        <source>Wireshark: Capture interfaces</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capture packets in the next-generation capture file format.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Input</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture packets in pcap-ng format</source>
+        <source>Capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Update list of packets in real time</source>
+        <source>Traffic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Keep the packet list scrolled to the bottom while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Link-layer header</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Automatic scrolling in live capture</source>
+        <source>Prom. mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Snaplen [B]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show the capture summary dialog while capturing</source>
+        <source>Buffer [MB]</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ColumnPreferencesFrame</name>
     <message>
-        <source>Frame</source>
+        <source>Mon. Mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Displayed</source>
+        <source>Capture Filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Title</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Type</source>
+        <source>Capture packets in promiscuous mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Field name</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Field occurrence</source>
+        <source>Show the capture summary dialog while capturing</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>DisplayFilterCombo</name>
     <message>
-        <source>Display filter selector</source>
-        <translation></translation>
+        <source>Add pipe...</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>DisplayFilterEdit</name>
     <message>
-        <source>Apply a display filter %1 &lt;%2/&gt;</source>
-        <translation></translation>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Display filter entry</source>
-        <translation></translation>
+        <source>Output format:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Invalid filter</source>
-        <translation></translation>
+        <source>pcap-ng</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enter a display filter %1</source>
+        <source>pcap</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ExportDissectionDialog</name>
     <message>
-        <source>Wireshark: Export Packet Dissections</source>
+        <source>Capture directly to file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export as:</source>
+        <source>Browse...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Plain text (*.txt)</source>
+        <source>File:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Comma Separated Values - summary (*.csv)</source>
+        <source>Create a new file automatically after...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PSML - summary (*.psml, *.xml)</source>
+        <source>Megabytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PDML - details (*.pdml, *.xml)</source>
+        <source>Kilobytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>C Arrays - bytes (*.c, *.h)</source>
+        <source>Bytes</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ExportObjectDialog</name>
     <message>
-        <source>Dialog</source>
+        <source>seconds</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet</source>
+        <source>minutes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Hostname</source>
+        <source>hours</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Content Type</source>
+        <source>packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Size</source>
+        <source>Reuse old files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Filename</source>
+        <source>Options</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Searching for objects</source>
+        <source>Display Options</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Tap registration error</source>
+        <source>Update list of packets in real-time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unable to register </source>
+        <source>Automatically scroll during live capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source> tap: </source>
+        <source>Show extra capture information dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Save Object As...</source>
+        <source>Name Resolution</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Save All Objects In...</source>
+        <source>Resolve MAC Addresses</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Object Export</source>
+        <source>Resolve network names</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Some files could not be saved.</source>
+        <source>Resolve transport names</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>FileSetDialog</name>
     <message>
-        <source>Dialog</source>
+        <source>Stop capture automatically after...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Directory:</source>
+        <source>Start</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Filename</source>
+        <source>Stop</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CapturePreferencesFrame</name>
     <message>
-        <source>Created</source>
+        <source>Frame</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Modified</source>
+        <source>Default interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Size</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: No files in Set</source>
+        <source>Capture packets in promiscuous mode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No capture loaded</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capture packets in the next-generation capture file format.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open this capture file</source>
+        <source>Capture packets in pcap-ng format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: %1 File%2 in Set</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>FilterExpressionsPreferencesFrame</name>
     <message>
-        <source>Frame</source>
+        <source>Update list of packets in real time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enabled</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Keep the packet list scrolled to the bottom while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Label</source>
+        <source>Automatic scrolling in live capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Filter Expression</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show the capture summary dialog while capturing</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>FontColorPreferencesFrame</name>
+    <name>ColumnPreferencesFrame</name>
     <message>
         <source>Frame</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Main window font:</source>
+        <source>Displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Select Font</source>
+        <source>Title</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Colors:</source>
+        <source>Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sample ignored packet text</source>
+        <source>Field name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sample marked packet text</source>
+        <source>Field occurrence</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>DecodeAsDialog</name>
     <message>
-        <source>Sample stream client text</source>
+        <source>Wireshark: Decode As</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sample stream server text</source>
+        <source>Field</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Font</source>
+        <source>Match using this field</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ImportTextDialog</name>
     <message>
-        <source>Wireshark: Import from Hex Dump</source>
+        <source>Value</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import From</source>
+        <source>Current &quot;Decode As&quot; behavior</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>File:</source>
+        <source>Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Set name of text file to import</source>
+        <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Browse for text file to import</source>
+        <source>Default &quot;Decode As&quot; behavior</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Browse...</source>
+        <source>Current</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Offsets in the text file are in octal notation</source>
+        <source>Change behavior when the protocol field matches this value</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Octal</source>
+        <source>Change the dissection behavior for a protocol.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Offsets:</source>
+        <source>Remove this dissection behavior.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Offsets in the text file are in hexadecimal notation</source>
+        <source>Copy this dissection behavior.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Hexadecimal</source>
+        <source>String</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Offsets in the text file are in decimal notation</source>
+        <source>Integer, base </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Decimal</source>
+        <source>unknown</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>DisplayFilterCombo</name>
     <message>
-        <source>The format in which to parse timestamps in the text file (eg. %H:%M:%S.). Format specifiers are based on strptime(3)</source>
-        <translation type="unfinished"></translation>
+        <source>Display filter selector</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>DisplayFilterEdit</name>
     <message>
-        <source>Timestamp format:</source>
-        <translation type="unfinished"></translation>
+        <source>Apply a display filter %1 &lt;%2/&gt;</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Maximum frame length:</source>
-        <translation type="unfinished"></translation>
+        <source>Display filter entry</source>
+        <translation></translation>
     </message>
     <message>
-        <source>The maximum size of the frames to write to the import capture file (max 64000)</source>
-        <translation type="unfinished"></translation>
+        <source>Invalid filter</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Encapsulation</source>
+        <source>Enter a display filter %1</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ExportDissectionDialog</name>
     <message>
-        <source>Encapsulation Type:</source>
+        <source>Wireshark: Export Packet Dissections</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Encapsulation type of the frames in the import capture file</source>
+        <source>Export as:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The UDP, TCP or SCTP source port for each frame</source>
+        <source>Plain text (*.txt)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The SCTP DATA payload protocol identifier for each frame</source>
+        <source>Comma Separated Values - summary (*.csv)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The UDP, TCP or SCTP destination port for each frame</source>
+        <source>PSML - summary (*.psml, *.xml)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prefix each frame with an Ethernet header</source>
+        <source>PDML - details (*.pdml, *.xml)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ethernet</source>
+        <source>C Arrays - bytes (*.c, *.h)</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ExportObjectDialog</name>
     <message>
-        <source>Prefix each frame with an Ethernet, IPv4 and SCTP header</source>
+        <source>Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>SCTP</source>
+        <source>Packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PPI:</source>
+        <source>Hostname</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Protocol (dec):</source>
+        <source>Content Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Leave frames unchanged</source>
+        <source>Size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No dummy header</source>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Searching for objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tap registration error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to register </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> tap: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Save Object As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Save All Objects In...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Some files could not be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FileSetDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: No files in Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No capture loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open this capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: %1 File%2 in Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FilterExpressionsPreferencesFrame</name>
+    <message>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Label</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FollowStreamDialog</name>
+    <message>
+        <source>Follow Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show data as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hide this stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>%Ln client pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%Ln server pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%Ln turn(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>No capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please make sure you have a capture file opened.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error following stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture file invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please make sure you have a TCP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please make sure you have a UDP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error following stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please make sure you have an SSL packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error creating filter for this stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A transport or network layer header is needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>%Ln total stream(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Could not read from temporary file %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Short read from temporary file %1: expected %2, got %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error reading temporary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FontColorPreferencesFrame</name>
+    <message>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Main window font:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Colors:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample ignored packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample marked packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample &quot;Follow Stream&quot; client text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample &quot;Follow Stream&quot; server text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample valid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample invalid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample deprecated filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImportTextDialog</name>
+    <message>
+        <source>Wireshark: Import from Hex Dump</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import From</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set name of text file to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse for text file to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Offsets in the text file are in octal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Octal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Offsets:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Offsets in the text file are in hexadecimal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hexadecimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Offsets in the text file are in decimal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The format in which to parse timestamps in the text file (eg. %H:%M:%S.). Format specifiers are based on strptime(3)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Timestamp format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum frame length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The maximum size of the frames to write to the import capture file (max 64000)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Encapsulation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Encapsulation Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Encapsulation type of the frames in the import capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The UDP, TCP or SCTP source port for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The SCTP DATA payload protocol identifier for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The UDP, TCP or SCTP destination port for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ethernet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet, IPv4 and SCTP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PPI:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Protocol (dec):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Leave frames unchanged</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No dummy header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet, IPv4 and UDP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>UDP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Source port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The Ethertype value of each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet, IPv4 and TCP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The SCTP verification tag for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Destination port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ethertype (hex):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The IPv4 protocol ID for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet, IPv4 and SCTP (DATA) header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SCTP (Data)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix each frame with an Ethernet and IPv4 header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>IPv4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Import text file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Example: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;i&gt;(No format will be applied)&lt;/i&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Direction indication:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>InterfaceTree</name>
+    <message>
+        <source>Welcome screen list</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Waiting for startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Interface information not available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LayoutPreferencesFrame</name>
+    <message>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pane 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet List</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pane 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pane 3:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainStatusBar</name>
+    <message>
+        <source> is the highest expert info level</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>WARNING</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NOTE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CHAT</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No expert info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packets: %1 %4 Displayed: %2 %4 Marked: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> %1 Dropped: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> %1 Ignored: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> %1  Load time: %2:%3.%4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Profile: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manage Profiles...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>New...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ready to load or capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ready to load file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWelcome</name>
+    <message>
+        <source>not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open
+a recent capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Learn
+more about Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;
+&lt;body&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/docs/wsug_html_chunked/&quot;&gt;User&apos;s Guide&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+How to install Wireshark and how to use each of its features.&lt;br/&gt;
+Other formats and command-line man pages can be found on&lt;br/&gt;
+the &lt;a href=&quot;http://www.wireshark.org/docs/&quot;&gt;documentation page&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://wiki.wireshark.org/&quot;&gt;The Wireshark Wiki&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+User-contributed pages on different aspects of using Wireshark.&lt;br/&gt;
+Capturing in different environments, filtering, specific protocols,&lt;br/&gt;
+and a variety of other information.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://ask.wireshark.org/&quot;&gt;Wireshark Q&amp;amp;A&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+Question and answer site for Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/lists/&quot;&gt;Mailing Lists&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+In-depth discussions about Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture
+live packets from your network</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Wireshark</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Open Recent</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Ctrl+Q</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Start capturing packets</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Stop capturing packets</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>No files found</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Loading: %1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Invalid Display Filter</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Clear Menu</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>RawShark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dumpcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mergecap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Editcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text2cap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Website</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>FAQ&apos;s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Downloads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wiki</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample Captures</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ask (Q&amp;&amp;A)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manual pages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Contents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>900000000; </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open a capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quit Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Interfaces...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show interface details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&amp;top</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close the current capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TShark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the next packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the previous packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the first packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+End</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>E&amp;xpand Subtrees</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Expand the current packet detail</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Expand All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Expand packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Collapse &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Collapse all packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to Packet...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to specified packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Merge...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Merge one or more files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save the current file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save as a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export specified packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export Packet &amp;Bytes...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export SSL Session Keys...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+P</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>List Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reload the current file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Options...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture &amp;Filters...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture filters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh Interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Restart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restart current capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Interface Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save packets before merging?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A temporary capture file can&apos;t be merged.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes in &quot;%1&quot; before merging?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Changes must be saved before the files can be merged.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The filter expression %1 isn&apos;t a valid display filter. (%2).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> before importing a new capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You have unsaved packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>They will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Do you want to stop the capture and save the captured packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Do you want to save the captured packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Your captured packets will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Do you want to save the changes you&apos;ve made to the capture file &quot;%1&quot;%2?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Your changes will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop and Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop and Quit without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quit without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop and Continue without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to export to &quot;%1&quot;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You cannot export packets to the current capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export Packet Dissections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export Specified Packets...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As Plain &amp;Text...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As CSV...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As &quot;C&quot; Arrays...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As PSML XML...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As PDML XML...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;HTTP...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;DICOM...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;SMB...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Export Selected Packet Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Raw data (*.bin *.dat *.raw);;Any File (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Keys</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>There are no SSL Session Keys to save.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SSL Session Keys (*.keys *.txt);;Any File (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Analyze</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Field Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+F</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+V</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... &amp;and Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... and Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... &amp;or Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... or Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... a&amp;nd not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... and not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... o&amp;r not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>... or not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display Filters...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display Filter &amp;Macros...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Apply as Column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Find Packet...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find a packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find Ne&amp;xt...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find the next packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find Pre&amp;vious...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Find the previous packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Mark/Unmark Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mark or unmark this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mark All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mark all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unmark All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unmark all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Meta+Alt+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Mark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the next marked packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Meta+Shift+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Mark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the previous marked packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Meta+Shift+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ignore/Unignore Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore or unignore this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unignore All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unignore all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set/Unset Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set or unset a time reference for this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unset All Time References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove all time references</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the next time reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to the previous time reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time Shift...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift or change packet timestamps</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Comment...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add or change a packet comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Configuration Profiles...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manage Wireshark&apos;s preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+P</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t copy text. Try another item.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No filter available. Try another </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manage your configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Preferences...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Import from Hex Dump...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check for Updates...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(File name can&apos;t be mapped to UTF-8)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The Wireshark Network Analyzer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP Stream Graphs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>BACnet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Telephony</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>RTSP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Protocol Hierarchy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capinfos</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reordercap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP time sequence graph (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP througput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP round trip time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP window scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Follow TCP Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Follow UDP Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Follow SSL Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TCP time sequence graph (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Analyse this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show All Associations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Flow Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Flow sequence diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ANCP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ANCP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packets sorted by Instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>BACapp statistics sorted by instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packets sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>BACapp statistics sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packets sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>BACapp statistics sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packets sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>BACapp statistics sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Collectd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Collectd statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HART-IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HART-IP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTTP packet counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTTP requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Load Distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTTP load distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Lengths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet length statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sametime</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sametime statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;ISUP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ISUP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>RTSP packet counts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SM&amp;PP Operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SMPP operation statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;UCP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>UCP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Decode &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change the way packets are dissected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>splitterMaster</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>splitterExtra</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>emptyPane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please wait while Wireshark is initializing . . .</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindowPreferencesFrame</name>
+    <message>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Checking this will save the size, position, and maximized state of the main window.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remember main window size and placement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open files in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This folder:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The most recently used folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show up to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>filter entries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>recent files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm unsaved capture files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>If checked the packet detail items will be automatically scrolled when they are expanded.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Automatically scroll packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Percentage distance from the top to scroll packet details.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet detail scroll percentage:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Files In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Main toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Icons only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Icons &amp; Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto-Detect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ModulePreferencesScrollArea</name>
+    <message>
+        <source>ScrollArea</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketCommentDialog</name>
+    <message>
+        <source>Wireshark: Packet Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketFormatGroupBox</name>
+    <message>
+        <source>GroupBox</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet summary lines similar to the packet list&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Summary line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet details similar to the protocol tree&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Details:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export only top-level packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All co&amp;llapsed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Expand and collapse packet details as they are currently displayed.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>As displa&amp;yed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export all packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All e&amp;xpanded</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export a hexdump of the packet data similar to the packet bytes view&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketList</name>
+    <message>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Colorize with Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change Time Display Format?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time References don&apos;t work well with the currently selected Time Display Format.
+Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Frame %1: %2 
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[ Comment text exceeds %1. Stopping. ]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Follow...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketRangeGroupBox</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Range</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Marked packets only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Range:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove &amp;ignored packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First &amp;to last marked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;All packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Selected packets only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Captured</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PreferencesDialog</name>
+    <message>
+        <source>Appearance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Font and Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Advanced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PrintDialog</name>
+    <message>
+        <source>Wireshark: Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Print each packet on a new page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use the &amp;quot;+&amp;quot; and &amp;quot;-&amp;quot; keys to zoom the preview in and out. Use the &amp;quot;0&amp;quot; key to reset the zoom level.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;+ and - zoom, 0 resets&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Packet Range</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page &amp;Setup...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 %2 total packets, %3 shown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Print Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to print to %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ProfileDialog</name>
+    <message>
+        <source>Wireshark: Configuration Profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A profile already exists with that name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Profile Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ProtoTree</name>
+    <message>
+        <source>Packet details</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>, 1 byte</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>, %1 bytes</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Colorize with Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Has this preference been changed?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default value is empty</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avgerage Througput (bits/s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Round Trip Time (ms)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Segment Length (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sequence Number (B)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Tag:</source>
+        <source>Time (s)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prefix each frame with an Ethernet, IPv4 and UDP header</source>
+        <source>Window Size (B)</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SCTPAllAssocsDialog</name>
     <message>
-        <source>UDP</source>
+        <source>Wireshark - SCTP Associations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Source port:</source>
+        <source>ID</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The Ethertype value of each frame</source>
+        <source>Port 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prefix each frame with an Ethernet, IPv4 and TCP header</source>
+        <source>Port 2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>TCP</source>
+        <source>Number of Packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The SCTP verification tag for each frame</source>
+        <source>Number of DATA Chunks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Destination port:</source>
+        <source>Number of Bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ethertype (hex):</source>
+        <source>Filter Selected Association</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The IPv4 protocol ID for each frame</source>
+        <source>Analyze</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prefix each frame with an Ethernet, IPv4 and SCTP (DATA) header</source>
+        <source>Reset Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>SCTP (Data)</source>
+        <source>Reset the graph to its initial state.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prefix each frame with an Ethernet and IPv4 header</source>
+        <source>0</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>IPv4</source>
+        <source>Zoom In</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Import text file</source>
+        <source>Zoom in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Example: %1</source>
+        <source>+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;i&gt;(No format will be applied)&lt;/i&gt;</source>
+        <source>Zoom Out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</source>
+        <source>Zoom out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Direction indication:</source>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>InterfaceTree</name>
     <message>
-        <source>Welcome screen list</source>
-        <translation></translation>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Waiting for startup</source>
+        <source>Move up 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1</source>
+        <source>Up</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>LayoutPreferencesFrame</name>
     <message>
-        <source>Frame</source>
+        <source>Move Left 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Pane 1:</source>
+        <source>Move left 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet List</source>
+        <source>Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Details</source>
+        <source>Move Right 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Bytes</source>
+        <source>Move right 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>None</source>
+        <source>Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Pane 2:</source>
+        <source>Move Down 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Pane 3:</source>
+        <source>Move down 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>MainStatusBar</name>
     <message>
-        <source> is the highest expert info level</source>
+        <source>Down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>ERROR</source>
+        <source>Move Up 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>WARNING</source>
+        <source>Move up 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>NOTE</source>
+        <source>Shift+Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>CHAT</source>
+        <source>Move Left 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No expert info</source>
+        <source>Move left 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packets: %1 %4 Displayed: %2 %4 Marked: %3</source>
+        <source>Shift+Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source> %1 Dropped: %2</source>
+        <source>Move Right 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source> %1 Ignored: %2</source>
+        <source>Move right 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source> %1  Load time: %2:%3.%4</source>
+        <source>Shift+Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Packets</source>
+        <source>Move Down 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Profile: </source>
+        <source>Move down 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage Profiles...</source>
+        <source>Shift+Down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>New...</source>
+        <source>Next Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Edit...</source>
+        <source>Go to the next stream in the capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Delete</source>
+        <source>PgUp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Switch to</source>
+        <source>Previous Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ready to load or capture</source>
+        <source>Go to the previous stream in the capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ready to load file</source>
+        <source>PgDown</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>MainWelcome</name>
     <message>
-        <source>not found</source>
+        <source>Switch Direction</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Form</source>
+        <source>Switch direction (swap TCP endpoints)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;User&apos;s Guide&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>D</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture
-live packets from the network</source>
+        <source>Go To Packet Under Cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open
-a recent capture file</source>
+        <source>Go to packet currently under the cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Learn
-more about Wireshark</source>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>4</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>MainWindow</name>
+    <name>SCTPAssocAnalyseDialog</name>
     <message>
-        <source>Wireshark</source>
-        <translation></translation>
+        <source>Wireshark - Analyse Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>File</source>
-        <translation></translation>
+        <source>TabWidget</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open Recent</source>
-        <translation></translation>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Edit</source>
-        <translation></translation>
+        <source>Chunk Statistics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture</source>
-        <translation></translation>
+        <source>Filter Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open</source>
-        <translation></translation>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+O</source>
-        <translation></translation>
+        <source>Number of Data Chunks from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Quit</source>
-        <translation></translation>
+        <source>Checksum Type:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Q</source>
-        <translation></translation>
+        <source>Number of Data Chunks from EP1 to EP2: </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Start capturing packets</source>
-        <translation></translation>
+        <source>Number of Data Bytes from EP1 to EP2:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+K</source>
-        <translation></translation>
+        <source>Number of Data Bytes from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stop capturing packets</source>
-        <translation></translation>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation></translation>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+W</source>
-        <translation></translation>
+        <source>Graph TSN</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No files found</source>
-        <translation></translation>
+        <source>Graph Bytes</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading: %1</source>
-        <translation></translation>
+        <source>Complete list of IP Addresses as provided in the INIT Chunk</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Invalid Display Filter</source>
-        <translation></translation>
+        <source>Requested Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Clear Menu</source>
-        <translation></translation>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Help</source>
+        <source>Sent Verification Tag:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark Filter</source>
+        <source>Minimum Number of Inbound Streams:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RawShark</source>
+        <source>Minimum Number of Outbound Streams:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Dumpcap</source>
+        <source>Graph Arwnd</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Mergecap</source>
+        <source>Endpoint 2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Editcap</source>
+        <source>Provided Number of Outbound Streams:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Text2cap</source>
+        <source>Complete list of IP Addresses as provided in the INIT-ACK Chunk</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Website</source>
+        <source>Graph a_rwnd</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>FAQ&apos;s</source>
+        <source>SCTP Analyse Association: %1 Port1 %2 Port2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Downloads</source>
+        <source>No Association found for this packet.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wiki</source>
+        <source>Complete list of IP-Addresses as provided in the INIT-Chunk</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sample Captures</source>
+        <source>Complete list of IP-Addresses as provided in the INITACK-Chunk</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ask (Q&amp;&amp;A)</source>
+        <source>List of used IP-Addresses</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manual pages</source>
+        <source>Used Number of Inbound Streams:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Contents</source>
+        <source>Used Number of Outbound Streams:</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SCTPChunkStatisticsDialog</name>
     <message>
-        <source>F1</source>
+        <source>Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;About Wireshark</source>
+        <source>Association</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>900000000; </source>
+        <source>Endpoint 1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to packet</source>
+        <source>Endpoint 2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Cancel</source>
+        <source>Save Chunk Type Order</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>File Set</source>
+        <source>Hide Chunk Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go</source>
+        <source>Remove the chunk type from the table</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>View</source>
+        <source>Chunk Type Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open a capture file</source>
+        <source>Go to the chunk type preferences dialog to show or hide other chunk types</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Quit Wireshark</source>
+        <source>Show All Registered Chunk Types</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Interfaces...</source>
+        <source>Show all chunk types with defined names</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show interface details</source>
+        <source>SCTP Chunk Statistics: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphArwndDialog</name>
+    <message>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+I</source>
+        <source>goToPacket</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Start</source>
+        <source>Go to Packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+E</source>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>S&amp;top</source>
+        <source>No Data Chunks sent</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close the current capture file</source>
+        <source>Arwnd</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>TShark</source>
+        <source>time [secs]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Next Packet</source>
+        <source>Advertised Receiver Window [Bytes]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the next packet</source>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: a_rwnd=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SCTPGraphByteDialog</name>
     <message>
-        <source>Ctrl+Down</source>
+        <source>SCTP Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Previous Packet</source>
+        <source>Reset to full size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the previous packet</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Up</source>
+        <source>Save Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>First Packet</source>
+        <source>goToPacket</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the first packet</source>
+        <source>Go to Packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Home</source>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Last Packet</source>
+        <source>No Data Chunks sent</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the last packet</source>
+        <source>Bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+End</source>
+        <source>time [secs]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>E&amp;xpand Subtrees</source>
+        <source>Received Bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Expand the current packet detail</source>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: Received bytes=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SCTPGraphDialog</name>
     <message>
-        <source>Shift+Right</source>
+        <source>SCTP Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Expand All</source>
+        <source>Only SACKs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Expand packet details</source>
+        <source>Only TSNs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Right</source>
+        <source>Show both</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Collapse &amp;All</source>
+        <source>Reset to full size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Collapse all packet details</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Left</source>
+        <source>Save Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to Packet...</source>
+        <source>goToPacket</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to specified packet</source>
+        <source>Go to Packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+G</source>
+        <source>SCTP TSNs and SACKs over Time: %1 Port1 %2 Port2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Merge...</source>
+        <source>No Data Chunks sent</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Merge one or more files</source>
+        <source>CumTSNAck</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import a file</source>
+        <source>Gap Ack</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Save</source>
+        <source>NR Gap Ack</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save the current file</source>
+        <source>Duplicate Ack</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+S</source>
+        <source>TSN</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save &amp;As...</source>
+        <source>time [secs]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save as a different file</source>
+        <source>TSNs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+S</source>
+        <source>&lt;small&gt;&lt;i&gt;%1: %2 Time: %3 secs &lt;/i&gt;&lt;/small&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export specified packets</source>
+        <source>Portable Document Format (*.pdf)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export Packet &amp;Bytes...</source>
+        <source>Portable Network Graphics (*.png)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+H</source>
+        <source>Windows Bitmap (*.bmp)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export SSL Session Keys...</source>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Print...</source>
+        <source>Wireshark: Save Graph As...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SearchFrame</name>
     <message>
-        <source>Ctrl+P</source>
+        <source>Frame</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>List Files</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Next File</source>
+        <source>Packet list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Previous File</source>
+        <source>Packet details</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Reload</source>
+        <source>Packet bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Reload the current file</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+R</source>
+        <source>Narrow &amp; Wide</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Options...</source>
+        <source>Narrow (UTF-8 / ASCII)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture options</source>
+        <source>Wide (UTF-16)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture &amp;Filters...</source>
+        <source>Case sensitive</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture filters</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Refresh Interfaces</source>
+        <source>Display filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Refresh interfaces</source>
+        <source>Hex value</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Restart</source>
+        <source>String</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Restart current capture</source>
+        <source>Find</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>.</source>
+        <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Interface Selected</source>
+        <source>No valid search type selected. Please report this to the development team.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save packets before merging?</source>
+        <source>Invalid filter.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>A temporary capture file can&apos;t be merged.</source>
+        <source>That filter doesn&apos;t test anything.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Save changes in &quot;%1&quot; before merging?</source>
+        <source>That&apos;s not a valid hex string.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Changes must be saved before the files can be merged.</source>
+        <source>You didn&apos;t specify any text for which to search.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The filter expression %1 isn&apos;t a valid display filter. (%2).</source>
+        <source>No valid character set selected. Please report this to the development team.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source> before importing a new capture</source>
+        <source>No valid search area selected. Please report this to the development team.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>You have unsaved packets</source>
+        <source>No packet contained those bytes.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>They will be lost if you don&apos;t save them.</source>
+        <source>No packet contained that string in its Info column.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Do you want to stop the capture and save the captured packets</source>
+        <source>No packet contained that string in its dissected display.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Do you want to save the captured packets</source>
+        <source>No packet contained that string in its converted data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>?</source>
+        <source>No packet matched that filter.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SequenceDialog</name>
     <message>
-        <source>Your captured packets will be lost if you don&apos;t save them.</source>
+        <source>Flow</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Do you want to save the changes you&apos;ve made to the capture file &quot;%1&quot;%2?</source>
+    <message utf8="true">
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Your changes will be lost if you don&apos;t save them.</source>
+        <source>&lt;small&gt;&lt;i&gt;A hint&lt;/i&gt;&lt;/small&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stop and Save</source>
+        <source>Show:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stop and Quit without Saving</source>
+        <source>All packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Quit without Saving</source>
+        <source>Displayed packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Stop and Continue without Saving</source>
+        <source>Flow type:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unable to export to &quot;%1&quot;.</source>
+        <source>Addresses:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>You cannot export packets to the current capture file.</source>
+        <source>Any</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export Packet Dissections</source>
+        <source>Network</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export Objects</source>
+        <source>Reset</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Export Specified Packets...</source>
+        <source>Reset Diagram</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As Plain &amp;Text...</source>
+        <source>Reset the diagram to its initial state.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As CSV...</source>
+        <source>0</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As &quot;C&quot; Arrays...</source>
+        <source>Move Up 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As PSML XML...</source>
+        <source>Move up 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As PDML XML...</source>
+        <source>Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;HTTP...</source>
+        <source>Move Left 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;DICOM...</source>
+        <source>Move left 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;SMB...</source>
+        <source>Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Export Selected Packet Bytes</source>
+        <source>Move Right 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Raw data (*.bin *.dat *.raw);;Any File (*.*)</source>
+        <source>Move right 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Keys</source>
+        <source>Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>There are no SSL Session Keys to save.</source>
+        <source>Move Down 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>SSL Session Keys (*.keys *.txt);;Any File (*.*)</source>
+        <source>Move down 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Copy</source>
+        <source>Down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Analyze</source>
+        <source>Move Up 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Apply as Filter</source>
+        <source>Move up 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prepare a Filter</source>
+        <source>Shift+Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Description</source>
+        <source>Move Left 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+D</source>
+        <source>Move left 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Field Name</source>
+        <source>Shift+Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+F</source>
+        <source>Move Right 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Value</source>
+        <source>Move right 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+V</source>
+        <source>Shift+Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As Filter</source>
+        <source>Move Down 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+C</source>
+        <source>Move down 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Selected</source>
+        <source>Shift+Down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Not Selected</source>
+        <source>Go To Packet Under Cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Selected</source>
+        <source>Go to packet currently under the cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... &amp;and Selected</source>
+        <source>G</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... and Selected</source>
+        <source>All Flows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... &amp;or Selected</source>
+        <source>Show flows for all packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... or Selected</source>
+        <source>1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... a&amp;nd not Selected</source>
+        <source>TCP Flows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... and not Selected</source>
+        <source>Show only TCP flow information</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>... o&amp;r not Selected</source>
+        <source>Save As...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%Ln node(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%Ln item(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
-        <source>... or not Selected</source>
+        <source>Portable Document Format (*.pdf)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Display Filters...</source>
+        <source>Portable Network Graphics (*.png)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Display Filter &amp;Macros...</source>
+        <source>Windows Bitmap (*.bmp)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Apply as Column</source>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Find Packet...</source>
+        <source>ASCII (*.txt)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find a packet</source>
+        <source>Wireshark: Save Graph As...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SplashOverlay</name>
     <message>
-        <source>Ctrl+F</source>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find Ne&amp;xt...</source>
+        <source>Initializing dissectors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find the next packet</source>
+        <source>Initializing tap listeners</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+N</source>
+        <source>Registering dissector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find Pre&amp;vious...</source>
+        <source>Registering plugins</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find the previous packet</source>
+        <source>Registering Python dissectors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+B</source>
+        <source>Handing off dissector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Mark/Unmark Packet</source>
+        <source>Handing off plugins</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Mark or unmark this packet</source>
+        <source>Handing off Python dissectors</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+M</source>
+        <source>Loading Lua plugins</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Mark All Displayed</source>
+        <source>Loading module preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Mark all displayed packets</source>
+        <source>Loading configuration files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+M</source>
+        <source>(Unknown action)</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>StatsTreeDialog</name>
     <message>
-        <source>Unmark All Displayed</source>
+        <source>Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unmark all displayed packets</source>
+        <source>Display filter:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Meta+Alt+M</source>
+        <source>Regenerate statistics using this display filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Next Mark</source>
+        <source>Apply</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the next marked packet</source>
+        <source>Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Meta+Shift+N</source>
+        <source>Copy a text representation of the tree to the clipboard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Previous Mark</source>
+        <source>Ctrl+C</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the previous marked packet</source>
+        <source>Save as...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Meta+Shift+B</source>
+        <source>Save the stats_tree data in various formats</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Ignore/Unignore Packet</source>
+        <source>Ctrl+S</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ignore or unignore this packet</source>
+        <source>Configuration not found</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ignore All Displayed</source>
+        <source>Unable to find configuration for %1.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ignore all displayed packets</source>
+        <source> Stats Tree</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unignore All Displayed</source>
+        <source>%1 already open</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unignore all displayed packets</source>
+        <source>Each type of tree can only be generated one at at time.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Set/Unset Time Reference</source>
+        <source>%1 failed to attach to tap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Set or unset a time reference for this packet</source>
+        <source>Wireshark: Save stats tree as ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+T</source>
+        <source>Plain text file (*.txt);;Comma separated values (*.csv);;XML document (*.xml);;YAML document (*.yaml)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unset All Time References</source>
+        <source>Plain text file (*.txt)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove all time references</source>
+        <source>Error saving file %1</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SummaryDialog</name>
     <message>
-        <source>Ctrl+Alt+T</source>
+        <source>Wireshark - Summary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Next Time Reference</source>
+        <source>File capture details</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the next time reference</source>
+        <source>File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Alt+N</source>
+        <source>Name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Previous Time Reference</source>
+        <source>/</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to the previous time reference</source>
+        <source>Length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Alt+B</source>
+        <source>Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Time Shift...</source>
+        <source>Encapsulation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Shift or change packet timestamps</source>
+        <source>Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+T</source>
+        <source>First packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Comment...</source>
+        <source>Last packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add or change a packet comment</source>
+        <source>Elapsed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Configuration Profiles...</source>
+        <source>Capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+A</source>
+        <source>Capture file comments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage Wireshark&apos;s preferences</source>
+        <source>OS</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Shift+P</source>
+        <source>Unknown</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Couldn&apos;t copy text. Try another item.</source>
+        <source>Capture app</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No filter available. Try another </source>
+        <source>Capture statistics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Name set in iconText to keep QMenuBar from grabbing it on OS X</source>
+        <source>Traffic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage your configuration profiles</source>
+        <source>Captured</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Preferences...</source>
+        <source>Displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Import from Hex Dump...</source>
+        <source>Marked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+D</source>
+        <source>Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ctrl+Alt+D</source>
+        <source>Dropped packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Check for Updates...</source>
+        <source>Capture filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>(File name can&apos;t be mapped to UTF-8)</source>
+        <source>Link size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The Wireshark Network Analyzer</source>
+        <source>Packet size limit</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>MainWindowPreferencesFrame</name>
     <message>
-        <source>Frame</source>
+        <source>Display filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Checking this will save the size, position, and maximized state of the main window.</source>
+        <source>Ignored packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remember main window size and placement</source>
+        <source>Comment summary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open files in</source>
+        <source>Refresh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This folder:</source>
+        <source>Copy To Clipboard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>The most recently used folder</source>
+        <source>Summary created by Wireshark %1
+
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show up to</source>
+        <source>File: 
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>filter entries</source>
+        <source>Name:          %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>recent files</source>
+        <source>Length:                %1 bytes
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Confirm unsaved capture files</source>
+        <source>Format:                %1%2
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>If checked the packet detail items will be automatically scrolled when they are expanded.</source>
+        <source> (gzip compressed)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Automatically scroll packet details</source>
+        <source>Encapsulation:         %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Percentage distance from the top to scroll packet details.</source>
+        <source>Time:
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet detail scroll percentage:</source>
+        <source>First packet:          %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Open Files In</source>
+        <source>Last packet:           %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Browse...</source>
+        <source>Elapsed:               %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Main toolbar style:</source>
+        <source>Capture:
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Icons only</source>
+        <source>OS:    %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Text only</source>
+        <source>Capture application:   %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Icons &amp; Text</source>
+        <source>Dropped packets:       %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Filter toolbar style:</source>
+        <source>Capture filter:                %1
+</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ModulePreferencesScrollArea</name>
     <message>
-        <source>ScrollArea</source>
+        <source>Link type:             %1
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: </source>
+        <source>Packet size limit:     %1
+</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PacketCommentDialog</name>
     <message>
-        <source>Wireshark: Packet Comment</source>
+        <source>Statistics:
+</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PacketFormatGroupBox</name>
     <message>
-        <source>GroupBox</source>
+        <source>%1:    %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Format</source>
+        <source>Capture File Comments:
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet summary lines similar to the packet list&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Not representable</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Summary line</source>
+        <source>%1 bytes (%2 Mbytes)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet details similar to the protocol tree&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>unknown</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Details:</source>
+        <source>none</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export only top-level packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>%u bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All co&amp;llapsed</source>
+        <source>Packets</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Expand and collapse packet details as they are currently displayed.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Between first and last packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>As displa&amp;yed</source>
+        <source>%.3f sec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export all packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Avg. packets/sec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>All e&amp;xpanded</source>
+        <source>Avg. packet size</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export a hexdump of the packet data similar to the packet bytes view&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>%.3f bytes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Bytes</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PacketList</name>
     <message>
-        <source>Apply as Filter</source>
+        <source>Avg. bytes/sec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prepare a Filter</source>
+        <source>Avg. MBit/sec</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>TCPStreamDialog</name>
     <message>
-        <source>Colorize with Filter</source>
+        <source>Dialog</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Copy</source>
+    <message utf8="true">
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;+&lt;/th&gt;&lt;td&gt;Zoom in&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;-&lt;/th&gt;&lt;td&gt;Zoom out&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Up&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Next stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Dn&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Previous stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;d&lt;/th&gt;&lt;td&gt;Switch direction (swap TCP endpoints)&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;z&lt;/th&gt;&lt;td&gt;Toggle mouse drag / zoom&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;s&lt;/th&gt;&lt;td&gt;Toggle relative / absolute sequence numbers&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;t&lt;/th&gt;&lt;td&gt;Toggle capture / session time origin&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;Space&lt;/th&gt;&lt;td&gt;Toggle crosshairs&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Round Trip Time graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Throughput graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;Stevens-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt;tcptrace-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;5&lt;/th&gt;&lt;td&gt;Window Scaling graph&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Bytes</source>
+        <source>&lt;small&gt;&lt;i&gt;Mouse over for shortcuts&lt;/i&gt;&lt;/small&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Change Time Display Format?</source>
+        <source>Type</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Time References don&apos;t work well with the currently selected Time Display Format.
-Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</source>
+        <source>Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Frame %1: %2 
-
-</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch the direction of the connection (view the opposite flow).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>[ Comment text exceeds %1. Stopping. ]</source>
+        <source>Switch Direction</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PacketRangeGroupBox</name>
     <message>
-        <source>Form</source>
+        <source>Mouse</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Range</source>
+        <source>Drag using the mouse button.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>-</source>
+        <source>drags</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Displayed</source>
+        <source>Select using the mouse button.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Marked packets only</source>
+        <source>zooms</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Range:</source>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reset the graph to its initial state.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove &amp;ignored packets</source>
+        <source>Reset</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>First &amp;to last marked</source>
+        <source>Reset Graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;All packets</source>
+        <source>Reset the graph to its initial state.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Selected packets only</source>
+        <source>0</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Captured</source>
+        <source>Zoom In</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PreferencesDialog</name>
     <message>
-        <source>Appearance</source>
+        <source>Zoom in</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Layout</source>
+        <source>+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Columns</source>
+        <source>Zoom Out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Font and Colors</source>
+        <source>Zoom out</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture</source>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Advanced</source>
+        <source>Move Up 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Search:</source>
+        <source>Move up 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Name</source>
+        <source>Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Status</source>
+        <source>Move Left 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Type</source>
+        <source>Move left 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Value</source>
+        <source>Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unknown</source>
+        <source>Move Right 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Default</source>
+        <source>Move right 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Changed</source>
+        <source>Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: Preferences</source>
+        <source>Move Down 10 Pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Filter Bookmarks</source>
+        <source>Move down 10 pixels</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wireshark: </source>
+        <source>Down</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>PrintDialog</name>
     <message>
-        <source>Wireshark: Print</source>
+        <source>Move Up 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Format</source>
+        <source>Move up 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Print each packet on a new page</source>
+        <source>Shift+Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use the &amp;quot;+&amp;quot; and &amp;quot;-&amp;quot; keys to zoom the preview in and out. Use the &amp;quot;0&amp;quot; key to reset the zoom level.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Move Left 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;+ and - zoom, 0 resets&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Move left 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet Range</source>
+        <source>Shift+Left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&amp;Print...</source>
+        <source>Move Right 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Page &amp;Setup...</source>
+        <source>Move right 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1 %2 total packets, %3 shown</source>
+        <source>Shift+Right</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Print Error</source>
+        <source>Move Down 1 Pixel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unable to print to %1.</source>
+        <source>Move down 1 pixel</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ProfileDialog</name>
     <message>
-        <source>Wireshark: Configuration Profiles</source>
+        <source>Shift+Down</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Create a new profile using default settings.</source>
+        <source>Next Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove this profile.</source>
+        <source>Go to the next stream in the capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Copy this profile.</source>
+        <source>PgUp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to</source>
+        <source>Previous Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>A profile already exists with that name.</source>
+        <source>Go to the previous stream in the capture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Profile Error</source>
+        <source>PgDown</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ProtoTree</name>
-    <message>
-        <source>Packet details</source>
-        <translation></translation>
-    </message>
     <message>
-        <source>, 1 byte</source>
-        <translation></translation>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>, %1 bytes</source>
-        <translation></translation>
+        <source>D</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Apply as Filter</source>
+        <source>Go To Packet Under Cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Prepare a Filter</source>
+        <source>Go to packet currently under the cursor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Colorize with Filter</source>
+        <source>G</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Copy</source>
+        <source>Drag / Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Bytes</source>
+        <source>Toggle mouse drag / zoom behavior</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>QObject</name>
     <message>
-        <source>Has this preference been changed?</source>
+        <source>Z</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Default value is empty</source>
+        <source>Relative / Absolute Sequence Numbers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Edit...</source>
+        <source>Toggle relative / absolute sequence numbers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Browse...</source>
+        <source>S</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>SearchFrame</name>
     <message>
-        <source>Frame</source>
+        <source>Capture / Session Time Origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Toggle capture / session time origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet list</source>
+        <source>T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet details</source>
+        <source>Crosshairs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Packet bytes</source>
+        <source>Toggle crosshairs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Space</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Narrow &amp; Wide</source>
+        <source>Round Trip Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Narrow (UTF-8 / ASCII)</source>
+        <source>Switch to the Round Trip Time graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Wide (UTF-16)</source>
+        <source>1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Case sensitive</source>
+        <source>Throughput</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <source>Switch to the Throughput graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Display filter</source>
+        <source>2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Hex value</source>
+        <source>Time / Sequence (Stevens)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>String</source>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Find</source>
+        <source>3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Cancel</source>
+        <source>Window Scaling</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No valid search type selected. Please report this to the development team.</source>
+        <source>Switch to the Window Scaling graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Invalid filter.</source>
+        <source>5</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>That filter doesn&apos;t test anything.</source>
+        <source>Time / Sequence (tcptrace)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>That&apos;s not a valid hex string.</source>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>You didn&apos;t specify any text for which to search.</source>
+        <source>4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No valid character set selected. Please report this to the development team.</source>
+        <source>Save As...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No valid search area selected. Please report this to the development team.</source>
+        <source>No Capture Data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No packet contained those bytes.</source>
+        <source>%1 %2 pkts, %3 %4 %5 pkts, %6 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No packet contained that string in its Info column.</source>
+        <source>Sequence Numbers (Stevens)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No packet contained that string in its dissected display.</source>
+        <source>Sequence Numbers (tcptrace)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No packet contained that string in its converted data.</source>
+        <source> (1s MA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No packet matched that filter.</source>
+        <source> (%1 Segment MA)</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>SplashOverlay</name>
     <message>
-        <source>Form</source>
+        <source> [not enough data]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Initializing dissectors</source>
+        <source> for %1:%2 %3 %4:%5</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Initializing tap listeners</source>
+        <source>%1 %2 (%3s len %4 seq %5 ack %6 win %7)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Registering dissector</source>
+        <source>Click to select packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Registering plugins</source>
+        <source>Packet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Registering Python dissectors</source>
+        <source>Release to zoom, x = %1 to %2, y = %3 to %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Handing off dissector</source>
+        <source>Unable to select range.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Handing off plugins</source>
+        <source>Click to select a portion of the graph.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Handing off Python dissectors</source>
+        <source>Portable Document Format (*.pdf)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading Lua plugins</source>
+        <source>Portable Network Graphics (*.png)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading module preferences</source>
+        <source>Windows Bitmap (*.bmp)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading configuration files</source>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>(Unknown action)</source>
+        <source>Wireshark: Save Graph As...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2424,4 +5027,27 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
         <translation type="unfinished"></translation>
     </message>
 </context>
+<context>
+    <name>UatDialog</name>
+    <message>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown User Accessible Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 </TS>
index 8a88ce9abbf4fc9f9eec24ca118fac0a81593ff9..52c5b6c3a2e745f48dedee04f09d48369f4d9da7 100644 (file)
Binary files a/ui/qt/qtshark_en.qm and b/ui/qt/qtshark_en.qm differ
index f913e8b3ece8256fba78d259486d12593f889120..06d5d4cec6355db9555c4a9684c5d41d0374a118 100644 (file)
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="en">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="about_dialog.ui" line="14"/>
+        <source>About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="36"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="46"/>
+        <source>Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="74"/>
+        <source>&lt;span size=\&quot;x-large\&quot; weight=\&quot;bold\&quot;&gt;Network Protocol Analyzer&lt;/span&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="99"/>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="117"/>
+        <source>Folders</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="148"/>
+        <location filename="about_dialog.ui" line="196"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="153"/>
+        <source>Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="158"/>
+        <source>Typical Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="165"/>
+        <source>Plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="201"/>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="206"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="211"/>
+        <source>Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="218"/>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ByteViewTab</name>
+    <message>
+        <location filename="byte_view_tab.cpp" line="32"/>
+        <source>Packet bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureFileDialog</name>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="161"/>
+        <location filename="capture_file_dialog.cpp" line="174"/>
+        <source>This capture file contains comments.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="162"/>
+        <source>The file format you chose doesn&apos;t support comments. Do you want to save the capture in a format that supports comments or discard the comments and save in the format you chose?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="167"/>
+        <location filename="capture_file_dialog.cpp" line="178"/>
+        <source>Discard comments and save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="168"/>
+        <source>Save in another format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="175"/>
+        <source>No file format in which it can be saved supports comments. Do you want to discard the comments and save in the format you chose?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="395"/>
+        <source>All Files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="437"/>
+        <source>Format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="442"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="447"/>
+        <source>Packets:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="452"/>
+        <source>First Packet:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="457"/>
+        <source>Elapsed Time:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="469"/>
+        <source>Prepend packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="470"/>
+        <source>Insert packets from the selected file before the current file. Packet timestamps will be ignored.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="473"/>
+        <source>Merge chronologically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="474"/>
+        <source>Insert packets in chronological order.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="478"/>
+        <source>Append packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="479"/>
+        <source>Insert packets from the selected file after the current file. Packet timestamps will be ignored.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="494"/>
+        <source>Display Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="503"/>
+        <source>&amp;MAC name resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="507"/>
+        <source>&amp;Transport name resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="511"/>
+        <source>&amp;Network name resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="515"/>
+        <source>&amp;External name resolver</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="521"/>
+        <source>Compress with g&amp;zip</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="552"/>
+        <source>Wireshark: Open Capture File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="586"/>
+        <source>Wireshark: Save Capture File As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="592"/>
+        <source>Save as:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="614"/>
+        <source>Wireshark: Export Specified Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="618"/>
+        <source>Export as:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="647"/>
+        <source>Wireshark: Merge Capture File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="749"/>
+        <location filename="capture_file_dialog.cpp" line="750"/>
+        <location filename="capture_file_dialog.cpp" line="751"/>
+        <location filename="capture_file_dialog.cpp" line="752"/>
+        <location filename="capture_file_dialog.cpp" line="753"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="760"/>
+        <source>directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="767"/>
+        <source>unknown file format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="769"/>
+        <source>error opening file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="783"/>
+        <source>%1 bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="812"/>
+        <source>error after reading %1 packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="818"/>
+        <source>more than %1 (preview timeout)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="837"/>
+        <source>?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_file_dialog.cpp" line="843"/>
+        <source>unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureFilterCombo</name>
+    <message>
+        <location filename="capture_filter_combo.cpp" line="47"/>
+        <source>Capture filter selector</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureFilterEdit</name>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="86"/>
+        <source>Capture filter entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="88"/>
+        <source>Enter a capture filter %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureInterfacesDialog</name>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="14"/>
+        <source>Wireshark: Capture interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="24"/>
+        <source>Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="52"/>
+        <source>Capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="57"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="62"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="67"/>
+        <source>Link-layer header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="72"/>
+        <source>Prom. mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="77"/>
+        <source>Snaplen [B]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="82"/>
+        <source>Buffer [MB]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="87"/>
+        <source>Mon. Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="92"/>
+        <source>Capture Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="104"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="107"/>
+        <source>Capture packets in promiscuous mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="114"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="117"/>
+        <source>Show the capture summary dialog while capturing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="144"/>
+        <source>Add pipe...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="169"/>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="177"/>
+        <source>Output format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="184"/>
+        <source>pcap-ng</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="191"/>
+        <source>pcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="213"/>
+        <source>Capture directly to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="225"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="232"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="245"/>
+        <source>Create a new file automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="278"/>
+        <location filename="capture_interfaces_dialog.ui" line="565"/>
+        <source>Megabytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="283"/>
+        <location filename="capture_interfaces_dialog.ui" line="570"/>
+        <source>Kilobytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="288"/>
+        <location filename="capture_interfaces_dialog.ui" line="575"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="297"/>
+        <location filename="capture_interfaces_dialog.ui" line="539"/>
+        <source>seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="302"/>
+        <location filename="capture_interfaces_dialog.ui" line="544"/>
+        <source>minutes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="307"/>
+        <location filename="capture_interfaces_dialog.ui" line="549"/>
+        <source>hours</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="315"/>
+        <location filename="capture_interfaces_dialog.ui" line="524"/>
+        <source>packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="369"/>
+        <source>Reuse old files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="393"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="401"/>
+        <source>Display Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="413"/>
+        <source>Update list of packets in real-time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="420"/>
+        <source>Automatically scroll during live capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="427"/>
+        <source>Show extra capture information dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="437"/>
+        <source>Name Resolution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="446"/>
+        <source>Resolve MAC Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="453"/>
+        <source>Resolve network names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="460"/>
+        <source>Resolve transport names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="485"/>
+        <source>Stop capture automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="63"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="66"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CapturePreferencesFrame</name>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="29"/>
+        <source>Default interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="63"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="66"/>
+        <source>Capture packets in promiscuous mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="73"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capture packets in the next-generation capture file format.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="76"/>
+        <source>Capture packets in pcap-ng format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="83"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="86"/>
+        <source>Update list of packets in real time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="93"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Keep the packet list scrolled to the bottom while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="96"/>
+        <source>Automatic scrolling in live capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="103"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="106"/>
+        <source>Show the capture summary dialog while capturing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ColumnPreferencesFrame</name>
+    <message>
+        <location filename="column_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="30"/>
+        <source>Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="35"/>
+        <source>Title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="40"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="45"/>
+        <source>Field name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="50"/>
+        <source>Field occurrence</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>DecodeAsDialog</name>
+    <message>
+        <location filename="decode_as_dialog.ui" line="14"/>
+        <source>Wireshark: Decode As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="27"/>
+        <source>Field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="30"/>
+        <source>Match using this field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="35"/>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="38"/>
+        <source>Current &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="43"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="48"/>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="51"/>
+        <source>Default &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="56"/>
+        <source>Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="59"/>
+        <source>Change behavior when the protocol field matches this value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="69"/>
+        <source>Change the dissection behavior for a protocol.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="83"/>
+        <source>Remove this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="94"/>
+        <source>Copy this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="347"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="349"/>
+        <source>Integer, base </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="361"/>
+        <source>unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>DisplayFilterCombo</name>
+    <message>
+        <location filename="display_filter_combo.cpp" line="47"/>
+        <source>Display filter selector</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>DisplayFilterEdit</name>
+    <message>
+        <location filename="display_filter_edit.cpp" line="94"/>
+        <source>Display filter entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="display_filter_edit.cpp" line="97"/>
+        <source>Enter a display filter %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="display_filter_edit.cpp" line="99"/>
+        <source>Apply a display filter %1 &lt;%2/&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="display_filter_edit.cpp" line="293"/>
+        <source>Invalid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExportDissectionDialog</name>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="64"/>
+        <source>Wireshark: Export Packet Dissections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="66"/>
+        <source>Export as:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="70"/>
+        <source>Plain text (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="71"/>
+        <source>Comma Separated Values - summary (*.csv)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="72"/>
+        <source>PSML - summary (*.psml, *.xml)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="73"/>
+        <source>PDML - details (*.pdml, *.xml)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_dissection_dialog.cpp" line="74"/>
+        <source>C Arrays - bytes (*.c, *.h)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ExportObjectDialog</name>
+    <message>
+        <location filename="export_object_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="36"/>
+        <source>Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="41"/>
+        <source>Hostname</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="46"/>
+        <source>Content Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="51"/>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="56"/>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.ui" line="85"/>
+        <source>Searching for objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="184"/>
+        <source>Tap registration error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="185"/>
+        <source>Unable to register </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="185"/>
+        <source> tap: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="260"/>
+        <source>Wireshark: Save Object As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="277"/>
+        <source>Wireshark: Save All Objects In...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="316"/>
+        <source>Object Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="export_object_dialog.cpp" line="317"/>
+        <source>Some files could not be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FileSetDialog</name>
+    <message>
+        <location filename="file_set_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.ui" line="30"/>
+        <source>Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.ui" line="93"/>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.ui" line="98"/>
+        <source>Created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.ui" line="103"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.ui" line="108"/>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.cpp" line="97"/>
+        <source>Wireshark: No files in Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.cpp" line="98"/>
+        <source>No capture loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.cpp" line="116"/>
+        <source>Open this capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="file_set_dialog.cpp" line="127"/>
+        <source>Wireshark: %1 File%2 in Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FilterExpressionsPreferencesFrame</name>
+    <message>
+        <location filename="filter_expressions_preferences_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filter_expressions_preferences_frame.ui" line="24"/>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filter_expressions_preferences_frame.ui" line="29"/>
+        <source>Label</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="filter_expressions_preferences_frame.ui" line="34"/>
+        <source>Filter Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>FollowStreamDialog</name>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="96"/>
+        <source>Hide this stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="99"/>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="102"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message numerus="yes">
-        <location filename="follow_stream_dialog.cpp" line="145"/>
+        <location filename="follow_stream_dialog.cpp" line="146"/>
         <source>%Ln client pkt(s), </source>
         <translation>
             <numerusform>%Ln client pkt, </numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="follow_stream_dialog.cpp" line="146"/>
+        <location filename="follow_stream_dialog.cpp" line="147"/>
         <source>%Ln server pkt(s), </source>
         <translation>
             <numerusform>%Ln server pkt, </numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="follow_stream_dialog.cpp" line="147"/>
+        <location filename="follow_stream_dialog.cpp" line="148"/>
         <source>%Ln turn(s).</source>
         <translation>
             <numerusform>%Ln turn.</numerusform>
             <numerusform>%Ln turns.</numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>No capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>Please make sure you have a capture file opened.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Error following stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <source>Capture file invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <source>Please make sure you have a TCP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Please make sure you have a UDP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="850"/>
+        <source>Error following stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="851"/>
+        <source>Please make sure you have an SSL packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="871"/>
+        <source>Error creating filter for this stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="872"/>
+        <source>A transport or network layer header is needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message numerus="yes">
-        <location filename="follow_stream_dialog.cpp" line="928"/>
+        <location filename="follow_stream_dialog.cpp" line="929"/>
         <source>%Ln total stream(s).</source>
         <translation type="unfinished">
             <numerusform>%Ln stream.</numerusform>
             <numerusform>%Ln total streams.</numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1004"/>
+        <source>Could not read from temporary file %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1009"/>
+        <location filename="follow_stream_dialog.cpp" line="1234"/>
+        <source>Short read from temporary file %1: expected %2, got %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1286"/>
+        <source>Error reading temporary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="20"/>
+        <source>Follow Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="36"/>
+        <source>Hint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="61"/>
+        <source>Show data as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="88"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="102"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="112"/>
+        <source>Find &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
-    <name>SequenceDialog</name>
-    <message numerus="yes">
-        <source>%Ln node(s)</source>
-        <translation type="obsolete">
-            <numerusform>%Ln node</numerusform>
-            <numerusform>%Ln nodes</numerusform>
-        </translation>
+    <name>FontColorPreferencesFrame</name>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message numerus="yes">
-        <source>%Ln item(s)</source>
-        <translation type="obsolete">
-            <numerusform>%Ln item</numerusform>
-            <numerusform>%Ln items</numerusform>
-        </translation>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="31"/>
+        <source>Main window font:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="38"/>
+        <source>Select Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="70"/>
+        <source>Colors:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="89"/>
+        <source>Sample ignored packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="109"/>
+        <source>Sample marked packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="129"/>
+        <source>Sample &quot;Follow Stream&quot; client text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="149"/>
+        <source>Sample &quot;Follow Stream&quot; server text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="199"/>
+        <source>Sample valid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="209"/>
+        <source>Sample invalid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="219"/>
+        <source>Sample deprecated filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.cpp" line="191"/>
+        <source>Wireshark: Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImportTextDialog</name>
+    <message>
+        <location filename="import_text_dialog.ui" line="26"/>
+        <source>Wireshark: Import from Hex Dump</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="41"/>
+        <source>Import From</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="49"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="62"/>
+        <source>Set name of text file to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="69"/>
+        <source>Browse for text file to import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="72"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="83"/>
+        <source>Offsets in the text file are in octal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="86"/>
+        <source>Octal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="93"/>
+        <source>Offsets:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="100"/>
+        <source>Offsets in the text file are in hexadecimal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="103"/>
+        <source>Hexadecimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="113"/>
+        <source>Offsets in the text file are in decimal notation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="116"/>
+        <source>Decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="140"/>
+        <location filename="import_text_dialog.ui" line="150"/>
+        <source>The format in which to parse timestamps in the text file (eg. %H:%M:%S.). Format specifiers are based on strptime(3)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="143"/>
+        <source>Timestamp format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="179"/>
+        <location filename="import_text_dialog.ui" line="189"/>
+        <source>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="182"/>
+        <source>Direction indication:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="201"/>
+        <source>Maximum frame length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="208"/>
+        <source>The maximum size of the frames to write to the import capture file (max 64000)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="227"/>
+        <source>Encapsulation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="238"/>
+        <source>Encapsulation Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="245"/>
+        <source>Encapsulation type of the frames in the import capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="269"/>
+        <source>The UDP, TCP or SCTP source port for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="276"/>
+        <source>The SCTP DATA payload protocol identifier for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="283"/>
+        <source>The UDP, TCP or SCTP destination port for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="290"/>
+        <source>Prefix each frame with an Ethernet header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="293"/>
+        <source>Ethernet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="300"/>
+        <source>Prefix each frame with an Ethernet, IPv4 and SCTP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="303"/>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="310"/>
+        <source>PPI:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="317"/>
+        <source>Protocol (dec):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="324"/>
+        <source>Leave frames unchanged</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="327"/>
+        <source>No dummy header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="350"/>
+        <source>Tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="357"/>
+        <source>Prefix each frame with an Ethernet, IPv4 and UDP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="360"/>
+        <source>UDP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="367"/>
+        <source>Source port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="374"/>
+        <source>The Ethertype value of each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="384"/>
+        <source>Prefix each frame with an Ethernet, IPv4 and TCP header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="387"/>
+        <source>TCP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="394"/>
+        <source>The SCTP verification tag for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="401"/>
+        <source>Destination port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="408"/>
+        <source>Ethertype (hex):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="415"/>
+        <source>The IPv4 protocol ID for each frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="422"/>
+        <source>Prefix each frame with an Ethernet, IPv4 and SCTP (DATA) header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="425"/>
+        <source>SCTP (Data)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="432"/>
+        <source>Prefix each frame with an Ethernet and IPv4 header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="435"/>
+        <source>IPv4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.cpp" line="282"/>
+        <source>Wireshark: Import text file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.cpp" line="323"/>
+        <source>Example: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.cpp" line="325"/>
+        <source>&lt;i&gt;(No format will be applied)&lt;/i&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>InterfaceTree</name>
+    <message>
+        <location filename="interface_tree.cpp" line="59"/>
+        <source>Welcome screen list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="interface_tree.cpp" line="65"/>
+        <source>Waiting for startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="interface_tree.cpp" line="199"/>
+        <source>Interface information not available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LayoutPreferencesFrame</name>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="181"/>
+        <source>Pane 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="188"/>
+        <location filename="layout_preferences_frame.ui" line="239"/>
+        <location filename="layout_preferences_frame.ui" line="290"/>
+        <source>Packet List</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="198"/>
+        <location filename="layout_preferences_frame.ui" line="249"/>
+        <location filename="layout_preferences_frame.ui" line="300"/>
+        <source>Packet Details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="208"/>
+        <location filename="layout_preferences_frame.ui" line="259"/>
+        <location filename="layout_preferences_frame.ui" line="310"/>
+        <source>Packet Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="218"/>
+        <location filename="layout_preferences_frame.ui" line="269"/>
+        <location filename="layout_preferences_frame.ui" line="320"/>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="232"/>
+        <source>Pane 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="283"/>
+        <source>Pane 3:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainStatusBar</name>
+    <message>
+        <location filename="main_status_bar.cpp" line="98"/>
+        <source>Ready to load or capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="100"/>
+        <source>Ready to load file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="149"/>
+        <source>Manage Profiles...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="153"/>
+        <source>New...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="156"/>
+        <source>Edit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="159"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="163"/>
+        <source>Switch to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="188"/>
+        <source> is the highest expert info level</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="193"/>
+        <source>ERROR</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="197"/>
+        <source>WARNING</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="201"/>
+        <source>NOTE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="205"/>
+        <source>CHAT</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="212"/>
+        <source>No expert info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="280"/>
+        <source>Profile: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="305"/>
+        <source>Packets: %1 %4 Displayed: %2 %4 Marked: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="311"/>
+        <source> %1 Dropped: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="314"/>
+        <source> %1 Ignored: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="319"/>
+        <source> %1  Load time: %2:%3.%4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_status_bar.cpp" line="327"/>
+        <source>No Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWelcome</name>
+    <message>
+        <location filename="main_welcome.ui" line="20"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="59"/>
+        <source>Capture filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="126"/>
+        <source>&lt;html&gt;&lt;head/&gt;
+&lt;body&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/docs/wsug_html_chunked/&quot;&gt;User&apos;s Guide&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+How to install Wireshark and how to use each of its features.&lt;br/&gt;
+Other formats and command-line man pages can be found on&lt;br/&gt;
+the &lt;a href=&quot;http://www.wireshark.org/docs/&quot;&gt;documentation page&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://wiki.wireshark.org/&quot;&gt;The Wireshark Wiki&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+User-contributed pages on different aspects of using Wireshark.&lt;br/&gt;
+Capturing in different environments, filtering, specific protocols,&lt;br/&gt;
+and a variety of other information.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://ask.wireshark.org/&quot;&gt;Wireshark Q&amp;amp;A&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+Question and answer site for Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/lists/&quot;&gt;Mailing Lists&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+In-depth discussions about Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="189"/>
+        <source>Capture
+live packets from your network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="195"/>
+        <source>Open
+a recent capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="201"/>
+        <source>Learn
+more about Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.cpp" line="222"/>
+        <source>not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="main_window.ui" line="14"/>
+        <location filename="main_window.ui" line="544"/>
+        <source>Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="62"/>
+        <source>900000000; </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="69"/>
+        <source>Go to packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="76"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="105"/>
+        <source>File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="109"/>
+        <source>Open Recent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="115"/>
+        <source>File Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="123"/>
+        <source>Export Packet Dissections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="134"/>
+        <source>Export Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="163"/>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="167"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="204"/>
+        <source>Capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="217"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="221"/>
+        <source>Manual pages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="250"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="261"/>
+        <source>View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="272"/>
+        <source>Analyze</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="276"/>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="287"/>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="298"/>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="322"/>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="326"/>
+        <source>TCP Stream Graphs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="336"/>
+        <source>BACnet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="345"/>
+        <source>HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="367"/>
+        <source>Telephony</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="371"/>
+        <source>RTSP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="439"/>
+        <source>Open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="442"/>
+        <source>Open a capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="445"/>
+        <source>Ctrl+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="450"/>
+        <source>Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="453"/>
+        <source>Quit Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="456"/>
+        <source>Ctrl+Q</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="464"/>
+        <source>&amp;Interfaces...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="467"/>
+        <source>Show interface details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="470"/>
+        <source>Ctrl+I</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="484"/>
+        <source>&amp;Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="487"/>
+        <source>Start capturing packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="490"/>
+        <location filename="main_window.ui" line="505"/>
+        <source>Ctrl+E</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="499"/>
+        <source>S&amp;top</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="502"/>
+        <source>Stop capturing packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="510"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="513"/>
+        <source>Close the current capture file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="516"/>
+        <source>Ctrl+W</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="524"/>
+        <source>No files found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="533"/>
+        <source>&amp;Contents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="536"/>
+        <source>F1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="549"/>
+        <source>Wireshark Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="554"/>
+        <source>TShark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="559"/>
+        <source>RawShark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="564"/>
+        <source>Dumpcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="569"/>
+        <source>Mergecap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="574"/>
+        <source>Editcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="579"/>
+        <source>Text2cap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="584"/>
+        <source>Website</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="589"/>
+        <source>FAQ&apos;s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="594"/>
+        <source>Downloads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="603"/>
+        <source>Wiki</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="611"/>
+        <source>Sample Captures</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="620"/>
+        <source>&amp;About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="635"/>
+        <source>Ask (Q&amp;&amp;A)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="643"/>
+        <source>Next Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="646"/>
+        <source>Go to the next packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="649"/>
+        <source>Ctrl+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="654"/>
+        <source>Previous Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="657"/>
+        <source>Go to the previous packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="660"/>
+        <source>Ctrl+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="665"/>
+        <source>First Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="668"/>
+        <source>Go to the first packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="671"/>
+        <source>Ctrl+Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="676"/>
+        <source>Last Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="679"/>
+        <source>Go to the last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="682"/>
+        <source>Ctrl+End</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="690"/>
+        <source>E&amp;xpand Subtrees</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="693"/>
+        <source>Expand the current packet detail</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="696"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="701"/>
+        <source>&amp;Expand All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="704"/>
+        <source>Expand packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="707"/>
+        <source>Ctrl+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="712"/>
+        <source>Collapse &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="715"/>
+        <source>Collapse all packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="718"/>
+        <source>Ctrl+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="723"/>
+        <source>Go to Packet...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="726"/>
+        <source>Go to specified packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="729"/>
+        <source>Ctrl+G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="734"/>
+        <source>&amp;Merge...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="737"/>
+        <source>Merge one or more files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="742"/>
+        <source>&amp;Import from Hex Dump...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="745"/>
+        <source>Import a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="754"/>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="757"/>
+        <source>Save the current file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="760"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="769"/>
+        <source>Save &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="772"/>
+        <source>Save as a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="775"/>
+        <source>Ctrl+Shift+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="780"/>
+        <source>Export Specified Packets...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="783"/>
+        <source>Export specified packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="788"/>
+        <source>Export Packet &amp;Bytes...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="791"/>
+        <source>Ctrl+H</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="796"/>
+        <source>Export SSL Session Keys...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="801"/>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="804"/>
+        <source>Ctrl+P</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="809"/>
+        <source>List Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="814"/>
+        <source>Next File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="819"/>
+        <source>Previous File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="824"/>
+        <source>&amp;Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="827"/>
+        <source>Reload the current file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="830"/>
+        <location filename="main_window.ui" line="874"/>
+        <source>Ctrl+R</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="835"/>
+        <source>&amp;Options...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="838"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="841"/>
+        <source>Capture options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="844"/>
+        <source>Ctrl+K</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="852"/>
+        <source>Capture &amp;Filters...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="855"/>
+        <source>Capture filters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="860"/>
+        <source>Refresh Interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="863"/>
+        <source>Refresh interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="868"/>
+        <source>&amp;Restart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="871"/>
+        <source>Restart current capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="879"/>
+        <source>As Plain &amp;Text...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="884"/>
+        <source>As CSV...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="889"/>
+        <source>As &quot;C&quot; Arrays...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="894"/>
+        <source>As PSML XML...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="899"/>
+        <source>As PDML XML...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="904"/>
+        <source>&amp;HTTP...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="909"/>
+        <source>&amp;DICOM...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="914"/>
+        <source>&amp;SMB...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="919"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="922"/>
+        <location filename="main_window.ui" line="1161"/>
+        <source>Ctrl+Shift+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="927"/>
+        <source>Field Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="930"/>
+        <source>Ctrl+Shift+F</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="935"/>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="938"/>
+        <source>Ctrl+Shift+V</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="943"/>
+        <source>As Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="946"/>
+        <source>Ctrl+Shift+C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="951"/>
+        <location filename="main_window.ui" line="996"/>
+        <source>&amp;Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="956"/>
+        <location filename="main_window.ui" line="1001"/>
+        <source>&amp;Not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="959"/>
+        <location filename="main_window.ui" line="1004"/>
+        <source>Not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="964"/>
+        <location filename="main_window.ui" line="1009"/>
+        <source>... &amp;and Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="967"/>
+        <location filename="main_window.ui" line="1012"/>
+        <source>... and Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="972"/>
+        <location filename="main_window.ui" line="1017"/>
+        <source>... &amp;or Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="975"/>
+        <location filename="main_window.ui" line="1020"/>
+        <source>... or Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="980"/>
+        <location filename="main_window.ui" line="1025"/>
+        <source>... a&amp;nd not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="983"/>
+        <location filename="main_window.ui" line="1028"/>
+        <source>... and not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="988"/>
+        <location filename="main_window.ui" line="1033"/>
+        <source>... o&amp;r not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="991"/>
+        <location filename="main_window.ui" line="1036"/>
+        <source>... or not Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1041"/>
+        <source>Display Filters...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1046"/>
+        <source>Display Filter &amp;Macros...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1051"/>
+        <source>Apply as Column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1056"/>
+        <source>&amp;Find Packet...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1059"/>
+        <source>Find a packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1062"/>
+        <source>Ctrl+F</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1067"/>
+        <source>Find Ne&amp;xt...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1070"/>
+        <source>Find the next packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1073"/>
+        <source>Ctrl+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1078"/>
+        <source>Find Pre&amp;vious...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1081"/>
+        <source>Find the previous packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1084"/>
+        <source>Ctrl+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1089"/>
+        <source>&amp;Mark/Unmark Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1092"/>
+        <source>Mark or unmark this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1095"/>
+        <source>Ctrl+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1100"/>
+        <source>Mark All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1103"/>
+        <source>Mark all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1106"/>
+        <source>Ctrl+Shift+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1111"/>
+        <source>Unmark All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1114"/>
+        <source>Unmark all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1117"/>
+        <source>Meta+Alt+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1122"/>
+        <source>Next Mark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1125"/>
+        <source>Go to the next marked packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1128"/>
+        <source>Meta+Shift+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1133"/>
+        <source>Previous Mark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1136"/>
+        <source>Go to the previous marked packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1139"/>
+        <source>Meta+Shift+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1144"/>
+        <source>&amp;Ignore/Unignore Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1147"/>
+        <source>Ignore or unignore this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1150"/>
+        <source>Ctrl+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1155"/>
+        <source>Ignore All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1158"/>
+        <source>Ignore all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1166"/>
+        <source>Unignore All Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1169"/>
+        <source>Unignore all displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1172"/>
+        <source>Ctrl+Alt+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1177"/>
+        <source>Set/Unset Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1180"/>
+        <source>Set or unset a time reference for this packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1183"/>
+        <source>Ctrl+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1188"/>
+        <source>Unset All Time References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1191"/>
+        <source>Remove all time references</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1194"/>
+        <source>Ctrl+Alt+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1199"/>
+        <source>Next Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1202"/>
+        <source>Go to the next time reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1205"/>
+        <source>Ctrl+Alt+N</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1210"/>
+        <source>Previous Time Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1213"/>
+        <source>Go to the previous time reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1216"/>
+        <source>Ctrl+Alt+B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1221"/>
+        <source>Time Shift...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1224"/>
+        <source>Shift or change packet timestamps</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1227"/>
+        <source>Ctrl+Shift+T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1232"/>
+        <source>Packet Comment...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1235"/>
+        <source>Add or change a packet comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1243"/>
+        <source>Configuration Profiles...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1246"/>
+        <source>Configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1249"/>
+        <source>Manage your configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1252"/>
+        <source>Ctrl+Shift+A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1260"/>
+        <source>&amp;Preferences...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1263"/>
+        <source>Manage Wireshark&apos;s preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1266"/>
+        <source>Ctrl+Shift+P</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1277"/>
+        <source>Summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1285"/>
+        <source>Protocol Hierarchy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1290"/>
+        <source>Capinfos</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1295"/>
+        <source>Reordercap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1300"/>
+        <source>Time Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1303"/>
+        <source>TCP time sequence graph (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1308"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1311"/>
+        <source>TCP througput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1316"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1319"/>
+        <source>TCP round trip time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1324"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1327"/>
+        <source>TCP window scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1335"/>
+        <source>Follow TCP Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1343"/>
+        <source>Follow UDP Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1351"/>
+        <source>Follow SSL Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1356"/>
+        <source>Time Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1359"/>
+        <source>TCP time sequence graph (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1364"/>
+        <source>Analyse this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1369"/>
+        <source>Show All Associations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1374"/>
+        <source>Flow Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1377"/>
+        <source>Flow sequence diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1382"/>
+        <source>ANCP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1385"/>
+        <source>ANCP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1390"/>
+        <source>Packets sorted by Instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1393"/>
+        <source>BACapp statistics sorted by instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1398"/>
+        <source>Packets sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1401"/>
+        <source>BACapp statistics sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1406"/>
+        <source>Packets sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1409"/>
+        <source>BACapp statistics sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1414"/>
+        <source>Packets sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1417"/>
+        <source>BACapp statistics sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1422"/>
+        <source>Collectd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1425"/>
+        <source>Collectd statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1430"/>
+        <source>HART-IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1433"/>
+        <source>HART-IP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1438"/>
+        <location filename="main_window.ui" line="1486"/>
+        <source>Packet Counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1441"/>
+        <source>HTTP packet counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1446"/>
+        <source>Requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1449"/>
+        <source>HTTP requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1454"/>
+        <source>Load Distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1457"/>
+        <source>HTTP load distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1462"/>
+        <source>Packet Lengths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1465"/>
+        <source>Packet length statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1470"/>
+        <source>Sametime</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1473"/>
+        <source>Sametime statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1478"/>
+        <source>&amp;ISUP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1481"/>
+        <source>ISUP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1489"/>
+        <source>RTSP packet counts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1494"/>
+        <source>SM&amp;PP Operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1497"/>
+        <source>SMPP operation statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1502"/>
+        <source>&amp;UCP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1505"/>
+        <source>UCP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1510"/>
+        <source>Decode &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1513"/>
+        <source>Change the way packets are dissected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1518"/>
+        <location filename="main_window.ui" line="1521"/>
+        <source>Filter this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="183"/>
+        <source>Check for Updates...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="187"/>
+        <source>splitterMaster</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="188"/>
+        <source>splitterExtra</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="191"/>
+        <source>emptyPane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="539"/>
+        <source>Save packets before merging?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="540"/>
+        <source>A temporary capture file can&apos;t be merged.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="546"/>
+        <source>Save changes in &quot;%1&quot; before merging?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="548"/>
+        <source>Changes must be saved before the files can be merged.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="605"/>
+        <location filename="main_window_slots.cpp" line="140"/>
+        <source>Invalid Display Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="606"/>
+        <source>The filter expression %1 isn&apos;t a valid display filter. (%2).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="693"/>
+        <source> before importing a new capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1006"/>
+        <source>Unable to export to &quot;%1&quot;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1007"/>
+        <source>You cannot export packets to the current capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1093"/>
+        <location filename="main_window.cpp" line="1118"/>
+        <source>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1156"/>
+        <source>You have unsaved packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1157"/>
+        <source>They will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1160"/>
+        <location filename="main_window.cpp" line="1173"/>
+        <source>Do you want to stop the capture and save the captured packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1162"/>
+        <source>Do you want to save the captured packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1164"/>
+        <location filename="main_window.cpp" line="1174"/>
+        <source>?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1175"/>
+        <source>Your captured packets will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1178"/>
+        <source>Do you want to save the changes you&apos;ve made to the capture file &quot;%1&quot;%2?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1183"/>
+        <source>Your changes will be lost if you don&apos;t save them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1195"/>
+        <source>Stop and Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1203"/>
+        <source>Stop and Quit without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1206"/>
+        <source>Quit without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1211"/>
+        <source>Stop and Continue without Saving</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1338"/>
+        <source>(File name can&apos;t be mapped to UTF-8)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1350"/>
+        <location filename="main_window.cpp" line="1356"/>
+        <location filename="main_window.cpp" line="1371"/>
+        <source>The Wireshark Network Analyzer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="406"/>
+        <source>Loading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="706"/>
+        <source>Clear Menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1132"/>
+        <source>Please wait while Wireshark is initializing . . .</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1271"/>
+        <source>Wireshark: Export Selected Packet Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1273"/>
+        <source>Raw data (*.bin *.dat *.raw);;Any File (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1314"/>
+        <source>No Keys</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1315"/>
+        <source>There are no SSL Session Keys to save.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1326"/>
+        <source>SSL Session Keys (*.keys *.txt);;Any File (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1421"/>
+        <source>Couldn&apos;t copy text. Try another item.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1591"/>
+        <source>No filter available. Try another </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="2128"/>
+        <source>No Interface Selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindowPreferencesFrame</name>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="26"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="41"/>
+        <source>Checking this will save the size, position, and maximized state of the main window.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="44"/>
+        <source>Remember main window size and placement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="51"/>
+        <source>Open files in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="60"/>
+        <source>This folder:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="73"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="80"/>
+        <source>The most recently used folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="92"/>
+        <source>Show up to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="104"/>
+        <source>filter entries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="131"/>
+        <source>recent files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="153"/>
+        <source>Confirm unsaved capture files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="160"/>
+        <source>If checked the packet detail items will be automatically scrolled when they are expanded.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="163"/>
+        <source>Automatically scroll packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="172"/>
+        <location filename="main_window_preferences_frame.ui" line="182"/>
+        <source>Percentage distance from the top to scroll packet details.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="175"/>
+        <source>Packet detail scroll percentage:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="206"/>
+        <source>Main toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="214"/>
+        <location filename="main_window_preferences_frame.ui" line="263"/>
+        <source>Icons only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="219"/>
+        <location filename="main_window_preferences_frame.ui" line="268"/>
+        <source>Text only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="224"/>
+        <location filename="main_window_preferences_frame.ui" line="273"/>
+        <source>Icons &amp; Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="249"/>
+        <source>Filter toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="298"/>
+        <source>Language: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="315"/>
+        <source>Auto-Detect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="320"/>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="main_window_preferences_frame.ui" line="325"/>
+        <source>Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="330"/>
+        <source>Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="335"/>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.cpp" line="141"/>
+        <source>Open Files In</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ModulePreferencesScrollArea</name>
+    <message>
+        <location filename="module_preferences_scroll_area.ui" line="14"/>
+        <source>ScrollArea</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="473"/>
+        <location filename="module_preferences_scroll_area.cpp" line="492"/>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketCommentDialog</name>
+    <message>
+        <location filename="packet_comment_dialog.ui" line="14"/>
+        <source>Wireshark: Packet Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketFormatGroupBox</name>
+    <message>
+        <location filename="packet_format_group_box.ui" line="14"/>
+        <source>GroupBox</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="17"/>
+        <source>Packet Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="23"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet summary lines similar to the packet list&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="26"/>
+        <source>Summary line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="36"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Packet details similar to the protocol tree&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="39"/>
+        <source>Details:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="55"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export only top-level packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="58"/>
+        <source>All co&amp;llapsed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="71"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Expand and collapse packet details as they are currently displayed.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="74"/>
+        <source>As displa&amp;yed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="90"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export all packet detail items&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="93"/>
+        <source>All e&amp;xpanded</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="100"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Export a hexdump of the packet data similar to the packet bytes view&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_format_group_box.ui" line="103"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketList</name>
+    <message>
+        <location filename="packet_list.cpp" line="253"/>
+        <source>Follow...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="262"/>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="271"/>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="280"/>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="289"/>
+        <source>Colorize with Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="365"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="372"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="763"/>
+        <source>Frame %1: %2 
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="767"/>
+        <source>[ Comment text exceeds %1. Stopping. ]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="871"/>
+        <source>Change Time Display Format?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="872"/>
+        <source>Time References don&apos;t work well with the currently selected Time Display Format.
+Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PacketRangeGroupBox</name>
+    <message>
+        <location filename="packet_range_group_box.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="17"/>
+        <source>Packet Range</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="23"/>
+        <location filename="packet_range_group_box.ui" line="46"/>
+        <location filename="packet_range_group_box.ui" line="76"/>
+        <location filename="packet_range_group_box.ui" line="93"/>
+        <location filename="packet_range_group_box.ui" line="113"/>
+        <location filename="packet_range_group_box.ui" line="133"/>
+        <location filename="packet_range_group_box.ui" line="143"/>
+        <location filename="packet_range_group_box.ui" line="153"/>
+        <location filename="packet_range_group_box.ui" line="186"/>
+        <location filename="packet_range_group_box.ui" line="219"/>
+        <location filename="packet_range_group_box.ui" line="229"/>
+        <location filename="packet_range_group_box.ui" line="239"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="33"/>
+        <source>Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="56"/>
+        <source>&amp;Marked packets only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="66"/>
+        <source>&amp;Range:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="86"/>
+        <source>Remove &amp;ignored packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="103"/>
+        <source>First &amp;to last marked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="123"/>
+        <source>&amp;All packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="163"/>
+        <source>&amp;Selected packets only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_range_group_box.ui" line="173"/>
+        <source>Captured</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PreferencesDialog</name>
+    <message>
+        <location filename="preferences_dialog.ui" line="14"/>
+        <source>Wireshark: Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="42"/>
+        <source>Appearance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="46"/>
+        <source>Layout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="51"/>
+        <source>Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="56"/>
+        <source>Font and Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="62"/>
+        <source>Capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="67"/>
+        <source>Filter Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="72"/>
+        <source>Advanced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="99"/>
+        <source>Search:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="131"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="136"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="141"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="146"/>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="472"/>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="474"/>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="476"/>
+        <source>Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="607"/>
+        <location filename="preferences_dialog.cpp" line="611"/>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PrintDialog</name>
+    <message>
+        <location filename="print_dialog.ui" line="14"/>
+        <source>Wireshark: Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.ui" line="24"/>
+        <source>Packet Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.ui" line="34"/>
+        <source>Print each packet on a new page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.ui" line="57"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use the &amp;quot;+&amp;quot; and &amp;quot;-&amp;quot; keys to zoom the preview in and out. Use the &amp;quot;0&amp;quot; key to reset the zoom level.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.ui" line="60"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;+ and - zoom, 0 resets&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.ui" line="71"/>
+        <source>Packet Range</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.cpp" line="81"/>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.cpp" line="122"/>
+        <source>Page &amp;Setup...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.cpp" line="157"/>
+        <source>%1 %2 total packets, %3 shown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.cpp" line="257"/>
+        <source>Print Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="print_dialog.cpp" line="258"/>
+        <source>Unable to print to %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ProfileDialog</name>
+    <message>
+        <location filename="profile_dialog.ui" line="14"/>
+        <source>Wireshark: Configuration Profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.ui" line="49"/>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.ui" line="63"/>
+        <source>Remove this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.ui" line="74"/>
+        <source>Copy this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.cpp" line="160"/>
+        <source>Go to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.cpp" line="173"/>
+        <source>A profile already exists with that name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="profile_dialog.cpp" line="272"/>
+        <source>Profile Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ProtoTree</name>
+    <message>
+        <location filename="proto_tree.cpp" line="165"/>
+        <source>Packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="176"/>
+        <source>Apply as Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="184"/>
+        <source>Prepare a Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="192"/>
+        <source>Colorize with Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="210"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="217"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="295"/>
+        <source>, 1 byte</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="proto_tree.cpp" line="297"/>
+        <source>, %1 bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="169"/>
+        <source>Edit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="196"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="102"/>
+        <source>Has this preference been changed?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="106"/>
+        <source>Default value is empty</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="77"/>
+        <source>Avgerage Througput (bits/s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="78"/>
+        <source>Round Trip Time (ms)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="79"/>
+        <source>Segment Length (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="80"/>
+        <source>Sequence Number (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="81"/>
+        <source>Time (s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="82"/>
+        <source>Window Size (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPAllAssocsDialog</name>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="14"/>
+        <source>Wireshark - SCTP Associations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="62"/>
+        <source>ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="67"/>
+        <source>Port 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="72"/>
+        <source>Port 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="77"/>
+        <source>Number of Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="82"/>
+        <source>Number of DATA Chunks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="87"/>
+        <source>Number of Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="106"/>
+        <source>Filter Selected Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="119"/>
+        <source>Analyze</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="151"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="154"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="157"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="162"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="165"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="168"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="173"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="176"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="179"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="184"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="187"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="190"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="195"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="198"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="201"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="206"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="209"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="212"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="217"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="220"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="223"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="228"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="231"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="234"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="239"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="242"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="245"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="250"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="253"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="256"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="261"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="264"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="267"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="272"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="275"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="278"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="283"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="286"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="289"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="294"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="297"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="300"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="305"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="308"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="311"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="316"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="319"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="322"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="327"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="330"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="333"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="338"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="341"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="344"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="349"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="352"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="355"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="360"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="363"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="366"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="371"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="374"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="377"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="382"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="385"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="388"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="393"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="396"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="399"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="404"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="407"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="410"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPAssocAnalyseDialog</name>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="20"/>
+        <source>Wireshark - Analyse Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="39"/>
+        <source>TabWidget</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="49"/>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="64"/>
+        <source>Chunk Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="80"/>
+        <source>Filter Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="96"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="340"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="525"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="112"/>
+        <source>Number of Data Chunks from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="119"/>
+        <source>Checksum Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="126"/>
+        <source>Number of Data Chunks from EP1 to EP2: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="133"/>
+        <source>Number of Data Bytes from EP1 to EP2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="140"/>
+        <source>Number of Data Bytes from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="147"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="154"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="168"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="175"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="258"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="272"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="286"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="300"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="307"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="314"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="321"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="423"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="430"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="465"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="472"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="479"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="493"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="184"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="199"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="384"/>
+        <source>Graph TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="215"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="400"/>
+        <source>Graph Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="228"/>
+        <source>Complete list of IP Addresses as provided in the INIT Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="244"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="416"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="148"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="201"/>
+        <source>Requested Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="251"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="451"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="265"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="437"/>
+        <source>Sent Verification Tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="279"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="458"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="150"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="203"/>
+        <source>Minimum Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="293"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="444"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="155"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="208"/>
+        <source>Minimum Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="363"/>
+        <source>Graph Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="369"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="486"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="153"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="206"/>
+        <source>Provided Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="509"/>
+        <source>Complete list of IP Addresses as provided in the INIT-ACK Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="548"/>
+        <source>Graph a_rwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="51"/>
+        <source>SCTP Analyse Association: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="97"/>
+        <source>No Association found for this packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="116"/>
+        <source>Complete list of IP-Addresses as provided in the INIT-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="118"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="172"/>
+        <source>Complete list of IP-Addresses as provided in the INITACK-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="120"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="174"/>
+        <source>List of used IP-Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="159"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="212"/>
+        <source>Used Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="214"/>
+        <source>Used Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPChunkStatisticsDialog</name>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="20"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="73"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="289"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="299"/>
+        <source>Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="78"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="290"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="300"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="83"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="291"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="301"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="97"/>
+        <source>Save Chunk Type Order</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="102"/>
+        <source>Hide Chunk Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="105"/>
+        <source>Remove the chunk type from the table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="110"/>
+        <source>Chunk Type Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="113"/>
+        <source>Go to the chunk type preferences dialog to show or hide other chunk types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="118"/>
+        <source>Show All Registered Chunk Types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="121"/>
+        <source>Show all chunk types with defined names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="56"/>
+        <source>SCTP Chunk Statistics: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphArwndDialog</name>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="102"/>
+        <source>Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="110"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="111"/>
+        <source>Advertised Receiver Window [Bytes]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="156"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: a_rwnd=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphByteDialog</name>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="104"/>
+        <location filename="sctp_graph_byte_dialog.cpp" line="145"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="111"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="112"/>
+        <source>Received Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="158"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: Received bytes=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphDialog</name>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="45"/>
+        <source>Only SACKs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="61"/>
+        <source>Only TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="77"/>
+        <source>Show both</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="93"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="125"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="138"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="143"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="146"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="41"/>
+        <source>SCTP TSNs and SACKs over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="205"/>
+        <source>CumTSNAck</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="218"/>
+        <source>Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="231"/>
+        <source>NR Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="244"/>
+        <source>Duplicate Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="294"/>
+        <source>TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="327"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="328"/>
+        <source>TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="409"/>
+        <source>&lt;small&gt;&lt;i&gt;%1: %2 Time: %3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="419"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="420"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="421"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="423"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="430"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SearchFrame</name>
+    <message>
+        <location filename="search_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="32"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="36"/>
+        <source>Packet list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="41"/>
+        <source>Packet details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="46"/>
+        <source>Packet bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="67"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="71"/>
+        <source>Narrow &amp; Wide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="76"/>
+        <source>Narrow (UTF-8 / ASCII)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="81"/>
+        <source>Wide (UTF-16)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="89"/>
+        <source>Case sensitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="109"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="113"/>
+        <source>Display filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="118"/>
+        <source>Hex value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="123"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="141"/>
+        <source>Find</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="148"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="188"/>
+        <location filename="search_frame.cpp" line="282"/>
+        <source>No valid search type selected. Please report this to the development team.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="236"/>
+        <source>Invalid filter.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="242"/>
+        <source>That filter doesn&apos;t test anything.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="250"/>
+        <source>That&apos;s not a valid hex string.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="258"/>
+        <source>You didn&apos;t specify any text for which to search.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="275"/>
+        <source>No valid character set selected. Please report this to the development team.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="298"/>
+        <source>No valid search area selected. Please report this to the development team.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="312"/>
+        <source>No packet contained those bytes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="322"/>
+        <source>No packet contained that string in its Info column.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="331"/>
+        <source>No packet contained that string in its dissected display.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="340"/>
+        <source>No packet contained that string in its converted data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="350"/>
+        <source>No packet matched that filter.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SequenceDialog</name>
+    <message>
+        <location filename="sequence_dialog.cpp" line="128"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="284"/>
+        <source>%Ln node(s)</source>
+        <translation type="unfinished">
+            <numerusform>%Ln node</numerusform>
+            <numerusform>%Ln nodes</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="285"/>
+        <source>%Ln item(s)</source>
+        <translation type="unfinished">
+            <numerusform>%Ln item</numerusform>
+            <numerusform>%Ln items</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="305"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="306"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="307"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="309"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="310"/>
+        <source>ASCII (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="321"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="14"/>
+        <source>Flow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="sequence_dialog.ui" line="51"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="73"/>
+        <source>&lt;small&gt;&lt;i&gt;A hint&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="82"/>
+        <source>Show:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="90"/>
+        <source>All packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="95"/>
+        <source>Displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="116"/>
+        <source>Flow type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="139"/>
+        <source>Addresses:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="147"/>
+        <source>Any</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="152"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="190"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="209"/>
+        <source>Reset Diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="212"/>
+        <source>Reset the diagram to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="215"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="220"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="223"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="226"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="231"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="234"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="237"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="242"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="245"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="248"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="253"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="256"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="259"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="264"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="267"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="270"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="275"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="278"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="281"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="286"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="289"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="292"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="297"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="300"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="303"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="308"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="311"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="314"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="319"/>
+        <source>All Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="322"/>
+        <source>Show flows for all packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="325"/>
+        <location filename="sequence_dialog.ui" line="336"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="330"/>
+        <source>TCP Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="333"/>
+        <source>Show only TCP flow information</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SplashOverlay</name>
+    <message>
+        <location filename="splash_overlay.ui" line="17"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="136"/>
+        <source>Initializing dissectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="139"/>
+        <source>Initializing tap listeners</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="142"/>
+        <source>Registering dissector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="145"/>
+        <source>Registering plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="148"/>
+        <source>Registering Python dissectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="151"/>
+        <source>Handing off dissector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="154"/>
+        <source>Handing off plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="157"/>
+        <source>Handing off Python dissectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="160"/>
+        <source>Loading Lua plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="163"/>
+        <source>Loading module preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="166"/>
+        <source>Loading configuration files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="169"/>
+        <source>(Unknown action)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>StatsTreeDialog</name>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="31"/>
+        <source>Display filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="41"/>
+        <source>Regenerate statistics using this display filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="44"/>
+        <source>Apply</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="63"/>
+        <location filename="stats_tree_dialog.cpp" line="98"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="66"/>
+        <source>Copy a text representation of the tree to the clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="69"/>
+        <source>Ctrl+C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="74"/>
+        <location filename="stats_tree_dialog.cpp" line="101"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="77"/>
+        <source>Save the stats_tree data in various formats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="80"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="88"/>
+        <source>Configuration not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="89"/>
+        <source>Unable to find configuration for %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="133"/>
+        <source> Stats Tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="138"/>
+        <source>%1 already open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="139"/>
+        <source>Each type of tree can only be generated one at at time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="173"/>
+        <source>%1 failed to attach to tap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="278"/>
+        <source>Wireshark: Save stats tree as ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="279"/>
+        <source>Plain text file (*.txt);;Comma separated values (*.csv);;XML document (*.xml);;YAML document (*.yaml)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="283"/>
+        <source>Plain text file (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="327"/>
+        <source>Error saving file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SummaryDialog</name>
+    <message>
+        <location filename="summary_dialog.ui" line="20"/>
+        <source>Wireshark - Summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="43"/>
+        <source>File capture details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="55"/>
+        <source>File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="70"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="77"/>
+        <location filename="summary_dialog.ui" line="91"/>
+        <location filename="summary_dialog.ui" line="105"/>
+        <location filename="summary_dialog.ui" line="119"/>
+        <location filename="summary_dialog.ui" line="161"/>
+        <location filename="summary_dialog.ui" line="175"/>
+        <location filename="summary_dialog.ui" line="189"/>
+        <location filename="summary_dialog.ui" line="407"/>
+        <location filename="summary_dialog.ui" line="421"/>
+        <source>/</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="84"/>
+        <source>Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="98"/>
+        <source>Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="112"/>
+        <source>Encapsulation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="136"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="154"/>
+        <source>First packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="168"/>
+        <source>Last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="182"/>
+        <source>Elapsed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="206"/>
+        <source>Capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="234"/>
+        <source>Capture file comments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="250"/>
+        <source>OS</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="257"/>
+        <location filename="summary_dialog.ui" line="271"/>
+        <location filename="summary_dialog.cpp" line="393"/>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="264"/>
+        <source>Capture app</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="284"/>
+        <source>Capture statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="318"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="323"/>
+        <source>Captured</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="328"/>
+        <source>Displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="333"/>
+        <source>Marked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="363"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="368"/>
+        <source>Dropped packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="373"/>
+        <source>Capture filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="378"/>
+        <source>Link size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="383"/>
+        <source>Packet size limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="400"/>
+        <source>Display filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="414"/>
+        <source>Ignored packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="430"/>
+        <source>Comment summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="68"/>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="71"/>
+        <source>Copy To Clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="130"/>
+        <source>Summary created by Wireshark %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="133"/>
+        <source>File: 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="134"/>
+        <source>Name:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="135"/>
+        <source>Length:                %1 bytes
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="136"/>
+        <source>Format:                %1%2
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="138"/>
+        <location filename="summary_dialog.cpp" line="284"/>
+        <source> (gzip compressed)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="139"/>
+        <source>Encapsulation:         %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="144"/>
+        <source>Time:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="150"/>
+        <source>First packet:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="153"/>
+        <source>Last packet:           %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="157"/>
+        <source>Elapsed:               %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="164"/>
+        <source>Capture:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="173"/>
+        <source>OS:    %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="178"/>
+        <source>Capture application:   %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="187"/>
+        <source>Dropped packets:       %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="189"/>
+        <source>Capture filter:                %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="191"/>
+        <source>Link type:             %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="193"/>
+        <source>Packet size limit:     %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="200"/>
+        <source>Statistics:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="203"/>
+        <source>%1:    %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="215"/>
+        <source>Capture File Comments:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="230"/>
+        <source>Not representable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="281"/>
+        <source>%1 bytes (%2 Mbytes)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="377"/>
+        <location filename="summary_dialog.cpp" line="412"/>
+        <source>unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="408"/>
+        <location filename="summary_dialog.cpp" line="436"/>
+        <source>none</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="419"/>
+        <source>%u bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="460"/>
+        <source>Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="489"/>
+        <source>Between first and last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="492"/>
+        <location filename="summary_dialog.cpp" line="504"/>
+        <location filename="summary_dialog.cpp" line="515"/>
+        <source>%.3f sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="531"/>
+        <source>Avg. packets/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="572"/>
+        <source>Avg. packet size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="575"/>
+        <location filename="summary_dialog.cpp" line="589"/>
+        <location filename="summary_dialog.cpp" line="602"/>
+        <source>%.3f bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="619"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="661"/>
+        <source>Avg. bytes/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="705"/>
+        <source>Avg. MBit/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TCPStreamDialog</name>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="tcp_stream_dialog.ui" line="33"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;+&lt;/th&gt;&lt;td&gt;Zoom in&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;-&lt;/th&gt;&lt;td&gt;Zoom out&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Up&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Next stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Dn&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Previous stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;d&lt;/th&gt;&lt;td&gt;Switch direction (swap TCP endpoints)&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;z&lt;/th&gt;&lt;td&gt;Toggle mouse drag / zoom&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;s&lt;/th&gt;&lt;td&gt;Toggle relative / absolute sequence numbers&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;t&lt;/th&gt;&lt;td&gt;Toggle capture / session time origin&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;Space&lt;/th&gt;&lt;td&gt;Toggle crosshairs&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Round Trip Time graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Throughput graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;Stevens-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt;tcptrace-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;5&lt;/th&gt;&lt;td&gt;Window Scaling graph&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="71"/>
+        <source>&lt;small&gt;&lt;i&gt;Mouse over for shortcuts&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="80"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="103"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="113"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch the direction of the connection (view the opposite flow).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="116"/>
+        <location filename="tcp_stream_dialog.ui" line="344"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="127"/>
+        <source>Mouse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="134"/>
+        <source>Drag using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="137"/>
+        <source>drags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="150"/>
+        <source>Select using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="153"/>
+        <source>zooms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="179"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reset the graph to its initial state.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="182"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="201"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="204"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="207"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="212"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="215"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="218"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="223"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="226"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="229"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="234"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="237"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="240"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="245"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="248"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="251"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="256"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="259"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="262"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="267"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="270"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="273"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="278"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="281"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="284"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="289"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="292"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="295"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="300"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="303"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="306"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="311"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="314"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="317"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="322"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="325"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="328"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="333"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="336"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="339"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="347"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="350"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="355"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="358"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="361"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="366"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="369"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="372"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="377"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="380"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="383"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="388"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="391"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="394"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="399"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="402"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="405"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="410"/>
+        <location filename="tcp_stream_dialog.cpp" line="647"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="413"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="416"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="421"/>
+        <location filename="tcp_stream_dialog.cpp" line="570"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="424"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="427"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="432"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="435"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="438"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="443"/>
+        <location filename="tcp_stream_dialog.cpp" line="701"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="446"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="449"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="454"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="457"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="460"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="211"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="359"/>
+        <source>No Capture Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="415"/>
+        <source>%1 %2 pkts, %3 %4 %5 pkts, %6 </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="496"/>
+        <source>Sequence Numbers (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="521"/>
+        <source>Sequence Numbers (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="572"/>
+        <source> (1s MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="574"/>
+        <source> (%1 Segment MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="589"/>
+        <source> [not enough data]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="728"/>
+        <source> for %1:%2 %3 %4:%5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="912"/>
+        <source>%1 %2 (%3s len %4 seq %5 ack %6 win %7)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Click to select packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="927"/>
+        <source>Release to zoom, x = %1 to %2, y = %3 to %4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="933"/>
+        <source>Unable to select range.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="936"/>
+        <source>Click to select a portion of the graph.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="979"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="980"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="981"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="983"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="990"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TimeShiftDialog</name>
+    <message>
+        <location filename="time_shift_dialog.ui" line="20"/>
+        <source>Wireshark: Time Shift</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="28"/>
+        <source>Shift all packets by</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="41"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="65"/>
+        <source>Set the time for packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="75"/>
+        <location filename="time_shift_dialog.ui" line="109"/>
+        <source>to</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="99"/>
+        <source>...then set packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="143"/>
+        <source>and extrapolate the time for all other packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="163"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="172"/>
+        <source>Undo all shifts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="140"/>
+        <source>Frame numbers must be between 1 and %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="142"/>
+        <source>Invalid frame number.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="254"/>
+        <source>Time shifting is not available capturing packets.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UatDialog</name>
+    <message>
+        <location filename="uat_dialog.ui" line="28"/>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="42"/>
+        <source>Remove this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="53"/>
+        <source>Copy this profile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="87"/>
+        <source>Unknown User Accessible Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="105"/>
+        <source>Open </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
index 29cabb9ae284004f80737ddc26b97e6061c5ab84..978249ec698a9c56946a25a1d9045075046a2dd6 100644 (file)
Binary files a/ui/qt/qtshark_fr.qm and b/ui/qt/qtshark_fr.qm differ
index 34cc818c1afaab6a88737c6235d5ade23cc16423..e5168b2606bdc5d0a61104d9839622516fc9d7df 100644 (file)
@@ -1,6 +1,80 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="fr_FR">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="about_dialog.ui" line="14"/>
+        <source>About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="36"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="46"/>
+        <source>Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="74"/>
+        <source>&lt;span size=\&quot;x-large\&quot; weight=\&quot;bold\&quot;&gt;Network Protocol Analyzer&lt;/span&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="99"/>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="117"/>
+        <source>Folders</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="148"/>
+        <location filename="about_dialog.ui" line="196"/>
+        <source>Name</source>
+        <translation type="unfinished">Nom</translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="153"/>
+        <source>Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="158"/>
+        <source>Typical Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="165"/>
+        <source>Plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="201"/>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="206"/>
+        <source>Type</source>
+        <translation type="unfinished">Type</translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="211"/>
+        <source>Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="218"/>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ByteViewTab</name>
     <message>
 <context>
     <name>CaptureFileDialog</name>
     <message>
-        <location filename="capture_file_dialog.cpp" line="484"/>
+        <location filename="capture_file_dialog.cpp" line="552"/>
         <source>Wireshark: Open Capture File</source>
         <translation>Wireshark: Ouvrir un fichier de capture</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="426"/>
+        <location filename="capture_file_dialog.cpp" line="494"/>
         <source>Display Filter:</source>
         <translation>Filtre d&apos;affichage:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="435"/>
+        <location filename="capture_file_dialog.cpp" line="503"/>
         <source>&amp;MAC name resolution</source>
         <oldsource>Enable &amp;network name resolution</oldsource>
         <translation>Résolution d&apos;adresse &amp;MAC</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="439"/>
+        <location filename="capture_file_dialog.cpp" line="507"/>
         <source>&amp;Transport name resolution</source>
         <oldsource>Use &amp;external name resolver</oldsource>
         <translation>Résolution du nom de &amp;Transport</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="443"/>
+        <location filename="capture_file_dialog.cpp" line="511"/>
         <source>&amp;Network name resolution</source>
         <translation>Résolution de nom &amp;Réseau</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="447"/>
+        <location filename="capture_file_dialog.cpp" line="515"/>
         <source>&amp;External name resolver</source>
         <translation>Résolution de nom &amp;externe</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="546"/>
+        <location filename="capture_file_dialog.cpp" line="614"/>
         <source>Wireshark: Export Specified Packets</source>
         <translation>Wireshark: Export des paquets specifiés</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="550"/>
+        <location filename="capture_file_dialog.cpp" line="618"/>
         <source>Export as:</source>
         <translation>Exporter sous:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="346"/>
+        <location filename="capture_file_dialog.cpp" line="395"/>
         <source>All Files (*.*)</source>
         <translation>Tous les fichiers (*.*)</translation>
     </message>
         <translation>Le format de fichier dans lequel vous voulez sauvegarder ne prendre pas en charge les commentaires. Voulez-vous supprimer les commentaires et enregistrer dans le format que vous avez choisi?</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="369"/>
+        <location filename="capture_file_dialog.cpp" line="437"/>
         <source>Format:</source>
         <translation>Format:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="374"/>
+        <location filename="capture_file_dialog.cpp" line="442"/>
         <source>Size:</source>
         <translation>Taille:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="379"/>
+        <location filename="capture_file_dialog.cpp" line="447"/>
         <source>Packets:</source>
         <translation>Paquets:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="384"/>
+        <location filename="capture_file_dialog.cpp" line="452"/>
         <source>First Packet:</source>
         <translation>Premier Paquet:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="389"/>
+        <location filename="capture_file_dialog.cpp" line="457"/>
         <source>Elapsed Time:</source>
         <translation>Heure:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="401"/>
+        <location filename="capture_file_dialog.cpp" line="469"/>
         <source>Prepend packets</source>
         <translation>Ajout de paquets</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="402"/>
+        <location filename="capture_file_dialog.cpp" line="470"/>
         <source>Insert packets from the selected file before the current file. Packet timestamps will be ignored.</source>
         <translation>Insérer les paquets à partir du fichier sélectionné avant que le fichier actuel. Horodatage des paquets seront ignorés.</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="405"/>
+        <location filename="capture_file_dialog.cpp" line="473"/>
         <source>Merge chronologically</source>
         <translation>Fusionner chronologiquement</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="406"/>
+        <location filename="capture_file_dialog.cpp" line="474"/>
         <source>Insert packets in chronological order.</source>
         <translation>Insérer des paquets dans l&apos;ordre chronologique.</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="410"/>
+        <location filename="capture_file_dialog.cpp" line="478"/>
         <source>Append packets</source>
         <translation>Ajout de paquets</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="411"/>
+        <location filename="capture_file_dialog.cpp" line="479"/>
         <source>Insert packets from the selected file after the current file. Packet timestamps will be ignored.</source>
         <translation>Insérer des paquets à partir du fichier sélectionné après le fichier en cours. Horodatage des paquets seront ignorés.</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="453"/>
+        <location filename="capture_file_dialog.cpp" line="521"/>
         <source>Compress with g&amp;zip</source>
         <translation>Compresser avec g&amp;zip</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="518"/>
+        <location filename="capture_file_dialog.cpp" line="586"/>
         <source>Wireshark: Save Capture File As</source>
         <translation>Wireshark: Sauvegarder le fichier de capture sous </translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="524"/>
+        <location filename="capture_file_dialog.cpp" line="592"/>
         <source>Save as:</source>
         <translation>Sauvegarder sous:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="579"/>
+        <location filename="capture_file_dialog.cpp" line="647"/>
         <source>Wireshark: Merge Capture File</source>
         <translation>Wireshark: Fusion de fichier de capture</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="681"/>
-        <location filename="capture_file_dialog.cpp" line="682"/>
-        <location filename="capture_file_dialog.cpp" line="683"/>
-        <location filename="capture_file_dialog.cpp" line="684"/>
-        <location filename="capture_file_dialog.cpp" line="685"/>
+        <location filename="capture_file_dialog.cpp" line="749"/>
+        <location filename="capture_file_dialog.cpp" line="750"/>
+        <location filename="capture_file_dialog.cpp" line="751"/>
+        <location filename="capture_file_dialog.cpp" line="752"/>
+        <location filename="capture_file_dialog.cpp" line="753"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="692"/>
+        <location filename="capture_file_dialog.cpp" line="760"/>
         <source>directory</source>
         <translation>dossier</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="699"/>
+        <location filename="capture_file_dialog.cpp" line="767"/>
         <source>unknown file format</source>
         <translation>Format du fichier inconnu</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="701"/>
+        <location filename="capture_file_dialog.cpp" line="769"/>
         <source>error opening file</source>
         <translation>erreur pour ouvrir le fichier</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="715"/>
+        <location filename="capture_file_dialog.cpp" line="783"/>
         <source>%1 bytes</source>
         <translation>%1 octets</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="744"/>
+        <location filename="capture_file_dialog.cpp" line="812"/>
         <source>error after reading %1 packets</source>
         <translation>erreur après avoir lu %1 paquets</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="750"/>
+        <location filename="capture_file_dialog.cpp" line="818"/>
         <source>more than %1 (preview timeout)</source>
         <translation>plus de %1 (aperçu timeout)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="769"/>
+        <location filename="capture_file_dialog.cpp" line="837"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="775"/>
+        <location filename="capture_file_dialog.cpp" line="843"/>
         <source>unknown</source>
         <translation>inconnu</translation>
     </message>
 </context>
+<context>
+    <name>CaptureFilterCombo</name>
+    <message>
+        <location filename="capture_filter_combo.cpp" line="47"/>
+        <source>Capture filter selector</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureFilterEdit</name>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="86"/>
+        <source>Capture filter entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="88"/>
+        <source>Enter a capture filter %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureInterfacesDialog</name>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="14"/>
+        <source>Wireshark: Capture interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="24"/>
+        <source>Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="52"/>
+        <source>Capture</source>
+        <translation type="unfinished">Capture</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="57"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="62"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="67"/>
+        <source>Link-layer header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="72"/>
+        <source>Prom. mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="77"/>
+        <source>Snaplen [B]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="82"/>
+        <source>Buffer [MB]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="87"/>
+        <source>Mon. Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="92"/>
+        <source>Capture Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="104"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="107"/>
+        <source>Capture packets in promiscuous mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="114"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="117"/>
+        <source>Show the capture summary dialog while capturing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="144"/>
+        <source>Add pipe...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="169"/>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="177"/>
+        <source>Output format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="184"/>
+        <source>pcap-ng</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="191"/>
+        <source>pcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="213"/>
+        <source>Capture directly to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="225"/>
+        <source>Browse...</source>
+        <translation type="unfinished">Parcourir...</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="232"/>
+        <source>File:</source>
+        <translation type="unfinished">Fichier:</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="245"/>
+        <source>Create a new file automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="278"/>
+        <location filename="capture_interfaces_dialog.ui" line="565"/>
+        <source>Megabytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="283"/>
+        <location filename="capture_interfaces_dialog.ui" line="570"/>
+        <source>Kilobytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="288"/>
+        <location filename="capture_interfaces_dialog.ui" line="575"/>
+        <source>Bytes</source>
+        <translation type="unfinished">Octets</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="297"/>
+        <location filename="capture_interfaces_dialog.ui" line="539"/>
+        <source>seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="302"/>
+        <location filename="capture_interfaces_dialog.ui" line="544"/>
+        <source>minutes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="307"/>
+        <location filename="capture_interfaces_dialog.ui" line="549"/>
+        <source>hours</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="315"/>
+        <location filename="capture_interfaces_dialog.ui" line="524"/>
+        <source>packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="369"/>
+        <source>Reuse old files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="393"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="401"/>
+        <source>Display Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="413"/>
+        <source>Update list of packets in real-time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="420"/>
+        <source>Automatically scroll during live capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="427"/>
+        <source>Show extra capture information dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="437"/>
+        <source>Name Resolution</source>
+        <translation type="unfinished">Résolution de nom</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="446"/>
+        <source>Resolve MAC Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="453"/>
+        <source>Resolve network names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="460"/>
+        <source>Resolve transport names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="485"/>
+        <source>Stop capture automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="63"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="66"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>CapturePreferencesFrame</name>
     <message>
         <translation type="unfinished"></translation>
     </message>
 </context>
+<context>
+    <name>DecodeAsDialog</name>
+    <message>
+        <location filename="decode_as_dialog.ui" line="14"/>
+        <source>Wireshark: Decode As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="27"/>
+        <source>Field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="30"/>
+        <source>Match using this field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="35"/>
+        <source>Value</source>
+        <translation type="unfinished">Valeur</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="38"/>
+        <source>Current &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="43"/>
+        <source>Type</source>
+        <translation type="unfinished">Type</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="48"/>
+        <source>Default</source>
+        <translation type="unfinished">Défaut</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="51"/>
+        <source>Default &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="56"/>
+        <source>Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="59"/>
+        <source>Change behavior when the protocol field matches this value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="69"/>
+        <source>Change the dissection behavior for a protocol.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="83"/>
+        <source>Remove this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="94"/>
+        <source>Copy this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="347"/>
+        <source>String</source>
+        <translation type="unfinished">Chaine de Caractères</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="349"/>
+        <source>Integer, base </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="361"/>
+        <source>unknown</source>
+        <translation type="unfinished">inconnu</translation>
+    </message>
+</context>
 <context>
     <name>DisplayFilterCombo</name>
     <message>
-        <location filename="display_filter_combo.cpp" line="46"/>
+        <location filename="display_filter_combo.cpp" line="47"/>
         <source>Display filter selector</source>
         <translation>Le sélecteur de filtre</translation>
     </message>
 <context>
     <name>DisplayFilterEdit</name>
     <message>
-        <location filename="display_filter_edit.cpp" line="98"/>
+        <location filename="display_filter_edit.cpp" line="99"/>
         <source>Apply a display filter %1 &lt;%2/&gt;</source>
         <translation>Appliquer un filtre d&apos;affichage %1 &lt;%2/&gt;</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="93"/>
+        <location filename="display_filter_edit.cpp" line="94"/>
         <source>Display filter entry</source>
         <oldsource>Dispaly filter entry</oldsource>
         <translation>Filtre d&apos;entrée</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="96"/>
+        <location filename="display_filter_edit.cpp" line="97"/>
         <source>Enter a display filter %1</source>
         <translation>Entrer a filtrage d&apos;affichage %1</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="292"/>
+        <location filename="display_filter_edit.cpp" line="293"/>
         <source>Invalid filter</source>
         <translation>Filtre invalide</translation>
     </message>
 <context>
     <name>ExportDissectionDialog</name>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="63"/>
+        <location filename="export_dissection_dialog.cpp" line="64"/>
         <source>Wireshark: Export Packet Dissections</source>
         <translation>Wireshark: Export des paquets analysés</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="65"/>
+        <location filename="export_dissection_dialog.cpp" line="66"/>
         <source>Export as:</source>
         <translation>Exporter sous:</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="69"/>
+        <location filename="export_dissection_dialog.cpp" line="70"/>
         <source>Plain text (*.txt)</source>
         <translation>Texte (*.txt)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="70"/>
+        <location filename="export_dissection_dialog.cpp" line="71"/>
         <source>Comma Separated Values - summary (*.csv)</source>
         <translation>CSV Séparateur: point-virgule) (*.csv)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="71"/>
+        <location filename="export_dissection_dialog.cpp" line="72"/>
         <source>PSML - summary (*.psml, *.xml)</source>
         <translation>PSML - résumé (*.psml, *.xml)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="72"/>
+        <location filename="export_dissection_dialog.cpp" line="73"/>
         <source>PDML - details (*.pdml, *.xml)</source>
         <translation>PDML - détails (*.pdml, *.xml)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="73"/>
+        <location filename="export_dissection_dialog.cpp" line="74"/>
         <source>C Arrays - bytes (*.c, *.h)</source>
         <translation>Tableau C - octets (*.c, .h)</translation>
     </message>
         <translation>Wireshark: Sauvegarder tous les objects dans...</translation>
     </message>
     <message>
-        <location filename="export_object_dialog.cpp" line="317"/>
+        <location filename="export_object_dialog.cpp" line="316"/>
         <source>Object Export</source>
         <translation>Object exporté</translation>
     </message>
     <message>
-        <location filename="export_object_dialog.cpp" line="318"/>
+        <location filename="export_object_dialog.cpp" line="317"/>
         <source>Some files could not be saved.</source>
         <translation>Certains fichiers ne sont pas sauvegardés.</translation>
     </message>
         <translation type="unfinished"></translation>
     </message>
 </context>
+<context>
+    <name>FollowStreamDialog</name>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="20"/>
+        <source>Follow Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="36"/>
+        <source>Hint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="61"/>
+        <source>Show data as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="88"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="102"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="112"/>
+        <source>Find &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="96"/>
+        <source>Hide this stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="99"/>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="102"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="146"/>
+        <source>%Ln client pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="147"/>
+        <source>%Ln server pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="148"/>
+        <source>%Ln turn(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>No capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>Please make sure you have a capture file opened.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Error following stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <source>Capture file invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <source>Please make sure you have a TCP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Please make sure you have a UDP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="850"/>
+        <source>Error following stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="851"/>
+        <source>Please make sure you have an SSL packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="871"/>
+        <source>Error creating filter for this stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="872"/>
+        <source>A transport or network layer header is needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="929"/>
+        <source>%Ln total stream(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1004"/>
+        <source>Could not read from temporary file %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1009"/>
+        <location filename="follow_stream_dialog.cpp" line="1234"/>
+        <source>Short read from temporary file %1: expected %2, got %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1286"/>
+        <source>Error reading temporary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>FontColorPreferencesFrame</name>
     <message>
     </message>
     <message>
         <location filename="font_color_preferences_frame.ui" line="129"/>
-        <source>Sample stream client text</source>
+        <source>Sample &quot;Follow Stream&quot; client text</source>
+        <oldsource>Sample stream client text</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="font_color_preferences_frame.ui" line="149"/>
-        <source>Sample stream server text</source>
+        <source>Sample &quot;Follow Stream&quot; server text</source>
+        <oldsource>Sample stream server text</oldsource>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="199"/>
+        <source>Sample valid filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="font_color_preferences_frame.cpp" line="170"/>
+        <location filename="font_color_preferences_frame.ui" line="209"/>
+        <source>Sample invalid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="219"/>
+        <source>Sample deprecated filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.cpp" line="191"/>
         <source>Wireshark: Font</source>
         <translation type="unfinished"></translation>
     </message>
         <translation></translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="281"/>
+        <location filename="import_text_dialog.cpp" line="282"/>
         <source>Wireshark: Import text file</source>
         <translation>Wireshark: Import depuis un fichier texte</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="322"/>
+        <location filename="import_text_dialog.cpp" line="323"/>
         <source>Example: %1</source>
         <translation>Exemple: %1</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="324"/>
+        <location filename="import_text_dialog.cpp" line="325"/>
         <source>&lt;i&gt;(No format will be applied)&lt;/i&gt;</source>
         <translation>&lt;I&gt;(Aucun format sera appliqué)&lt;/i&gt;</translation>
     </message>
 <context>
     <name>InterfaceTree</name>
     <message>
-        <location filename="interface_tree.cpp" line="51"/>
+        <location filename="interface_tree.cpp" line="59"/>
         <source>Welcome screen list</source>
         <translation>Page de bienvenue</translation>
     </message>
     <message>
-        <location filename="interface_tree.cpp" line="57"/>
+        <location filename="interface_tree.cpp" line="65"/>
         <source>Waiting for startup</source>
         <translation>Démarrage en cours</translation>
     </message>
     <message>
-        <location filename="interface_tree.cpp" line="125"/>
-        <source>%1</source>
-        <translation></translation>
+        <location filename="interface_tree.cpp" line="199"/>
+        <source>Interface information not available</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
         <translation>Profil: </translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="304"/>
+        <location filename="main_status_bar.cpp" line="305"/>
         <source>Packets: %1 %4 Displayed: %2 %4 Marked: %3</source>
         <translation>Paquets: %1 %4 Affichés: %2 %4 Marqués: %3</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="310"/>
+        <location filename="main_status_bar.cpp" line="311"/>
         <source> %1 Dropped: %2</source>
         <translation>%1 Supprimés: %2</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="313"/>
+        <location filename="main_status_bar.cpp" line="314"/>
         <source> %1 Ignored: %2</source>
         <translation>%1 Ignorés: %2</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="318"/>
+        <location filename="main_status_bar.cpp" line="319"/>
         <source> %1  Load time: %2:%3.%4</source>
         <translation>%1  Temps de chargement: %2:%3.%4</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="325"/>
+        <location filename="main_status_bar.cpp" line="327"/>
         <source>No Packets</source>
         <translation>Pas de paquets</translation>
     </message>
 <context>
     <name>MainWelcome</name>
     <message>
-        <location filename="main_welcome.cpp" line="202"/>
+        <location filename="main_welcome.cpp" line="222"/>
         <source>not found</source>
         <translation>Non trouvé</translation>
     </message>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="82"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;User&apos;s Guide&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Guide d&apos;utilisateur&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <translation type="obsolete">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Guide d&apos;utilisateur&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="112"/>
         <source>Capture
 live packets from the network</source>
-        <translation>Capture
+        <translation type="obsolete">Capture
 Paquet temps reel depuis le réseau</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="118"/>
+        <location filename="main_welcome.ui" line="59"/>
+        <source>Capture filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="126"/>
+        <source>&lt;html&gt;&lt;head/&gt;
+&lt;body&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/docs/wsug_html_chunked/&quot;&gt;User&apos;s Guide&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+How to install Wireshark and how to use each of its features.&lt;br/&gt;
+Other formats and command-line man pages can be found on&lt;br/&gt;
+the &lt;a href=&quot;http://www.wireshark.org/docs/&quot;&gt;documentation page&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://wiki.wireshark.org/&quot;&gt;The Wireshark Wiki&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+User-contributed pages on different aspects of using Wireshark.&lt;br/&gt;
+Capturing in different environments, filtering, specific protocols,&lt;br/&gt;
+and a variety of other information.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://ask.wireshark.org/&quot;&gt;Wireshark Q&amp;amp;A&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+Question and answer site for Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/lists/&quot;&gt;Mailing Lists&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+In-depth discussions about Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="189"/>
+        <source>Capture
+live packets from your network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="195"/>
         <source>Open
 a recent capture file</source>
         <translation>Ouvrir
 un des derniers fichiers de capture</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="124"/>
+        <location filename="main_welcome.ui" line="201"/>
         <source>Learn
 more about Wireshark</source>
         <translation>Apprendre
@@ -1043,97 +1657,97 @@ plus a propos de Wireshark</translation>
     <name>MainWindow</name>
     <message>
         <location filename="main_window.ui" line="14"/>
-        <location filename="main_window.ui" line="458"/>
+        <location filename="main_window.ui" line="544"/>
         <source>Wireshark</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="58"/>
+        <location filename="main_window.ui" line="62"/>
         <source>900000000; </source>
         <translation>90000000; </translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="65"/>
+        <location filename="main_window.ui" line="69"/>
         <source>Go to packet</source>
         <translation>Aller au paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="72"/>
+        <location filename="main_window.ui" line="76"/>
         <source>Cancel</source>
         <translation>Annuler</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="101"/>
+        <location filename="main_window.ui" line="105"/>
         <source>File</source>
         <translation>Fichier</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="105"/>
+        <location filename="main_window.ui" line="109"/>
         <source>Open Recent</source>
         <translation>Dernier fichier ouvert</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="111"/>
+        <location filename="main_window.ui" line="115"/>
         <source>File Set</source>
         <translation>Fichier</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="119"/>
+        <location filename="main_window.ui" line="123"/>
         <source>Export Packet Dissections</source>
         <translation>Exporter analyse des paquets</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="130"/>
+        <location filename="main_window.ui" line="134"/>
         <source>Export Objects</source>
         <translation>Exporter Objets</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="159"/>
+        <location filename="main_window.ui" line="163"/>
         <source>Edit</source>
         <translation>Editer</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="163"/>
+        <location filename="main_window.ui" line="167"/>
         <source>Copy</source>
         <translation>Copier</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="200"/>
+        <location filename="main_window.ui" line="204"/>
         <source>Capture</source>
         <translation>Capture</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="212"/>
+        <location filename="main_window.ui" line="217"/>
         <source>Help</source>
         <translation>Aide</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="216"/>
+        <location filename="main_window.ui" line="221"/>
         <source>Manual pages</source>
         <translation>Page du manuel</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="243"/>
+        <location filename="main_window.ui" line="250"/>
         <source>Go</source>
         <translation>Aller</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="254"/>
+        <location filename="main_window.ui" line="261"/>
         <source>View</source>
         <translation>Voir</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="265"/>
+        <location filename="main_window.ui" line="272"/>
         <source>Analyze</source>
         <translation>Analyse</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="269"/>
+        <location filename="main_window.ui" line="276"/>
         <source>Apply as Filter</source>
         <translation>Appliquer comme un Filtre</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="280"/>
+        <location filename="main_window.ui" line="287"/>
         <source>Prepare a Filter</source>
         <translation>Préparer un Filtre</translation>
     </message>
@@ -1142,167 +1756,167 @@ plus a propos de Wireshark</translation>
         <translation type="obsolete">Barre d&apos;outils</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="353"/>
+        <location filename="main_window.ui" line="439"/>
         <source>Open</source>
         <translation>Ouvrir</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="356"/>
+        <location filename="main_window.ui" line="442"/>
         <source>Open a capture file</source>
         <translation>Ouvrir un fichier de capture</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="359"/>
+        <location filename="main_window.ui" line="445"/>
         <source>Ctrl+O</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="364"/>
+        <location filename="main_window.ui" line="450"/>
         <source>Quit</source>
         <translation>Quitter</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="367"/>
+        <location filename="main_window.ui" line="453"/>
         <source>Quit Wireshark</source>
         <translation>Quitter Wireshark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="370"/>
+        <location filename="main_window.ui" line="456"/>
         <source>Ctrl+Q</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="401"/>
+        <location filename="main_window.ui" line="487"/>
         <source>Start capturing packets</source>
         <translation>Démarrer la capture de paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="557"/>
+        <location filename="main_window.ui" line="643"/>
         <source>Next Packet</source>
         <translation>Paquet suivant</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="560"/>
+        <location filename="main_window.ui" line="646"/>
         <source>Go to the next packet</source>
         <translation>ALler au paquet suviant</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="563"/>
+        <location filename="main_window.ui" line="649"/>
         <source>Ctrl+Down</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="568"/>
+        <location filename="main_window.ui" line="654"/>
         <source>Previous Packet</source>
         <translation>Paquet précédent</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="571"/>
+        <location filename="main_window.ui" line="657"/>
         <source>Go to the previous packet</source>
         <translation>Aller au paquet précédent</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="574"/>
+        <location filename="main_window.ui" line="660"/>
         <source>Ctrl+Up</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="579"/>
+        <location filename="main_window.ui" line="665"/>
         <source>First Packet</source>
         <translation>Premier paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="582"/>
+        <location filename="main_window.ui" line="668"/>
         <source>Go to the first packet</source>
         <translation>Aller au premier paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="585"/>
+        <location filename="main_window.ui" line="671"/>
         <source>Ctrl+Home</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="590"/>
+        <location filename="main_window.ui" line="676"/>
         <source>Last Packet</source>
         <translation>Dernier paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="593"/>
+        <location filename="main_window.ui" line="679"/>
         <source>Go to the last packet</source>
         <translation>Aller au dernier paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="596"/>
+        <location filename="main_window.ui" line="682"/>
         <source>Ctrl+End</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="604"/>
+        <location filename="main_window.ui" line="690"/>
         <source>E&amp;xpand Subtrees</source>
         <translation>E&amp;tendre les sous menus</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="607"/>
+        <location filename="main_window.ui" line="693"/>
         <source>Expand the current packet detail</source>
         <translation>Etendre les détails du paquet en cours</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="610"/>
+        <location filename="main_window.ui" line="696"/>
         <source>Shift+Right</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="615"/>
+        <location filename="main_window.ui" line="701"/>
         <source>&amp;Expand All</source>
         <translation>&amp;Etendre tout</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="618"/>
+        <location filename="main_window.ui" line="704"/>
         <source>Expand packet details</source>
         <translation>Etendre les détails du paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="621"/>
+        <location filename="main_window.ui" line="707"/>
         <source>Ctrl+Right</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="626"/>
+        <location filename="main_window.ui" line="712"/>
         <source>Collapse &amp;All</source>
         <translation>Reduire &amp;Tout</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="629"/>
+        <location filename="main_window.ui" line="715"/>
         <source>Collapse all packet details</source>
         <translation>Reduire les détails de tous les paquets</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="632"/>
+        <location filename="main_window.ui" line="718"/>
         <source>Ctrl+Left</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="637"/>
+        <location filename="main_window.ui" line="723"/>
         <source>Go to Packet...</source>
         <translation>Aller au Paquet...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="640"/>
+        <location filename="main_window.ui" line="726"/>
         <source>Go to specified packet</source>
         <translation>Aller au paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="643"/>
+        <location filename="main_window.ui" line="729"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="648"/>
+        <location filename="main_window.ui" line="734"/>
         <source>&amp;Merge...</source>
         <translation>&amp;Fusionner...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="651"/>
+        <location filename="main_window.ui" line="737"/>
         <source>Merge one or more files</source>
         <translation>Fusionner un ou plusieurs fichiers</translation>
     </message>
@@ -1311,921 +1925,1259 @@ plus a propos de Wireshark</translation>
         <translation type="obsolete">&amp;Importer...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="659"/>
+        <location filename="main_window.ui" line="745"/>
         <source>Import a file</source>
         <translation>Importer un fichier</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="668"/>
+        <location filename="main_window.ui" line="754"/>
         <source>&amp;Save</source>
         <translation>&amp;Sauvegarder</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="671"/>
+        <location filename="main_window.ui" line="757"/>
         <source>Save the current file</source>
         <translation>Sauvegarder le fichier en cours</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="674"/>
+        <location filename="main_window.ui" line="760"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="683"/>
+        <location filename="main_window.ui" line="769"/>
         <source>Save &amp;As...</source>
         <translation>Sauveg&amp;arder sous...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="686"/>
+        <location filename="main_window.ui" line="772"/>
         <source>Save as a different file</source>
         <translation>Sauvegarder dans un fichier différent</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="689"/>
+        <location filename="main_window.ui" line="775"/>
         <source>Ctrl+Shift+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="694"/>
+        <location filename="main_window.ui" line="780"/>
         <source>Export Specified Packets...</source>
         <translation>Export les Paquets Specifiés...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="787"/>
+        <location filename="main_window.ui" line="838"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="879"/>
         <source>As Plain &amp;Text...</source>
         <translation>En &amp;Texte...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="792"/>
+        <location filename="main_window.ui" line="884"/>
         <source>As CSV...</source>
         <translation>En CSV...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="797"/>
+        <location filename="main_window.ui" line="889"/>
         <source>As &quot;C&quot; Arrays...</source>
         <translation>En Tableau &quot;C&quot;...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="802"/>
+        <location filename="main_window.ui" line="894"/>
         <source>As PSML XML...</source>
         <translation>En PSML XML...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="807"/>
+        <location filename="main_window.ui" line="899"/>
         <source>As PDML XML...</source>
         <translation>En PDML XML...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="812"/>
+        <location filename="main_window.ui" line="904"/>
         <source>&amp;HTTP...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="817"/>
+        <location filename="main_window.ui" line="909"/>
         <source>&amp;DICOM...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="822"/>
+        <location filename="main_window.ui" line="914"/>
         <source>&amp;SMB...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="827"/>
+        <location filename="main_window.ui" line="919"/>
         <source>Description</source>
         <translation>Déscription</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="830"/>
-        <location filename="main_window.ui" line="1069"/>
+        <location filename="main_window.ui" line="922"/>
+        <location filename="main_window.ui" line="1161"/>
         <source>Ctrl+Shift+D</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="835"/>
+        <location filename="main_window.ui" line="927"/>
         <source>Field Name</source>
         <translation>Nom du champs</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="838"/>
+        <location filename="main_window.ui" line="930"/>
         <source>Ctrl+Shift+F</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="843"/>
+        <location filename="main_window.ui" line="935"/>
         <source>Value</source>
         <translation>Valeur</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="846"/>
+        <location filename="main_window.ui" line="938"/>
         <source>Ctrl+Shift+V</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="851"/>
+        <location filename="main_window.ui" line="943"/>
         <source>As Filter</source>
         <translation>Comme un Filtre</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="854"/>
+        <location filename="main_window.ui" line="946"/>
         <source>Ctrl+Shift+C</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="859"/>
-        <location filename="main_window.ui" line="904"/>
+        <location filename="main_window.ui" line="951"/>
+        <location filename="main_window.ui" line="996"/>
         <source>&amp;Selected</source>
         <translation>&amp;Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="864"/>
-        <location filename="main_window.ui" line="909"/>
+        <location filename="main_window.ui" line="956"/>
+        <location filename="main_window.ui" line="1001"/>
         <source>&amp;Not Selected</source>
         <translation>&amp;Non Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="867"/>
-        <location filename="main_window.ui" line="912"/>
+        <location filename="main_window.ui" line="959"/>
+        <location filename="main_window.ui" line="1004"/>
         <source>Not Selected</source>
         <translation>Non Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="872"/>
-        <location filename="main_window.ui" line="917"/>
+        <location filename="main_window.ui" line="964"/>
+        <location filename="main_window.ui" line="1009"/>
         <source>... &amp;and Selected</source>
         <translation>.. &amp;Et Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="875"/>
-        <location filename="main_window.ui" line="920"/>
+        <location filename="main_window.ui" line="967"/>
+        <location filename="main_window.ui" line="1012"/>
         <source>... and Selected</source>
         <translation>... et Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="880"/>
-        <location filename="main_window.ui" line="925"/>
+        <location filename="main_window.ui" line="972"/>
+        <location filename="main_window.ui" line="1017"/>
         <source>... &amp;or Selected</source>
         <translation>... &amp;ou Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="883"/>
-        <location filename="main_window.ui" line="928"/>
+        <location filename="main_window.ui" line="975"/>
+        <location filename="main_window.ui" line="1020"/>
         <source>... or Selected</source>
         <translation>... ou Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="888"/>
-        <location filename="main_window.ui" line="933"/>
+        <location filename="main_window.ui" line="980"/>
+        <location filename="main_window.ui" line="1025"/>
         <source>... a&amp;nd not Selected</source>
         <translation>... e&amp;t non Séléctionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="891"/>
-        <location filename="main_window.ui" line="936"/>
+        <location filename="main_window.ui" line="983"/>
+        <location filename="main_window.ui" line="1028"/>
         <source>... and not Selected</source>
         <translation>... et non Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="896"/>
-        <location filename="main_window.ui" line="941"/>
+        <location filename="main_window.ui" line="988"/>
+        <location filename="main_window.ui" line="1033"/>
         <source>... o&amp;r not Selected</source>
         <translation>... o&amp;u non Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="899"/>
-        <location filename="main_window.ui" line="944"/>
+        <location filename="main_window.ui" line="991"/>
+        <location filename="main_window.ui" line="1036"/>
         <source>... or not Selected</source>
         <translation>... ou not Sélectionné</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="949"/>
+        <location filename="main_window.ui" line="1041"/>
         <source>Display Filters...</source>
         <translation>Afficher les Filtres...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="954"/>
+        <location filename="main_window.ui" line="1046"/>
         <source>Display Filter &amp;Macros...</source>
         <translation>Afficher les filtres &amp;Macros...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="959"/>
+        <location filename="main_window.ui" line="1051"/>
         <source>Apply as Column</source>
         <translation>Appliquer comme une colonne</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="964"/>
+        <location filename="main_window.ui" line="1056"/>
         <source>&amp;Find Packet...</source>
         <translation>&amp;Trouver un Paquet...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="967"/>
+        <location filename="main_window.ui" line="1059"/>
         <source>Find a packet</source>
         <translation>Trouver un paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="970"/>
+        <location filename="main_window.ui" line="1062"/>
         <source>Ctrl+F</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="975"/>
+        <location filename="main_window.ui" line="1067"/>
         <source>Find Ne&amp;xt...</source>
         <translation>Trouver paquet &amp;suivant...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="978"/>
+        <location filename="main_window.ui" line="1070"/>
         <source>Find the next packet</source>
         <translation>Trouver le paquet suivant</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="981"/>
+        <location filename="main_window.ui" line="1073"/>
         <source>Ctrl+N</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="986"/>
+        <location filename="main_window.ui" line="1078"/>
         <source>Find Pre&amp;vious...</source>
         <translation>Trouver paquet &amp;précédent...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="989"/>
+        <location filename="main_window.ui" line="1081"/>
         <source>Find the previous packet</source>
         <translation>Trouver le paquet précédent</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="992"/>
+        <location filename="main_window.ui" line="1084"/>
         <source>Ctrl+B</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="997"/>
+        <location filename="main_window.ui" line="1089"/>
         <source>&amp;Mark/Unmark Packet</source>
         <translation>&amp;Marquer/Démarquer un paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1000"/>
+        <location filename="main_window.ui" line="1092"/>
         <source>Mark or unmark this packet</source>
         <translation>Marquer ou Démarquer ce paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1003"/>
+        <location filename="main_window.ui" line="1095"/>
         <source>Ctrl+M</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1008"/>
+        <location filename="main_window.ui" line="1100"/>
         <source>Mark All Displayed</source>
         <translation>Marquer tout comme Affichées</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1011"/>
+        <location filename="main_window.ui" line="1103"/>
         <source>Mark all displayed packets</source>
         <translation>Marquer tous les paquets affichés</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1014"/>
+        <location filename="main_window.ui" line="1106"/>
         <source>Ctrl+Shift+M</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1019"/>
+        <location filename="main_window.ui" line="1111"/>
         <source>Unmark All Displayed</source>
         <translation>Démarquer tous affichés</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1022"/>
+        <location filename="main_window.ui" line="1114"/>
         <source>Unmark all displayed packets</source>
         <translation>Démarquer tous paquets affichés</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1025"/>
+        <location filename="main_window.ui" line="1117"/>
         <source>Meta+Alt+M</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1030"/>
+        <location filename="main_window.ui" line="1122"/>
         <source>Next Mark</source>
         <translation>Marque suivante</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1033"/>
+        <location filename="main_window.ui" line="1125"/>
         <source>Go to the next marked packet</source>
         <translation>Aller au prochain paquet marqués</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1036"/>
+        <location filename="main_window.ui" line="1128"/>
         <source>Meta+Shift+N</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1041"/>
+        <location filename="main_window.ui" line="1133"/>
         <source>Previous Mark</source>
         <translation>Marque Précédente</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1044"/>
+        <location filename="main_window.ui" line="1136"/>
         <source>Go to the previous marked packet</source>
         <translation>Aller au paquet précédent marqué</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1047"/>
+        <location filename="main_window.ui" line="1139"/>
         <source>Meta+Shift+B</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1052"/>
+        <location filename="main_window.ui" line="1144"/>
         <source>&amp;Ignore/Unignore Packet</source>
         <translation>&amp;Ignorer/Ne plus ignorer un paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1055"/>
+        <location filename="main_window.ui" line="1147"/>
         <source>Ignore or unignore this packet</source>
         <translation>Ignorer ou ne plus ignorer ce paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1058"/>
+        <location filename="main_window.ui" line="1150"/>
         <source>Ctrl+D</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1080"/>
+        <location filename="main_window.ui" line="1172"/>
         <source>Ctrl+Alt+D</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1063"/>
-        <source>Ignore All Displayed</source>
-        <translation>Ignorer tous les affichés</translation>
+        <location filename="main_window.ui" line="1277"/>
+        <source>Summary</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1066"/>
-        <source>Ignore all displayed packets</source>
-        <translation>Ignorer tous les paquets affichés</translation>
+        <location filename="main_window.ui" line="1285"/>
+        <source>Protocol Hierarchy</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1074"/>
-        <source>Unignore All Displayed</source>
-        <translation>Ne plus ignorer tous les affichés</translation>
+        <location filename="main_window.ui" line="1290"/>
+        <source>Capinfos</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1077"/>
-        <source>Unignore all displayed packets</source>
-        <translation>Ne plus ignorer tous les paquets affichés</translation>
+        <location filename="main_window.ui" line="1295"/>
+        <source>Reordercap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1085"/>
-        <source>Set/Unset Time Reference</source>
-        <translation>Fixer/Defixer le Temps de Réference</translation>
+        <location filename="main_window.ui" line="1300"/>
+        <source>Time Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1088"/>
-        <source>Set or unset a time reference for this packet</source>
-        <translation>Fixer ou défixer le temps de réference de ce paquet</translation>
+        <location filename="main_window.ui" line="1303"/>
+        <source>TCP time sequence graph (Stevens)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1091"/>
-        <source>Ctrl+T</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1308"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1096"/>
-        <source>Unset All Time References</source>
-        <translation>Défixer tous les Temps de Réferences</translation>
+        <location filename="main_window.ui" line="1311"/>
+        <source>TCP througput</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1099"/>
-        <source>Remove all time references</source>
-        <translation>Supprimer tous les temps de réferences</translation>
+        <location filename="main_window.ui" line="1316"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1102"/>
-        <source>Ctrl+Alt+T</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1319"/>
+        <source>TCP round trip time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1107"/>
-        <source>Next Time Reference</source>
-        <translation>Prochain Temps de Réference</translation>
+        <location filename="main_window.ui" line="1324"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1110"/>
-        <source>Go to the next time reference</source>
-        <translation>Aller au prochain temps de réference</translation>
+        <location filename="main_window.ui" line="1327"/>
+        <source>TCP window scaling</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1113"/>
-        <source>Ctrl+Alt+N</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1335"/>
+        <source>Follow TCP Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1118"/>
-        <source>Previous Time Reference</source>
-        <translation>Précédent Temps de réference</translation>
+        <location filename="main_window.ui" line="1343"/>
+        <source>Follow UDP Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1121"/>
-        <source>Go to the previous time reference</source>
-        <translation>Aller au précédent temps de réference</translation>
+        <location filename="main_window.ui" line="1351"/>
+        <source>Follow SSL Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1124"/>
-        <source>Ctrl+Alt+B</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1356"/>
+        <source>Time Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1129"/>
-        <source>Time Shift...</source>
-        <translation>Décalage de temps...</translation>
+        <location filename="main_window.ui" line="1359"/>
+        <source>TCP time sequence graph (tcptrace)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1132"/>
-        <source>Shift or change packet timestamps</source>
-        <translation>Décalager ou changer le temps des paquets</translation>
+        <location filename="main_window.ui" line="1364"/>
+        <source>Analyse this Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1135"/>
-        <source>Ctrl+Shift+T</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1369"/>
+        <source>Show All Associations</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1140"/>
-        <source>Packet Comment...</source>
-        <translation>Commentaire de Paquet...</translation>
+        <location filename="main_window.ui" line="1374"/>
+        <source>Flow Graph</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1143"/>
-        <source>Add or change a packet comment</source>
-        <translation>Ajouter ou changer le commentaire d&apos;un paquet</translation>
+        <location filename="main_window.ui" line="1377"/>
+        <source>Flow sequence diagram</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1151"/>
-        <source>Name set in iconText to keep QMenuBar from grabbing it on OS X</source>
+        <location filename="main_window.ui" line="1382"/>
+        <source>ANCP</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1154"/>
-        <source>Configuration Profiles...</source>
-        <translation>Profils de Configuration...</translation>
+        <location filename="main_window.ui" line="1385"/>
+        <source>ANCP statistics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1157"/>
-        <source>Manage your configuration profiles</source>
-        <translation>Gerer mes profils de configuration</translation>
+        <location filename="main_window.ui" line="1390"/>
+        <source>Packets sorted by Instance ID</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1168"/>
-        <source>&amp;Preferences...</source>
-        <translation>&amp;Préferences...</translation>
+        <location filename="main_window.ui" line="1393"/>
+        <source>BACapp statistics sorted by instance ID</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Manage configuration profiles</source>
-        <translation type="obsolete">Gerer les profils de configuration</translation>
+        <location filename="main_window.ui" line="1398"/>
+        <source>Packets sorted by IP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1160"/>
-        <source>Ctrl+Shift+A</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1401"/>
+        <source>BACapp statistics sorted by IP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Preferences...</source>
-        <translation type="obsolete">Préferences...</translation>
+        <location filename="main_window.ui" line="1406"/>
+        <source>Packets sorted by object type</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1171"/>
-        <source>Manage Wireshark&apos;s preferences</source>
-        <translation>Gerer les préferences de Wireshark</translation>
+        <location filename="main_window.ui" line="1409"/>
+        <source>BACapp statistics sorted by object type</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1174"/>
-        <source>Ctrl+Shift+P</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1414"/>
+        <source>Packets sorted by service</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="697"/>
-        <source>Export specified packets</source>
-        <translation>Exporter les paquets specifiés</translation>
+        <location filename="main_window.ui" line="1417"/>
+        <source>BACapp statistics sorted by service</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="656"/>
-        <source>&amp;Import from Hex Dump...</source>
+        <location filename="main_window.ui" line="1422"/>
+        <source>Collectd</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="702"/>
-        <source>Export Packet &amp;Bytes...</source>
-        <translation>Exporter les &amp;données des paquets...</translation>
+        <location filename="main_window.ui" line="1425"/>
+        <source>Collectd statistics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="705"/>
-        <source>Ctrl+H</source>
-        <translation></translation>
+        <location filename="main_window.ui" line="1430"/>
+        <source>HART-IP</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="710"/>
-        <source>Export SSL Session Keys...</source>
-        <translation>Exporter les clés de sessions SSL...</translation>
+        <location filename="main_window.ui" line="1433"/>
+        <source>HART-IP statistics</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="715"/>
-        <source>&amp;Print...</source>
-        <translation>Im&amp;primer...</translation>
+        <location filename="main_window.ui" line="1438"/>
+        <location filename="main_window.ui" line="1486"/>
+        <source>Packet Counter</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="718"/>
+        <location filename="main_window.ui" line="1441"/>
+        <source>HTTP packet counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1446"/>
+        <source>Requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1449"/>
+        <source>HTTP requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1454"/>
+        <source>Load Distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1457"/>
+        <source>HTTP load distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1462"/>
+        <source>Packet Lengths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1465"/>
+        <source>Packet length statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1470"/>
+        <source>Sametime</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1473"/>
+        <source>Sametime statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1478"/>
+        <source>&amp;ISUP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1481"/>
+        <source>ISUP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1489"/>
+        <source>RTSP packet counts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1494"/>
+        <source>SM&amp;PP Operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1497"/>
+        <source>SMPP operation statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1502"/>
+        <source>&amp;UCP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1505"/>
+        <source>UCP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1510"/>
+        <source>Decode &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1513"/>
+        <source>Change the way packets are dissected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1518"/>
+        <location filename="main_window.ui" line="1521"/>
+        <source>Filter this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1155"/>
+        <source>Ignore All Displayed</source>
+        <translation>Ignorer tous les affichés</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1158"/>
+        <source>Ignore all displayed packets</source>
+        <translation>Ignorer tous les paquets affichés</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1166"/>
+        <source>Unignore All Displayed</source>
+        <translation>Ne plus ignorer tous les affichés</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1169"/>
+        <source>Unignore all displayed packets</source>
+        <translation>Ne plus ignorer tous les paquets affichés</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1177"/>
+        <source>Set/Unset Time Reference</source>
+        <translation>Fixer/Defixer le Temps de Réference</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1180"/>
+        <source>Set or unset a time reference for this packet</source>
+        <translation>Fixer ou défixer le temps de réference de ce paquet</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1183"/>
+        <source>Ctrl+T</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1188"/>
+        <source>Unset All Time References</source>
+        <translation>Défixer tous les Temps de Réferences</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1191"/>
+        <source>Remove all time references</source>
+        <translation>Supprimer tous les temps de réferences</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1194"/>
+        <source>Ctrl+Alt+T</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1199"/>
+        <source>Next Time Reference</source>
+        <translation>Prochain Temps de Réference</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1202"/>
+        <source>Go to the next time reference</source>
+        <translation>Aller au prochain temps de réference</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1205"/>
+        <source>Ctrl+Alt+N</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1210"/>
+        <source>Previous Time Reference</source>
+        <translation>Précédent Temps de réference</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1213"/>
+        <source>Go to the previous time reference</source>
+        <translation>Aller au précédent temps de réference</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1216"/>
+        <source>Ctrl+Alt+B</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1221"/>
+        <source>Time Shift...</source>
+        <translation>Décalage de temps...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1224"/>
+        <source>Shift or change packet timestamps</source>
+        <translation>Décalager ou changer le temps des paquets</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1227"/>
+        <source>Ctrl+Shift+T</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1232"/>
+        <source>Packet Comment...</source>
+        <translation>Commentaire de Paquet...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1235"/>
+        <source>Add or change a packet comment</source>
+        <translation>Ajouter ou changer le commentaire d&apos;un paquet</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1243"/>
+        <source>Configuration Profiles...</source>
+        <translation>Profils de Configuration...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1246"/>
+        <source>Configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1249"/>
+        <source>Manage your configuration profiles</source>
+        <translation>Gerer mes profils de configuration</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1260"/>
+        <source>&amp;Preferences...</source>
+        <translation>&amp;Préferences...</translation>
+    </message>
+    <message>
+        <source>Manage configuration profiles</source>
+        <translation type="obsolete">Gerer les profils de configuration</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1252"/>
+        <source>Ctrl+Shift+A</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Preferences...</source>
+        <translation type="obsolete">Préferences...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1263"/>
+        <source>Manage Wireshark&apos;s preferences</source>
+        <translation>Gerer les préferences de Wireshark</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1266"/>
+        <source>Ctrl+Shift+P</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="783"/>
+        <source>Export specified packets</source>
+        <translation>Exporter les paquets specifiés</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="298"/>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="322"/>
+        <source>Statistics</source>
+        <translation type="unfinished">Statistiques</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="326"/>
+        <source>TCP Stream Graphs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="336"/>
+        <source>BACnet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="345"/>
+        <source>HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="367"/>
+        <source>Telephony</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="371"/>
+        <source>RTSP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="742"/>
+        <source>&amp;Import from Hex Dump...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="788"/>
+        <source>Export Packet &amp;Bytes...</source>
+        <translation>Exporter les &amp;données des paquets...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="791"/>
+        <source>Ctrl+H</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="796"/>
+        <source>Export SSL Session Keys...</source>
+        <translation>Exporter les clés de sessions SSL...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="801"/>
+        <source>&amp;Print...</source>
+        <translation>Im&amp;primer...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="804"/>
         <source>Ctrl+P</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="723"/>
+        <location filename="main_window.ui" line="809"/>
         <source>List Files</source>
         <translation>Liste des fichiers</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="728"/>
+        <location filename="main_window.ui" line="814"/>
         <source>Next File</source>
         <translation>Fichier suivant</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="733"/>
+        <location filename="main_window.ui" line="819"/>
         <source>Previous File</source>
         <translation>Ficher précedent</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="738"/>
+        <location filename="main_window.ui" line="824"/>
         <source>&amp;Reload</source>
         <translation>&amp;Recharger</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="741"/>
+        <location filename="main_window.ui" line="827"/>
         <source>Reload the current file</source>
         <translation>Recharger le fichier en cours</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="744"/>
-        <location filename="main_window.ui" line="782"/>
+        <location filename="main_window.ui" line="830"/>
+        <location filename="main_window.ui" line="874"/>
         <source>Ctrl+R</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="749"/>
+        <location filename="main_window.ui" line="835"/>
         <source>&amp;Options...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="752"/>
+        <location filename="main_window.ui" line="841"/>
         <source>Capture options</source>
         <translation>Options de capture</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="755"/>
+        <location filename="main_window.ui" line="844"/>
         <source>Ctrl+K</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="760"/>
+        <location filename="main_window.ui" line="852"/>
         <source>Capture &amp;Filters...</source>
         <translation>&amp;Filtre de Capture...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="763"/>
+        <location filename="main_window.ui" line="855"/>
         <source>Capture filters</source>
         <translation>Filtres de Capture</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="768"/>
+        <location filename="main_window.ui" line="860"/>
         <source>Refresh Interfaces</source>
         <translation>Actualiser les interfaces</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="771"/>
+        <location filename="main_window.ui" line="863"/>
         <source>Refresh interfaces</source>
         <translation>Actualiser les interfaces</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="776"/>
+        <location filename="main_window.ui" line="868"/>
         <source>&amp;Restart</source>
         <translation>&amp;Redémarrager</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="779"/>
+        <location filename="main_window.ui" line="871"/>
         <source>Restart current capture</source>
         <translation>Redémarrer la capture en cours</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="416"/>
+        <location filename="main_window.ui" line="502"/>
         <source>Stop capturing packets</source>
         <translation>Arrêter la capturer de paquet</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="424"/>
+        <location filename="main_window.ui" line="510"/>
         <source>Close</source>
         <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="430"/>
+        <location filename="main_window.ui" line="516"/>
         <source>Ctrl+W</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="438"/>
+        <location filename="main_window.ui" line="524"/>
         <source>No files found</source>
         <translation>Pas de fichier trouvé</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="447"/>
+        <location filename="main_window.ui" line="533"/>
         <source>&amp;Contents</source>
         <translation>&amp;Aide</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="450"/>
+        <location filename="main_window.ui" line="536"/>
         <source>F1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="534"/>
+        <location filename="main_window.ui" line="620"/>
         <source>&amp;About Wireshark</source>
         <translation>&amp;A Propos de Wireshark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="463"/>
+        <location filename="main_window.ui" line="549"/>
         <source>Wireshark Filter</source>
         <translation>Filtre Wireshark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="378"/>
+        <location filename="main_window.ui" line="464"/>
         <source>&amp;Interfaces...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="381"/>
+        <location filename="main_window.ui" line="467"/>
         <source>Show interface details</source>
         <translation>Voir les détails des interfaces</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="384"/>
+        <location filename="main_window.ui" line="470"/>
         <source>Ctrl+I</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="398"/>
+        <location filename="main_window.ui" line="484"/>
         <source>&amp;Start</source>
         <translation>&amp;Démarrer</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="404"/>
-        <location filename="main_window.ui" line="419"/>
+        <location filename="main_window.ui" line="490"/>
+        <location filename="main_window.ui" line="505"/>
         <source>Ctrl+E</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="413"/>
+        <location filename="main_window.ui" line="499"/>
         <source>S&amp;top</source>
         <translation>Arre&amp;ter</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="427"/>
+        <location filename="main_window.ui" line="513"/>
         <source>Close the current capture file</source>
         <translation>Fermer le fichier de capture en cours</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="468"/>
+        <location filename="main_window.ui" line="554"/>
         <source>TShark</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="473"/>
+        <location filename="main_window.ui" line="559"/>
         <source>RawShark</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="478"/>
+        <location filename="main_window.ui" line="564"/>
         <source>Dumpcap</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="483"/>
+        <location filename="main_window.ui" line="569"/>
         <source>Mergecap</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="488"/>
+        <location filename="main_window.ui" line="574"/>
         <source>Editcap</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="493"/>
+        <location filename="main_window.ui" line="579"/>
         <source>Text2cap</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="498"/>
+        <location filename="main_window.ui" line="584"/>
         <source>Website</source>
         <translation>Site Web</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="503"/>
+        <location filename="main_window.ui" line="589"/>
         <source>FAQ&apos;s</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="508"/>
+        <location filename="main_window.ui" line="594"/>
         <source>Downloads</source>
         <translation>Téléchargements</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="517"/>
+        <location filename="main_window.ui" line="603"/>
         <source>Wiki</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="525"/>
+        <location filename="main_window.ui" line="611"/>
         <source>Sample Captures</source>
         <translation>Captures d&apos;Exemple</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="549"/>
+        <location filename="main_window.ui" line="635"/>
         <source>Ask (Q&amp;&amp;A)</source>
         <translation>Questions (Q&amp;&amp;A)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="301"/>
+        <location filename="main_window_slots.cpp" line="406"/>
         <source>Loading: %1</source>
         <translation>Chargement: %1</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="450"/>
-        <location filename="main_window_slots.cpp" line="130"/>
+        <location filename="main_window.cpp" line="605"/>
+        <location filename="main_window_slots.cpp" line="140"/>
         <source>Invalid Display Filter</source>
         <translation>Filtre d&apos;affichage invalide</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="451"/>
+        <location filename="main_window.cpp" line="606"/>
         <source>The filter expression %1 isn&apos;t a valid display filter. (%2).</source>
         <translation>Le filtre %1 n&apos;est pas un filtre d&apos;affichage valide (%2).</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="384"/>
+        <location filename="main_window.cpp" line="539"/>
         <source>Save packets before merging?</source>
         <translation>Sauvegarder les paquets avant la fusion?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="145"/>
+        <location filename="main_window.cpp" line="183"/>
         <source>Check for Updates...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="385"/>
+        <location filename="main_window.cpp" line="187"/>
+        <source>splitterMaster</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="188"/>
+        <source>splitterExtra</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="191"/>
+        <source>emptyPane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="540"/>
         <source>A temporary capture file can&apos;t be merged.</source>
         <translation>une capture temporaire ne peut pas etre fusionner.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="391"/>
+        <location filename="main_window.cpp" line="546"/>
         <source>Save changes in &quot;%1&quot; before merging?</source>
         <translation>Sauvegarder les changements dans &quot;%1&quot; avant la fusion?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="393"/>
+        <location filename="main_window.cpp" line="548"/>
         <source>Changes must be saved before the files can be merged.</source>
         <translation>Les changements doivent etre sauvegarder avant la fusion de fichier.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="538"/>
+        <location filename="main_window.cpp" line="693"/>
         <source> before importing a new capture</source>
         <translation> avant l&apos;import d&apos;une nouvelle capture</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="845"/>
+        <location filename="main_window.cpp" line="1006"/>
         <source>Unable to export to &quot;%1&quot;.</source>
         <translation>Impossible d&apos;exporter dans &quot;%1&quot;.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="846"/>
+        <location filename="main_window.cpp" line="1007"/>
         <source>You cannot export packets to the current capture file.</source>
         <translation>Vous ne pouvez pas exporter les paquets de la capture en cours.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="932"/>
-        <location filename="main_window.cpp" line="957"/>
+        <location filename="main_window.cpp" line="1093"/>
+        <location filename="main_window.cpp" line="1118"/>
         <source>.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="995"/>
+        <location filename="main_window.cpp" line="1156"/>
         <source>You have unsaved packets</source>
         <translation>Vous avez des paquets non sauvegardés</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="996"/>
+        <location filename="main_window.cpp" line="1157"/>
         <source>They will be lost if you don&apos;t save them.</source>
         <translation>Ils seront perdues si vous ne les enregistrez pas.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="999"/>
-        <location filename="main_window.cpp" line="1012"/>
+        <location filename="main_window.cpp" line="1160"/>
+        <location filename="main_window.cpp" line="1173"/>
         <source>Do you want to stop the capture and save the captured packets</source>
         <translation>
 Voulez-vous arrêter la capture et enregistrer les paquets capturés</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1001"/>
+        <location filename="main_window.cpp" line="1162"/>
         <source>Do you want to save the captured packets</source>
         <translation>Voulez-vous  enregistrer les paquets capturés</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1003"/>
-        <location filename="main_window.cpp" line="1013"/>
+        <location filename="main_window.cpp" line="1164"/>
+        <location filename="main_window.cpp" line="1174"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1014"/>
+        <location filename="main_window.cpp" line="1175"/>
         <source>Your captured packets will be lost if you don&apos;t save them.</source>
         <translation>Votre capture de paquet sera perdu si vous ne les enregistrez pas.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1017"/>
+        <location filename="main_window.cpp" line="1178"/>
         <source>Do you want to save the changes you&apos;ve made to the capture file &quot;%1&quot;%2?</source>
         <translation>Voulez-vous enregistrer les modifications que vous avez apportées au fichier de capture &quot;%1&quot;%2?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1022"/>
+        <location filename="main_window.cpp" line="1183"/>
         <source>Your changes will be lost if you don&apos;t save them.</source>
         <translation>Vos changements seront perdus si vous ne les enregistrez pas.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1034"/>
+        <location filename="main_window.cpp" line="1195"/>
         <source>Stop and Save</source>
         <translation>Arreter et Sauvegarder</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1042"/>
+        <location filename="main_window.cpp" line="1203"/>
         <source>Stop and Quit without Saving</source>
         <oldsource>Stop and Quit without Saving)</oldsource>
         <translation>Arreter et Quitter sans Sauvegarder</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1044"/>
+        <location filename="main_window.cpp" line="1206"/>
         <source>Quit without Saving</source>
         <translation>Quitter sans Sauvegarder</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1048"/>
+        <location filename="main_window.cpp" line="1211"/>
         <source>Stop and Continue without Saving</source>
         <translation>Arreter et Continuer sans Sauvegarder</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1171"/>
+        <location filename="main_window.cpp" line="1338"/>
         <source>(File name can&apos;t be mapped to UTF-8)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1182"/>
-        <location filename="main_window.cpp" line="1197"/>
+        <location filename="main_window.cpp" line="1350"/>
+        <location filename="main_window.cpp" line="1356"/>
+        <location filename="main_window.cpp" line="1371"/>
         <source>The Wireshark Network Analyzer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="577"/>
+        <location filename="main_window_slots.cpp" line="706"/>
         <source>Clear Menu</source>
         <translation>Effacer les fichiers récemment ouverts</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1109"/>
+        <location filename="main_window_slots.cpp" line="1132"/>
+        <source>Please wait while Wireshark is initializing . . .</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1271"/>
         <source>Wireshark: Export Selected Packet Bytes</source>
         <translation>Wireshark: Exporter la selection de paquets octets</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1111"/>
+        <location filename="main_window_slots.cpp" line="1273"/>
         <source>Raw data (*.bin *.dat *.raw);;Any File (*.*)</source>
         <translation>Raw data (*.bin *.dat *.raw);;Tous les fichiers (*.*)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1152"/>
+        <location filename="main_window_slots.cpp" line="1314"/>
         <source>No Keys</source>
         <translation>Aucune clés</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1153"/>
+        <location filename="main_window_slots.cpp" line="1315"/>
         <source>There are no SSL Session Keys to save.</source>
         <translation>Il y a aucune clé de Session SSL à sauvegarder.</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1164"/>
+        <location filename="main_window_slots.cpp" line="1326"/>
         <source>SSL Session Keys (*.keys *.txt);;Any File (*.*)</source>
         <translation>Clé de Session SSL (*.keys *.txt);;Tous les fichiers (*.*)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1259"/>
+        <location filename="main_window_slots.cpp" line="1421"/>
         <source>Couldn&apos;t copy text. Try another item.</source>
         <translation>Impossible de copier le texte. Essayer un autre item.</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1429"/>
+        <location filename="main_window_slots.cpp" line="1591"/>
         <source>No filter available. Try another </source>
         <translation>Aucun filtre disponible. Essayer un autre</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1707"/>
+        <location filename="main_window_slots.cpp" line="2128"/>
         <source>No Interface Selected</source>
         <translation>Aucune Interface Sélectionnée</translation>
     </message>
@@ -2319,19 +3271,19 @@ Voulez-vous arrêter la capture et enregistrer les paquets capturés</translatio
     </message>
     <message>
         <location filename="main_window_preferences_frame.ui" line="214"/>
-        <location filename="main_window_preferences_frame.ui" line="257"/>
+        <location filename="main_window_preferences_frame.ui" line="263"/>
         <source>Icons only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="main_window_preferences_frame.ui" line="219"/>
-        <location filename="main_window_preferences_frame.ui" line="262"/>
+        <location filename="main_window_preferences_frame.ui" line="268"/>
         <source>Text only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="main_window_preferences_frame.ui" line="224"/>
-        <location filename="main_window_preferences_frame.ui" line="267"/>
+        <location filename="main_window_preferences_frame.ui" line="273"/>
         <source>Icons &amp; Text</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2341,26 +3293,56 @@ Voulez-vous arrêter la capture et enregistrer les paquets capturés</translatio
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.cpp" line="139"/>
-        <source>Open Files In</source>
-        <translation>Ouvrir les fichiers dans</translation>
+        <location filename="main_window_preferences_frame.ui" line="298"/>
+        <source>Language: </source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ModulePreferencesScrollArea</name>
     <message>
-        <location filename="module_preferences_scroll_area.ui" line="14"/>
-        <source>ScrollArea</source>
+        <location filename="main_window_preferences_frame.ui" line="315"/>
+        <source>Auto-Detect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="module_preferences_scroll_area.cpp" line="448"/>
-        <location filename="module_preferences_scroll_area.cpp" line="467"/>
-        <source>Wireshark: </source>
+        <location filename="main_window_preferences_frame.ui" line="320"/>
+        <source>English</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
+    <message utf8="true">
+        <location filename="main_window_preferences_frame.ui" line="325"/>
+        <source>Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="330"/>
+        <source>Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="335"/>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.cpp" line="141"/>
+        <source>Open Files In</source>
+        <translation>Ouvrir les fichiers dans</translation>
+    </message>
+</context>
+<context>
+    <name>ModulePreferencesScrollArea</name>
+    <message>
+        <location filename="module_preferences_scroll_area.ui" line="14"/>
+        <source>ScrollArea</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="473"/>
+        <location filename="module_preferences_scroll_area.cpp" line="492"/>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>PacketCommentDialog</name>
     <message>
         <location filename="packet_comment_dialog.ui" line="14"/>
@@ -2444,32 +3426,42 @@ Voulez-vous arrêter la capture et enregistrer les paquets capturés</translatio
 <context>
     <name>PacketList</name>
     <message>
-        <location filename="packet_list.cpp" line="250"/>
+        <location filename="packet_list.cpp" line="253"/>
+        <source>Follow...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="262"/>
+        <source>SCTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="271"/>
         <source>Apply as Filter</source>
         <translation>Appliquer comme filtre</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="259"/>
+        <location filename="packet_list.cpp" line="280"/>
         <source>Prepare a Filter</source>
         <translation>Préparer un Filtre</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="268"/>
+        <location filename="packet_list.cpp" line="289"/>
         <source>Colorize with Filter</source>
         <translation>Coloriser avec ce filtre</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="344"/>
+        <location filename="packet_list.cpp" line="365"/>
         <source>Copy</source>
         <translation>Copier</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="351"/>
+        <location filename="packet_list.cpp" line="372"/>
         <source>Bytes</source>
         <translation>Octets</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="670"/>
+        <location filename="packet_list.cpp" line="763"/>
         <source>Frame %1: %2 
 
 </source>
@@ -2478,17 +3470,17 @@ Voulez-vous arrêter la capture et enregistrer les paquets capturés</translatio
 </translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="673"/>
+        <location filename="packet_list.cpp" line="767"/>
         <source>[ Comment text exceeds %1. Stopping. ]</source>
         <translation>[ Taille maximum de commentaire dépassé %1 Arrêt !]</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="775"/>
+        <location filename="packet_list.cpp" line="871"/>
         <source>Change Time Display Format?</source>
         <translation>Changer le format d&apos;affichage du temps?</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="776"/>
+        <location filename="packet_list.cpp" line="872"/>
         <source>Time References don&apos;t work well with the currently selected Time Display Format.
 Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</source>
         <translation>Le temps de Références ne fonctionnent pas bien avec le format d&apos;affichage sélectionné.
@@ -2632,43 +3624,43 @@ Voulez-vous passer en &quot;secondes depuis le début de Capture&quot; maintenan
         <translation>Recherche:</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="128"/>
+        <location filename="preferences_dialog.ui" line="131"/>
         <source>Name</source>
         <translation>Nom</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="133"/>
+        <location filename="preferences_dialog.ui" line="136"/>
         <source>Status</source>
         <translation>Etat</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="138"/>
+        <location filename="preferences_dialog.ui" line="141"/>
         <source>Type</source>
         <translation>Type</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="143"/>
+        <location filename="preferences_dialog.ui" line="146"/>
         <source>Value</source>
         <translation>Valeur</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="471"/>
+        <location filename="preferences_dialog.cpp" line="472"/>
         <source>Unknown</source>
         <translation>Inconnu</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="473"/>
+        <location filename="preferences_dialog.cpp" line="474"/>
         <source>Default</source>
         <translation>Défaut</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="475"/>
+        <location filename="preferences_dialog.cpp" line="476"/>
         <source>Changed</source>
         <translation>Modifier</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="606"/>
-        <location filename="preferences_dialog.cpp" line="610"/>
+        <location filename="preferences_dialog.cpp" line="607"/>
+        <location filename="preferences_dialog.cpp" line="611"/>
         <source>Wireshark: </source>
         <translation type="unfinished"></translation>
     </message>
@@ -2706,27 +3698,27 @@ Voulez-vous passer en &quot;secondes depuis le début de Capture&quot; maintenan
         <translation>Plage de Paquet</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="80"/>
+        <location filename="print_dialog.cpp" line="81"/>
         <source>&amp;Print...</source>
         <translation>Im&amp;primer...</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="121"/>
+        <location filename="print_dialog.cpp" line="122"/>
         <source>Page &amp;Setup...</source>
         <translation>&amp;Mise en Page...</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="156"/>
+        <location filename="print_dialog.cpp" line="157"/>
         <source>%1 %2 total packets, %3 shown</source>
         <translation>%1 %2 paques totales, %3 affichés</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="256"/>
+        <location filename="print_dialog.cpp" line="257"/>
         <source>Print Error</source>
         <translation>Erreur d&apos;impression</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="257"/>
+        <location filename="print_dialog.cpp" line="258"/>
         <source>Unable to print to %1.</source>
         <translation>Impossible d&apos;imprimer sur %1.</translation>
     </message>
@@ -2754,17 +3746,17 @@ Voulez-vous passer en &quot;secondes depuis le début de Capture&quot; maintenan
         <translation>Copier ce profil.</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="158"/>
+        <location filename="profile_dialog.cpp" line="160"/>
         <source>Go to</source>
         <translation>Aller à</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="172"/>
+        <location filename="profile_dialog.cpp" line="173"/>
         <source>A profile already exists with that name.</source>
         <translation>Un profil déjà avec ce nom.</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="269"/>
+        <location filename="profile_dialog.cpp" line="272"/>
         <source>Profile Error</source>
         <translation>Erreur de Profil</translation>
     </message>
@@ -2772,42 +3764,42 @@ Voulez-vous passer en &quot;secondes depuis le début de Capture&quot; maintenan
 <context>
     <name>ProtoTree</name>
     <message>
-        <location filename="proto_tree.cpp" line="158"/>
+        <location filename="proto_tree.cpp" line="165"/>
         <source>Packet details</source>
         <translation>Détail du paquet</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="167"/>
+        <location filename="proto_tree.cpp" line="176"/>
         <source>Apply as Filter</source>
         <translation>Appliquer comme Filtre</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="175"/>
+        <location filename="proto_tree.cpp" line="184"/>
         <source>Prepare a Filter</source>
         <translation>Preparer un Filtre</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="183"/>
+        <location filename="proto_tree.cpp" line="192"/>
         <source>Colorize with Filter</source>
         <translation>Coloriser avec ce filtre</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="201"/>
+        <location filename="proto_tree.cpp" line="210"/>
         <source>Copy</source>
         <translation>Copier</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="208"/>
+        <location filename="proto_tree.cpp" line="217"/>
         <source>Bytes</source>
         <translation>Octets</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="278"/>
+        <location filename="proto_tree.cpp" line="295"/>
         <source>, 1 byte</source>
         <translation>, 1 octet</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="280"/>
+        <location filename="proto_tree.cpp" line="297"/>
         <source>, %1 bytes</source>
         <translation>, %1 octets</translation>
     </message>
@@ -2815,300 +3807,2642 @@ Voulez-vous passer en &quot;secondes depuis le début de Capture&quot; maintenan
 <context>
     <name>QObject</name>
     <message>
-        <location filename="preferences_dialog.cpp" line="189"/>
+        <location filename="preferences_dialog.cpp" line="102"/>
         <source>Has this preference been changed?</source>
         <translation>Cette préférence a été changé?</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="193"/>
+        <location filename="preferences_dialog.cpp" line="106"/>
         <source>Default value is empty</source>
         <translation>La valeur par défaut est vide</translation>
     </message>
     <message>
-        <location filename="module_preferences_scroll_area.cpp" line="149"/>
+        <location filename="module_preferences_scroll_area.cpp" line="169"/>
         <source>Edit...</source>
         <translation type="unfinished">Editer...</translation>
     </message>
     <message>
-        <location filename="module_preferences_scroll_area.cpp" line="172"/>
+        <location filename="module_preferences_scroll_area.cpp" line="196"/>
         <source>Browse...</source>
         <translation type="unfinished">Parcourir...</translation>
     </message>
-</context>
-<context>
-    <name>SearchFrame</name>
     <message>
-        <location filename="search_frame.ui" line="14"/>
-        <source>Frame</source>
-        <translation></translation>
+        <location filename="tcp_stream_dialog.cpp" line="77"/>
+        <source>Avgerage Througput (bits/s)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="32"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche la colonne Info dans la liste des paquets (vue sommaire), Paquet décodé par afffichage d&apos;étiquettes (vue arboresence) or les paquets convertir en ASCII (vue d&apos;affichage hexa).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="tcp_stream_dialog.cpp" line="78"/>
+        <source>Round Trip Time (ms)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="36"/>
-        <source>Packet list</source>
-        <translation>Liste de Paquet</translation>
+        <location filename="tcp_stream_dialog.cpp" line="79"/>
+        <source>Segment Length (B)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="41"/>
-        <source>Packet details</source>
-        <translation>Détail du paquet</translation>
+        <location filename="tcp_stream_dialog.cpp" line="80"/>
+        <source>Sequence Number (B)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="46"/>
-        <source>Packet bytes</source>
-        <translation>Taille du paquet</translation>
+        <location filename="tcp_stream_dialog.cpp" line="81"/>
+        <source>Time (s)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="67"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche les chaines contenant UTF-8 / ASCII ou UTF-16 caractères.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="tcp_stream_dialog.cpp" line="82"/>
+        <source>Window Size (B)</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>SCTPAllAssocsDialog</name>
     <message>
-        <location filename="search_frame.ui" line="71"/>
-        <source>Narrow &amp; Wide</source>
-        <translation>UTF-8 / ASCII / UTF-16</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="14"/>
+        <source>Wireshark - SCTP Associations</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="76"/>
-        <source>Narrow (UTF-8 / ASCII)</source>
-        <translation>UTF-8 / ASCII</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="62"/>
+        <source>ID</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="81"/>
-        <source>Wide (UTF-16)</source>
-        <translation>UTF-16</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="67"/>
+        <source>Port 1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="89"/>
-        <source>Case sensitive</source>
-        <translation>Sensible à la case</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="72"/>
+        <source>Port 2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="109"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche des données en utilisant la syntaxe d&apos;un filtre d&apos;affichage (par exemple ip.addr == 10.1.1.1), une chaîne hexadécimale (par exemple fffffda5) ou une chaîne de caractères (par exemple, Ma Chaine).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="77"/>
+        <source>Number of Packets</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="113"/>
-        <source>Display filter</source>
-        <translation>Filtre d&apos;affichage</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="82"/>
+        <source>Number of DATA Chunks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="118"/>
-        <source>Hex value</source>
-        <translation>Valeur hexa</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="87"/>
+        <source>Number of Bytes</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="123"/>
-        <source>String</source>
-        <translation>Chaine de Caractères</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="106"/>
+        <source>Filter Selected Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="141"/>
-        <source>Find</source>
-        <translation>Chercher</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="119"/>
+        <source>Analyze</source>
+        <translation type="unfinished">Analyse</translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="148"/>
-        <source>Cancel</source>
-        <translation>Annuler</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="151"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="188"/>
-        <location filename="search_frame.cpp" line="282"/>
-        <source>No valid search type selected. Please report this to the development team.</source>
-        <translation>Aucun type de recherche valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="154"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="236"/>
-        <source>Invalid filter.</source>
-        <translation>Filtre Invalide.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="157"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="242"/>
-        <source>That filter doesn&apos;t test anything.</source>
-        <translation>Ce filtre ne teste rien.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="162"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="250"/>
-        <source>That&apos;s not a valid hex string.</source>
-        <translation>Ce n&apos;est pas un filtre hexa valide.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="165"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="258"/>
-        <source>You didn&apos;t specify any text for which to search.</source>
-        <translation>Vous n&apos;avez pas spécifié de texte à rechercher.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="168"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="275"/>
-        <source>No valid character set selected. Please report this to the development team.</source>
-        <translation>Aucun caractères valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="173"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="298"/>
-        <source>No valid search area selected. Please report this to the development team.</source>
-        <translation>Aucune zone de recherche valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="176"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="312"/>
-        <source>No packet contained those bytes.</source>
-        <translation>Aucun paquet contient ces octets.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="179"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="322"/>
-        <source>No packet contained that string in its Info column.</source>
-        <translation>Aucun paquet contient cette chaine dans la colonne Info.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="184"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="331"/>
-        <source>No packet contained that string in its dissected display.</source>
-        <translation>Aucun paquet contient cette chaine de caracetere dans les paquets analysés.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="187"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="340"/>
-        <source>No packet contained that string in its converted data.</source>
-        <translation>Aucun paquet contient cette chaine dans les paquets convertis.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="190"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="350"/>
-        <source>No packet matched that filter.</source>
-        <translation>Aucun paquet corresponds a ce filtre.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="195"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>SplashOverlay</name>
     <message>
-        <location filename="splash_overlay.ui" line="17"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="198"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="135"/>
-        <source>Initializing dissectors</source>
-        <translation>Initialisation analyseurs</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="201"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="138"/>
-        <source>Initializing tap listeners</source>
-        <translation>Initialisation tap</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="206"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="141"/>
-        <source>Registering dissector</source>
-        <translation>Enregistrement analyseurs</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="209"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="144"/>
-        <source>Registering plugins</source>
-        <translation>Enregistrement plugins</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="212"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="147"/>
-        <source>Registering Python dissectors</source>
-        <translation>Enregistrement analyseurs Python</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="217"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="150"/>
-        <source>Handing off dissector</source>
-        <translation>Remise d&apos;analyseurs</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="220"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="153"/>
-        <source>Handing off plugins</source>
-        <translation>Remise de plugins</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="223"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="156"/>
-        <source>Handing off Python dissectors</source>
-        <translation>Remise d&apos;analyseurs Python</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="228"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="159"/>
-        <source>Loading Lua plugins</source>
-        <translation>Chargement plugins Lua</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="231"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="162"/>
-        <source>Loading module preferences</source>
-        <translation>Changement du module de Préferences</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="234"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="165"/>
-        <source>Loading configuration files</source>
-        <translation>Changement des fichiers de configuration</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="239"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="168"/>
-        <source>(Unknown action)</source>
-        <translation>(Action inconnue)</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="242"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>TimeShiftDialog</name>
     <message>
-        <location filename="time_shift_dialog.ui" line="20"/>
-        <source>Wireshark: Time Shift</source>
-        <translation>Wireshark: Décalage du Temps</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="245"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="28"/>
-        <source>Shift all packets by</source>
-        <translation>Décaler tous les paquets par</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="250"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="41"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation></translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="253"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="65"/>
-        <source>Set the time for packet</source>
-        <translation>Réglez l&apos;heure de paquets</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="256"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="75"/>
-        <location filename="time_shift_dialog.ui" line="109"/>
-        <source>to</source>
-        <translation>à</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="261"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="99"/>
-        <source>...then set packet</source>
-        <translation>...puis réglez paquet</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="264"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="143"/>
-        <source>and extrapolate the time for all other packets</source>
-        <translation>et extrapoler le temps pour tous les autres paquets</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="267"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="163"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation></translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="272"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="172"/>
-        <source>Undo all shifts</source>
-        <translation>Annuler tous les décalages</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="275"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="140"/>
-        <source>Frame numbers must be between 1 and %1.</source>
-        <translation>Les numeros de trames doit être entre 1 and %1.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="278"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="142"/>
-        <source>Invalid frame number.</source>
-        <translation>Numero de trame invalide.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="283"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="254"/>
-        <source>Time shifting is not available capturing packets.</source>
-        <translation>Le décalage de temps n&apos;est pas disponible pendant la capture de paquet.</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="286"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="289"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="294"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="297"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="300"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="305"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="308"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="311"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="316"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="319"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="322"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="327"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="330"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="333"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="338"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="341"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="344"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="349"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="352"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="355"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="360"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="363"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="366"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="371"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="374"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="377"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="382"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="385"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="388"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="393"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="396"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="399"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="404"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="407"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="410"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPAssocAnalyseDialog</name>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="20"/>
+        <source>Wireshark - Analyse Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="39"/>
+        <source>TabWidget</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="49"/>
+        <source>Statistics</source>
+        <translation type="unfinished">Statistiques</translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="64"/>
+        <source>Chunk Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="80"/>
+        <source>Filter Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="96"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="340"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="525"/>
+        <source>Close</source>
+        <translation type="unfinished">Fermer</translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="112"/>
+        <source>Number of Data Chunks from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="119"/>
+        <source>Checksum Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="126"/>
+        <source>Number of Data Chunks from EP1 to EP2: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="133"/>
+        <source>Number of Data Bytes from EP1 to EP2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="140"/>
+        <source>Number of Data Bytes from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="147"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="154"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="168"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="175"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="258"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="272"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="286"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="300"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="307"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="314"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="321"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="423"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="430"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="465"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="472"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="479"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="493"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="184"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="199"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="384"/>
+        <source>Graph TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="215"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="400"/>
+        <source>Graph Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="228"/>
+        <source>Complete list of IP Addresses as provided in the INIT Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="244"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="416"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="148"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="201"/>
+        <source>Requested Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="251"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="451"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="265"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="437"/>
+        <source>Sent Verification Tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="279"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="458"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="150"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="203"/>
+        <source>Minimum Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="293"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="444"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="155"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="208"/>
+        <source>Minimum Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="363"/>
+        <source>Graph Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="369"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="486"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="153"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="206"/>
+        <source>Provided Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="509"/>
+        <source>Complete list of IP Addresses as provided in the INIT-ACK Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="548"/>
+        <source>Graph a_rwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="51"/>
+        <source>SCTP Analyse Association: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="97"/>
+        <source>No Association found for this packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="116"/>
+        <source>Complete list of IP-Addresses as provided in the INIT-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="118"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="172"/>
+        <source>Complete list of IP-Addresses as provided in the INITACK-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="120"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="174"/>
+        <source>List of used IP-Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="159"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="212"/>
+        <source>Used Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="214"/>
+        <source>Used Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPChunkStatisticsDialog</name>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="20"/>
+        <source>Dialog</source>
+        <translation type="unfinished">Dialogue</translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="73"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="289"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="299"/>
+        <source>Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="78"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="290"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="300"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="83"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="291"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="301"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="97"/>
+        <source>Save Chunk Type Order</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="102"/>
+        <source>Hide Chunk Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="105"/>
+        <source>Remove the chunk type from the table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="110"/>
+        <source>Chunk Type Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="113"/>
+        <source>Go to the chunk type preferences dialog to show or hide other chunk types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="118"/>
+        <source>Show All Registered Chunk Types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="121"/>
+        <source>Show all chunk types with defined names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="56"/>
+        <source>SCTP Chunk Statistics: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphArwndDialog</name>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="102"/>
+        <source>Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="110"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="111"/>
+        <source>Advertised Receiver Window [Bytes]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="156"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: a_rwnd=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphByteDialog</name>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="104"/>
+        <location filename="sctp_graph_byte_dialog.cpp" line="145"/>
+        <source>Bytes</source>
+        <translation type="unfinished">Octets</translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="111"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="112"/>
+        <source>Received Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="158"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: Received bytes=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphDialog</name>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="45"/>
+        <source>Only SACKs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="61"/>
+        <source>Only TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="77"/>
+        <source>Show both</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="93"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="125"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="138"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="143"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="146"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="41"/>
+        <source>SCTP TSNs and SACKs over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="205"/>
+        <source>CumTSNAck</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="218"/>
+        <source>Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="231"/>
+        <source>NR Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="244"/>
+        <source>Duplicate Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="294"/>
+        <source>TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="327"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="328"/>
+        <source>TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="409"/>
+        <source>&lt;small&gt;&lt;i&gt;%1: %2 Time: %3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="419"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="420"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="421"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="423"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="430"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SearchFrame</name>
+    <message>
+        <location filename="search_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="32"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche la colonne Info dans la liste des paquets (vue sommaire), Paquet décodé par afffichage d&apos;étiquettes (vue arboresence) or les paquets convertir en ASCII (vue d&apos;affichage hexa).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="36"/>
+        <source>Packet list</source>
+        <translation>Liste de Paquet</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="41"/>
+        <source>Packet details</source>
+        <translation>Détail du paquet</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="46"/>
+        <source>Packet bytes</source>
+        <translation>Taille du paquet</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="67"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche les chaines contenant UTF-8 / ASCII ou UTF-16 caractères.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="71"/>
+        <source>Narrow &amp; Wide</source>
+        <translation>UTF-8 / ASCII / UTF-16</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="76"/>
+        <source>Narrow (UTF-8 / ASCII)</source>
+        <translation>UTF-8 / ASCII</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="81"/>
+        <source>Wide (UTF-16)</source>
+        <translation>UTF-16</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="89"/>
+        <source>Case sensitive</source>
+        <translation>Sensible à la case</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="109"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Recherche des données en utilisant la syntaxe d&apos;un filtre d&apos;affichage (par exemple ip.addr == 10.1.1.1), une chaîne hexadécimale (par exemple fffffda5) ou une chaîne de caractères (par exemple, Ma Chaine).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="113"/>
+        <source>Display filter</source>
+        <translation>Filtre d&apos;affichage</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="118"/>
+        <source>Hex value</source>
+        <translation>Valeur hexa</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="123"/>
+        <source>String</source>
+        <translation>Chaine de Caractères</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="141"/>
+        <source>Find</source>
+        <translation>Chercher</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="148"/>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="188"/>
+        <location filename="search_frame.cpp" line="282"/>
+        <source>No valid search type selected. Please report this to the development team.</source>
+        <translation>Aucun type de recherche valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="236"/>
+        <source>Invalid filter.</source>
+        <translation>Filtre Invalide.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="242"/>
+        <source>That filter doesn&apos;t test anything.</source>
+        <translation>Ce filtre ne teste rien.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="250"/>
+        <source>That&apos;s not a valid hex string.</source>
+        <translation>Ce n&apos;est pas un filtre hexa valide.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="258"/>
+        <source>You didn&apos;t specify any text for which to search.</source>
+        <translation>Vous n&apos;avez pas spécifié de texte à rechercher.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="275"/>
+        <source>No valid character set selected. Please report this to the development team.</source>
+        <translation>Aucun caractères valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="298"/>
+        <source>No valid search area selected. Please report this to the development team.</source>
+        <translation>Aucune zone de recherche valide sélectionné. Merci de le reporter à l&apos;équipe de développement.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="312"/>
+        <source>No packet contained those bytes.</source>
+        <translation>Aucun paquet contient ces octets.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="322"/>
+        <source>No packet contained that string in its Info column.</source>
+        <translation>Aucun paquet contient cette chaine dans la colonne Info.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="331"/>
+        <source>No packet contained that string in its dissected display.</source>
+        <translation>Aucun paquet contient cette chaine de caracetere dans les paquets analysés.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="340"/>
+        <source>No packet contained that string in its converted data.</source>
+        <translation>Aucun paquet contient cette chaine dans les paquets convertis.</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="350"/>
+        <source>No packet matched that filter.</source>
+        <translation>Aucun paquet corresponds a ce filtre.</translation>
+    </message>
+</context>
+<context>
+    <name>SequenceDialog</name>
+    <message>
+        <location filename="sequence_dialog.ui" line="14"/>
+        <source>Flow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="sequence_dialog.ui" line="51"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="73"/>
+        <source>&lt;small&gt;&lt;i&gt;A hint&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="82"/>
+        <source>Show:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="90"/>
+        <source>All packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="95"/>
+        <source>Displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="116"/>
+        <source>Flow type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="139"/>
+        <source>Addresses:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="147"/>
+        <source>Any</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="152"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="190"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="209"/>
+        <source>Reset Diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="212"/>
+        <source>Reset the diagram to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="215"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="220"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="223"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="226"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="231"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="234"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="237"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="242"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="245"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="248"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="253"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="256"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="259"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="264"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="267"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="270"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="275"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="278"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="281"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="286"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="289"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="292"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="297"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="300"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="303"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="308"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="311"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="314"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="319"/>
+        <source>All Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="322"/>
+        <source>Show flows for all packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="325"/>
+        <location filename="sequence_dialog.ui" line="336"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="330"/>
+        <source>TCP Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="333"/>
+        <source>Show only TCP flow information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="128"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="284"/>
+        <source>%Ln node(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="285"/>
+        <source>%Ln item(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="305"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="306"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="307"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="309"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="310"/>
+        <source>ASCII (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="321"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SplashOverlay</name>
+    <message>
+        <location filename="splash_overlay.ui" line="17"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="136"/>
+        <source>Initializing dissectors</source>
+        <translation>Initialisation analyseurs</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="139"/>
+        <source>Initializing tap listeners</source>
+        <translation>Initialisation tap</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="142"/>
+        <source>Registering dissector</source>
+        <translation>Enregistrement analyseurs</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="145"/>
+        <source>Registering plugins</source>
+        <translation>Enregistrement plugins</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="148"/>
+        <source>Registering Python dissectors</source>
+        <translation>Enregistrement analyseurs Python</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="151"/>
+        <source>Handing off dissector</source>
+        <translation>Remise d&apos;analyseurs</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="154"/>
+        <source>Handing off plugins</source>
+        <translation>Remise de plugins</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="157"/>
+        <source>Handing off Python dissectors</source>
+        <translation>Remise d&apos;analyseurs Python</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="160"/>
+        <source>Loading Lua plugins</source>
+        <translation>Chargement plugins Lua</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="163"/>
+        <source>Loading module preferences</source>
+        <translation>Changement du module de Préferences</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="166"/>
+        <source>Loading configuration files</source>
+        <translation>Changement des fichiers de configuration</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="169"/>
+        <source>(Unknown action)</source>
+        <translation>(Action inconnue)</translation>
+    </message>
+</context>
+<context>
+    <name>StatsTreeDialog</name>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">Dialogue</translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="31"/>
+        <source>Display filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="41"/>
+        <source>Regenerate statistics using this display filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="44"/>
+        <source>Apply</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="63"/>
+        <location filename="stats_tree_dialog.cpp" line="98"/>
+        <source>Copy</source>
+        <translation type="unfinished">Copier</translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="66"/>
+        <source>Copy a text representation of the tree to the clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="69"/>
+        <source>Ctrl+C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="74"/>
+        <location filename="stats_tree_dialog.cpp" line="101"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="77"/>
+        <source>Save the stats_tree data in various formats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="80"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="88"/>
+        <source>Configuration not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="89"/>
+        <source>Unable to find configuration for %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="133"/>
+        <source> Stats Tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="138"/>
+        <source>%1 already open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="139"/>
+        <source>Each type of tree can only be generated one at at time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="173"/>
+        <source>%1 failed to attach to tap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="278"/>
+        <source>Wireshark: Save stats tree as ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="279"/>
+        <source>Plain text file (*.txt);;Comma separated values (*.csv);;XML document (*.xml);;YAML document (*.yaml)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="283"/>
+        <source>Plain text file (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="327"/>
+        <source>Error saving file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SummaryDialog</name>
+    <message>
+        <location filename="summary_dialog.ui" line="20"/>
+        <source>Wireshark - Summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="43"/>
+        <source>File capture details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="55"/>
+        <source>File</source>
+        <translation type="unfinished">Fichier</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="70"/>
+        <source>Name</source>
+        <translation type="unfinished">Nom</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="77"/>
+        <location filename="summary_dialog.ui" line="91"/>
+        <location filename="summary_dialog.ui" line="105"/>
+        <location filename="summary_dialog.ui" line="119"/>
+        <location filename="summary_dialog.ui" line="161"/>
+        <location filename="summary_dialog.ui" line="175"/>
+        <location filename="summary_dialog.ui" line="189"/>
+        <location filename="summary_dialog.ui" line="407"/>
+        <location filename="summary_dialog.ui" line="421"/>
+        <source>/</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="84"/>
+        <source>Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="98"/>
+        <source>Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="112"/>
+        <source>Encapsulation</source>
+        <translation type="unfinished">Encapsulation</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="136"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="154"/>
+        <source>First packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="168"/>
+        <source>Last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="182"/>
+        <source>Elapsed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="206"/>
+        <source>Capture</source>
+        <translation type="unfinished">Capture</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="234"/>
+        <source>Capture file comments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="250"/>
+        <source>OS</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="257"/>
+        <location filename="summary_dialog.ui" line="271"/>
+        <location filename="summary_dialog.cpp" line="393"/>
+        <source>Unknown</source>
+        <translation type="unfinished">Inconnu</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="264"/>
+        <source>Capture app</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="284"/>
+        <source>Capture statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="318"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="323"/>
+        <source>Captured</source>
+        <translation type="unfinished">Capturés</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="328"/>
+        <source>Displayed</source>
+        <translation type="unfinished">Affichés</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="333"/>
+        <source>Marked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="363"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="368"/>
+        <source>Dropped packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="373"/>
+        <source>Capture filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="378"/>
+        <source>Link size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="383"/>
+        <source>Packet size limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="400"/>
+        <source>Display filter</source>
+        <translation type="unfinished">Filtre d&apos;affichage</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="414"/>
+        <source>Ignored packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="430"/>
+        <source>Comment summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="68"/>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="71"/>
+        <source>Copy To Clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="130"/>
+        <source>Summary created by Wireshark %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="133"/>
+        <source>File: 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="134"/>
+        <source>Name:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="135"/>
+        <source>Length:                %1 bytes
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="136"/>
+        <source>Format:                %1%2
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="138"/>
+        <location filename="summary_dialog.cpp" line="284"/>
+        <source> (gzip compressed)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="139"/>
+        <source>Encapsulation:         %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="144"/>
+        <source>Time:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="150"/>
+        <source>First packet:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="153"/>
+        <source>Last packet:           %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="157"/>
+        <source>Elapsed:               %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="164"/>
+        <source>Capture:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="173"/>
+        <source>OS:    %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="178"/>
+        <source>Capture application:   %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="187"/>
+        <source>Dropped packets:       %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="189"/>
+        <source>Capture filter:                %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="191"/>
+        <source>Link type:             %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="193"/>
+        <source>Packet size limit:     %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="200"/>
+        <source>Statistics:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="203"/>
+        <source>%1:    %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="215"/>
+        <source>Capture File Comments:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="230"/>
+        <source>Not representable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="281"/>
+        <source>%1 bytes (%2 Mbytes)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="377"/>
+        <location filename="summary_dialog.cpp" line="412"/>
+        <source>unknown</source>
+        <translation type="unfinished">inconnu</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="408"/>
+        <location filename="summary_dialog.cpp" line="436"/>
+        <source>none</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="419"/>
+        <source>%u bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="460"/>
+        <source>Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="489"/>
+        <source>Between first and last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="492"/>
+        <location filename="summary_dialog.cpp" line="504"/>
+        <location filename="summary_dialog.cpp" line="515"/>
+        <source>%.3f sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="531"/>
+        <source>Avg. packets/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="572"/>
+        <source>Avg. packet size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="575"/>
+        <location filename="summary_dialog.cpp" line="589"/>
+        <location filename="summary_dialog.cpp" line="602"/>
+        <source>%.3f bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="619"/>
+        <source>Bytes</source>
+        <translation type="unfinished">Octets</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="661"/>
+        <source>Avg. bytes/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="705"/>
+        <source>Avg. MBit/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TCPStreamDialog</name>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">Dialogue</translation>
+    </message>
+    <message utf8="true">
+        <location filename="tcp_stream_dialog.ui" line="33"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;+&lt;/th&gt;&lt;td&gt;Zoom in&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;-&lt;/th&gt;&lt;td&gt;Zoom out&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Up&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Next stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Dn&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Previous stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;d&lt;/th&gt;&lt;td&gt;Switch direction (swap TCP endpoints)&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;z&lt;/th&gt;&lt;td&gt;Toggle mouse drag / zoom&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;s&lt;/th&gt;&lt;td&gt;Toggle relative / absolute sequence numbers&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;t&lt;/th&gt;&lt;td&gt;Toggle capture / session time origin&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;Space&lt;/th&gt;&lt;td&gt;Toggle crosshairs&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Round Trip Time graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Throughput graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;Stevens-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt;tcptrace-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;5&lt;/th&gt;&lt;td&gt;Window Scaling graph&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="71"/>
+        <source>&lt;small&gt;&lt;i&gt;Mouse over for shortcuts&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="80"/>
+        <source>Type</source>
+        <translation type="unfinished">Type</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="103"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="113"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch the direction of the connection (view the opposite flow).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="116"/>
+        <location filename="tcp_stream_dialog.ui" line="344"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="127"/>
+        <source>Mouse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="134"/>
+        <source>Drag using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="137"/>
+        <source>drags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="150"/>
+        <source>Select using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="153"/>
+        <source>zooms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="179"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reset the graph to its initial state.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="182"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="201"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="204"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="207"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="212"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="215"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="218"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="223"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="226"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="229"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="234"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="237"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="240"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="245"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="248"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="251"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="256"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="259"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="262"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="267"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="270"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="273"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="278"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="281"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="284"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="289"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="292"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="295"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="300"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="303"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="306"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="311"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="314"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="317"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="322"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="325"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="328"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="333"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="336"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="339"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="347"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="350"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="355"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="358"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="361"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="366"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="369"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="372"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="377"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="380"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="383"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="388"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="391"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="394"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="399"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="402"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="405"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="410"/>
+        <location filename="tcp_stream_dialog.cpp" line="647"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="413"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="416"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="421"/>
+        <location filename="tcp_stream_dialog.cpp" line="570"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="424"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="427"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="432"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="435"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="438"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="443"/>
+        <location filename="tcp_stream_dialog.cpp" line="701"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="446"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="449"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="454"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="457"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="460"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="211"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="359"/>
+        <source>No Capture Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="415"/>
+        <source>%1 %2 pkts, %3 %4 %5 pkts, %6 </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="496"/>
+        <source>Sequence Numbers (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="521"/>
+        <source>Sequence Numbers (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="572"/>
+        <source> (1s MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="574"/>
+        <source> (%1 Segment MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="589"/>
+        <source> [not enough data]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="728"/>
+        <source> for %1:%2 %3 %4:%5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="912"/>
+        <source>%1 %2 (%3s len %4 seq %5 ack %6 win %7)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Click to select packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Packet</source>
+        <translation type="unfinished">Paquet</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="927"/>
+        <source>Release to zoom, x = %1 to %2, y = %3 to %4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="933"/>
+        <source>Unable to select range.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="936"/>
+        <source>Click to select a portion of the graph.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="979"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="980"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="981"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="983"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="990"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TimeShiftDialog</name>
+    <message>
+        <location filename="time_shift_dialog.ui" line="20"/>
+        <source>Wireshark: Time Shift</source>
+        <translation>Wireshark: Décalage du Temps</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="28"/>
+        <source>Shift all packets by</source>
+        <translation>Décaler tous les paquets par</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="41"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="65"/>
+        <source>Set the time for packet</source>
+        <translation>Réglez l&apos;heure de paquets</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="75"/>
+        <location filename="time_shift_dialog.ui" line="109"/>
+        <source>to</source>
+        <translation>à</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="99"/>
+        <source>...then set packet</source>
+        <translation>...puis réglez paquet</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="143"/>
+        <source>and extrapolate the time for all other packets</source>
+        <translation>et extrapoler le temps pour tous les autres paquets</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="163"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="172"/>
+        <source>Undo all shifts</source>
+        <translation>Annuler tous les décalages</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="140"/>
+        <source>Frame numbers must be between 1 and %1.</source>
+        <translation>Les numeros de trames doit être entre 1 and %1.</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="142"/>
+        <source>Invalid frame number.</source>
+        <translation>Numero de trame invalide.</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="254"/>
+        <source>Time shifting is not available capturing packets.</source>
+        <translation>Le décalage de temps n&apos;est pas disponible pendant la capture de paquet.</translation>
+    </message>
+</context>
+<context>
+    <name>UatDialog</name>
+    <message>
+        <location filename="uat_dialog.ui" line="28"/>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished">Crée un nouveau profil en utilisant les paramètres par défaut.</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="42"/>
+        <source>Remove this profile.</source>
+        <translation type="unfinished">Supprimer ce profil.</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="53"/>
+        <source>Copy this profile.</source>
+        <translation type="unfinished">Copier ce profil.</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="87"/>
+        <source>Unknown User Accessible Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="105"/>
+        <source>Open </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
index 9bd2f530726d76bde076424ef6789142b9dbfc5d..10c9307f67c144d784b33057fd7a071f93501124 100644 (file)
Binary files a/ui/qt/qtshark_zh_CN.qm and b/ui/qt/qtshark_zh_CN.qm differ
index ff0995ad53ea2e606052cfd9af2b940e6d556df9..28fa5f4ef012fd38ee6459afbef9b5947ffd184e 100644 (file)
@@ -1,6 +1,80 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="zh_CN">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="about_dialog.ui" line="14"/>
+        <source>About Wireshark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="36"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="46"/>
+        <source>Wireshark</source>
+        <translation type="unfinished">Wireshark</translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="74"/>
+        <source>&lt;span size=\&quot;x-large\&quot; weight=\&quot;bold\&quot;&gt;Network Protocol Analyzer&lt;/span&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="99"/>
+        <source>Authors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="117"/>
+        <source>Folders</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="148"/>
+        <location filename="about_dialog.ui" line="196"/>
+        <source>Name</source>
+        <translation type="unfinished">名称</translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="153"/>
+        <source>Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="158"/>
+        <source>Typical Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="165"/>
+        <source>Plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="201"/>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="206"/>
+        <source>Type</source>
+        <translation type="unfinished">类型</translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="211"/>
+        <source>Path</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="about_dialog.ui" line="218"/>
+        <source>License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ByteViewTab</name>
     <message>
 <context>
     <name>CaptureFileDialog</name>
     <message>
-        <location filename="capture_file_dialog.cpp" line="488"/>
+        <location filename="capture_file_dialog.cpp" line="552"/>
         <source>Wireshark: Open Capture File</source>
         <translation>Wireshark: 打开捕获文件</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="430"/>
+        <location filename="capture_file_dialog.cpp" line="494"/>
         <source>Display Filter:</source>
         <translation>显示筛选器:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="439"/>
+        <location filename="capture_file_dialog.cpp" line="503"/>
         <source>&amp;MAC name resolution</source>
         <oldsource>Enable &amp;network name resolution</oldsource>
         <translatorcomment>MAC 名字解析</translatorcomment>
         <translation>MAC 厂家解析(&amp;M)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="443"/>
+        <location filename="capture_file_dialog.cpp" line="507"/>
         <source>&amp;Transport name resolution</source>
         <oldsource>Use &amp;external name resolver</oldsource>
         <translatorcomment>传输名字解析</translatorcomment>
         <translation>端口号解析(&amp;T)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="447"/>
+        <location filename="capture_file_dialog.cpp" line="511"/>
         <source>&amp;Network name resolution</source>
         <translatorcomment>网络名字解析</translatorcomment>
         <translation>ip 地址解析(&amp;N)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="451"/>
+        <location filename="capture_file_dialog.cpp" line="515"/>
         <source>&amp;External name resolver</source>
         <translatorcomment>外部名字解析器</translatorcomment>
         <translation>使用外部解析服务(&amp;E)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="550"/>
+        <location filename="capture_file_dialog.cpp" line="614"/>
         <source>Wireshark: Export Specified Packets</source>
         <translation>Wireshark: 导出特定分组</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="554"/>
+        <location filename="capture_file_dialog.cpp" line="618"/>
         <source>Export as:</source>
         <translation>导出为:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="350"/>
+        <location filename="capture_file_dialog.cpp" line="395"/>
         <source>All Files (*.*)</source>
         <translation>所有文件 (*.*)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="165"/>
-        <location filename="capture_file_dialog.cpp" line="178"/>
+        <location filename="capture_file_dialog.cpp" line="161"/>
+        <location filename="capture_file_dialog.cpp" line="174"/>
         <source>This capture file contains comments.</source>
         <translation>此捕获文件含有注释内容。</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="166"/>
+        <location filename="capture_file_dialog.cpp" line="162"/>
         <source>The file format you chose doesn&apos;t support comments. Do you want to save the capture in a format that supports comments or discard the comments and save in the format you chose?</source>
         <translation>您所选择的文件格式不支持注释。您希望将捕获内容保存为支持注释的格式,还是希望丢弃注释,直接保存为您所选的格式?</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="171"/>
-        <location filename="capture_file_dialog.cpp" line="182"/>
+        <location filename="capture_file_dialog.cpp" line="167"/>
+        <location filename="capture_file_dialog.cpp" line="178"/>
         <source>Discard comments and save</source>
         <translation>丢弃注释并保存</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="172"/>
+        <location filename="capture_file_dialog.cpp" line="168"/>
         <source>Save in another format</source>
         <translation>保存为其他格式</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="179"/>
+        <location filename="capture_file_dialog.cpp" line="175"/>
         <source>No file format in which it can be saved supports comments. Do you want to discard the comments and save in the format you chose?</source>
         <translation>可以保存的文件格式中,没有支持注释的格式。是否希望丢弃注释内容,并以您所选的格式保存?</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="373"/>
+        <location filename="capture_file_dialog.cpp" line="437"/>
         <source>Format:</source>
         <translation>格式:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="378"/>
+        <location filename="capture_file_dialog.cpp" line="442"/>
         <source>Size:</source>
         <translation>大小:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="383"/>
+        <location filename="capture_file_dialog.cpp" line="447"/>
         <source>Packets:</source>
         <translation>分组数目:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="388"/>
+        <location filename="capture_file_dialog.cpp" line="452"/>
         <source>First Packet:</source>
         <translation>首个分组:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="393"/>
+        <location filename="capture_file_dialog.cpp" line="457"/>
         <source>Elapsed Time:</source>
         <translation>已用时间:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="405"/>
+        <location filename="capture_file_dialog.cpp" line="469"/>
         <source>Prepend packets</source>
         <translation>前置分组</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="406"/>
+        <location filename="capture_file_dialog.cpp" line="470"/>
         <source>Insert packets from the selected file before the current file. Packet timestamps will be ignored.</source>
         <translation>将选中文件中的分组插入到当前文件之前。分组时间戳将被忽略。</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="409"/>
+        <location filename="capture_file_dialog.cpp" line="473"/>
         <source>Merge chronologically</source>
         <translatorcomment>按时间顺序合并</translatorcomment>
         <translation>按时间戳合并</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="410"/>
+        <location filename="capture_file_dialog.cpp" line="474"/>
         <source>Insert packets in chronological order.</source>
         <translation>按照时间顺序插入分组。</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="414"/>
+        <location filename="capture_file_dialog.cpp" line="478"/>
         <source>Append packets</source>
         <translation>追加分组</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="415"/>
+        <location filename="capture_file_dialog.cpp" line="479"/>
         <source>Insert packets from the selected file after the current file. Packet timestamps will be ignored.</source>
         <translation>将选中文件中的分组插入到当前文件之后。分组时间戳将被忽略。</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="457"/>
+        <location filename="capture_file_dialog.cpp" line="521"/>
         <source>Compress with g&amp;zip</source>
         <translation>用 gzip 压缩(&amp;z)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="522"/>
+        <location filename="capture_file_dialog.cpp" line="586"/>
         <source>Wireshark: Save Capture File As</source>
         <translation>Wireshark: 捕获文件另存为</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="528"/>
+        <location filename="capture_file_dialog.cpp" line="592"/>
         <source>Save as:</source>
         <translation>另存为:</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="583"/>
+        <location filename="capture_file_dialog.cpp" line="647"/>
         <source>Wireshark: Merge Capture File</source>
         <translation>Wireshark: 合并捕获文件</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="678"/>
-        <location filename="capture_file_dialog.cpp" line="679"/>
-        <location filename="capture_file_dialog.cpp" line="680"/>
-        <location filename="capture_file_dialog.cpp" line="681"/>
-        <location filename="capture_file_dialog.cpp" line="682"/>
+        <location filename="capture_file_dialog.cpp" line="749"/>
+        <location filename="capture_file_dialog.cpp" line="750"/>
+        <location filename="capture_file_dialog.cpp" line="751"/>
+        <location filename="capture_file_dialog.cpp" line="752"/>
+        <location filename="capture_file_dialog.cpp" line="753"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="689"/>
+        <location filename="capture_file_dialog.cpp" line="760"/>
         <source>directory</source>
         <translation>目录</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="696"/>
+        <location filename="capture_file_dialog.cpp" line="767"/>
         <source>unknown file format</source>
         <translation>未知文件格式</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="698"/>
+        <location filename="capture_file_dialog.cpp" line="769"/>
         <source>error opening file</source>
         <translation>打开文件出错</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="712"/>
+        <location filename="capture_file_dialog.cpp" line="783"/>
         <source>%1 bytes</source>
         <translation>%1 字节</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="741"/>
+        <location filename="capture_file_dialog.cpp" line="812"/>
         <source>error after reading %1 packets</source>
         <translation>读取 %1 分组后出错</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="747"/>
+        <location filename="capture_file_dialog.cpp" line="818"/>
         <source>more than %1 (preview timeout)</source>
         <translation>大于 %1 (预览超时)</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="766"/>
+        <location filename="capture_file_dialog.cpp" line="837"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="capture_file_dialog.cpp" line="772"/>
+        <location filename="capture_file_dialog.cpp" line="843"/>
         <source>unknown</source>
         <translation>未知</translation>
     </message>
 </context>
+<context>
+    <name>CaptureFilterCombo</name>
+    <message>
+        <location filename="capture_filter_combo.cpp" line="47"/>
+        <source>Capture filter selector</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureFilterEdit</name>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="86"/>
+        <source>Capture filter entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_filter_edit.cpp" line="88"/>
+        <source>Enter a capture filter %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CaptureInterfacesDialog</name>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="14"/>
+        <source>Wireshark: Capture interfaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="24"/>
+        <source>Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="52"/>
+        <source>Capture</source>
+        <translation type="unfinished">捕获</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="57"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="62"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="67"/>
+        <source>Link-layer header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="72"/>
+        <source>Prom. mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="77"/>
+        <source>Snaplen [B]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="82"/>
+        <source>Buffer [MB]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="87"/>
+        <source>Mon. Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="92"/>
+        <source>Capture Filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="104"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="107"/>
+        <source>Capture packets in promiscuous mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="114"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="117"/>
+        <source>Show the capture summary dialog while capturing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="144"/>
+        <source>Add pipe...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="169"/>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="177"/>
+        <source>Output format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="184"/>
+        <source>pcap-ng</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="191"/>
+        <source>pcap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="213"/>
+        <source>Capture directly to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="225"/>
+        <source>Browse...</source>
+        <translation type="unfinished">浏览...</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="232"/>
+        <source>File:</source>
+        <translation type="unfinished">文件:</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="245"/>
+        <source>Create a new file automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="278"/>
+        <location filename="capture_interfaces_dialog.ui" line="565"/>
+        <source>Megabytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="283"/>
+        <location filename="capture_interfaces_dialog.ui" line="570"/>
+        <source>Kilobytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="288"/>
+        <location filename="capture_interfaces_dialog.ui" line="575"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="297"/>
+        <location filename="capture_interfaces_dialog.ui" line="539"/>
+        <source>seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="302"/>
+        <location filename="capture_interfaces_dialog.ui" line="544"/>
+        <source>minutes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="307"/>
+        <location filename="capture_interfaces_dialog.ui" line="549"/>
+        <source>hours</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="315"/>
+        <location filename="capture_interfaces_dialog.ui" line="524"/>
+        <source>packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="369"/>
+        <source>Reuse old files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="393"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="401"/>
+        <source>Display Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="413"/>
+        <source>Update list of packets in real-time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="420"/>
+        <source>Automatically scroll during live capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="427"/>
+        <source>Show extra capture information dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="437"/>
+        <source>Name Resolution</source>
+        <translation type="unfinished">名字解析</translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="446"/>
+        <source>Resolve MAC Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="453"/>
+        <source>Resolve network names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="460"/>
+        <source>Resolve transport names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.ui" line="485"/>
+        <source>Stop capture automatically after...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="63"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_interfaces_dialog.cpp" line="66"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CapturePreferencesFrame</name>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished">帧</translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="29"/>
+        <source>Default interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="63"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &amp;quot;see&amp;quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="66"/>
+        <source>Capture packets in promiscuous mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="73"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capture packets in the next-generation capture file format.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="76"/>
+        <source>Capture packets in pcap-ng format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="83"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="86"/>
+        <source>Update list of packets in real time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="93"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Keep the packet list scrolled to the bottom while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="96"/>
+        <source>Automatic scrolling in live capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="103"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show the capture summary dialog while capturing.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="capture_preferences_frame.ui" line="106"/>
+        <source>Show the capture summary dialog while capturing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ColumnPreferencesFrame</name>
+    <message>
+        <location filename="column_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished">帧</translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="30"/>
+        <source>Displayed</source>
+        <translation type="unfinished">已显示</translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="35"/>
+        <source>Title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="40"/>
+        <source>Type</source>
+        <translation type="unfinished">类型</translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="45"/>
+        <source>Field name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="column_preferences_frame.ui" line="50"/>
+        <source>Field occurrence</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>DecodeAsDialog</name>
+    <message>
+        <location filename="decode_as_dialog.ui" line="14"/>
+        <source>Wireshark: Decode As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="27"/>
+        <source>Field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="30"/>
+        <source>Match using this field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="35"/>
+        <source>Value</source>
+        <translation type="unfinished">值</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="38"/>
+        <source>Current &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="43"/>
+        <source>Type</source>
+        <translation type="unfinished">类型</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="48"/>
+        <source>Default</source>
+        <translation type="unfinished">默认</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="51"/>
+        <source>Default &quot;Decode As&quot; behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="56"/>
+        <source>Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="59"/>
+        <source>Change behavior when the protocol field matches this value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="69"/>
+        <source>Change the dissection behavior for a protocol.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="83"/>
+        <source>Remove this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.ui" line="94"/>
+        <source>Copy this dissection behavior.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="347"/>
+        <source>String</source>
+        <translation type="unfinished">字符串</translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="349"/>
+        <source>Integer, base </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="decode_as_dialog.cpp" line="361"/>
+        <source>unknown</source>
+        <translation type="unfinished">未知</translation>
+    </message>
+</context>
 <context>
     <name>DisplayFilterCombo</name>
     <message>
-        <location filename="display_filter_combo.cpp" line="46"/>
+        <location filename="display_filter_combo.cpp" line="47"/>
         <source>Display filter selector</source>
         <translation>显示筛选选择器</translation>
     </message>
 <context>
     <name>DisplayFilterEdit</name>
     <message>
-        <location filename="display_filter_edit.cpp" line="98"/>
+        <location filename="display_filter_edit.cpp" line="99"/>
         <source>Apply a display filter %1 &lt;%2/&gt;</source>
         <translation>应用显示筛选器 %1 &lt;%2/&gt;</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="93"/>
+        <location filename="display_filter_edit.cpp" line="94"/>
         <source>Display filter entry</source>
         <oldsource>Dispaly filter entry</oldsource>
         <translation>显示筛选器条目</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="96"/>
+        <location filename="display_filter_edit.cpp" line="97"/>
         <source>Enter a display filter %1</source>
         <translation>输入显示筛选器 %1</translation>
     </message>
     <message>
-        <location filename="display_filter_edit.cpp" line="286"/>
+        <location filename="display_filter_edit.cpp" line="293"/>
         <source>Invalid filter</source>
         <translation>无效筛选器</translation>
     </message>
 <context>
     <name>ExportDissectionDialog</name>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="63"/>
+        <location filename="export_dissection_dialog.cpp" line="64"/>
         <source>Wireshark: Export Packet Dissections</source>
         <translation>Wireshark: 导出分组解析结果</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="65"/>
+        <location filename="export_dissection_dialog.cpp" line="66"/>
         <source>Export as:</source>
         <translation>导出为:</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="69"/>
+        <location filename="export_dissection_dialog.cpp" line="70"/>
         <source>Plain text (*.txt)</source>
         <translation>纯文本 (*.txt)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="70"/>
+        <location filename="export_dissection_dialog.cpp" line="71"/>
         <source>Comma Separated Values - summary (*.csv)</source>
         <translation>逗号分隔值 - 概要 (*.csv)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="71"/>
+        <location filename="export_dissection_dialog.cpp" line="72"/>
         <source>PSML - summary (*.psml, *.xml)</source>
         <translation>PSML - 概要 (*.psml, *.xml)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="72"/>
+        <location filename="export_dissection_dialog.cpp" line="73"/>
         <source>PDML - details (*.pdml, *.xml)</source>
         <translation>PDML - 详细 (*.pdml, *.xml)</translation>
     </message>
     <message>
-        <location filename="export_dissection_dialog.cpp" line="73"/>
+        <location filename="export_dissection_dialog.cpp" line="74"/>
         <source>C Arrays - bytes (*.c, *.h)</source>
         <translation>C  数组 - 字节流 (*.c, *.h)</translation>
     </message>
         <translation>Wireshark: 保存范围内所有对象...</translation>
     </message>
     <message>
-        <location filename="export_object_dialog.cpp" line="317"/>
+        <location filename="export_object_dialog.cpp" line="316"/>
         <source>Object Export</source>
         <translation>对象导出</translation>
     </message>
     <message>
-        <location filename="export_object_dialog.cpp" line="318"/>
+        <location filename="export_object_dialog.cpp" line="317"/>
         <source>Some files could not be saved.</source>
         <translation>部分文件无法保存。</translation>
     </message>
     </message>
 </context>
 <context>
-    <name>ImportTextDialog</name>
+    <name>FilterExpressionsPreferencesFrame</name>
     <message>
-        <location filename="import_text_dialog.ui" line="26"/>
-        <source>Wireshark: Import from Hex Dump</source>
-        <translation>Wireshark: 从十六进制转储文件导入</translation>
+        <location filename="filter_expressions_preferences_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation type="unfinished">帧</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="41"/>
-        <source>Import From</source>
-        <translation>导入来源</translation>
+        <location filename="filter_expressions_preferences_frame.ui" line="24"/>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="49"/>
-        <source>File:</source>
-        <translation>文件:</translation>
+        <location filename="filter_expressions_preferences_frame.ui" line="29"/>
+        <source>Label</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="62"/>
-        <source>Set name of text file to import</source>
-        <translation>设置要导入的文本文件名称</translation>
+        <location filename="filter_expressions_preferences_frame.ui" line="34"/>
+        <source>Filter Expression</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>FollowStreamDialog</name>
     <message>
-        <location filename="import_text_dialog.ui" line="69"/>
-        <source>Browse for text file to import</source>
-        <translation>浏览要导入的文本文件</translation>
+        <location filename="follow_stream_dialog.ui" line="20"/>
+        <source>Follow Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="36"/>
+        <source>Hint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="61"/>
+        <source>Show data as</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="88"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="102"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.ui" line="112"/>
+        <source>Find &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="96"/>
+        <source>Hide this stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="99"/>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="102"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="146"/>
+        <source>%Ln client pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="147"/>
+        <source>%Ln server pkt(s), </source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="148"/>
+        <source>%Ln turn(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>No capture file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="819"/>
+        <source>Please make sure you have a capture file opened.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Error following stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="825"/>
+        <source>Capture file invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="835"/>
+        <source>Please make sure you have a TCP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="842"/>
+        <source>Please make sure you have a UDP packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="850"/>
+        <source>Error following stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="851"/>
+        <source>Please make sure you have an SSL packet selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="871"/>
+        <source>Error creating filter for this stream.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="872"/>
+        <source>A transport or network layer header is needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="follow_stream_dialog.cpp" line="929"/>
+        <source>%Ln total stream(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1004"/>
+        <source>Could not read from temporary file %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1009"/>
+        <location filename="follow_stream_dialog.cpp" line="1234"/>
+        <source>Short read from temporary file %1: expected %2, got %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="follow_stream_dialog.cpp" line="1286"/>
+        <source>Error reading temporary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FontColorPreferencesFrame</name>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="20"/>
+        <source>Frame</source>
+        <translation type="unfinished">帧</translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="31"/>
+        <source>Main window font:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="38"/>
+        <source>Select Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="70"/>
+        <source>Colors:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="89"/>
+        <source>Sample ignored packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="109"/>
+        <source>Sample marked packet text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="129"/>
+        <source>Sample &quot;Follow Stream&quot; client text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="149"/>
+        <source>Sample &quot;Follow Stream&quot; server text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="199"/>
+        <source>Sample valid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="209"/>
+        <source>Sample invalid filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.ui" line="219"/>
+        <source>Sample deprecated filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="font_color_preferences_frame.cpp" line="191"/>
+        <source>Wireshark: Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ImportTextDialog</name>
+    <message>
+        <location filename="import_text_dialog.ui" line="26"/>
+        <source>Wireshark: Import from Hex Dump</source>
+        <translation>Wireshark: 从十六进制转储文件导入</translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="41"/>
+        <source>Import From</source>
+        <translation>导入来源</translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="49"/>
+        <source>File:</source>
+        <translation>文件:</translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="62"/>
+        <source>Set name of text file to import</source>
+        <translation>设置要导入的文本文件名称</translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="69"/>
+        <source>Browse for text file to import</source>
+        <translation>浏览要导入的文本文件</translation>
     </message>
     <message>
         <location filename="import_text_dialog.ui" line="72"/>
         <translation>时间戳格式:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="184"/>
+        <location filename="import_text_dialog.ui" line="179"/>
+        <location filename="import_text_dialog.ui" line="189"/>
+        <source>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="182"/>
+        <source>Direction indication:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="import_text_dialog.ui" line="201"/>
         <source>Maximum frame length:</source>
         <translation>最大帧长:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="191"/>
+        <location filename="import_text_dialog.ui" line="208"/>
         <source>The maximum size of the frames to write to the import capture file (max 64000)</source>
         <translation>写入导入捕获文件的最大帧长度 (最大 64000)</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="210"/>
+        <location filename="import_text_dialog.ui" line="227"/>
         <source>Encapsulation</source>
         <translation>封装</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="221"/>
+        <location filename="import_text_dialog.ui" line="238"/>
         <source>Encapsulation Type:</source>
         <translation>封装类型:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="228"/>
+        <location filename="import_text_dialog.ui" line="245"/>
         <source>Encapsulation type of the frames in the import capture file</source>
         <translation>导入捕获文件中帧的封装类型</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="252"/>
+        <location filename="import_text_dialog.ui" line="269"/>
         <source>The UDP, TCP or SCTP source port for each frame</source>
         <translation>每一帧的 UDP、TCP 或 SCTP 来源端口</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="259"/>
+        <location filename="import_text_dialog.ui" line="276"/>
         <source>The SCTP DATA payload protocol identifier for each frame</source>
         <translation>每一帧的 SCTP DATA 有效载荷协议标识符</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="266"/>
+        <location filename="import_text_dialog.ui" line="283"/>
         <source>The UDP, TCP or SCTP destination port for each frame</source>
         <translation>每一帧的 UDP、TCP 或 SCTP 目标端口</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="273"/>
+        <location filename="import_text_dialog.ui" line="290"/>
         <source>Prefix each frame with an Ethernet header</source>
         <translation>每一帧前添加以太网头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="276"/>
+        <location filename="import_text_dialog.ui" line="293"/>
         <source>Ethernet</source>
         <translation>以太网</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="283"/>
+        <location filename="import_text_dialog.ui" line="300"/>
         <source>Prefix each frame with an Ethernet, IPv4 and SCTP header</source>
         <translation>每一帧前添加以太网、IPv4 及 SCTP 头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="286"/>
+        <location filename="import_text_dialog.ui" line="303"/>
         <source>SCTP</source>
         <translation>SCTP</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="293"/>
+        <location filename="import_text_dialog.ui" line="310"/>
         <source>PPI:</source>
         <translation>PPI:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="300"/>
+        <location filename="import_text_dialog.ui" line="317"/>
         <source>Protocol (dec):</source>
         <translation>协议 (十进制):</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="307"/>
+        <location filename="import_text_dialog.ui" line="324"/>
         <source>Leave frames unchanged</source>
         <translation>保持帧不变化</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="310"/>
+        <location filename="import_text_dialog.ui" line="327"/>
         <source>No dummy header</source>
         <translation>无虚头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="333"/>
+        <location filename="import_text_dialog.ui" line="350"/>
         <source>Tag:</source>
         <translation>标签:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="340"/>
+        <location filename="import_text_dialog.ui" line="357"/>
         <source>Prefix each frame with an Ethernet, IPv4 and UDP header</source>
         <translation>每一帧前添加以太网、IPv4 及 UDP 头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="343"/>
+        <location filename="import_text_dialog.ui" line="360"/>
         <source>UDP</source>
         <translation>UDP</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="350"/>
+        <location filename="import_text_dialog.ui" line="367"/>
         <source>Source port:</source>
         <translation>来源端口:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="357"/>
+        <location filename="import_text_dialog.ui" line="374"/>
         <source>The Ethertype value of each frame</source>
         <translation>每一帧的以太类型值</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="367"/>
+        <location filename="import_text_dialog.ui" line="384"/>
         <source>Prefix each frame with an Ethernet, IPv4 and TCP header</source>
         <translation>每一帧前添加以太网、IPv4 及 TCP 头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="370"/>
+        <location filename="import_text_dialog.ui" line="387"/>
         <source>TCP</source>
         <translation>TCP</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="377"/>
+        <location filename="import_text_dialog.ui" line="394"/>
         <source>The SCTP verification tag for each frame</source>
         <translation>每一帧的 SCTP 验证标签</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="384"/>
+        <location filename="import_text_dialog.ui" line="401"/>
         <source>Destination port:</source>
         <translation>目标端口:</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="391"/>
+        <location filename="import_text_dialog.ui" line="408"/>
         <source>Ethertype (hex):</source>
         <translation>以太类型 (十六进制):</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="398"/>
+        <location filename="import_text_dialog.ui" line="415"/>
         <source>The IPv4 protocol ID for each frame</source>
         <translation>每一帧的 IPv4 协议 ID</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="405"/>
+        <location filename="import_text_dialog.ui" line="422"/>
         <source>Prefix each frame with an Ethernet, IPv4 and SCTP (DATA) header</source>
         <translation>每一帧前添加以太网、IPv4 及 SCTP (DATA) 头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="408"/>
+        <location filename="import_text_dialog.ui" line="425"/>
         <source>SCTP (Data)</source>
         <translation>SCTP (Data)</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="415"/>
+        <location filename="import_text_dialog.ui" line="432"/>
         <source>Prefix each frame with an Ethernet and IPv4 header</source>
         <translation>每一帧前添加以太网及 IPv4 头部</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.ui" line="418"/>
+        <location filename="import_text_dialog.ui" line="435"/>
         <source>IPv4</source>
         <translation>IPv4</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="281"/>
+        <location filename="import_text_dialog.cpp" line="282"/>
         <source>Wireshark: Import text file</source>
         <translation>Wireshark: 导入文本文件</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="322"/>
+        <location filename="import_text_dialog.cpp" line="323"/>
         <source>Example: %1</source>
         <translation>示例: %1</translation>
     </message>
     <message>
-        <location filename="import_text_dialog.cpp" line="324"/>
+        <location filename="import_text_dialog.cpp" line="325"/>
         <source>&lt;i&gt;(No format will be applied)&lt;/i&gt;</source>
         <translation>&lt;i&gt;(不会应用任何格式变更)&lt;/i&gt;</translation>
     </message>
 <context>
     <name>InterfaceTree</name>
     <message>
-        <location filename="interface_tree.cpp" line="51"/>
+        <location filename="interface_tree.cpp" line="59"/>
         <source>Welcome screen list</source>
         <translation>欢迎屏幕列表</translation>
     </message>
     <message>
-        <location filename="interface_tree.cpp" line="57"/>
+        <location filename="interface_tree.cpp" line="65"/>
         <source>Waiting for startup</source>
         <translation>正在等待启动</translation>
     </message>
     <message>
-        <location filename="interface_tree.cpp" line="125"/>
+        <location filename="interface_tree.cpp" line="199"/>
+        <source>Interface information not available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>%1</source>
-        <translation>%1</translation>
+        <translation type="obsolete">%1</translation>
+    </message>
+</context>
+<context>
+    <name>LayoutPreferencesFrame</name>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation type="unfinished">帧</translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="181"/>
+        <source>Pane 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="188"/>
+        <location filename="layout_preferences_frame.ui" line="239"/>
+        <location filename="layout_preferences_frame.ui" line="290"/>
+        <source>Packet List</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="198"/>
+        <location filename="layout_preferences_frame.ui" line="249"/>
+        <location filename="layout_preferences_frame.ui" line="300"/>
+        <source>Packet Details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="208"/>
+        <location filename="layout_preferences_frame.ui" line="259"/>
+        <location filename="layout_preferences_frame.ui" line="310"/>
+        <source>Packet Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="218"/>
+        <location filename="layout_preferences_frame.ui" line="269"/>
+        <location filename="layout_preferences_frame.ui" line="320"/>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="232"/>
+        <source>Pane 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="layout_preferences_frame.ui" line="283"/>
+        <source>Pane 3:</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
         <translation>配置文件: </translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="304"/>
+        <location filename="main_status_bar.cpp" line="305"/>
         <source>Packets: %1 %4 Displayed: %2 %4 Marked: %3</source>
         <translation>分组: %1 %4 已显示: %2 %4 已标记: %3</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="310"/>
+        <location filename="main_status_bar.cpp" line="311"/>
         <source> %1 Dropped: %2</source>
         <translation> %1 已丢弃: %2</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="313"/>
+        <location filename="main_status_bar.cpp" line="314"/>
         <source> %1 Ignored: %2</source>
         <translation> %1 已忽略: %2</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="318"/>
+        <location filename="main_status_bar.cpp" line="319"/>
         <source> %1  Load time: %2:%3.%4</source>
         <translation> %1  加载时间: %2:%3.%4</translation>
     </message>
     <message>
-        <location filename="main_status_bar.cpp" line="325"/>
+        <location filename="main_status_bar.cpp" line="327"/>
         <source>No Packets</source>
         <translation>无分组</translation>
     </message>
 <context>
     <name>MainWelcome</name>
     <message>
-        <location filename="main_welcome.cpp" line="202"/>
+        <location filename="main_welcome.cpp" line="222"/>
         <source>not found</source>
         <translation>未找到</translation>
     </message>
         <translation>表单</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="82"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;User&apos;s Guide&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;用户指南&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <translation type="obsolete">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;用户指南&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Wiki&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="112"/>
         <source>Capture
 live packets from the network</source>
-        <translation>捕获
+        <translation type="obsolete">捕获
 网络中实时传输的分组</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="118"/>
+        <location filename="main_welcome.ui" line="59"/>
+        <source>Capture filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="126"/>
+        <source>&lt;html&gt;&lt;head/&gt;
+&lt;body&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/docs/wsug_html_chunked/&quot;&gt;User&apos;s Guide&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+How to install Wireshark and how to use each of its features.&lt;br/&gt;
+Other formats and command-line man pages can be found on&lt;br/&gt;
+the &lt;a href=&quot;http://www.wireshark.org/docs/&quot;&gt;documentation page&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://wiki.wireshark.org/&quot;&gt;The Wireshark Wiki&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+User-contributed pages on different aspects of using Wireshark.&lt;br/&gt;
+Capturing in different environments, filtering, specific protocols,&lt;br/&gt;
+and a variety of other information.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://ask.wireshark.org/&quot;&gt;Wireshark Q&amp;amp;A&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+Question and answer site for Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;h2&gt;&lt;a href=&quot;http://www.wireshark.org/lists/&quot;&gt;Mailing Lists&lt;/a&gt;&lt;/h2&gt;
+&lt;p&gt;
+In-depth discussions about Wireshark and protocol analysis.
+&lt;/p&gt;
+
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="189"/>
+        <source>Capture
+live packets from your network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_welcome.ui" line="195"/>
         <source>Open
 a recent capture file</source>
         <translation>打开
 最近保存的捕获文件</translation>
     </message>
     <message>
-        <location filename="main_welcome.ui" line="124"/>
+        <location filename="main_welcome.ui" line="201"/>
         <source>Learn
 more about Wireshark</source>
         <translation>了解
@@ -819,743 +1660,1035 @@ Wireshark 的更多信息</translation>
     <name>MainWindow</name>
     <message>
         <location filename="main_window.ui" line="14"/>
-        <location filename="main_window.ui" line="460"/>
+        <location filename="main_window.ui" line="544"/>
         <source>Wireshark</source>
         <translation>Wireshark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="58"/>
+        <location filename="main_window.ui" line="62"/>
         <source>900000000; </source>
         <translation>900000000; </translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="65"/>
+        <location filename="main_window.ui" line="69"/>
         <source>Go to packet</source>
         <translation>转到分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="72"/>
+        <location filename="main_window.ui" line="76"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="101"/>
+        <location filename="main_window.ui" line="105"/>
         <source>File</source>
         <translation>文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="105"/>
+        <location filename="main_window.ui" line="109"/>
         <source>Open Recent</source>
         <translation>打开最近</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="111"/>
+        <location filename="main_window.ui" line="115"/>
         <source>File Set</source>
         <translation>文件集合</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="119"/>
+        <location filename="main_window.ui" line="123"/>
         <source>Export Packet Dissections</source>
         <translation>导出分组解析结果</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="130"/>
+        <location filename="main_window.ui" line="134"/>
         <source>Export Objects</source>
         <translation>导出对象</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="159"/>
+        <location filename="main_window.ui" line="163"/>
         <source>Edit</source>
         <translation>编辑</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="163"/>
+        <location filename="main_window.ui" line="167"/>
         <source>Copy</source>
         <translation>复制</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="199"/>
+        <location filename="main_window.ui" line="204"/>
         <source>Capture</source>
         <translation>捕获</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="211"/>
+        <location filename="main_window.ui" line="217"/>
         <source>Help</source>
         <translation>帮助</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="215"/>
+        <location filename="main_window.ui" line="221"/>
         <source>Manual pages</source>
         <translation>说明文档</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="242"/>
+        <location filename="main_window.ui" line="250"/>
         <source>Go</source>
         <translation>转到</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="253"/>
+        <location filename="main_window.ui" line="261"/>
         <source>View</source>
         <translation>查看</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="264"/>
+        <location filename="main_window.ui" line="272"/>
         <source>Analyze</source>
         <translation>分析</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="268"/>
+        <location filename="main_window.ui" line="276"/>
         <source>Apply as Filter</source>
         <translation>作为筛选器应用</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="279"/>
+        <location filename="main_window.ui" line="287"/>
         <source>Prepare a Filter</source>
         <translation>准备筛选器</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="341"/>
         <source>toolBar</source>
-        <translation>工具栏</translation>
+        <translation type="obsolete">工具栏</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="355"/>
+        <location filename="main_window.ui" line="439"/>
         <source>Open</source>
         <translation>打开</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="358"/>
+        <location filename="main_window.ui" line="442"/>
         <source>Open a capture file</source>
         <translation>打开已保存的捕获文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="361"/>
+        <location filename="main_window.ui" line="445"/>
         <source>Ctrl+O</source>
         <translation>Ctrl+O</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="366"/>
+        <location filename="main_window.ui" line="450"/>
         <source>Quit</source>
         <translation>退出</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="369"/>
+        <location filename="main_window.ui" line="453"/>
         <source>Quit Wireshark</source>
         <translation>退出 Wireshark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="372"/>
+        <location filename="main_window.ui" line="456"/>
         <source>Ctrl+Q</source>
         <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="403"/>
+        <location filename="main_window.ui" line="487"/>
         <source>Start capturing packets</source>
         <translation>开始捕获分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="559"/>
+        <location filename="main_window.ui" line="643"/>
         <source>Next Packet</source>
         <translation>下一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="562"/>
+        <location filename="main_window.ui" line="646"/>
         <source>Go to the next packet</source>
         <translation>转到下一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="565"/>
+        <location filename="main_window.ui" line="649"/>
         <source>Ctrl+Down</source>
         <translation>Ctrl+Down</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="570"/>
+        <location filename="main_window.ui" line="654"/>
         <source>Previous Packet</source>
         <translation>前一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="573"/>
+        <location filename="main_window.ui" line="657"/>
         <source>Go to the previous packet</source>
         <translation>转到前一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="576"/>
+        <location filename="main_window.ui" line="660"/>
         <source>Ctrl+Up</source>
         <translation>Ctrl+Up</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="581"/>
+        <location filename="main_window.ui" line="665"/>
         <source>First Packet</source>
         <translation>首个分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="584"/>
+        <location filename="main_window.ui" line="668"/>
         <source>Go to the first packet</source>
         <translation>转到首个分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="587"/>
+        <location filename="main_window.ui" line="671"/>
         <source>Ctrl+Home</source>
         <translation>Ctrl+Home</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="592"/>
+        <location filename="main_window.ui" line="676"/>
         <source>Last Packet</source>
         <translation>最新分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="595"/>
+        <location filename="main_window.ui" line="679"/>
         <source>Go to the last packet</source>
         <translation>转到最新分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="598"/>
+        <location filename="main_window.ui" line="682"/>
         <source>Ctrl+End</source>
         <translation>Ctrl+End</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="606"/>
+        <location filename="main_window.ui" line="690"/>
         <source>E&amp;xpand Subtrees</source>
         <translation>展开子树(&amp;X)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="609"/>
+        <location filename="main_window.ui" line="693"/>
         <source>Expand the current packet detail</source>
         <translation>展开当前分组详情</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="612"/>
+        <location filename="main_window.ui" line="696"/>
         <source>Shift+Right</source>
         <translation>Shift+Right</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="617"/>
+        <location filename="main_window.ui" line="701"/>
         <source>&amp;Expand All</source>
         <translation>展开全部(&amp;E)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="620"/>
+        <location filename="main_window.ui" line="704"/>
         <source>Expand packet details</source>
         <translation>展开分组详情</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="623"/>
+        <location filename="main_window.ui" line="707"/>
         <source>Ctrl+Right</source>
         <translation>Ctrl+Right</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="628"/>
+        <location filename="main_window.ui" line="712"/>
         <source>Collapse &amp;All</source>
         <translation>收起全部(&amp;A)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="631"/>
+        <location filename="main_window.ui" line="715"/>
         <source>Collapse all packet details</source>
         <translation>收起所有分组详情</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="634"/>
+        <location filename="main_window.ui" line="718"/>
         <source>Ctrl+Left</source>
         <translation>Ctrl+Left</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="639"/>
+        <location filename="main_window.ui" line="723"/>
         <source>Go to Packet...</source>
         <translation>转到分组...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="642"/>
+        <location filename="main_window.ui" line="726"/>
         <source>Go to specified packet</source>
         <translation>转到特定分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="645"/>
+        <location filename="main_window.ui" line="729"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="650"/>
+        <location filename="main_window.ui" line="734"/>
         <source>&amp;Merge...</source>
         <translation>合并(&amp;M)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="653"/>
+        <location filename="main_window.ui" line="737"/>
         <source>Merge one or more files</source>
         <translation>合并一或多个文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="658"/>
         <source>&amp;Import...</source>
-        <translation>导入(&amp;I)...</translation>
+        <translation type="obsolete">导入(&amp;I)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="661"/>
+        <location filename="main_window.ui" line="745"/>
         <source>Import a file</source>
         <translation>导入文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="670"/>
+        <location filename="main_window.ui" line="754"/>
         <source>&amp;Save</source>
         <translation>保存(&amp;S)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="673"/>
+        <location filename="main_window.ui" line="757"/>
         <source>Save the current file</source>
         <translation>保存当前文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="676"/>
+        <location filename="main_window.ui" line="760"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="685"/>
+        <location filename="main_window.ui" line="769"/>
         <source>Save &amp;As...</source>
         <translation>另存为(&amp;A)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="688"/>
+        <location filename="main_window.ui" line="772"/>
         <source>Save as a different file</source>
         <translation>另存为不同的文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="691"/>
+        <location filename="main_window.ui" line="775"/>
         <source>Ctrl+Shift+S</source>
         <translation>Ctrl+Shift+S</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="696"/>
+        <location filename="main_window.ui" line="780"/>
         <source>Export Specified Packets...</source>
         <translation>导出特定分组...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="789"/>
+        <location filename="main_window.ui" line="838"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="879"/>
         <source>As Plain &amp;Text...</source>
         <translation>为纯文本(&amp;T)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="794"/>
+        <location filename="main_window.ui" line="884"/>
         <source>As CSV...</source>
         <translation>为 CSV...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="799"/>
+        <location filename="main_window.ui" line="889"/>
         <source>As &quot;C&quot; Arrays...</source>
         <translation>为 C 语言数组...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="804"/>
+        <location filename="main_window.ui" line="894"/>
         <source>As PSML XML...</source>
         <translation>为 PSML XML...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="809"/>
+        <location filename="main_window.ui" line="899"/>
         <source>As PDML XML...</source>
         <translation>为 PDML XML...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="814"/>
+        <location filename="main_window.ui" line="904"/>
         <source>&amp;HTTP...</source>
         <translation>&amp;HTTP...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="819"/>
+        <location filename="main_window.ui" line="909"/>
         <source>&amp;DICOM...</source>
         <translation>&amp;DICOM...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="824"/>
+        <location filename="main_window.ui" line="914"/>
         <source>&amp;SMB...</source>
         <translation>&amp;SMB...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="829"/>
+        <location filename="main_window.ui" line="919"/>
         <source>Description</source>
         <translation>描述</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="832"/>
+        <location filename="main_window.ui" line="922"/>
+        <location filename="main_window.ui" line="1161"/>
         <source>Ctrl+Shift+D</source>
         <translation>Ctrl+Shift+D</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="837"/>
+        <location filename="main_window.ui" line="927"/>
         <source>Field Name</source>
         <translation>字段名称</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="840"/>
+        <location filename="main_window.ui" line="930"/>
         <source>Ctrl+Shift+F</source>
         <translation>Ctrl+Shift+F</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="845"/>
+        <location filename="main_window.ui" line="935"/>
         <source>Value</source>
         <translation>值</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="848"/>
+        <location filename="main_window.ui" line="938"/>
         <source>Ctrl+Shift+V</source>
         <translation>Ctrl+Shift+V</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="853"/>
+        <location filename="main_window.ui" line="943"/>
         <source>As Filter</source>
         <translation>作为筛选器</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="856"/>
+        <location filename="main_window.ui" line="946"/>
         <source>Ctrl+Shift+C</source>
         <translation>Ctrl+Shift+C</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="861"/>
-        <location filename="main_window.ui" line="906"/>
+        <location filename="main_window.ui" line="951"/>
+        <location filename="main_window.ui" line="996"/>
         <source>&amp;Selected</source>
         <translation>选中(&amp;S)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="866"/>
-        <location filename="main_window.ui" line="911"/>
+        <location filename="main_window.ui" line="956"/>
+        <location filename="main_window.ui" line="1001"/>
         <source>&amp;Not Selected</source>
         <translation>非选中(&amp;N)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="869"/>
-        <location filename="main_window.ui" line="914"/>
+        <location filename="main_window.ui" line="959"/>
+        <location filename="main_window.ui" line="1004"/>
         <source>Not Selected</source>
         <translation>非选中</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="874"/>
-        <location filename="main_window.ui" line="919"/>
+        <location filename="main_window.ui" line="964"/>
+        <location filename="main_window.ui" line="1009"/>
         <source>... &amp;and Selected</source>
         <translation>... 与选中(&amp;A)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="877"/>
-        <location filename="main_window.ui" line="922"/>
+        <location filename="main_window.ui" line="967"/>
+        <location filename="main_window.ui" line="1012"/>
         <source>... and Selected</source>
         <translation>... 与选中</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="882"/>
-        <location filename="main_window.ui" line="927"/>
+        <location filename="main_window.ui" line="972"/>
+        <location filename="main_window.ui" line="1017"/>
         <source>... &amp;or Selected</source>
         <translation>... 或选中(&amp;O)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="885"/>
-        <location filename="main_window.ui" line="930"/>
+        <location filename="main_window.ui" line="975"/>
+        <location filename="main_window.ui" line="1020"/>
         <source>... or Selected</source>
         <translation>... 或选中</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="890"/>
-        <location filename="main_window.ui" line="935"/>
+        <location filename="main_window.ui" line="980"/>
+        <location filename="main_window.ui" line="1025"/>
         <source>... a&amp;nd not Selected</source>
         <translation>... 与非选中(&amp;N)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="893"/>
-        <location filename="main_window.ui" line="938"/>
+        <location filename="main_window.ui" line="983"/>
+        <location filename="main_window.ui" line="1028"/>
         <source>... and not Selected</source>
         <translation>... 与非选中</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="898"/>
-        <location filename="main_window.ui" line="943"/>
+        <location filename="main_window.ui" line="988"/>
+        <location filename="main_window.ui" line="1033"/>
         <source>... o&amp;r not Selected</source>
         <translation>... 或非选中(&amp;R)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="901"/>
-        <location filename="main_window.ui" line="946"/>
+        <location filename="main_window.ui" line="991"/>
+        <location filename="main_window.ui" line="1036"/>
         <source>... or not Selected</source>
         <translation>... 或非选中</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="951"/>
+        <location filename="main_window.ui" line="1041"/>
         <source>Display Filters...</source>
         <translation>显示筛选器...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="956"/>
+        <location filename="main_window.ui" line="1046"/>
         <source>Display Filter &amp;Macros...</source>
         <translation>显示筛选器宏(&amp;M)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="961"/>
+        <location filename="main_window.ui" line="1051"/>
         <source>Apply as Column</source>
         <translation>应用为列</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="966"/>
+        <location filename="main_window.ui" line="1056"/>
         <source>&amp;Find Packet...</source>
         <translation>查找分组(&amp;F)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="969"/>
+        <location filename="main_window.ui" line="1059"/>
         <source>Find a packet</source>
         <translation>查找一个分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="972"/>
+        <location filename="main_window.ui" line="1062"/>
         <source>Ctrl+F</source>
         <translation>Ctrl+F</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="977"/>
+        <location filename="main_window.ui" line="1067"/>
         <source>Find Ne&amp;xt...</source>
         <translation>查找下一个(&amp;X)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="980"/>
+        <location filename="main_window.ui" line="1070"/>
         <source>Find the next packet</source>
         <translation>查找下一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="983"/>
+        <location filename="main_window.ui" line="1073"/>
         <source>Ctrl+N</source>
         <translation>Ctrl+N</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="988"/>
+        <location filename="main_window.ui" line="1078"/>
         <source>Find Pre&amp;vious...</source>
         <translation>查找上一个(&amp;V)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="991"/>
+        <location filename="main_window.ui" line="1081"/>
         <source>Find the previous packet</source>
         <translation>查找上一分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="994"/>
+        <location filename="main_window.ui" line="1084"/>
         <source>Ctrl+B</source>
         <translation>Ctrl+B</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="999"/>
+        <location filename="main_window.ui" line="1089"/>
         <source>&amp;Mark/Unmark Packet</source>
         <translation>标记/取消标记分组(&amp;M)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1002"/>
+        <location filename="main_window.ui" line="1092"/>
         <source>Mark or unmark this packet</source>
         <translation>标记或取消标记该分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1005"/>
+        <location filename="main_window.ui" line="1095"/>
         <source>Ctrl+M</source>
         <translation>Ctrl+M</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1010"/>
+        <location filename="main_window.ui" line="1100"/>
         <source>Mark All Displayed</source>
         <translation>标记所有显示的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1013"/>
+        <location filename="main_window.ui" line="1103"/>
         <source>Mark all displayed packets</source>
         <translation>标记所有已经显示的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1016"/>
+        <location filename="main_window.ui" line="1106"/>
         <source>Ctrl+Shift+M</source>
         <translation>Ctrl+Shift+M</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1021"/>
+        <location filename="main_window.ui" line="1111"/>
         <source>Unmark All Displayed</source>
         <translation>取消标记所有显示的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1024"/>
+        <location filename="main_window.ui" line="1114"/>
         <source>Unmark all displayed packets</source>
         <translation>取消标记所有已经显示的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1027"/>
+        <location filename="main_window.ui" line="1117"/>
         <source>Meta+Alt+M</source>
         <translation>Meta+Alt+M</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1032"/>
+        <location filename="main_window.ui" line="1122"/>
         <source>Next Mark</source>
         <translation>下一标记</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1035"/>
+        <location filename="main_window.ui" line="1125"/>
         <source>Go to the next marked packet</source>
         <translation>转到下一个已标记的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1038"/>
+        <location filename="main_window.ui" line="1128"/>
         <source>Meta+Shift+N</source>
         <translation>Meta+Shift+N</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1043"/>
+        <location filename="main_window.ui" line="1133"/>
         <source>Previous Mark</source>
         <translation>前一标记</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1046"/>
+        <location filename="main_window.ui" line="1136"/>
         <source>Go to the previous marked packet</source>
         <translation>转到前一个已标记的分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1049"/>
+        <location filename="main_window.ui" line="1139"/>
         <source>Meta+Shift+B</source>
         <translation>Meta+Shift+B</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1054"/>
+        <location filename="main_window.ui" line="1144"/>
         <source>&amp;Ignore/Unignore Packet</source>
         <translation>忽略/取消忽略分组(&amp;I)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1057"/>
+        <location filename="main_window.ui" line="1147"/>
         <source>Ignore or unignore this packet</source>
         <translation>忽略或取消忽略该分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1060"/>
-        <source>Meta+X</source>
-        <translation>Meta+X</translation>
+        <location filename="main_window.ui" line="1150"/>
+        <source>Ctrl+D</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1065"/>
-        <source>Ignore All Displayed</source>
-        <translation>忽略所有显示的分组</translation>
+        <location filename="main_window.ui" line="1172"/>
+        <source>Ctrl+Alt+D</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1068"/>
-        <source>Ignore all displayed packets</source>
-        <translation>忽略所有已经显示的分组</translation>
+        <location filename="main_window.ui" line="1277"/>
+        <source>Summary</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1071"/>
-        <source>Meta+Alt+Shift+X</source>
-        <translation>Meta+Alt+Shift+X</translation>
+        <location filename="main_window.ui" line="1285"/>
+        <source>Protocol Hierarchy</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1076"/>
-        <source>Unignore All Displayed</source>
-        <translation>取消忽略所有显示的分组</translation>
+        <location filename="main_window.ui" line="1290"/>
+        <source>Capinfos</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1079"/>
-        <source>Unignore all displayed packets</source>
-        <translation>取消忽略所有已经显示的分组</translation>
+        <location filename="main_window.ui" line="1295"/>
+        <source>Reordercap</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1082"/>
-        <source>Meta+Shift+X</source>
-        <translation>Meta+Shift+X</translation>
+        <location filename="main_window.ui" line="1300"/>
+        <source>Time Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1087"/>
-        <source>Set/Unset Time Reference</source>
-        <translation>设置/取消设置时间参考</translation>
+        <location filename="main_window.ui" line="1303"/>
+        <source>TCP time sequence graph (Stevens)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1090"/>
-        <source>Set or unset a time reference for this packet</source>
-        <translation>设置或取消设置该分组的时间参考</translation>
+        <location filename="main_window.ui" line="1308"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1093"/>
-        <source>Ctrl+T</source>
-        <translation>Ctrl+T</translation>
+        <location filename="main_window.ui" line="1311"/>
+        <source>TCP througput</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1098"/>
-        <source>Unset All Time References</source>
-        <translation>取消设置所有时间参考</translation>
+        <location filename="main_window.ui" line="1316"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1101"/>
-        <source>Remove all time references</source>
-        <translation>移除所有时间参考</translation>
+        <location filename="main_window.ui" line="1319"/>
+        <source>TCP round trip time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1104"/>
-        <source>Ctrl+Alt+T</source>
-        <translation>Ctrl+Alt+T</translation>
+        <location filename="main_window.ui" line="1324"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1109"/>
-        <source>Next Time Reference</source>
-        <translation>下一时间参考</translation>
+        <location filename="main_window.ui" line="1327"/>
+        <source>TCP window scaling</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1112"/>
-        <source>Go to the next time reference</source>
-        <translation>转到下一个时间参考</translation>
+        <location filename="main_window.ui" line="1335"/>
+        <source>Follow TCP Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1115"/>
-        <source>Ctrl+Alt+N</source>
-        <translation>Ctrl+Alt+N</translation>
+        <location filename="main_window.ui" line="1343"/>
+        <source>Follow UDP Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1120"/>
-        <source>Previous Time Reference</source>
-        <translation>前一时间参考</translation>
+        <location filename="main_window.ui" line="1351"/>
+        <source>Follow SSL Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1123"/>
-        <source>Go to the previous time reference</source>
-        <translation>转到前一时间参考</translation>
+        <location filename="main_window.ui" line="1356"/>
+        <source>Time Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1126"/>
-        <source>Ctrl+Alt+B</source>
-        <translation>Ctrl+Alt+B</translation>
+        <location filename="main_window.ui" line="1359"/>
+        <source>TCP time sequence graph (tcptrace)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1131"/>
-        <source>Time Shift...</source>
-        <translation>时间平移...</translation>
+        <location filename="main_window.ui" line="1364"/>
+        <source>Analyse this Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1134"/>
-        <source>Shift or change packet timestamps</source>
+        <location filename="main_window.ui" line="1369"/>
+        <source>Show All Associations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1374"/>
+        <source>Flow Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1377"/>
+        <source>Flow sequence diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1382"/>
+        <source>ANCP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1385"/>
+        <source>ANCP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1390"/>
+        <source>Packets sorted by Instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1393"/>
+        <source>BACapp statistics sorted by instance ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1398"/>
+        <source>Packets sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1401"/>
+        <source>BACapp statistics sorted by IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1406"/>
+        <source>Packets sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1409"/>
+        <source>BACapp statistics sorted by object type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1414"/>
+        <source>Packets sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1417"/>
+        <source>BACapp statistics sorted by service</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1422"/>
+        <source>Collectd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1425"/>
+        <source>Collectd statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1430"/>
+        <source>HART-IP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1433"/>
+        <source>HART-IP statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1438"/>
+        <location filename="main_window.ui" line="1486"/>
+        <source>Packet Counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1441"/>
+        <source>HTTP packet counter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1446"/>
+        <source>Requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1449"/>
+        <source>HTTP requests</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1454"/>
+        <source>Load Distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1457"/>
+        <source>HTTP load distribution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1462"/>
+        <source>Packet Lengths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1465"/>
+        <source>Packet length statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1470"/>
+        <source>Sametime</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1473"/>
+        <source>Sametime statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1478"/>
+        <source>&amp;ISUP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1481"/>
+        <source>ISUP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1489"/>
+        <source>RTSP packet counts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1494"/>
+        <source>SM&amp;PP Operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1497"/>
+        <source>SMPP operation statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1502"/>
+        <source>&amp;UCP Messages</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1505"/>
+        <source>UCP message statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1510"/>
+        <source>Decode &amp;As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1513"/>
+        <source>Change the way packets are dissected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1518"/>
+        <location filename="main_window.ui" line="1521"/>
+        <source>Filter this Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Meta+X</source>
+        <translation type="obsolete">Meta+X</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1155"/>
+        <source>Ignore All Displayed</source>
+        <translation>忽略所有显示的分组</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1158"/>
+        <source>Ignore all displayed packets</source>
+        <translation>忽略所有已经显示的分组</translation>
+    </message>
+    <message>
+        <source>Meta+Alt+Shift+X</source>
+        <translation type="obsolete">Meta+Alt+Shift+X</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1166"/>
+        <source>Unignore All Displayed</source>
+        <translation>取消忽略所有显示的分组</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1169"/>
+        <source>Unignore all displayed packets</source>
+        <translation>取消忽略所有已经显示的分组</translation>
+    </message>
+    <message>
+        <source>Meta+Shift+X</source>
+        <translation type="obsolete">Meta+Shift+X</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1177"/>
+        <source>Set/Unset Time Reference</source>
+        <translation>设置/取消设置时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1180"/>
+        <source>Set or unset a time reference for this packet</source>
+        <translation>设置或取消设置该分组的时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1183"/>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1188"/>
+        <source>Unset All Time References</source>
+        <translation>取消设置所有时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1191"/>
+        <source>Remove all time references</source>
+        <translation>移除所有时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1194"/>
+        <source>Ctrl+Alt+T</source>
+        <translation>Ctrl+Alt+T</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1199"/>
+        <source>Next Time Reference</source>
+        <translation>下一时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1202"/>
+        <source>Go to the next time reference</source>
+        <translation>转到下一个时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1205"/>
+        <source>Ctrl+Alt+N</source>
+        <translation>Ctrl+Alt+N</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1210"/>
+        <source>Previous Time Reference</source>
+        <translation>前一时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1213"/>
+        <source>Go to the previous time reference</source>
+        <translation>转到前一时间参考</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1216"/>
+        <source>Ctrl+Alt+B</source>
+        <translation>Ctrl+Alt+B</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1221"/>
+        <source>Time Shift...</source>
+        <translation>时间平移...</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1224"/>
+        <source>Shift or change packet timestamps</source>
         <translation>平移或更改分组时间戳</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1137"/>
+        <location filename="main_window.ui" line="1227"/>
         <source>Ctrl+Shift+T</source>
         <translation>Ctrl+Shift+T</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1142"/>
+        <location filename="main_window.ui" line="1232"/>
         <source>Packet Comment...</source>
         <translation>分组注释...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1145"/>
+        <location filename="main_window.ui" line="1235"/>
         <source>Add or change a packet comment</source>
         <translation>添加或更改分组注释</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1153"/>
         <source>Name set in iconText to keep QMenuBar from grabbing it on OS X</source>
-        <translation>iconText 中设置的名称,避免在 OS X 上被 QMenuBar 捕获</translation>
+        <translation type="obsolete">iconText 中设置的名称,避免在 OS X 上被 QMenuBar 捕获</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1156"/>
+        <location filename="main_window.ui" line="1243"/>
         <source>Configuration Profiles...</source>
         <translation>修改配置文件...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1159"/>
+        <location filename="main_window.ui" line="1246"/>
+        <source>Configuration profiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="1249"/>
         <source>Manage your configuration profiles</source>
         <translation>管理配置文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1170"/>
+        <location filename="main_window.ui" line="1260"/>
         <source>&amp;Preferences...</source>
         <translation>偏好设置(&amp;P)...</translation>
     </message>
@@ -1564,7 +2697,7 @@ Wireshark 的更多信息</translation>
         <translation type="obsolete">管理配置文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1162"/>
+        <location filename="main_window.ui" line="1252"/>
         <source>Ctrl+Shift+A</source>
         <translation>Ctrl+Shift+A</translation>
     </message>
@@ -1573,419 +2706,496 @@ Wireshark 的更多信息</translation>
         <translation type="obsolete">偏好设置...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1173"/>
+        <location filename="main_window.ui" line="1263"/>
         <source>Manage Wireshark&apos;s preferences</source>
         <translation>管理 Wireshark 的偏好设置</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="1176"/>
+        <location filename="main_window.ui" line="1266"/>
         <source>Ctrl+Shift+P</source>
         <translation>Ctrl+Shift+P</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="699"/>
+        <location filename="main_window.ui" line="783"/>
         <source>Export specified packets</source>
         <translation>导出指定分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="704"/>
+        <location filename="main_window.ui" line="298"/>
+        <source>SCTP</source>
+        <translation type="unfinished">SCTP</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="322"/>
+        <source>Statistics</source>
+        <translation type="unfinished">统计</translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="326"/>
+        <source>TCP Stream Graphs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="336"/>
+        <source>BACnet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="345"/>
+        <source>HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="367"/>
+        <source>Telephony</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="371"/>
+        <source>RTSP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="742"/>
+        <source>&amp;Import from Hex Dump...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.ui" line="788"/>
         <source>Export Packet &amp;Bytes...</source>
         <translation>导出分组字节流(&amp;B)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="707"/>
+        <location filename="main_window.ui" line="791"/>
         <source>Ctrl+H</source>
         <translation>Ctrl+H</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="712"/>
+        <location filename="main_window.ui" line="796"/>
         <source>Export SSL Session Keys...</source>
         <translation>导出 SSL 会话密钥...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="717"/>
+        <location filename="main_window.ui" line="801"/>
         <source>&amp;Print...</source>
         <translation>打印(&amp;P)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="720"/>
+        <location filename="main_window.ui" line="804"/>
         <source>Ctrl+P</source>
         <translation>Ctrl+P</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="725"/>
+        <location filename="main_window.ui" line="809"/>
         <source>List Files</source>
         <translation>列出文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="730"/>
+        <location filename="main_window.ui" line="814"/>
         <source>Next File</source>
         <translation>下一文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="735"/>
+        <location filename="main_window.ui" line="819"/>
         <source>Previous File</source>
         <translation>上一文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="740"/>
+        <location filename="main_window.ui" line="824"/>
         <source>&amp;Reload</source>
         <translation>重新加载(&amp;R)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="743"/>
+        <location filename="main_window.ui" line="827"/>
         <source>Reload the current file</source>
         <translation>重新加载当前文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="746"/>
-        <location filename="main_window.ui" line="784"/>
+        <location filename="main_window.ui" line="830"/>
+        <location filename="main_window.ui" line="874"/>
         <source>Ctrl+R</source>
         <translation>Ctrl+R</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="751"/>
+        <location filename="main_window.ui" line="835"/>
         <source>&amp;Options...</source>
         <translation>选项(&amp;O)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="754"/>
+        <location filename="main_window.ui" line="841"/>
         <source>Capture options</source>
         <translation>捕获选项</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="757"/>
+        <location filename="main_window.ui" line="844"/>
         <source>Ctrl+K</source>
         <translation>Ctrl+K</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="762"/>
+        <location filename="main_window.ui" line="852"/>
         <source>Capture &amp;Filters...</source>
         <translation>捕获筛选器(&amp;F)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="765"/>
+        <location filename="main_window.ui" line="855"/>
         <source>Capture filters</source>
         <translation>捕获筛选器</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="770"/>
+        <location filename="main_window.ui" line="860"/>
         <source>Refresh Interfaces</source>
         <translation>刷新接口列表</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="773"/>
+        <location filename="main_window.ui" line="863"/>
         <source>Refresh interfaces</source>
         <translation>刷新接口列表</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="778"/>
+        <location filename="main_window.ui" line="868"/>
         <source>&amp;Restart</source>
         <translation>重新开始(&amp;R)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="781"/>
+        <location filename="main_window.ui" line="871"/>
         <source>Restart current capture</source>
         <translation>重新开始当前捕获</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="418"/>
+        <location filename="main_window.ui" line="502"/>
         <source>Stop capturing packets</source>
         <translation>停止捕获分组</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="426"/>
+        <location filename="main_window.ui" line="510"/>
         <source>Close</source>
         <translation>关闭</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="432"/>
+        <location filename="main_window.ui" line="516"/>
         <source>Ctrl+W</source>
         <translation>Ctrl+W</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="440"/>
+        <location filename="main_window.ui" line="524"/>
         <source>No files found</source>
         <translation>未找到文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="449"/>
+        <location filename="main_window.ui" line="533"/>
         <source>&amp;Contents</source>
         <translation>内容(&amp;C)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="452"/>
+        <location filename="main_window.ui" line="536"/>
         <source>F1</source>
         <translation>F1</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="536"/>
+        <location filename="main_window.ui" line="620"/>
         <source>&amp;About Wireshark</source>
         <translation>关于 Wireshark (&amp;A)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="465"/>
+        <location filename="main_window.ui" line="549"/>
         <source>Wireshark Filter</source>
         <translation>Wireshark 筛选器</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="380"/>
+        <location filename="main_window.ui" line="464"/>
         <source>&amp;Interfaces...</source>
         <translation>接口列表(&amp;I)...</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="383"/>
+        <location filename="main_window.ui" line="467"/>
         <source>Show interface details</source>
         <translation>显示接口详情</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="386"/>
+        <location filename="main_window.ui" line="470"/>
         <source>Ctrl+I</source>
         <translation>Ctrl+I</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="400"/>
+        <location filename="main_window.ui" line="484"/>
         <source>&amp;Start</source>
         <translation>开始(&amp;S)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="406"/>
-        <location filename="main_window.ui" line="421"/>
+        <location filename="main_window.ui" line="490"/>
+        <location filename="main_window.ui" line="505"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="415"/>
+        <location filename="main_window.ui" line="499"/>
         <source>S&amp;top</source>
         <translation>停止(&amp;T)</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="429"/>
+        <location filename="main_window.ui" line="513"/>
         <source>Close the current capture file</source>
         <translation>关闭当前捕获文件</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="470"/>
+        <location filename="main_window.ui" line="554"/>
         <source>TShark</source>
         <translation>TShark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="475"/>
+        <location filename="main_window.ui" line="559"/>
         <source>RawShark</source>
         <translation>RawShark</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="480"/>
+        <location filename="main_window.ui" line="564"/>
         <source>Dumpcap</source>
         <translation>Dumpcap</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="485"/>
+        <location filename="main_window.ui" line="569"/>
         <source>Mergecap</source>
         <translation>Mergecap</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="490"/>
+        <location filename="main_window.ui" line="574"/>
         <source>Editcap</source>
         <translation>Editcap</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="495"/>
+        <location filename="main_window.ui" line="579"/>
         <source>Text2cap</source>
         <translation>Text2cap</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="500"/>
+        <location filename="main_window.ui" line="584"/>
         <source>Website</source>
         <translation>网站</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="505"/>
+        <location filename="main_window.ui" line="589"/>
         <source>FAQ&apos;s</source>
         <translation>常见问题</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="510"/>
+        <location filename="main_window.ui" line="594"/>
         <source>Downloads</source>
         <translation>下载</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="519"/>
+        <location filename="main_window.ui" line="603"/>
         <source>Wiki</source>
         <translation>Wiki</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="527"/>
+        <location filename="main_window.ui" line="611"/>
         <source>Sample Captures</source>
         <translation>示例捕获</translation>
     </message>
     <message>
-        <location filename="main_window.ui" line="551"/>
+        <location filename="main_window.ui" line="635"/>
         <source>Ask (Q&amp;&amp;A)</source>
         <translation>提问 (问答平台) (&amp;A)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="285"/>
+        <location filename="main_window_slots.cpp" line="406"/>
         <source>Loading: %1</source>
         <translation>正在加载: %1</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="435"/>
-        <location filename="main_window_slots.cpp" line="119"/>
+        <location filename="main_window.cpp" line="605"/>
+        <location filename="main_window_slots.cpp" line="140"/>
         <source>Invalid Display Filter</source>
         <translation>显示筛选器无效</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="436"/>
+        <location filename="main_window.cpp" line="606"/>
         <source>The filter expression %1 isn&apos;t a valid display filter. (%2).</source>
         <translation>筛选器表达式 %1 不是有效的显示筛选器 (%2)。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="369"/>
+        <location filename="main_window.cpp" line="539"/>
         <source>Save packets before merging?</source>
         <translation>是否在合并之前保存分组?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="370"/>
+        <location filename="main_window.cpp" line="183"/>
+        <source>Check for Updates...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="187"/>
+        <source>splitterMaster</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="188"/>
+        <source>splitterExtra</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="191"/>
+        <source>emptyPane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="540"/>
         <source>A temporary capture file can&apos;t be merged.</source>
         <translation>无法合并临时捕获文件。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="376"/>
+        <location filename="main_window.cpp" line="546"/>
         <source>Save changes in &quot;%1&quot; before merging?</source>
         <translation>是否在合并前保存对“%1”的改动?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="378"/>
+        <location filename="main_window.cpp" line="548"/>
         <source>Changes must be saved before the files can be merged.</source>
         <translation>文件在合并之前,其改动必须先保存。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="523"/>
+        <location filename="main_window.cpp" line="693"/>
         <source> before importing a new capture</source>
         <translation> 导入新捕获前</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="830"/>
+        <location filename="main_window.cpp" line="1006"/>
         <source>Unable to export to &quot;%1&quot;.</source>
         <translation>无法导出“%1”。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="831"/>
+        <location filename="main_window.cpp" line="1007"/>
         <source>You cannot export packets to the current capture file.</source>
         <translation>您不能将分组导出到当前捕获文件。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="917"/>
-        <location filename="main_window.cpp" line="942"/>
+        <location filename="main_window.cpp" line="1093"/>
+        <location filename="main_window.cpp" line="1118"/>
         <source>.</source>
         <translation>.</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="981"/>
+        <location filename="main_window.cpp" line="1156"/>
         <source>You have unsaved packets</source>
         <translation>您有未保存的分组</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="982"/>
+        <location filename="main_window.cpp" line="1157"/>
         <source>They will be lost if you don&apos;t save them.</source>
         <translation>若不保存,这些分组将会丢失。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="985"/>
-        <location filename="main_window.cpp" line="998"/>
+        <location filename="main_window.cpp" line="1160"/>
+        <location filename="main_window.cpp" line="1173"/>
         <source>Do you want to stop the capture and save the captured packets</source>
         <translation>是否希望停止捕获,并保存已捕获的分组</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="987"/>
+        <location filename="main_window.cpp" line="1162"/>
         <source>Do you want to save the captured packets</source>
         <translation>是否希望保存已捕获的分组</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="989"/>
-        <location filename="main_window.cpp" line="999"/>
+        <location filename="main_window.cpp" line="1164"/>
+        <location filename="main_window.cpp" line="1174"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1000"/>
+        <location filename="main_window.cpp" line="1175"/>
         <source>Your captured packets will be lost if you don&apos;t save them.</source>
         <translation>若不保存,您已经捕获的分组将会丢失。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1003"/>
+        <location filename="main_window.cpp" line="1178"/>
         <source>Do you want to save the changes you&apos;ve made to the capture file &quot;%1&quot;%2?</source>
         <translation>是否希望保存对捕获文件“%1”%2 的更改?</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1008"/>
+        <location filename="main_window.cpp" line="1183"/>
         <source>Your changes will be lost if you don&apos;t save them.</source>
         <translation>若不保存,您的更改将会丢失。</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1020"/>
+        <location filename="main_window.cpp" line="1195"/>
         <source>Stop and Save</source>
         <translation>停止并保存</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1028"/>
+        <location filename="main_window.cpp" line="1203"/>
         <source>Stop and Quit without Saving</source>
         <oldsource>Stop and Quit without Saving)</oldsource>
         <translation>停止,并且不保存直接退出</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1030"/>
+        <location filename="main_window.cpp" line="1206"/>
         <source>Quit without Saving</source>
         <translation>不保存,直接退出</translation>
     </message>
     <message>
-        <location filename="main_window.cpp" line="1034"/>
+        <location filename="main_window.cpp" line="1211"/>
         <source>Stop and Continue without Saving</source>
         <translation>停止并继续,而不必保存</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="541"/>
+        <location filename="main_window.cpp" line="1338"/>
+        <source>(File name can&apos;t be mapped to UTF-8)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window.cpp" line="1350"/>
+        <location filename="main_window.cpp" line="1356"/>
+        <location filename="main_window.cpp" line="1371"/>
+        <source>The Wireshark Network Analyzer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="706"/>
         <source>Clear Menu</source>
         <translation>清除菜单</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1019"/>
+        <location filename="main_window_slots.cpp" line="1132"/>
+        <source>Please wait while Wireshark is initializing . . .</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_slots.cpp" line="1271"/>
         <source>Wireshark: Export Selected Packet Bytes</source>
         <translation>Wireshark: 导出选中分组的字节流</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1021"/>
+        <location filename="main_window_slots.cpp" line="1273"/>
         <source>Raw data (*.bin *.dat *.raw);;Any File (*.*)</source>
         <translation>原始数据 (*.bin *.dat *.raw);;任意文件 (*.*)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1062"/>
+        <location filename="main_window_slots.cpp" line="1314"/>
         <source>No Keys</source>
         <translation>无密钥</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1063"/>
+        <location filename="main_window_slots.cpp" line="1315"/>
         <source>There are no SSL Session Keys to save.</source>
         <translation>没有可以保存的 SSL 会话密钥。</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1074"/>
+        <location filename="main_window_slots.cpp" line="1326"/>
         <source>SSL Session Keys (*.keys *.txt);;Any File (*.*)</source>
         <translation>SSL 会话密钥 (*.keys *.txt);;任意文件 (*.*)</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1169"/>
+        <location filename="main_window_slots.cpp" line="1421"/>
         <source>Couldn&apos;t copy text. Try another item.</source>
         <translation>无法复制文本。请尝试其他对象。</translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1339"/>
+        <location filename="main_window_slots.cpp" line="1591"/>
         <source>No filter available. Try another </source>
         <translation>无筛选器可用。请尝试其他 </translation>
     </message>
     <message>
-        <location filename="main_window_slots.cpp" line="1610"/>
+        <location filename="main_window_slots.cpp" line="2128"/>
         <source>No Interface Selected</source>
         <translation>未选中接口</translation>
     </message>
@@ -1993,87 +3203,163 @@ Wireshark 的更多信息</translation>
 <context>
     <name>MainWindowPreferencesFrame</name>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="14"/>
+        <location filename="main_window_preferences_frame.ui" line="26"/>
         <source>Frame</source>
         <translation>帧</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="29"/>
+        <location filename="main_window_preferences_frame.ui" line="41"/>
         <source>Checking this will save the size, position, and maximized state of the main window.</source>
         <translation>选中本项将保持主窗口的大小、位置及最大化状态。</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="32"/>
+        <location filename="main_window_preferences_frame.ui" line="44"/>
         <source>Remember main window size and placement</source>
         <translation>记住主窗口的大小及位置</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="39"/>
+        <location filename="main_window_preferences_frame.ui" line="51"/>
         <source>Open files in</source>
         <translation>打开文件夹中的文件</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="48"/>
+        <location filename="main_window_preferences_frame.ui" line="60"/>
         <source>This folder:</source>
         <translation>该文件夹:</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="61"/>
         <source>Choose...</source>
-        <translation>选择...</translation>
+        <translation type="obsolete">选择...</translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="73"/>
+        <source>Browse...</source>
+        <translation type="unfinished">浏览...</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="68"/>
+        <location filename="main_window_preferences_frame.ui" line="80"/>
         <source>The most recently used folder</source>
         <translation>最近使用的文件夹</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="80"/>
+        <location filename="main_window_preferences_frame.ui" line="92"/>
         <source>Show up to</source>
         <translation>显示最多</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="92"/>
+        <location filename="main_window_preferences_frame.ui" line="104"/>
         <source>filter entries</source>
         <translation>筛选器条目</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="119"/>
+        <location filename="main_window_preferences_frame.ui" line="131"/>
         <source>recent files</source>
         <translation>个最近文件</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="141"/>
+        <location filename="main_window_preferences_frame.ui" line="153"/>
         <source>Confirm unsaved capture files</source>
         <translation>确认未保存的捕获文件</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="148"/>
+        <location filename="main_window_preferences_frame.ui" line="160"/>
         <source>If checked the packet detail items will be automatically scrolled when they are expanded.</source>
         <translation>若选中,分组详情项目将随着展开而自动滚动。</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="151"/>
+        <location filename="main_window_preferences_frame.ui" line="163"/>
         <source>Automatically scroll packet details</source>
         <translation>自动滚动分组详情视图</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="160"/>
-        <location filename="main_window_preferences_frame.ui" line="170"/>
+        <location filename="main_window_preferences_frame.ui" line="172"/>
+        <location filename="main_window_preferences_frame.ui" line="182"/>
         <source>Percentage distance from the top to scroll packet details.</source>
         <translation>从顶部到滚动分组详情的百分比距离。</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.ui" line="163"/>
+        <location filename="main_window_preferences_frame.ui" line="175"/>
         <source>Packet detail scroll percentage:</source>
         <translation>分组详情滚动百分比:</translation>
     </message>
     <message>
-        <location filename="main_window_preferences_frame.cpp" line="134"/>
+        <location filename="main_window_preferences_frame.ui" line="206"/>
+        <source>Main toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="214"/>
+        <location filename="main_window_preferences_frame.ui" line="263"/>
+        <source>Icons only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="219"/>
+        <location filename="main_window_preferences_frame.ui" line="268"/>
+        <source>Text only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="224"/>
+        <location filename="main_window_preferences_frame.ui" line="273"/>
+        <source>Icons &amp; Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="249"/>
+        <source>Filter toolbar style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="298"/>
+        <source>Language: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="315"/>
+        <source>Auto-Detect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="320"/>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="main_window_preferences_frame.ui" line="325"/>
+        <source>Français</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="330"/>
+        <source>Deutsch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.ui" line="335"/>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main_window_preferences_frame.cpp" line="141"/>
         <source>Open Files In</source>
         <translation>打开文件夹中文件</translation>
     </message>
 </context>
+<context>
+    <name>ModulePreferencesScrollArea</name>
+    <message>
+        <location filename="module_preferences_scroll_area.ui" line="14"/>
+        <source>ScrollArea</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="473"/>
+        <location filename="module_preferences_scroll_area.cpp" line="492"/>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>PacketCommentDialog</name>
     <message>
@@ -2158,32 +3444,42 @@ Wireshark 的更多信息</translation>
 <context>
     <name>PacketList</name>
     <message>
-        <location filename="packet_list.cpp" line="250"/>
+        <location filename="packet_list.cpp" line="253"/>
+        <source>Follow...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="262"/>
+        <source>SCTP</source>
+        <translation type="unfinished">SCTP</translation>
+    </message>
+    <message>
+        <location filename="packet_list.cpp" line="271"/>
         <source>Apply as Filter</source>
         <translation>作为筛选器应用</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="259"/>
+        <location filename="packet_list.cpp" line="280"/>
         <source>Prepare a Filter</source>
         <translation>准备筛选器</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="268"/>
+        <location filename="packet_list.cpp" line="289"/>
         <source>Colorize with Filter</source>
         <translation>用筛选器着色</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="344"/>
+        <location filename="packet_list.cpp" line="365"/>
         <source>Copy</source>
         <translation>复制</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="351"/>
+        <location filename="packet_list.cpp" line="372"/>
         <source>Bytes</source>
         <translation>字节</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="670"/>
+        <location filename="packet_list.cpp" line="763"/>
         <source>Frame %1: %2 
 
 </source>
@@ -2192,17 +3488,17 @@ Wireshark 的更多信息</translation>
 </translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="673"/>
+        <location filename="packet_list.cpp" line="767"/>
         <source>[ Comment text exceeds %1. Stopping. ]</source>
         <translation>[ 注释文本超过 %1。正在停止。 ]</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="775"/>
+        <location filename="packet_list.cpp" line="871"/>
         <source>Change Time Display Format?</source>
         <translation>更改时间显示格式?</translation>
     </message>
     <message>
-        <location filename="packet_list.cpp" line="776"/>
+        <location filename="packet_list.cpp" line="872"/>
         <source>Time References don&apos;t work well with the currently selected Time Display Format.
 Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</source>
         <translation>时间参考与当前选中的时间显示格式搭配使用效果不佳。
@@ -2281,9 +3577,8 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
 <context>
     <name>PreferencesDialog</name>
     <message>
-        <location filename="preferences_dialog.ui" line="14"/>
         <source>Dialog</source>
-        <translation>对话框</translation>
+        <translation type="obsolete">对话框</translation>
     </message>
     <message>
         <location filename="preferences_dialog.ui" line="42"/>
@@ -2296,85 +3591,97 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
         <translation>布局</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="54"/>
+        <location filename="preferences_dialog.ui" line="51"/>
         <source>Columns</source>
         <translation>列</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="62"/>
+        <location filename="preferences_dialog.ui" line="56"/>
         <source>Font and Colors</source>
         <translation>字体与颜色</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="71"/>
+        <location filename="preferences_dialog.ui" line="62"/>
         <source>Capture</source>
         <translation>捕获</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="79"/>
         <source>Filter Expressions</source>
-        <translation>筛选器表达式</translation>
+        <translation type="obsolete">筛选器表达式</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="87"/>
         <source>Name Resolution</source>
-        <translation>名字解析</translation>
+        <translation type="obsolete">名字解析</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="95"/>
         <source>Protocols</source>
-        <translation>协议</translation>
+        <translation type="obsolete">协议</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="103"/>
         <source>Statistics</source>
-        <translation>统计</translation>
+        <translation type="obsolete">统计</translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="14"/>
+        <source>Wireshark: Preferences</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="111"/>
+        <location filename="preferences_dialog.ui" line="67"/>
+        <source>Filter Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="preferences_dialog.ui" line="72"/>
         <source>Advanced</source>
         <translation>高级</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="141"/>
+        <location filename="preferences_dialog.ui" line="99"/>
         <source>Search:</source>
         <translation>搜索:</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="170"/>
+        <location filename="preferences_dialog.ui" line="131"/>
         <source>Name</source>
         <translation>名称</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="175"/>
+        <location filename="preferences_dialog.ui" line="136"/>
         <source>Status</source>
         <translation>状态</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="180"/>
+        <location filename="preferences_dialog.ui" line="141"/>
         <source>Type</source>
         <translation>类型</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.ui" line="185"/>
+        <location filename="preferences_dialog.ui" line="146"/>
         <source>Value</source>
         <translation>值</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="343"/>
+        <location filename="preferences_dialog.cpp" line="472"/>
         <source>Unknown</source>
         <translation>未知</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="345"/>
+        <location filename="preferences_dialog.cpp" line="474"/>
         <source>Default</source>
         <translation>默认</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="347"/>
+        <location filename="preferences_dialog.cpp" line="476"/>
         <source>Changed</source>
         <translation>已更改</translation>
     </message>
+    <message>
+        <location filename="preferences_dialog.cpp" line="607"/>
+        <location filename="preferences_dialog.cpp" line="611"/>
+        <source>Wireshark: </source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PrintDialog</name>
@@ -2409,27 +3716,27 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
         <translation>分组范围</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="80"/>
+        <location filename="print_dialog.cpp" line="81"/>
         <source>&amp;Print...</source>
         <translation>打印(&amp;P)...</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="121"/>
+        <location filename="print_dialog.cpp" line="122"/>
         <source>Page &amp;Setup...</source>
         <translation>页面配置(&amp;S)...</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="156"/>
+        <location filename="print_dialog.cpp" line="157"/>
         <source>%1 %2 total packets, %3 shown</source>
         <translation>%1 %2 总分组数,%3 已显示</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="256"/>
+        <location filename="print_dialog.cpp" line="257"/>
         <source>Print Error</source>
         <translation>打印错误</translation>
     </message>
     <message>
-        <location filename="print_dialog.cpp" line="257"/>
+        <location filename="print_dialog.cpp" line="258"/>
         <source>Unable to print to %1.</source>
         <translation>无法打印至 %1。</translation>
     </message>
@@ -2457,17 +3764,17 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
         <translation>复制该配置文件。</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="158"/>
+        <location filename="profile_dialog.cpp" line="160"/>
         <source>Go to</source>
         <translation>转到</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="172"/>
+        <location filename="profile_dialog.cpp" line="173"/>
         <source>A profile already exists with that name.</source>
         <translation>已存在该名称的配置文件。</translation>
     </message>
     <message>
-        <location filename="profile_dialog.cpp" line="269"/>
+        <location filename="profile_dialog.cpp" line="272"/>
         <source>Profile Error</source>
         <translation>配置文件错误</translation>
     </message>
@@ -2475,42 +3782,42 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
 <context>
     <name>ProtoTree</name>
     <message>
-        <location filename="proto_tree.cpp" line="158"/>
+        <location filename="proto_tree.cpp" line="165"/>
         <source>Packet details</source>
         <translation>分组详情</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="167"/>
+        <location filename="proto_tree.cpp" line="176"/>
         <source>Apply as Filter</source>
         <translation>作为筛选器应用</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="175"/>
+        <location filename="proto_tree.cpp" line="184"/>
         <source>Prepare a Filter</source>
         <translation>准备筛选器</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="183"/>
+        <location filename="proto_tree.cpp" line="192"/>
         <source>Colorize with Filter</source>
         <translation>用筛选器着色</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="201"/>
+        <location filename="proto_tree.cpp" line="210"/>
         <source>Copy</source>
         <translation>复制</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="208"/>
+        <location filename="proto_tree.cpp" line="217"/>
         <source>Bytes</source>
         <translation>字节</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="278"/>
+        <location filename="proto_tree.cpp" line="295"/>
         <source>, 1 byte</source>
         <translation>, 1 字节</translation>
     </message>
     <message>
-        <location filename="proto_tree.cpp" line="280"/>
+        <location filename="proto_tree.cpp" line="297"/>
         <source>, %1 bytes</source>
         <translation>, %1 字节</translation>
     </message>
@@ -2518,290 +3825,2640 @@ Do you want to switch to &quot;Seconds Since Beginning of Capture&quot; now?</so
 <context>
     <name>QObject</name>
     <message>
-        <location filename="preferences_dialog.cpp" line="94"/>
+        <location filename="preferences_dialog.cpp" line="102"/>
         <source>Has this preference been changed?</source>
         <translation>该偏好设置是否已变更?</translation>
     </message>
     <message>
-        <location filename="preferences_dialog.cpp" line="98"/>
+        <location filename="preferences_dialog.cpp" line="106"/>
         <source>Default value is empty</source>
         <translation>默认值为空</translation>
     </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="169"/>
+        <source>Edit...</source>
+        <translation type="unfinished">编辑...</translation>
+    </message>
+    <message>
+        <location filename="module_preferences_scroll_area.cpp" line="196"/>
+        <source>Browse...</source>
+        <translation type="unfinished">浏览...</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="77"/>
+        <source>Avgerage Througput (bits/s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="78"/>
+        <source>Round Trip Time (ms)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="79"/>
+        <source>Segment Length (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="80"/>
+        <source>Sequence Number (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="81"/>
+        <source>Time (s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="82"/>
+        <source>Window Size (B)</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
-    <name>SearchFrame</name>
+    <name>SCTPAllAssocsDialog</name>
     <message>
-        <location filename="search_frame.ui" line="14"/>
-        <source>Frame</source>
-        <translation>帧</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="14"/>
+        <source>Wireshark - SCTP Associations</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="32"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;搜索分组列表 (概要窗格) 的“信息”列、解码分组显示标签 (树形视图窗格) 或转换为 ASCII 字符的分组数据 (十六进制视图窗格)。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="62"/>
+        <source>ID</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="36"/>
-        <source>Packet list</source>
-        <translation>分组列表</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="67"/>
+        <source>Port 1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="41"/>
-        <source>Packet details</source>
-        <translation>分组详情</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="72"/>
+        <source>Port 2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="46"/>
-        <source>Packet bytes</source>
-        <translation>分组字节流</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="77"/>
+        <source>Number of Packets</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="67"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;搜索包含窄字符集 (UTF-8 与 ASCII) 或宽字符集 (UTF-16) 的字符串。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="82"/>
+        <source>Number of DATA Chunks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="71"/>
-        <source>Narrow &amp; Wide</source>
-        <translation>宽窄</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="87"/>
+        <source>Number of Bytes</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="76"/>
-        <source>Narrow (UTF-8 / ASCII)</source>
-        <translation>窄 (UTF-8 / ASCII)</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="106"/>
+        <source>Filter Selected Association</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="81"/>
-        <source>Wide (UTF-16)</source>
-        <translation>宽 (UTF-16)</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="119"/>
+        <source>Analyze</source>
+        <translation type="unfinished">分析</translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="89"/>
-        <source>Case sensitive</source>
-        <translation>区分大小写</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="151"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="109"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;以显示筛选器语法 (如 ip.addr==10.1.1.1)、十六进制字符串 (如 fffffda5) 或纯字符串 (如 My String) 搜索数据。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="154"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="113"/>
-        <source>Display filter</source>
-        <translation>显示筛选器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="157"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="118"/>
-        <source>Hex value</source>
-        <translation>十六进制值</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="162"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="123"/>
-        <source>String</source>
-        <translation>字符串</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="165"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="141"/>
-        <source>Find</source>
-        <translation>查找</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="168"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.ui" line="148"/>
-        <source>Cancel</source>
-        <translation>取消</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="173"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="188"/>
-        <location filename="search_frame.cpp" line="282"/>
-        <source>No valid search type selected. Please report this to the development team.</source>
-        <translation>未选择有效的搜索类型。请将此问题报告给开发团队。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="176"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="236"/>
-        <source>Invalid filter.</source>
-        <translation>无效筛选器。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="179"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="242"/>
-        <source>That filter doesn&apos;t test anything.</source>
-        <translation>该筛选器未测试任何项目。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="184"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="250"/>
-        <source>That&apos;s not a valid hex string.</source>
-        <translation>不是有效的十六进制字符串。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="187"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="258"/>
-        <source>You didn&apos;t specify any text for which to search.</source>
-        <translation>您未指定任何要搜索的文本。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="190"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="275"/>
-        <source>No valid character set selected. Please report this to the development team.</source>
-        <translation>未选择有效的字符集。请将此问题报告给开发团队。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="195"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="298"/>
-        <source>No valid search area selected. Please report this to the development team.</source>
-        <translation>未选择有效的搜索范围。请将此问题报告给开发团队。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="198"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="312"/>
-        <source>No packet contained those bytes.</source>
-        <translation>无分组包含这些字节流。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="201"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="322"/>
-        <source>No packet contained that string in its Info column.</source>
-        <translation>无分组的“信息”列包含该字符串。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="206"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="331"/>
-        <source>No packet contained that string in its dissected display.</source>
-        <translation>无分组的解析视图包含该字符串。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="209"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="340"/>
-        <source>No packet contained that string in its converted data.</source>
-        <translation>无分组转换后的数据包含该字符串。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="212"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="search_frame.cpp" line="350"/>
-        <source>No packet matched that filter.</source>
-        <translation>无分组与该筛选器匹配。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="217"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>SplashOverlay</name>
     <message>
-        <location filename="splash_overlay.ui" line="17"/>
-        <source>Form</source>
-        <translation>表单</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="220"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="135"/>
-        <source>Initializing dissectors</source>
-        <translation>正在初始化解析器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="223"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="138"/>
-        <source>Initializing tap listeners</source>
-        <translation>正在初始化 tap 监听器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="228"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="141"/>
-        <source>Registering dissector</source>
-        <translation>正在注册解析器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="231"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="144"/>
-        <source>Registering plugins</source>
-        <translation>正在注册插件</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="234"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="147"/>
-        <source>Registering Python dissectors</source>
-        <translation>正在注册 Python 解析器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="239"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="150"/>
-        <source>Handing off dissector</source>
-        <translation>正在卸载解析器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="242"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="153"/>
-        <source>Handing off plugins</source>
-        <translation>正在卸载插件</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="245"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="156"/>
-        <source>Handing off Python dissectors</source>
-        <translation>正在卸载 Python 解析器</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="250"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="159"/>
-        <source>Loading Lua plugins</source>
-        <translation>正在加载 Lua 插件</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="253"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="162"/>
-        <source>Loading module preferences</source>
-        <translation>正在加载模块偏好设置</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="256"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished">Shift+Right</translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="165"/>
-        <source>Loading configuration files</source>
-        <translation>正在加载配置文件</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="261"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="splash_overlay.cpp" line="168"/>
-        <source>(Unknown action)</source>
-        <translation>(未知操作)</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="264"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>TimeShiftDialog</name>
     <message>
-        <location filename="time_shift_dialog.ui" line="20"/>
-        <source>Wireshark: Time Shift</source>
-        <translation>Wireshark: 时间平移</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="267"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="28"/>
-        <source>Shift all packets by</source>
-        <translation>平移所有分组</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="272"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="41"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="275"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="65"/>
-        <source>Set the time for packet</source>
-        <translation>设置分组时间</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="278"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="75"/>
-        <location filename="time_shift_dialog.ui" line="109"/>
-        <source>to</source>
-        <translation>为</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="283"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="99"/>
-        <source>...then set packet</source>
-        <translation>...然后设置分组</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="286"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="143"/>
-        <source>and extrapolate the time for all other packets</source>
-        <translation>并推算所有其他分组的时间</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="289"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="163"/>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="294"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.ui" line="172"/>
-        <source>Undo all shifts</source>
-        <translation>撤销所有平移</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="297"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="140"/>
-        <source>Frame numbers must be between 1 and %1.</source>
-        <translation>帧序号必须介于 1 与 %1。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="300"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="142"/>
-        <source>Invalid frame number.</source>
-        <translation>帧序号无效。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="305"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="time_shift_dialog.cpp" line="254"/>
-        <source>Time shifting is not available capturing packets.</source>
-        <translation>时间平移在捕获分组过程中不可用。</translation>
+        <location filename="sctp_all_assocs_dialog.ui" line="308"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="311"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="316"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="319"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="322"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="327"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="330"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="333"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="338"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="341"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="344"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="349"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="352"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="355"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="360"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="363"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="366"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="371"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="374"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="377"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="382"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="385"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="388"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="393"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="396"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="399"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="404"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="407"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_all_assocs_dialog.ui" line="410"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPAssocAnalyseDialog</name>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="20"/>
+        <source>Wireshark - Analyse Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="39"/>
+        <source>TabWidget</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="49"/>
+        <source>Statistics</source>
+        <translation type="unfinished">统计</translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="64"/>
+        <source>Chunk Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="80"/>
+        <source>Filter Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="96"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="340"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="525"/>
+        <source>Close</source>
+        <translation type="unfinished">关闭</translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="112"/>
+        <source>Number of Data Chunks from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="119"/>
+        <source>Checksum Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="126"/>
+        <source>Number of Data Chunks from EP1 to EP2: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="133"/>
+        <source>Number of Data Bytes from EP1 to EP2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="140"/>
+        <source>Number of Data Bytes from EP2 to EP1: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="147"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="154"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="168"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="175"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="258"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="272"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="286"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="300"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="307"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="314"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="321"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="423"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="430"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="465"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="472"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="479"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="493"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="184"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="199"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="384"/>
+        <source>Graph TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="215"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="400"/>
+        <source>Graph Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="228"/>
+        <source>Complete list of IP Addresses as provided in the INIT Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="244"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="416"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="148"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="201"/>
+        <source>Requested Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="251"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="451"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="265"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="437"/>
+        <source>Sent Verification Tag:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="279"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="458"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="150"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="203"/>
+        <source>Minimum Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="293"/>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="444"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="155"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="208"/>
+        <source>Minimum Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="363"/>
+        <source>Graph Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="369"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="486"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="153"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="206"/>
+        <source>Provided Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="509"/>
+        <source>Complete list of IP Addresses as provided in the INIT-ACK Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.ui" line="548"/>
+        <source>Graph a_rwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="51"/>
+        <source>SCTP Analyse Association: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="97"/>
+        <source>No Association found for this packet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="116"/>
+        <source>Complete list of IP-Addresses as provided in the INIT-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="118"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="172"/>
+        <source>Complete list of IP-Addresses as provided in the INITACK-Chunk</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="120"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="174"/>
+        <source>List of used IP-Addresses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="159"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="212"/>
+        <source>Used Number of Inbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="161"/>
+        <location filename="sctp_assoc_analyse_dialog.cpp" line="214"/>
+        <source>Used Number of Outbound Streams:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPChunkStatisticsDialog</name>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="20"/>
+        <source>Dialog</source>
+        <translation type="unfinished">对话框</translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="73"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="289"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="299"/>
+        <source>Association</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="78"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="290"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="300"/>
+        <source>Endpoint 1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="83"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="291"/>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="301"/>
+        <source>Endpoint 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="97"/>
+        <source>Save Chunk Type Order</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="102"/>
+        <source>Hide Chunk Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="105"/>
+        <source>Remove the chunk type from the table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="110"/>
+        <source>Chunk Type Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="113"/>
+        <source>Go to the chunk type preferences dialog to show or hide other chunk types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="118"/>
+        <source>Show All Registered Chunk Types</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.ui" line="121"/>
+        <source>Show all chunk types with defined names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_chunk_statistics_dialog.cpp" line="56"/>
+        <source>SCTP Chunk Statistics: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphArwndDialog</name>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="102"/>
+        <source>Arwnd</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="110"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="111"/>
+        <source>Advertised Receiver Window [Bytes]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_arwnd_dialog.cpp" line="156"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: a_rwnd=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphByteDialog</name>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="45"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="77"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="90"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="95"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.ui" line="98"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="41"/>
+        <source>SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="104"/>
+        <location filename="sctp_graph_byte_dialog.cpp" line="145"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="111"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="112"/>
+        <source>Received Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_byte_dialog.cpp" line="158"/>
+        <source>&lt;small&gt;&lt;i&gt;Graph %1: Received bytes=%2 Time=%3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SCTPGraphDialog</name>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="14"/>
+        <source>SCTP Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="45"/>
+        <source>Only SACKs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="61"/>
+        <source>Only TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="77"/>
+        <source>Show both</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="93"/>
+        <source>Reset to full size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="125"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="138"/>
+        <source>Save Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="143"/>
+        <source>goToPacket</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.ui" line="146"/>
+        <source>Go to Packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="41"/>
+        <source>SCTP TSNs and SACKs over Time: %1 Port1 %2 Port2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="44"/>
+        <source>No Data Chunks sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="205"/>
+        <source>CumTSNAck</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="218"/>
+        <source>Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="231"/>
+        <source>NR Gap Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="244"/>
+        <source>Duplicate Ack</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="294"/>
+        <source>TSN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="327"/>
+        <source>time [secs]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="328"/>
+        <source>TSNs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="409"/>
+        <source>&lt;small&gt;&lt;i&gt;%1: %2 Time: %3 secs &lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="419"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="420"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="421"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="423"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sctp_graph_dialog.cpp" line="430"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SearchFrame</name>
+    <message>
+        <location filename="search_frame.ui" line="14"/>
+        <source>Frame</source>
+        <translation>帧</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="32"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search the Info column of the packet list (summary pane), decoded packet display labels (tree view pane) or the ASCII-converted packet data (hex view pane).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;搜索分组列表 (概要窗格) 的“信息”列、解码分组显示标签 (树形视图窗格) 或转换为 ASCII 字符的分组数据 (十六进制视图窗格)。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="36"/>
+        <source>Packet list</source>
+        <translation>分组列表</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="41"/>
+        <source>Packet details</source>
+        <translation>分组详情</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="46"/>
+        <source>Packet bytes</source>
+        <translation>分组字节流</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="67"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;搜索包含窄字符集 (UTF-8 与 ASCII) 或宽字符集 (UTF-16) 的字符串。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="71"/>
+        <source>Narrow &amp; Wide</source>
+        <translation>宽窄</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="76"/>
+        <source>Narrow (UTF-8 / ASCII)</source>
+        <translation>窄 (UTF-8 / ASCII)</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="81"/>
+        <source>Wide (UTF-16)</source>
+        <translation>宽 (UTF-16)</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="89"/>
+        <source>Case sensitive</source>
+        <translation>区分大小写</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="109"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Search for data using display filter syntax (e.g. ip.addr==10.1.1.1), a hexadecimal string (e.g. fffffda5) or a plain string (e.g. My String).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;以显示筛选器语法 (如 ip.addr==10.1.1.1)、十六进制字符串 (如 fffffda5) 或纯字符串 (如 My String) 搜索数据。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="113"/>
+        <source>Display filter</source>
+        <translation>显示筛选器</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="118"/>
+        <source>Hex value</source>
+        <translation>十六进制值</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="123"/>
+        <source>String</source>
+        <translation>字符串</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="141"/>
+        <source>Find</source>
+        <translation>查找</translation>
+    </message>
+    <message>
+        <location filename="search_frame.ui" line="148"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="188"/>
+        <location filename="search_frame.cpp" line="282"/>
+        <source>No valid search type selected. Please report this to the development team.</source>
+        <translation>未选择有效的搜索类型。请将此问题报告给开发团队。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="236"/>
+        <source>Invalid filter.</source>
+        <translation>无效筛选器。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="242"/>
+        <source>That filter doesn&apos;t test anything.</source>
+        <translation>该筛选器未测试任何项目。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="250"/>
+        <source>That&apos;s not a valid hex string.</source>
+        <translation>不是有效的十六进制字符串。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="258"/>
+        <source>You didn&apos;t specify any text for which to search.</source>
+        <translation>您未指定任何要搜索的文本。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="275"/>
+        <source>No valid character set selected. Please report this to the development team.</source>
+        <translation>未选择有效的字符集。请将此问题报告给开发团队。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="298"/>
+        <source>No valid search area selected. Please report this to the development team.</source>
+        <translation>未选择有效的搜索范围。请将此问题报告给开发团队。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="312"/>
+        <source>No packet contained those bytes.</source>
+        <translation>无分组包含这些字节流。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="322"/>
+        <source>No packet contained that string in its Info column.</source>
+        <translation>无分组的“信息”列包含该字符串。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="331"/>
+        <source>No packet contained that string in its dissected display.</source>
+        <translation>无分组的解析视图包含该字符串。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="340"/>
+        <source>No packet contained that string in its converted data.</source>
+        <translation>无分组转换后的数据包含该字符串。</translation>
+    </message>
+    <message>
+        <location filename="search_frame.cpp" line="350"/>
+        <source>No packet matched that filter.</source>
+        <translation>无分组与该筛选器匹配。</translation>
+    </message>
+</context>
+<context>
+    <name>SequenceDialog</name>
+    <message>
+        <location filename="sequence_dialog.ui" line="14"/>
+        <source>Flow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="sequence_dialog.ui" line="51"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="73"/>
+        <source>&lt;small&gt;&lt;i&gt;A hint&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="82"/>
+        <source>Show:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="90"/>
+        <source>All packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="95"/>
+        <source>Displayed packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="116"/>
+        <source>Flow type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="139"/>
+        <source>Addresses:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="147"/>
+        <source>Any</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="152"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="190"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="209"/>
+        <source>Reset Diagram</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="212"/>
+        <source>Reset the diagram to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="215"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="220"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="223"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="226"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="231"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="234"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="237"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="242"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="245"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="248"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="253"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="256"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="259"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="264"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="267"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="270"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="275"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="278"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="281"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="286"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="289"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="292"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished">Shift+Right</translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="297"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="300"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="303"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="308"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="311"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="314"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="319"/>
+        <source>All Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="322"/>
+        <source>Show flows for all packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="325"/>
+        <location filename="sequence_dialog.ui" line="336"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="330"/>
+        <source>TCP Flows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.ui" line="333"/>
+        <source>Show only TCP flow information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="128"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="284"/>
+        <source>%Ln node(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="sequence_dialog.cpp" line="285"/>
+        <source>%Ln item(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="305"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="306"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="307"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="309"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="310"/>
+        <source>ASCII (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sequence_dialog.cpp" line="321"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SplashOverlay</name>
+    <message>
+        <location filename="splash_overlay.ui" line="17"/>
+        <source>Form</source>
+        <translation>表单</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="136"/>
+        <source>Initializing dissectors</source>
+        <translation>正在初始化解析器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="139"/>
+        <source>Initializing tap listeners</source>
+        <translation>正在初始化 tap 监听器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="142"/>
+        <source>Registering dissector</source>
+        <translation>正在注册解析器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="145"/>
+        <source>Registering plugins</source>
+        <translation>正在注册插件</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="148"/>
+        <source>Registering Python dissectors</source>
+        <translation>正在注册 Python 解析器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="151"/>
+        <source>Handing off dissector</source>
+        <translation>正在卸载解析器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="154"/>
+        <source>Handing off plugins</source>
+        <translation>正在卸载插件</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="157"/>
+        <source>Handing off Python dissectors</source>
+        <translation>正在卸载 Python 解析器</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="160"/>
+        <source>Loading Lua plugins</source>
+        <translation>正在加载 Lua 插件</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="163"/>
+        <source>Loading module preferences</source>
+        <translation>正在加载模块偏好设置</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="166"/>
+        <source>Loading configuration files</source>
+        <translation>正在加载配置文件</translation>
+    </message>
+    <message>
+        <location filename="splash_overlay.cpp" line="169"/>
+        <source>(Unknown action)</source>
+        <translation>(未知操作)</translation>
+    </message>
+</context>
+<context>
+    <name>StatsTreeDialog</name>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">对话框</translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="31"/>
+        <source>Display filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="41"/>
+        <source>Regenerate statistics using this display filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="44"/>
+        <source>Apply</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="63"/>
+        <location filename="stats_tree_dialog.cpp" line="98"/>
+        <source>Copy</source>
+        <translation type="unfinished">复制</translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="66"/>
+        <source>Copy a text representation of the tree to the clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="69"/>
+        <source>Ctrl+C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="74"/>
+        <location filename="stats_tree_dialog.cpp" line="101"/>
+        <source>Save as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="77"/>
+        <source>Save the stats_tree data in various formats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.ui" line="80"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished">Ctrl+S</translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="88"/>
+        <source>Configuration not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="89"/>
+        <source>Unable to find configuration for %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="133"/>
+        <source> Stats Tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="138"/>
+        <source>%1 already open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="139"/>
+        <source>Each type of tree can only be generated one at at time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="173"/>
+        <source>%1 failed to attach to tap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="278"/>
+        <source>Wireshark: Save stats tree as ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="279"/>
+        <source>Plain text file (*.txt);;Comma separated values (*.csv);;XML document (*.xml);;YAML document (*.yaml)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="283"/>
+        <source>Plain text file (*.txt)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="stats_tree_dialog.cpp" line="327"/>
+        <source>Error saving file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SummaryDialog</name>
+    <message>
+        <location filename="summary_dialog.ui" line="20"/>
+        <source>Wireshark - Summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="43"/>
+        <source>File capture details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="55"/>
+        <source>File</source>
+        <translation type="unfinished">文件</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="70"/>
+        <source>Name</source>
+        <translation type="unfinished">名称</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="77"/>
+        <location filename="summary_dialog.ui" line="91"/>
+        <location filename="summary_dialog.ui" line="105"/>
+        <location filename="summary_dialog.ui" line="119"/>
+        <location filename="summary_dialog.ui" line="161"/>
+        <location filename="summary_dialog.ui" line="175"/>
+        <location filename="summary_dialog.ui" line="189"/>
+        <location filename="summary_dialog.ui" line="407"/>
+        <location filename="summary_dialog.ui" line="421"/>
+        <source>/</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="84"/>
+        <source>Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="98"/>
+        <source>Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="112"/>
+        <source>Encapsulation</source>
+        <translation type="unfinished">封装</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="136"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="154"/>
+        <source>First packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="168"/>
+        <source>Last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="182"/>
+        <source>Elapsed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="206"/>
+        <source>Capture</source>
+        <translation type="unfinished">捕获</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="234"/>
+        <source>Capture file comments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="250"/>
+        <source>OS</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="257"/>
+        <location filename="summary_dialog.ui" line="271"/>
+        <location filename="summary_dialog.cpp" line="393"/>
+        <source>Unknown</source>
+        <translation type="unfinished">未知</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="264"/>
+        <source>Capture app</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="284"/>
+        <source>Capture statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="318"/>
+        <source>Traffic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="323"/>
+        <source>Captured</source>
+        <translation type="unfinished">已捕获</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="328"/>
+        <source>Displayed</source>
+        <translation type="unfinished">已显示</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="333"/>
+        <source>Marked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="363"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="368"/>
+        <source>Dropped packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="373"/>
+        <source>Capture filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="378"/>
+        <source>Link size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="383"/>
+        <source>Packet size limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="400"/>
+        <source>Display filter</source>
+        <translation type="unfinished">显示筛选器</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="414"/>
+        <source>Ignored packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.ui" line="430"/>
+        <source>Comment summary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="68"/>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="71"/>
+        <source>Copy To Clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="130"/>
+        <source>Summary created by Wireshark %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="133"/>
+        <source>File: 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="134"/>
+        <source>Name:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="135"/>
+        <source>Length:                %1 bytes
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="136"/>
+        <source>Format:                %1%2
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="138"/>
+        <location filename="summary_dialog.cpp" line="284"/>
+        <source> (gzip compressed)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="139"/>
+        <source>Encapsulation:         %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="144"/>
+        <source>Time:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="150"/>
+        <source>First packet:          %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="153"/>
+        <source>Last packet:           %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="157"/>
+        <source>Elapsed:               %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="164"/>
+        <source>Capture:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="173"/>
+        <source>OS:    %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="178"/>
+        <source>Capture application:   %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="187"/>
+        <source>Dropped packets:       %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="189"/>
+        <source>Capture filter:                %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="191"/>
+        <source>Link type:             %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="193"/>
+        <source>Packet size limit:     %1
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="200"/>
+        <source>Statistics:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="203"/>
+        <source>%1:    %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="215"/>
+        <source>Capture File Comments:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="230"/>
+        <source>Not representable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="281"/>
+        <source>%1 bytes (%2 Mbytes)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="377"/>
+        <location filename="summary_dialog.cpp" line="412"/>
+        <source>unknown</source>
+        <translation type="unfinished">未知</translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="408"/>
+        <location filename="summary_dialog.cpp" line="436"/>
+        <source>none</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="419"/>
+        <source>%u bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="460"/>
+        <source>Packets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="489"/>
+        <source>Between first and last packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="492"/>
+        <location filename="summary_dialog.cpp" line="504"/>
+        <location filename="summary_dialog.cpp" line="515"/>
+        <source>%.3f sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="531"/>
+        <source>Avg. packets/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="572"/>
+        <source>Avg. packet size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="575"/>
+        <location filename="summary_dialog.cpp" line="589"/>
+        <location filename="summary_dialog.cpp" line="602"/>
+        <source>%.3f bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="619"/>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="661"/>
+        <source>Avg. bytes/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="summary_dialog.cpp" line="705"/>
+        <source>Avg. MBit/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TCPStreamDialog</name>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">对话框</translation>
+    </message>
+    <message utf8="true">
+        <location filename="tcp_stream_dialog.ui" line="33"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
+
+&lt;h3&gt;Valuable and amazing time-saving keyboard shortcuts&lt;/h3&gt;
+&lt;table&gt;&lt;tbody&gt;
+
+&lt;tr&gt;&lt;th&gt;+&lt;/th&gt;&lt;td&gt;Zoom in&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;-&lt;/th&gt;&lt;td&gt;Zoom out&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;0&lt;/th&gt;&lt;td&gt;Reset graph to its initial state&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;→&lt;/th&gt;&lt;td&gt;Move right 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;←&lt;/th&gt;&lt;td&gt;Move left 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↑&lt;/th&gt;&lt;td&gt;Move up 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;↓&lt;/th&gt;&lt;td&gt;Move down 10 pixels&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;→&lt;/th&gt;&lt;td&gt;Move right 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;←&lt;/th&gt;&lt;td&gt;Move left 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↑&lt;/th&gt;&lt;td&gt;Move up 1 pixel&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Shift+&lt;/i&gt;↓&lt;/th&gt;&lt;td&gt;Move down 1 pixel&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Up&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Next stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;&lt;i&gt;Pg Dn&lt;/i&gt;&lt;/th&gt;&lt;td&gt;Previous stream&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;d&lt;/th&gt;&lt;td&gt;Switch direction (swap TCP endpoints)&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;g&lt;/th&gt;&lt;td&gt;Go to packet under cursor&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;z&lt;/th&gt;&lt;td&gt;Toggle mouse drag / zoom&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;s&lt;/th&gt;&lt;td&gt;Toggle relative / absolute sequence numbers&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;t&lt;/th&gt;&lt;td&gt;Toggle capture / session time origin&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;Space&lt;/th&gt;&lt;td&gt;Toggle crosshairs&lt;/td&gt;&lt;/th&gt;
+
+&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Round Trip Time graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Throughput graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;Stevens-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt;tcptrace-style Time / Sequence graph&lt;/td&gt;&lt;/th&gt;
+&lt;tr&gt;&lt;th&gt;5&lt;/th&gt;&lt;td&gt;Window Scaling graph&lt;/td&gt;&lt;/th&gt;
+
+&lt;/tbody&gt;&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="71"/>
+        <source>&lt;small&gt;&lt;i&gt;Mouse over for shortcuts&lt;/i&gt;&lt;/small&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="80"/>
+        <source>Type</source>
+        <translation type="unfinished">类型</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="103"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="113"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch the direction of the connection (view the opposite flow).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="116"/>
+        <location filename="tcp_stream_dialog.ui" line="344"/>
+        <source>Switch Direction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="127"/>
+        <source>Mouse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="134"/>
+        <source>Drag using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="137"/>
+        <source>drags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="150"/>
+        <source>Select using the mouse button.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="153"/>
+        <source>zooms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="179"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reset the graph to its initial state.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="182"/>
+        <source>Reset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="201"/>
+        <source>Reset Graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="204"/>
+        <source>Reset the graph to its initial state.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="207"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="212"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="215"/>
+        <source>Zoom in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="218"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="223"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="226"/>
+        <source>Zoom out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="229"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="234"/>
+        <source>Move Up 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="237"/>
+        <source>Move up 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="240"/>
+        <source>Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="245"/>
+        <source>Move Left 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="248"/>
+        <source>Move left 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="251"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="256"/>
+        <source>Move Right 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="259"/>
+        <source>Move right 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="262"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="267"/>
+        <source>Move Down 10 Pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="270"/>
+        <source>Move down 10 pixels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="273"/>
+        <source>Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="278"/>
+        <source>Move Up 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="281"/>
+        <source>Move up 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="284"/>
+        <source>Shift+Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="289"/>
+        <source>Move Left 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="292"/>
+        <source>Move left 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="295"/>
+        <source>Shift+Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="300"/>
+        <source>Move Right 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="303"/>
+        <source>Move right 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="306"/>
+        <source>Shift+Right</source>
+        <translation type="unfinished">Shift+Right</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="311"/>
+        <source>Move Down 1 Pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="314"/>
+        <source>Move down 1 pixel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="317"/>
+        <source>Shift+Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="322"/>
+        <source>Next Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="325"/>
+        <source>Go to the next stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="328"/>
+        <source>PgUp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="333"/>
+        <source>Previous Stream</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="336"/>
+        <source>Go to the previous stream in the capture</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="339"/>
+        <source>PgDown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="347"/>
+        <source>Switch direction (swap TCP endpoints)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="350"/>
+        <source>D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="355"/>
+        <source>Go To Packet Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="358"/>
+        <source>Go to packet currently under the cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="361"/>
+        <source>G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="366"/>
+        <source>Drag / Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="369"/>
+        <source>Toggle mouse drag / zoom behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="372"/>
+        <source>Z</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="377"/>
+        <source>Relative / Absolute Sequence Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="380"/>
+        <source>Toggle relative / absolute sequence numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="383"/>
+        <source>S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="388"/>
+        <source>Capture / Session Time Origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="391"/>
+        <source>Toggle capture / session time origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="394"/>
+        <source>T</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="399"/>
+        <source>Crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="402"/>
+        <source>Toggle crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="405"/>
+        <source>Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="410"/>
+        <location filename="tcp_stream_dialog.cpp" line="647"/>
+        <source>Round Trip Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="413"/>
+        <source>Switch to the Round Trip Time graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="416"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="421"/>
+        <location filename="tcp_stream_dialog.cpp" line="570"/>
+        <source>Throughput</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="424"/>
+        <source>Switch to the Throughput graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="427"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="432"/>
+        <source>Time / Sequence (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="435"/>
+        <source>Switch to the Stevens-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="438"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="443"/>
+        <location filename="tcp_stream_dialog.cpp" line="701"/>
+        <source>Window Scaling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="446"/>
+        <source>Switch to the Window Scaling graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="449"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="454"/>
+        <source>Time / Sequence (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="457"/>
+        <source>Switch to the tcptrace-style Time / Sequence graph</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.ui" line="460"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="211"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="359"/>
+        <source>No Capture Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="415"/>
+        <source>%1 %2 pkts, %3 %4 %5 pkts, %6 </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="496"/>
+        <source>Sequence Numbers (Stevens)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="521"/>
+        <source>Sequence Numbers (tcptrace)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="572"/>
+        <source> (1s MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="574"/>
+        <source> (%1 Segment MA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="589"/>
+        <source> [not enough data]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="728"/>
+        <source> for %1:%2 %3 %4:%5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="912"/>
+        <source>%1 %2 (%3s len %4 seq %5 ack %6 win %7)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Click to select packet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="913"/>
+        <source>Packet</source>
+        <translation type="unfinished">分组</translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="927"/>
+        <source>Release to zoom, x = %1 to %2, y = %3 to %4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="933"/>
+        <source>Unable to select range.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="936"/>
+        <source>Click to select a portion of the graph.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="979"/>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="980"/>
+        <source>Portable Network Graphics (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="981"/>
+        <source>Windows Bitmap (*.bmp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="983"/>
+        <source>JPEG File Interchange Format (*.jpeg *.jpg)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="tcp_stream_dialog.cpp" line="990"/>
+        <source>Wireshark: Save Graph As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>TimeShiftDialog</name>
+    <message>
+        <location filename="time_shift_dialog.ui" line="20"/>
+        <source>Wireshark: Time Shift</source>
+        <translation>Wireshark: 时间平移</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="28"/>
+        <source>Shift all packets by</source>
+        <translation>平移所有分组</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="41"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[-][[hh:]mm:]ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="65"/>
+        <source>Set the time for packet</source>
+        <translation>设置分组时间</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="75"/>
+        <location filename="time_shift_dialog.ui" line="109"/>
+        <source>to</source>
+        <translation>为</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="99"/>
+        <source>...then set packet</source>
+        <translation>...然后设置分组</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="143"/>
+        <source>and extrapolate the time for all other packets</source>
+        <translation>并推算所有其他分组的时间</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="163"/>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;right&quot;&gt;&lt;span style=&quot; font-size:small; font-style:italic;&quot;&gt;[YYYY-MM-DD] hh:mm:ss[.ddd] &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.ui" line="172"/>
+        <source>Undo all shifts</source>
+        <translation>撤销所有平移</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="140"/>
+        <source>Frame numbers must be between 1 and %1.</source>
+        <translation>帧序号必须介于 1 与 %1。</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="142"/>
+        <source>Invalid frame number.</source>
+        <translation>帧序号无效。</translation>
+    </message>
+    <message>
+        <location filename="time_shift_dialog.cpp" line="254"/>
+        <source>Time shifting is not available capturing packets.</source>
+        <translation>时间平移在捕获分组过程中不可用。</translation>
+    </message>
+</context>
+<context>
+    <name>UatDialog</name>
+    <message>
+        <location filename="uat_dialog.ui" line="28"/>
+        <source>Create a new profile using default settings.</source>
+        <translation type="unfinished">用默认设置创建新的配置文件。</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="42"/>
+        <source>Remove this profile.</source>
+        <translation type="unfinished">移除该配置文件。</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.ui" line="53"/>
+        <source>Copy this profile.</source>
+        <translation type="unfinished">复制该配置文件。</translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="87"/>
+        <source>Unknown User Accessible Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="uat_dialog.cpp" line="105"/>
+        <source>Open </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
index 33529ec34d14c082471124203bd5b24477a71b51..b8294550cc10b23de70faf00d24c64eff6373fa3 100644 (file)
@@ -149,74 +149,74 @@ do_simple_message_box(ESD_TYPE_E type, gboolean *notagain,
                       const char *secondary_msg, const char *msg_format,
                       va_list ap)
 {
-  QMessageBox *msg_dialog;
-  gchar *message;
-
-  if (notagain != NULL) {
-    if (*notagain) {
-      /*
-       * The user had checked the "Don't show this message again" checkbox
-       * in the past; don't bother showing it.
-       */
-      return;
+    QMessageBox *msg_dialog;
+    gchar *message;
+
+    if (notagain != NULL) {
+        if (*notagain) {
+        /*
+         * The user had checked the "Don't show this message again" checkbox
+         * in the past; don't bother showing it.
+         */
+        return;
+        }
     }
-  }
-
-  /*
-   * XXX - this should be passed the main window.
-   * Also, this should be set to window modal by setting its window
-   * modality to Qt::WindowModal, so it shows up as a sheet in
-   * OS X.
-   */
-  msg_dialog = new QMessageBox(NULL);
-  switch (type) {
-
-  case ESD_TYPE_INFO:
-    msg_dialog->setIcon(QMessageBox::Information);
-    break;
-
-  case ESD_TYPE_WARN:
-    msg_dialog->setIcon(QMessageBox::Warning);
-    break;
-
-  case ESD_TYPE_ERROR:
-    msg_dialog->setIcon(QMessageBox::Critical);
-    break;
-
-  default:
-    g_assert_not_reached();
-    return;
-  }
-
-  /* Format the message. */
-  message = g_strdup_vprintf(msg_format, ap);
-  msg_dialog->setText(message);
-  g_free(message);
-
-  /* Add the secondary text. */
-  if (secondary_msg != NULL)
-    msg_dialog->setInformativeText(secondary_msg);
+
+    /*
+     * XXX - this should be passed the main window.
+     * Also, this should be set to window modal by setting its window
+     * modality to Qt::WindowModal, so it shows up as a sheet in
+     * OS X.
+     */
+    msg_dialog = new QMessageBox(NULL);
+    switch (type) {
+
+    case ESD_TYPE_INFO:
+        msg_dialog->setIcon(QMessageBox::Information);
+        break;
+
+    case ESD_TYPE_WARN:
+        msg_dialog->setIcon(QMessageBox::Warning);
+        break;
+
+    case ESD_TYPE_ERROR:
+        msg_dialog->setIcon(QMessageBox::Critical);
+        break;
+
+    default:
+        g_assert_not_reached();
+        return;
+    }
+
+    /* Format the message. */
+    message = g_strdup_vprintf(msg_format, ap);
+    msg_dialog->setText(message);
+    g_free(message);
+
+    /* Add the secondary text. */
+    if (secondary_msg != NULL)
+        msg_dialog->setInformativeText(secondary_msg);
 
 #if 0
-  if (notagain != NULL) {
-    checkbox = gtk_check_button_new_with_label("Don't show this message again.");
-    gtk_container_set_border_width(GTK_CONTAINER(checkbox), 12);
-    gtk_box_pack_start(GTK_BOX(gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(msg_dialog))), checkbox,
-                       TRUE, TRUE, 0);
-    gtk_widget_show(checkbox);
-  }
+    if (notagain != NULL) {
+        checkbox = gtk_check_button_new_with_label("Don't show this message again.");
+        gtk_container_set_border_width(GTK_CONTAINER(checkbox), 12);
+        gtk_box_pack_start(GTK_BOX(gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(msg_dialog))), checkbox,
+                           TRUE, TRUE, 0);
+        gtk_widget_show(checkbox);
+    }
 #endif
 
-  msg_dialog->exec();  
+    msg_dialog->exec();
 #if 0
-  if (notagain != NULL) {
-    /*
-     * OK, did they check the checkbox?
-     */
-    *notagain = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox));
-  }
+    if (notagain != NULL) {
+        /*
+         * OK, did they check the checkbox?
+        */
+        *notagain = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox));
+    }
 #endif
-  delete msg_dialog;
+    delete msg_dialog;
 }
 
 /*
@@ -227,11 +227,11 @@ void
 simple_message_box(ESD_TYPE_E type, gboolean *notagain,
                    const char *secondary_msg, const char *msg_format, ...)
 {
-  va_list ap;
+    va_list ap;
 
-  va_start(ap, msg_format);
-  do_simple_message_box(type, notagain, secondary_msg, msg_format, ap);
-  va_end(ap);
+    va_start(ap, msg_format);
+    do_simple_message_box(type, notagain, secondary_msg, msg_format, ap);
+    va_end(ap);
 }
 
 /*
@@ -240,7 +240,7 @@ simple_message_box(ESD_TYPE_E type, gboolean *notagain,
 void
 vsimple_error_message_box(const char *msg_format, va_list ap)
 {
-  do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
+    do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
 }
 
 /*
@@ -249,9 +249,22 @@ vsimple_error_message_box(const char *msg_format, va_list ap)
 void
 simple_error_message_box(const char *msg_format, ...)
 {
-  va_list ap;
+    va_list ap;
 
-  va_start(ap, msg_format);
-  do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
-  va_end(ap);
+    va_start(ap, msg_format);
+    do_simple_message_box(ESD_TYPE_ERROR, NULL, NULL, msg_format, ap);
+    va_end(ap);
 }
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
index 638329a94a1121eda79b53925e6216c007abfae8..218770cce22ddc1f48b12cb807fb728ff906c4de 100644 (file)
@@ -39,3 +39,16 @@ public slots:
 };
 
 #endif // SIMPLE_DIALOG_QT_H
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/ui/tap_export_pdu.c b/ui/tap_export_pdu.c
new file mode 100644 (file)
index 0000000..5ac7109
--- /dev/null
@@ -0,0 +1,227 @@
+/* tap_export_pdu.c
+ * Routines for exporting PDU:s to file
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ */
+
+#include "config.h"
+
+#include <glib.h>
+
+#include "globals.h"
+#include "wtap.h"
+#include "pcap-encap.h"
+#include "version_info.h"
+#include "wsutil/tempfile.h"
+
+#include <epan/tap.h>
+#include <epan/exported_pdu.h>
+
+#include "ui/alert_box.h"
+#include "ui/simple_dialog.h"
+#include "tap_export_pdu.h"
+
+/* Main entry point to the tap */
+int
+export_pdu_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt _U_, const void *data)
+{
+    const exp_pdu_data_t *exp_pdu_data = (const exp_pdu_data_t *)data;
+    exp_pdu_t  *exp_pdu_tap_data = (exp_pdu_t *)tapdata;
+    struct wtap_pkthdr pkthdr;
+    int err;
+    int buffer_len;
+    guint8 *packet_buf;
+
+    buffer_len = exp_pdu_data->tvb_length + exp_pdu_data->tlv_buffer_len;
+    packet_buf = (guint8 *)g_malloc(buffer_len);
+
+    if(exp_pdu_data->tlv_buffer_len > 0){
+        memcpy(packet_buf, exp_pdu_data->tlv_buffer, exp_pdu_data->tlv_buffer_len);
+        g_free(exp_pdu_data->tlv_buffer);
+    }
+    if(exp_pdu_data->tvb_length > 0){
+        tvb_memcpy(exp_pdu_data->pdu_tvb, packet_buf+exp_pdu_data->tlv_buffer_len, 0, exp_pdu_data->tvb_length);
+    }
+    pkthdr.ts.secs   = pinfo->fd->abs_ts.secs;
+    pkthdr.ts.nsecs  = pinfo->fd->abs_ts.nsecs;
+    pkthdr.caplen    = pkthdr.len = buffer_len;
+
+    pkthdr.pkt_encap = exp_pdu_tap_data->pkt_encap;
+    pkthdr.interface_id = 0;
+    pkthdr.presence_flags = 0;
+    pkthdr.opt_comment = g_strdup(pinfo->pkt_comment);
+    pkthdr.drop_count = 0;
+    pkthdr.pack_flags = 0;
+    pkthdr.presence_flags = WTAP_HAS_CAP_LEN|WTAP_HAS_INTERFACE_ID|WTAP_HAS_TS|WTAP_HAS_PACK_FLAGS;
+
+    wtap_dump(exp_pdu_tap_data->wdh, &pkthdr, packet_buf, &err);
+
+    g_free(packet_buf);
+    g_free(pkthdr.opt_comment);
+
+    return FALSE; /* Do not redraw */
+}
+
+void
+exp_pdu_file_open(exp_pdu_t *exp_pdu_tap_data)
+{
+    int   import_file_fd;
+    char *tmpname, *capfile_name;
+    int   err;
+
+    /* pcapng defs */
+    wtapng_section_t            *shb_hdr;
+    wtapng_iface_descriptions_t *idb_inf;
+    wtapng_if_descr_t            int_data;
+    GString                     *os_info_str;
+    char                         appname[100];
+
+    /* Choose a random name for the temporary import buffer */
+    import_file_fd = create_tempfile(&tmpname, "Wireshark_PDU_");
+    capfile_name = g_strdup(tmpname);
+
+    /* Create data for SHB  */
+    os_info_str = g_string_new("");
+    get_os_version_info(os_info_str);
+
+    g_snprintf(appname, sizeof(appname), "Wireshark " VERSION "%s", wireshark_svnversion);
+
+    shb_hdr = g_new(wtapng_section_t,1);
+    shb_hdr->section_length = -1;
+    /* options */
+    shb_hdr->opt_comment    = g_strdup_printf("Dump of PDU:s from %s", cfile.filename);
+    shb_hdr->shb_hardware   = NULL;                    /* UTF-8 string containing the
+                                                       * description of the hardware used to create this section.
+                                                       */
+    shb_hdr->shb_os         = os_info_str->str;        /* UTF-8 string containing the name
+                                                       * of the operating system used to create this section.
+                                                       */
+    g_string_free(os_info_str, FALSE);                /* The actual string is not freed */
+    shb_hdr->shb_user_appl  = appname;                /* UTF-8 string containing the name
+                                                       *  of the application used to create this section.
+                                                       */
+
+
+    /* Create fake IDB info */
+    idb_inf = g_new(wtapng_iface_descriptions_t,1);
+    idb_inf->number_of_interfaces = 1;
+    idb_inf->interface_data = g_array_new(FALSE, FALSE, sizeof(wtapng_if_descr_t));
+
+    /* create the fake interface data */
+    int_data.wtap_encap            = WTAP_ENCAP_WIRESHARK_UPPER_PDU;
+    int_data.time_units_per_second = 1000000; /* default microsecond resolution */
+    int_data.link_type             = wtap_wtap_encap_to_pcap_encap(WTAP_ENCAP_WIRESHARK_UPPER_PDU);
+    int_data.snap_len              = WTAP_MAX_PACKET_SIZE;
+    int_data.if_name               = g_strdup("Fake IF, PDU->Export");
+    int_data.opt_comment           = NULL;
+    int_data.if_description        = NULL;
+    int_data.if_speed              = 0;
+    int_data.if_tsresol            = 6;
+    int_data.if_filter_str         = NULL;
+    int_data.bpf_filter_len        = 0;
+    int_data.if_filter_bpf_bytes   = NULL;
+    int_data.if_os                 = NULL;
+    int_data.if_fcslen             = -1;
+    int_data.num_stat_entries      = 0;          /* Number of ISB:s */
+    int_data.interface_statistics  = NULL;
+
+    g_array_append_val(idb_inf->interface_data, int_data);
+
+    exp_pdu_tap_data->wdh = wtap_dump_fdopen_ng(import_file_fd, WTAP_FILE_TYPE_SUBTYPE_PCAPNG, WTAP_ENCAP_WIRESHARK_UPPER_PDU, WTAP_MAX_PACKET_SIZE, FALSE, shb_hdr, idb_inf, &err);
+    if (exp_pdu_tap_data->wdh == NULL) {
+        open_failure_alert_box(capfile_name, err, TRUE);
+        goto end;
+    }
+
+
+    /* Run the tap */
+    cf_retap_packets(&cfile);
+
+
+    if (!wtap_dump_close(exp_pdu_tap_data->wdh, &err)) {
+        write_failure_alert_box(capfile_name, err);
+    }
+
+    remove_tap_listener(exp_pdu_tap_data);
+
+    if (cf_open(&cfile, capfile_name, TRUE /* temporary file */, &err) != CF_OK) {
+        open_failure_alert_box(capfile_name, err, FALSE);
+        goto end;
+    }
+
+    switch (cf_read(&cfile, FALSE)) {
+    case CF_READ_OK:
+    case CF_READ_ERROR:
+    /* Just because we got an error, that doesn't mean we were unable
+       to read any of the file; we handle what we could get from the
+       file. */
+    break;
+
+    case CF_READ_ABORTED:
+    /* The user bailed out of re-reading the capture file; the
+       capture file has been closed - just free the capture file name
+       string and return (without changing the last containing
+       directory). */
+    break;
+    }
+
+end:
+    g_free(capfile_name);
+}
+
+gboolean
+do_export_pdu(const char *filter, gchar *tap_name, gpointer data)
+{
+    GString        *error_string;
+    exp_pdu_t  *exp_pdu_tap_data = (exp_pdu_t *)data;
+
+    /* Register this tap listener now */
+    error_string = register_tap_listener(tap_name,             /* The name of the tap we want to listen to */
+                                         exp_pdu_tap_data,     /* instance identifier/pointer to a struct holding
+                                                                * all state variables */
+                                         filter,               /* pointer to a filter string */
+                                         TL_REQUIRES_NOTHING,  /* flags for the tap listener */
+                                         NULL,
+                                         export_pdu_packet,
+                                         NULL);
+    if (error_string){
+        /* Error.  We failed to attach to the tap. Clean up */
+        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", error_string->str);
+        g_string_free(error_string, TRUE);
+        return FALSE;
+    }
+
+    exp_pdu_file_open(exp_pdu_tap_data);
+    return TRUE;
+}
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/ui/tap_export_pdu.h b/ui/tap_export_pdu.h
new file mode 100644 (file)
index 0000000..ba5ee3d
--- /dev/null
@@ -0,0 +1,57 @@
+/* tap_export_pdu.h
+ * Routines for exporting PDU:s to file
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ */
+
+#ifndef __TAP_EXPORT_PDU_H__
+#define __TAP_EXPORT_PDU_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct _exp_pdu_t {
+    int          pkt_encap;
+    wtap_dumper* wdh;
+} exp_pdu_t;
+
+void exp_pdu_file_open(exp_pdu_t *exp_pdu_tap_data);
+gboolean do_export_pdu(const char *filter, gchar *tap_name, gpointer data);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TAP_EXPORT_PDU_H__ */
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
index 9b35669e394033fa1e64659e6051c4efacd8334b..a3affeb3d3ad1d773a3351b58a33219a07d468de 100644 (file)
 
 #include "console_win32.h"
 
-#if _MSC_VER < 1500
-/* AttachConsole() needs this #define! */
-#define _WIN32_WINNT 0x0501
-#endif
 #include <fcntl.h>
 #include <conio.h>
 #include <windows.h>
diff --git a/update.c b/update.c
deleted file mode 100644 (file)
index d89e5be..0000000
--- a/update.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* update.c
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- *
- * 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.
- */
-
-#include "config.h"
-
-#include <glib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include <epan/prefs.h>
-#include <epan/prefs-int.h>
-
-#include "simple_dialog.h"
-#include "version_info.h"
-
-#ifdef HAVE_LIBPCAP
-#include "capture-pcap-util.h"
-#endif
-
-#include <wsutil/file_util.h>
-#include <wsutil/filesystem.h>
-
-#include <wininet.h>
-#include "nio-ie5.h"
-
-
-/* update information about a single component */
-typedef struct update_info_s {
-    char *prefix;                   /* prefix of the update file keys */
-    gboolean needs_update;          /* does this component need an update */
-    char *version_installed;        /* the version currently installed */
-
-    char *title;                    /* the component title (name) */
-    char *description;              /* description of the component */
-    char *version_recommended;      /* the version recommended */
-    char *url;                      /* the URL for an update */
-    char *md5;                      /* md5 checksum for that update */
-    char *size;                     /* size of that update */
-} update_info_t;
-
-
-/* download a complete file from the internet */
-int
-download_file(const char *url, const char *filename) {
-    netio_ie5_t * conn;
-    char buf[100];
-    int chunk_len;
-    int fd;
-    int stream_len;
-    int ret = 0;
-
-
-    /* open output file */
-    fd = ws_open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644);
-    if(fd == -1) {
-        g_warning("Couldn't open output file %s!", filename);
-        return -1;
-    }
-
-    /* connect to url */
-    conn = netio_ie5_connect (url);
-    if (conn == NULL) {
-        ws_close(fd);
-        g_warning("Couldn't connect to %s!", url);
-        return -1;
-    }
-
-    do {
-               /* XXX - maybe add a progress bar here */
-
-        /* read some bytes from the url */
-        chunk_len = netio_ie5_read (conn, buf, sizeof(buf));
-
-        /* write bytes to the output file */
-        stream_len = ws_write( fd, buf, chunk_len);
-        if(stream_len != chunk_len) {
-            g_warning("output failed: stream_len %u != chunk_len %u", stream_len, chunk_len);
-            ret = -1;
-            break;
-        }
-    } while(chunk_len > 0);
-
-    netio_ie5_disconnect(conn);
-
-    ws_close(fd);
-
-    return ret;
-}
-
-update_info_t *
-update_info_new(void)
-{
-    return g_malloc0(sizeof(update_info_t));
-}
-
-void
-update_info_delete(update_info_t *update_info)
-{
-    g_free(update_info->prefix);
-    g_free(update_info->version_installed);
-    g_free(update_info->title);
-    g_free(update_info->description);
-    g_free(update_info->version_recommended);
-    g_free(update_info->url);
-    g_free(update_info->md5);
-    g_free(update_info->size);
-
-    g_free(update_info);
-}
-
-/* check a single key value pair */
-static void
-update_pref_check(gchar *pref_name, gchar *value, char *check_prefix, char *check_name, char **check_value)
-{
-    GString *check = g_string_new(check_prefix);
-
-    g_string_append(check, check_name);
-
-    if(strcmp(pref_name, check->str) == 0) {
-        if(*check_value)
-            /* there shouldn't be a duplicate entry in the update file */
-            g_warning("Duplicate of %s: current %s former %s", pref_name, value, *check_value);
-        else
-            *check_value = g_strdup(value);
-    }
-
-    g_string_free(check, TRUE);
-}
-
-/* a new key value pair from the update file */
-static prefs_set_pref_e
-update_pref(gchar *pref_name, gchar *value, void *private_data)
-{
-    update_info_t *update_info = private_data;
-
-    update_pref_check(pref_name, value, update_info->prefix, "title",       &update_info->title);
-    update_pref_check(pref_name, value, update_info->prefix, "description", &update_info->description);
-    update_pref_check(pref_name, value, update_info->prefix, "version",     &update_info->version_recommended);
-    update_pref_check(pref_name, value, update_info->prefix, "update.url",  &update_info->url);
-    update_pref_check(pref_name, value, update_info->prefix, "update.md5",  &update_info->md5);
-    update_pref_check(pref_name, value, update_info->prefix, "update.size",  &update_info->size);
-
-    return PREFS_SET_OK;
-}
-
-/* display an update_info */
-static void
-update_info_display(update_info_t *update_info)
-{
-    GString *overview;
-
-
-    overview = g_string_new("");
-
-    if(update_info->title) {
-        g_string_append_printf(overview, "%s%s%s",
-            simple_dialog_primary_start(), update_info->title, simple_dialog_primary_end());
-    } else {
-        g_string_append_printf(overview, "%sComponent%s",
-            simple_dialog_primary_start(), simple_dialog_primary_end());
-    }
-
-    g_string_append(overview, "\n\n");
-
-    if(update_info->description)
-        g_string_append_printf(overview, "%s\n\n", update_info->description);
-
-    g_string_append_printf(overview, "Installed: %s\n", update_info->version_installed);
-
-    if(update_info->version_recommended)
-        g_string_append_printf(overview, "Recommended: %s\n", update_info->version_recommended);
-    else
-        g_string_append(overview, "Recommenced: unknown\n");
-
-    if(update_info->version_recommended && update_info->url)
-        g_string_append_printf(overview, "From: %s\n", update_info->url);
-
-    if(update_info->size)
-        g_string_append_printf(overview, "Size: %s", update_info->size);
-
-    simple_dialog(ESD_TYPE_INFO, ESD_BTN_OK, overview->str);
-
-    g_string_free(overview, TRUE);
-
-}
-
-/* check the version of the wireshark program */
-static update_info_t *
-update_check_wireshark(const char *local_file)
-{
-    FILE *pf;
-    update_info_t *update_info = update_info_new();
-
-
-    update_info->version_installed = g_strdup(VERSION);
-    update_info->prefix = "wireshark.setup.";
-
-    pf = ws_fopen(local_file, "r");
-    if(pf != NULL) {
-        /* read in update_info of Wireshark */
-        read_prefs_file(local_file, pf, update_pref, update_info);
-        fclose(pf);
-
-        /* check if Wireshark needs an update */
-        if(update_info->version_installed && update_info->version_recommended &&
-            strcmp(update_info->version_installed, update_info->version_recommended) != 0)
-        {
-            update_info->needs_update = TRUE;
-        }
-    } else {
-        g_warning("Could not open %s", local_file);
-    }
-
-    return update_info;
-}
-
-/* check the version of winpcap */
-static update_info_t *
-update_check_winpcap(const char *local_file)
-{
-    FILE *pf;
-    update_info_t * update_info = update_info_new();
-    GString *pcap_version_tmp;
-    char *pcap_version = NULL;
-    char *pcap_vstart;
-    char *pcap_vend;
-
-
-    update_info->prefix = "winpcap.";
-
-    pf = ws_fopen(local_file, "r");
-    if(pf != NULL) {
-        /* read in update_info of WinPcap */
-        read_prefs_file(local_file, pf, update_pref, update_info);
-        fclose(pf);
-
-        /* get WinPcap version */
-        /* XXX - what's the "approved" method to get the WinPcap version? */
-        pcap_version_tmp = g_string_new("");
-        get_runtime_pcap_version(pcap_version_tmp);
-
-        /* cut out real version from "combined" version string */
-        pcap_vstart = strstr(pcap_version_tmp->str, "with WinPcap version ");
-        if(pcap_vstart != NULL) {
-            pcap_vstart += sizeof("with WinPcap version");
-            pcap_vend = strstr(pcap_vstart, " ");
-            if(pcap_vend != NULL) {
-                pcap_vend[0] = 0;
-                pcap_version = g_strdup(pcap_vstart);
-            }
-        }
-
-        update_info->version_installed = g_strdup(pcap_version);
-
-        if(pcap_version && update_info->version_recommended &&
-            strcmp(pcap_version, update_info->version_recommended) != 0)
-        {
-            update_info->needs_update = TRUE;
-        }
-    } else {
-        g_warning("Could not open %s", local_file);
-    }
-
-    g_string_free(pcap_version_tmp, TRUE);
-    g_free(pcap_version);
-
-    return update_info;
-}
-
-
-/* check for all updates */
-void
-update_check(gboolean interactive)
-{
-    char *local_file;
-    const char *url_file = "http://127.0.0.1/wsupdate";        /* XXX - build the URL depending on platform, versions, ... */
-    update_info_t *update_info_wireshark;
-    update_info_t *update_info_winpcap;
-
-
-    /* build update file name */
-    /* XXX - using the personal path, use temp dir instead? */
-    local_file = get_persconffile_path("wsupdate", FALSE);
-    if(local_file == NULL) {
-        g_warning("Couldn't create output path!");
-        return;
-    }
-
-    /* download update file */
-    if(download_file(url_file, local_file) == -1) {
-        g_warning("Couldn't download update file: %s", local_file);
-        g_free(local_file);
-        return;
-    }
-
-    /* check wireshark */
-    update_info_wireshark = update_check_wireshark(local_file);
-
-    /* check winpcap */
-    update_info_winpcap = update_check_winpcap(local_file);
-
-    /* display results */
-    if(update_info_wireshark->needs_update || update_info_winpcap->needs_update) {
-        if(update_info_wireshark->needs_update)
-            update_info_display(update_info_wireshark);
-        if(update_info_winpcap->needs_update)
-            update_info_display(update_info_winpcap);
-    } else {
-        if(interactive) {
-            simple_dialog(ESD_TYPE_INFO, ESD_BTN_OK, "No updates available");
-        }
-    }
-
-    /* cleanup */
-    update_info_delete(update_info_wireshark);
-    update_info_delete(update_info_winpcap);
-
-    g_free(local_file);
-}
-
index 5ff61101dcc9bf2aafa5c7cc5d5398cbfbe00f82..c43fb35c8d08f8ddc87aa9f5860ce7bdba271204 100644 (file)
@@ -372,6 +372,12 @@ static gboolean _5views_dump(wtap_dumper *wdh,
        _5views_dump_t *_5views = (_5views_dump_t *)wdh->priv;
        t_5VW_TimeStamped_Header HeaderFrame;
 
+       /* Don't write out something bigger than we can read. */
+       if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        /* Frame Header */
        /* constant fields */
        HeaderFrame.Key = GUINT32_TO_LE(CST_5VW_RECORDS_HEADER_KEY);
index 9fc2cb06f488504af7032918af44eb4278056bf9..3c67f841980e749b48631a34f0c0e456591c42b3 100644 (file)
@@ -333,6 +333,15 @@ static gboolean btsnoop_dump_h1(wtap_dumper *wdh,
     const union wtap_pseudo_header *pseudo_header = &phdr->pseudo_header;
     struct btsnooprec_hdr rec_hdr;
 
+    /*
+     * Don't write out anything bigger than we can read.
+     * (This will also fail on a caplen of 0, as it should.)
+     */ 
+    if (phdr->caplen-1 > WTAP_MAX_PACKET_SIZE) {
+        *err = WTAP_ERR_PACKET_TOO_LARGE;
+        return FALSE;
+    }
+
     if (!btsnoop_dump_partial_rec_hdr(wdh, phdr, pseudo_header, pd, err, &rec_hdr))
         return FALSE;
 
@@ -362,6 +371,12 @@ static gboolean btsnoop_dump_h4(wtap_dumper *wdh,
     const union wtap_pseudo_header *pseudo_header = &phdr->pseudo_header;
     struct btsnooprec_hdr rec_hdr;
 
+    /* Don't write out anything bigger than we can read. */
+    if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+        *err = WTAP_ERR_PACKET_TOO_LARGE;
+        return FALSE;
+    }
+
     if (!btsnoop_dump_partial_rec_hdr(wdh, phdr, pseudo_header, pd, err, &rec_hdr))
         return FALSE;
 
index 4283a6f44b5f4db64126f947a6bfe98352586886..0687a18b6909ea0db42fd087feb5d6e664f27e66 100644 (file)
@@ -277,6 +277,14 @@ static gboolean commview_dump(wtap_dumper *wdh,
        commview_header_t cv_hdr;
        struct tm *tm;
 
+       /* Don't write out anything bigger than we can read.
+        * (The length field in packet headers is 16 bits, which
+        * imposes a hard limit.) */
+       if (phdr->caplen > 65535) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        memset(&cv_hdr, 0, sizeof(cv_hdr));
 
        cv_hdr.data_len = GUINT16_TO_LE((guint16)phdr->caplen);
index 7eebe0a44a19c4dff1a3daff8201e031c8d46c40..5ac2ae76fef8c760b5f4f60f9c7e6a3c1e6e53be 100644 (file)
@@ -153,8 +153,7 @@ extern int erf_open(wtap *wth, int *err, gchar **err_info)
     if (packet_size > WTAP_MAX_PACKET_SIZE) {
       /*
        * Probably a corrupt capture file or a file that's not an ERF file
-       * but that passed earlier tests; don't blow up trying
-       * to allocate space for an immensely-large packet.
+       * but that passed earlier tests.
        */
       return 0;
     }
@@ -239,8 +238,8 @@ extern int erf_open(wtap *wth, int *err, gchar **err_info)
        is reached whereas the record is truncated */
     if (packet_size > WTAP_MAX_PACKET_SIZE) {
       /*
-       * Probably a corrupt capture file; don't blow up trying
-       * to allocate space for an immensely-large packet.
+       * Probably a corrupt capture file or a file that's not an ERF file
+       * but that passed earlier tests.
        */
       return 0;
     }
@@ -592,6 +591,12 @@ static gboolean erf_dump(
   gboolean must_add_crc = FALSE;
   guint32  crc32        = 0x00000000;
 
+  /* Don't write anything bigger than we're willing to read. */
+  if(phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+    *err = WTAP_ERR_PACKET_TOO_LARGE;
+    return FALSE;
+  }
+
   if(wdh->encap == WTAP_ENCAP_PER_PACKET){
     encap = phdr->pkt_encap;
   }else{
index 66897b81df5f3313d9f4cd2c0fad2ee1babdf37f..ea0af9ffdd576a238e08ba61688ef7c99e7ffc57 100644 (file)
@@ -417,6 +417,14 @@ static gboolean eyesdn_dump(wtap_dumper *wdh,
        int protocol;
        int size;
 
+       /* Don't write out anything bigger than we can read.
+        * (The length field in packet headers is 16 bits, which
+        * imposes a hard limit.) */
+       if (phdr->caplen > 65535) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        usecs=phdr->ts.nsecs/1000;
        secs=phdr->ts.secs;
        size=phdr->caplen;
index 10687f841277623a018a6cd2e94ae65585ef2ddd..8dfaef6e0c202b2b3273f889ccca3134e740a990 100644 (file)
@@ -1190,7 +1190,7 @@ static gboolean k12_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
         /*       encountered in k12_dump_src_setting).                              */
         g_hash_table_foreach(file_data->src_by_id,k12_dump_src_setting,wdh);
     }
-    obj.record.len = 0x20 + phdr->len;
+    obj.record.len = 0x20 + phdr->caplen;
     obj.record.len += (obj.record.len % 4) ? 4 - obj.record.len % 4 : 0;
 
     len = obj.record.len;
@@ -1198,12 +1198,12 @@ static gboolean k12_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
     obj.record.len = g_htonl(obj.record.len);
 
     obj.record.type = g_htonl(K12_REC_PACKET);
-    obj.record.frame_len = g_htonl(phdr->len);
+    obj.record.frame_len = g_htonl(phdr->caplen);
     obj.record.input = g_htonl(pseudo_header->k12.input);
 
     obj.record.ts = GUINT64_TO_BE((((guint64)phdr->ts.secs - 631152000) * 2000000) + (phdr->ts.nsecs / 1000 * 2));
 
-    memcpy(obj.record.frame,pd,phdr->len);
+    memcpy(obj.record.frame,pd,phdr->caplen);
 
     return k12_dump_record(wdh,len,obj.buffer, err);
 }
index ebec0ac7b9ba21dd7da45207ca8f0cd80cf0ef35..584c43cfdbb56f6be3dff6decebd728169b9446f 100644 (file)
@@ -375,6 +375,12 @@ k12text_dump(wtap_dumper *wdh _U_, const struct wtap_pkthdr *phdr,
        gboolean ret;
        struct tm *tmp;
 
+       /* Don't write anything bigger than we're willing to read. */
+       if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        str_enc = NULL;
        for(i=0; encaps[i].s; i++) {
                if (phdr->pkt_encap == encaps[i].e) {
@@ -396,14 +402,6 @@ k12text_dump(wtap_dumper *wdh _U_, const struct wtap_pkthdr *phdr,
        ms = phdr->ts.nsecs / 1000000;
        ns = (phdr->ts.nsecs - (1000000*ms))/1000;
 
-#if (defined _WIN32) && (_MSC_VER < 1500)
-       /* calling gmtime() on MSVC 2005 with huge values causes it to crash */
-       /* XXX - find the exact value that still does work */
-       /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-       if (phdr->ts.secs > 2000000000)
-               tmp = NULL;
-       else
-#endif
        tmp = gmtime(&phdr->ts.secs);
        if (tmp == NULL)
                g_snprintf(p, 90, "+---------+---------------+----------+\r\nXX:XX:XX,");
index 97f9764411f09f173194f0572e0887dd0c0b1a74..494e2591deb35a407b21da3f3c6ede561dd0a4a8 100644 (file)
@@ -658,7 +658,7 @@ static gboolean lanalyzer_dump(wtap_dumper *wdh,
       double x;
       int    i;
       int    len;
-         struct timeval tv;
+      struct timeval tv;
 
       LA_TmpInfo *itmp = (LA_TmpInfo*)(wdh->priv);
       struct timeval td;
@@ -672,6 +672,12 @@ static gboolean lanalyzer_dump(wtap_dumper *wdh,
 
       len = phdr->caplen + (phdr->caplen ? LA_PacketRecordSize : 0);
 
+      /* len goes into a 16-bit field, so there's a hard limit of 65535. */
+      if (len > 65535) {
+            *err = WTAP_ERR_PACKET_TOO_LARGE;
+            return FALSE;
+      }
+
       if (!s16write(wdh, GUINT16_TO_LE(0x1005), err))
             return FALSE;
       if (!s16write(wdh, GUINT16_TO_LE(len), err))
index 8de8724236ed071ccf6749c1660d042c4624d558..a323cde1b347b7c2ff6f7deedb0d731397a93895 100644 (file)
@@ -764,6 +764,24 @@ static int libpcap_read_header(wtap *wth, FILE_T fh, int *err, gchar **err_info,
                return -1;
        }
 
+        if (hdr->hdr.orig_len > 64*1024*1024) {
+               /*
+                 * In theory I guess the on-the-wire packet size can be
+                 * arbitrarily large, and it can certainly be larger than the
+                 * 64KB which bounds the snapshot size, but any file claiming
+                 * 64MB in a single packet is *probably* corrupt, and makes the
+                 * heuristics much more reliable. See, for example,
+                 * https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9634
+                 * (64MB is an arbitrary size at this point)
+                */
+               *err = WTAP_ERR_BAD_FILE;
+               if (err_info != NULL) {
+                       *err_info = g_strdup_printf("pcap: File claims packet was %u bytes on the wire",
+                           hdr->hdr.orig_len);
+               }
+               return -1;
+        }
+
         /* Disabling because this is not a fatal error, and packets that have
          * one such packet probably have thousands. For discussion, see
          * https://www.wireshark.org/lists/wireshark-dev/201307/msg00076.html
@@ -917,6 +935,12 @@ static gboolean libpcap_dump(wtap_dumper *wdh,
 
        phdrsize = pcap_get_phdr_size(wdh->encap, pseudo_header);
 
+       /* Don't write anything we're not willing to read. */
+       if (phdr->caplen + phdrsize > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        rec_hdr.hdr.ts_sec = (guint32) phdr->ts.secs;
        if(wdh->tsprecision == WTAP_FILE_TSPREC_NSEC) {
                rec_hdr.hdr.ts_usec = phdr->ts.nsecs;
index ad1aacb8f6b27a161c43c2a8cf872ab4e8fe60c6..717992a738c449963dba91ef5c7bd5ba3279d98d 100644 (file)
@@ -1027,6 +1027,34 @@ static gboolean netmon_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
        gint64  secs;
        gint32  nsecs;
 
+       switch (wdh->file_type_subtype) {
+
+       case WTAP_FILE_TYPE_SUBTYPE_NETMON_1_x:
+               /*
+                * The length fields are 16-bit, so there's a hard limit
+                * of 65535.
+                */
+               if (phdr->caplen > 65535) {
+                       *err = WTAP_ERR_PACKET_TOO_LARGE;
+                       return FALSE;
+               }
+               break;
+
+       case WTAP_FILE_TYPE_SUBTYPE_NETMON_2_x:
+               /* Don't write anything we're not willing to read. */
+               if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+                       *err = WTAP_ERR_PACKET_TOO_LARGE;
+                       return FALSE;
+               }
+               break;
+
+       default:
+               /* We should never get here - our open routine
+                  should only get called for the types above. */
+               *err = WTAP_ERR_UNSUPPORTED_FILE_TYPE;
+               return FALSE;
+       }
+
        if (wdh->encap == WTAP_ENCAP_PER_PACKET) {
                /*
                 * Is this network type supported?
index e869fb711f8867f1274898b58734a931f2f13b80..ac3f7ed4991775e1ea22e633d676b0dcec1657ec 100644 (file)
@@ -734,6 +734,12 @@ static gboolean nettl_dump(wtap_dumper *wdh,
        struct nettlrec_hdr rec_hdr;
        guint8 dummyc[24];
 
+       /* Don't write anything we're not willing to read. */
+       if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        memset(&rec_hdr,0,sizeof(rec_hdr));
         /* HP-UX 11.X header should be 68 bytes */
        rec_hdr.hdr_len = g_htons(sizeof(rec_hdr) + 4);
index 2e9f34028842e5d388a1e00c05c3c9b5f0d59e46..07e3e3a7e23612b096444c65b438cd8562ed3941 100644 (file)
@@ -699,6 +699,13 @@ static gboolean observer_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
     packet_entry_header           packet_header;
     guint64                       seconds_since_2000;
 
+    /* The captured size field is 16 bits, so there's a hard limit of
+       65535. */
+    if (phdr->caplen > 65535) {
+        *err = WTAP_ERR_PACKET_TOO_LARGE;
+        return FALSE;
+    }
+
     /* convert the number of seconds since epoch from ANSI-relative to
        Observer-relative */
     if (phdr->ts.secs < ansi_to_observer_epoch_offset) {
index 189c70a04c0ebe9591c92d5088ba919966c0d37f..774262cf3e40f13a4079bbbe0ba8685909a6dc3d 100644 (file)
@@ -1742,6 +1742,13 @@ netxray_dump_1_1(wtap_dumper *wdh,
        guint32 t32;
        struct netxrayrec_1_x_hdr rec_hdr;
 
+       /* The captured length field is 16 bits, so there's a hard
+          limit of 65535. */
+       if (phdr->caplen > 65535) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        /* NetXRay/Windows Sniffer files have a capture start date/time
           in the header, in a UNIX-style format, with one-second resolution,
           and a start time stamp with microsecond resolution that's just
@@ -1908,6 +1915,12 @@ netxray_dump_2_0(wtap_dumper *wdh,
        guint32 t32;
        struct netxrayrec_2_x_hdr rec_hdr;
 
+       /* Don't write anything we're not willing to read. */
+       if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        /* NetXRay/Windows Sniffer files have a capture start date/time
           in the header, in a UNIX-style format, with one-second resolution,
           and a start time stamp with microsecond resolution that's just
index 0e33072ca7aa6f800d04eeac53ea630069840b94..1ac186014083176a6e4e17eda60b36eb75e473de 100644 (file)
@@ -2075,20 +2075,19 @@ ngsniffer_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
        guint16 start_date;
        struct tm *tm;
 
+       /* The captured length field is 16 bits, so there's a hard
+          limit of 65535. */
+       if (phdr->caplen > 65535) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        /* Sniffer files have a capture start date in the file header, and
           have times relative to the beginning of that day in the packet
           headers; pick the date of the first packet as the capture start
           date. */
        if (ngsniffer->first_frame) {
                ngsniffer->first_frame=FALSE;
-#if (defined _WIN32) && (_MSC_VER < 1500)
-               /* calling localtime() on MSVC 2005 with huge values causes it to crash */
-               /* XXX - find the exact value that still does work */
-               /* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
-               if (phdr->ts.secs > 2000000000)
-                       tm = NULL;
-               else
-#endif
                tm = localtime(&phdr->ts.secs);
                if (tm != NULL && tm->tm_year >= DOS_YEAR_OFFSET) {
                        start_date = (tm->tm_year - DOS_YEAR_OFFSET) << DOS_YEAR_SHIFT;
index 86be49d20d78b4755616e50de1b36d4beef79c1b..6afc024f7ca2a2fdc1354c886b13ae3490e33085 100644 (file)
@@ -3253,6 +3253,12 @@ pcapng_write_enhanced_packet_block(wtap_dumper *wdh,
         guint32 comment_len = 0, comment_pad_len = 0;
         wtapng_if_descr_t int_data;
 
+       /* Don't write anything we're not willing to read. */
+       if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
         phdr_len = (guint32)pcap_get_phdr_size(phdr->pkt_encap, pseudo_header);
         if ((phdr_len + phdr->caplen) % 4) {
                 pad_len = 4 - ((phdr_len + phdr->caplen) % 4);
index fb9253706be02f97f4b6929d9b9fae783458f821..985cfe9f9e188b9c073fb7d17799e76cd58a607f 100644 (file)
@@ -887,10 +887,17 @@ static gboolean snoop_dump(wtap_dumper *wdh,
        /* Record length = header length plus data length... */
        reclen = (int)sizeof rec_hdr + phdr->caplen + atm_hdrsize;
 
+
        /* ... plus enough bytes to pad it to a 4-byte boundary. */
        padlen = ((reclen + 3) & ~3) - reclen;
        reclen += padlen;
 
+       /* Don't write anything we're not willing to read. */
+       if (phdr->caplen + atm_hdrsize > WTAP_MAX_PACKET_SIZE) {
+               *err = WTAP_ERR_PACKET_TOO_LARGE;
+               return FALSE;
+       }
+
        rec_hdr.orig_len = g_htonl(phdr->len + atm_hdrsize);
        rec_hdr.incl_len = g_htonl(phdr->caplen + atm_hdrsize);
        rec_hdr.rec_len = g_htonl(reclen);
index d73fa2515a445d7b30510177808096d9eb39a9c7..a0822aa8553433c345575da5cb5f3c72d92c6aad 100644 (file)
@@ -682,6 +682,12 @@ static gboolean visual_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
     guint delta_msec;
     guint32 packet_status;
 
+    /* Don't write anything we're not willing to read. */
+    if (phdr->caplen > WTAP_MAX_PACKET_SIZE) {
+        *err = WTAP_ERR_PACKET_TOO_LARGE;
+        return FALSE;
+    }
+
     /* If the visual structure was never allocated then nothing useful
        can be done. */
     if (visual == 0)
index d5b4c89e6d49af80b2c15767f6e68c8f2ba7e40d..28bba7a79c60b5da596d555534b6fb3847e6bf88 100644 (file)
@@ -797,7 +797,8 @@ static const char *wtap_errlist[] = {
        NULL,
        NULL,
        "Uncompression error",
-       "Internal error"
+       "Internal error",
+       "The packet being written is too large for that format"
 };
 #define        WTAP_ERRLIST_SIZE       (sizeof wtap_errlist / sizeof wtap_errlist[0])
 
index b70c893df7070d7282dd348162c8463e0e4af876..95459d5462f6cb5d067b35e24a5529e445d0ab41 100644 (file)
@@ -1546,6 +1546,10 @@ int wtap_register_encap_type(const char* name, const char* short_name);
 #define WTAP_ERR_INTERNAL                     -23
     /** "Shouldn't happen" internal errors */
 
+#define WTAP_ERR_PACKET_TOO_LARGE             -24
+    /** Packet being written is larger than we support; do not use when
+        reading, use WTAP_ERR_BAD_FILE instead */
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */