aclocal.m4
autom4te.cache
capinfos
+captype
compile
config.h
config.h.in
reassemble_test
stamp-h1
text2pcap
+tfshark
tshark
tvbtest
wireshark
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.
"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)
-Wformat-security
-Wvla
-Waddress
- -Warray-bounds
-Wattributes
-Wdiv-by-zero
-Wignored-qualifiers
# Capabilities
if(ENABLE_CAP)
- set(PACKAGELIST ${PACKAGELIST} CAP)
+ set(PACKAGELIST ${PACKAGELIST} CAP SETCAP)
endif()
if(ENABLE_PYTHON)
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(
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})
+
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
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
!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
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 .
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 */
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 */
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
/* 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
*
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]);
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 */
);
-- $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
END
+
-- $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
-- $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
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
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,
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)}
;
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 {
-- $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
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,
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)}
;
-- $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
maxISDN-AddressLength,
FTN-AddressString,
ISDN-SubaddressString,
- ExternalSignalInfo,
- Ext-ExternalSignalInfo,
+ ExternalSignalInfo,
+ Ext-ExternalSignalInfo,
AccessNetworkSignalInfo,
SignalInfo,
maxSignalInfoLength,
TBCD-STRING,
DiameterIdentity,
Time,
+ HLR-Id,
-- data types for numbering and identification
IMSI,
- TMSI,
+ TMSI,
Identity,
SubscriberId,
IMEI,
GlobalCellId,
NetworkResource,
AdditionalNetworkResource,
- NAEA-PreferredCI,
- NAEA-CIC,
+ NAEA-PreferredCI,
+ NAEA-CIC,
ASCI-CallReference,
SubscriberIdentity,
PLMN-Id,
NetworkNodeDiameterAddress,
-- data types for CAMEL
- CellGlobalIdOrServiceAreaIdOrLAI,
+ CellGlobalIdOrServiceAreaIdOrLAI,
CellGlobalIdOrServiceAreaIdFixedLength,
LAIFixedLength,
BasicServiceCode,
Ext-BasicServiceCode,
EMLPP-Info,
- EMLPP-Priority,
+ EMLPP-Priority,
MC-SS-Info,
MaxMC-Bearers,
MC-Bearers,
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
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)}
;
-- 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))
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
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,
...}
...}
-- 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) )
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
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 {
--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
-- 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))
-- 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
-- $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
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)}
;
-- $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
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,
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 {
extensionContainer ExtensionContainer OPTIONAL,
...}
+
END
-- $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
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,
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
-- $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
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
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,
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)}
;
-- $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
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,
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)}
;
-- $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
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,
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)}
;
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 {
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 {
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 {
-- 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,
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,
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 {
-- (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
-- 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
-- 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
-- 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
-- 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))
-- 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
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.
-- 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.
-- 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
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,
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,
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 {
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
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)
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,
-- $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
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,
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
-- $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
BEGIN
EXPORTS
-
-- WS modification: for Ericsson proprietary extensions
RequestedEquipmentInfo,
-- End WS modification
UpdateLocationArg,
UpdateLocationRes,
CancelLocationArg,
- CancelLocationRes,
- PurgeMS-Arg,
+ CancelLocationRes,
+ PurgeMS-Arg,
PurgeMS-Res,
SendIdentificationArg,
- SendIdentificationRes,
+ SendIdentificationRes,
UpdateGprsLocationArg,
UpdateGprsLocationRes,
- IST-SupportIndicator,
+ IST-SupportIndicator,
SupportedLCS-CapabilitySets,
UpdateVcsgLocationArg,
UpdateVcsgLocationRes,
ForwardAccessSignalling-Arg,
PrepareHO-Arg,
PrepareHO-Res,
- PrepareSubsequentHO-Arg,
+ PrepareSubsequentHO-Arg,
PrepareSubsequentHO-Res,
ProcessAccessSignalling-Arg,
SendEndSignal-Arg,
-- authentication management types
SendAuthenticationInfoArg,
- SendAuthenticationInfoRes,
+ SendAuthenticationInfoRes,
AuthenticationFailureReportArg,
AuthenticationFailureReportRes,
-- security management types
- Kc,
+ Kc,
Cksn,
-- equipment management types
-- 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,
OfferedCamel4CSIs,
OfferedCamel4Functionalities,
maxNumOfCamelTDPData,
- CUG-Index,
+ CUG-Index,
CUG-Info,
CUG-Interlock,
InterCUG-Restrictions,
IntraCUG-Options,
- NotificationToMSUser,
+ NotificationToMSUser,
QoS-Subscribed,
IST-AlertTimerValue,
T-CSI,
RestoreDataArg,
RestoreDataRes,
--- provide subscriber info types
-GeographicalInformation,
+-- provide subscriber info types
+GeographicalInformation,
MS-Classmark2,
GPRSMSClass,
LocationInformation,
LocationInformationGPRS,
SubscriberState,
- GPRSChargingID,
+ GPRSChargingID,
MNPInfoRes,
RouteingNumber,
PagingArea,
-- VGCS / VBS types types
-GroupId,
+GroupId,
Long-GroupId,
AdditionalSubscriptions
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,
CellGlobalIdOrServiceAreaIdOrLAI,
Ext-BasicServiceCode,
NAEA-PreferredCI,
- EMLPP-Info,
+ EMLPP-Info,
MC-SS-Info,
SubscriberIdentity,
AgeOfLocationInformation,
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)}
;
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,
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 {
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.
...}
-PagingArea ::= SEQUENCE SIZE (1..5) OF LocationArea
+PagingArea ::= SEQUENCE SIZE (1..5) OF LocationArea
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]
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
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,
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,
...,
authenticationSetList AuthenticationSetList OPTIONAL,
currentSecurityContext [2]CurrentSecurityContext OPTIONAL,
extensionContainer [3] ExtensionContainer OPTIONAL,
- ...}
+ ...,
+ lastUsedLtePLMN-Id [4] PLMN-Id OPTIONAL,
+ mtCallPendingFlag [5] NULL OPTIONAL }
-- authentication management types
UpdateGprsLocationArg ::= SEQUENCE {
imsi IMSI,
- sgsn-Number ISDN-AddressString,
+ sgsn-Number ISDN-AddressString,
sgsn-Address GSN-Address,
extensionContainer ExtensionContainer OPTIONAL,
... ,
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),
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.
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,
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),
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].
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
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,
... ,
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,
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),
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
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
-- 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
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
...}
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,
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,
-- 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
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)
-- 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
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)
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,
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,
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
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)
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))
extensionContainer [2] ExtensionContainer OPTIONAL,
... }
-Bandwidth ::= INTEGER
+Bandwidth ::= INTEGER
-- bits per second
QoS-Class-Identifier ::= INTEGER (1..9)
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
-- 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
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.
-- 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 {
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
... }
-- 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]
-- 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))
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),
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
-- 1 notification
-- bit 7: redirecting presentation
- -- 0 no presentation
+ -- 0 no presentation
-- 1 presentation
-- bit 6: notification to calling party
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
}
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,
... }
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,
... }
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.
-- 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.
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
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
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,
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,
... }
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
...}
-- 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
-- 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,
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),
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.
-- 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
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.
--
-- 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
--
--- 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,
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,
...}
extensionContainer ExtensionContainer OPTIONAL,
... ,
vlr-Capability [6] VLR-Capability OPTIONAL,
- restorationIndicator [7] NULL OPTIONAL
+ restorationIndicator [7] NULL OPTIONAL
}
RestoreDataRes ::= SEQUENCE {
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,
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),
-- 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
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))
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 {
}
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].
locationInformation [0] NULL OPTIONAL,
subscriberState [1] NULL OPTIONAL,
extensionContainer [2] ExtensionContainer OPTIONAL,
- ...,
+ ...,
currentLocation [3] NULL OPTIONAL,
requestedDomain [4] DomainType OPTIONAL,
imei [6] NULL OPTIONAL,
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"
... ,
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.
-- 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 {
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.
-- 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.
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,
Ext-CwFeature
Ext-CwFeature ::= SEQUENCE {
- basicService [1] Ext-BasicServiceCode,
+ basicService [1] Ext-BasicServiceCode,
ss-Status [2] Ext-SS-Status,
... }
ss-Status [1] Ext-SS-Status,
overrideCategory [2] OverrideCategory,
notificationToCSE [3] NULL OPTIONAL,
- ... }
+ ... }
ClirData ::= SEQUENCE {
ss-Status [1] Ext-SS-Status,
MSISDN-BS ::= SEQUENCE {
- msisdn ISDN-AddressString,
+ msisdn ISDN-AddressString,
basicServiceList [0] BasicServiceList OPTIONAL,
extensionContainer [1] ExtensionContainer OPTIONAL,
...}
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,
-- $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
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,
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)}
;
-- $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
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)}
;
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),
TrackingAreaId-List ::= SEQUENCE SIZE (1..8) OF
TA-Id
+
ListOfMeasurements ::= OCTET STRING (SIZE (4))
-- Octets are coded as described in 3GPP TS 32.422.
-- $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
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,
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)}
;
-- $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
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,
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,
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,
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,
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,
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,
FROM MAP-LocationServiceOperations {
itu-t identified-organization (4) etsi (0) mobileDomain (0)
gsm-Network (1) modules (3) map-LocationServiceOperations (24)
- version13 (13)}
+ version15 (15)}
;
-- $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
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)}
;
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),
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,
...,
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,
-- 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 {
msisdn ISDN-AddressString,
serviceCentreAddress AddressString,
...,
- imsi IMSI OPTIONAL }
+ imsi IMSI OPTIONAL,
+ correlationID CorrelationID OPTIONAL }
InformServiceCentreArg ::= SEQUENCE {
storedMSISDN ISDN-AddressString OPTIONAL,
-- $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
-- $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
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)}
;
-- $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
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,
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)}
;
-- $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
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,
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)}
;
-- $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
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)
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){
* 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
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 */
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);
}
}
* 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;
}
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
/* 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
%(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) {
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);
}
* 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
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;
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);
+ }
}
}
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)) {
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]");
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)
/* 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 }},
/* 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);
}
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);
}
}
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{
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);
/* 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_)
{
#include "packet-x509af-exp.h"
+extern const char* x509af_get_last_algorithm_id(void);
+
#endif /* PACKET_X509AF_H */
%(DEFAULT_BODY)s
+ algorithm_id = actx->external.direct_reference;
+
if(actx->external.direct_reference) {
name = oid_resolved_from_string(actx->external.direct_reference);
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;
/* (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));
${_otherdependencies}
)
ENDMACRO()
-
--- /dev/null
+# 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 ()
#
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
--- /dev/null
+#
+# $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 )
+
#
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
# 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
GTK_DLL=libgtk-3-0.dll
PKG_SUFIX=ws
GTK_PKG=3.4.4-2.1
+#GTK_PKG=3.6.1-1.1
!ENDIF
#
GTK_INST_VERSION=2.24
!ELSE
GTK_INST_VERSION=3.4
+#GTK_INST_VERSION=3.6
!ENDIF
#
GTK_DLL=libgtk-3-0.dll
PKG_SUFIX=ws
GTK_PKG=3.4.4-2.1
+#GTK_PKG=3.6.1-1.1
!ENDIF
#
#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
#
# 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
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
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)
<!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">
---------------------
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.
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.
# 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
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
# 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
${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(
@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)
# 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
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 ---
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 \
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 \
# 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 \
$(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 \
*.hhp \
*.pdf \
*.validated \
+ $(WSDG_GENERATED_SOURCE) \
+ wsdg_src/*.dbk \
wsdg_chm \
wsdg_html.zip \
wsdg_html_chunked.zip \
release_notes_chm \
release-notes.html \
release-notes.txt \
- svn_version.xml \
+ git_version.xml \
user-guide.zip \
wsluarm
.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 -------------------------------------------------------
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
<<
mv release-notes.pdf $@
+_FORCE_: ## Assumption: no file named _FORCE_ exists in the current directory
+
[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[AT]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[AT]web.de
+
+gpl-url:\[\]=http://www.gnu.org/licenses/gpl-2.0.html
[macros]
# 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
-->
<!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">
<!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
</File>
</Filter>
<File
- RelativePath=".\check_svn_version.sh"
+ RelativePath=".\check_git_version.sh"
>
</File>
<File
-->
<!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 ">
<!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
--- /dev/null
+++++++++++++++++++++++++++++++++++++++
+<!-- 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&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 (>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 -->
+++++++++++++++++++++++++++++++++++++++
+
+++ /dev/null
-<!-- 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&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 -->
--- /dev/null
+++++++++++++++++++++++++++++++++++++++
+<!-- 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.
+--
+++ /dev/null
-<!-- 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&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>></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>
--- /dev/null
+
+++++++++++++++++++++++++++++++++++++++
+<!-- 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 -->
+++++++++++++++++++++++++++++++++++++++
+
+++ /dev/null
-<!-- 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>></prompt> <userinput>nmake -f Makefile.nmake distclean</userinput>
- </para>
- <para>
- After doing this, typing at the command line prompt (cmd.exe):
- </para>
- <para>
- <prompt>></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 > 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 > 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 <wireshark_root>/tools/checkAPIs.pl <source-filename(s)></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&requester=&product=&type=review_for_checkin&requestee=&component=&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 <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 <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>></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 -->
<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">
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.
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
bash command line prompt:</para>
<para>
<prompt>$</prompt>
- <userinput>diff --version</userinput>
+ <userinput>diff - --><!-- -version</userinput>
</para>
<para>should result in something like:
<programlisting>
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
--- /dev/null
+
+
+++++++++++++++++++++++++++++++++++++++
+<!-- $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:[]].
+
+
+++ /dev/null
-<!-- $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>
* 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;
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)) {
}
break;
default:
- printf("<type unknown %u>", if_addr->ifat_type);
+ printf("<type unknown %i>", if_addr->ifat_type);
}
}
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",
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");
}
* 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;
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");
}
}
}
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, ¤t)) {
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");
}
}
}
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:
}
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,
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
}
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;
packet-lsc.c \
packet-ltp.c \
packet-lwapp.c \
+ packet-lwm.c \
packet-lwres.c \
packet-m2pa.c \
packet-m2tp.c \
packet-lpp.h \
packet-lte-rrc.h \
packet-mac-lte.h \
+ packet-mbim.h \
packet-mbtcp.h \
packet-mgcp.h \
packet-mms.h \
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);
-/* packet-9P.c
+/* packet-9p.c
* Routines for 9P dissection
* Copyright 2005, Nils O. Selaasdal
*
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);
}
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;
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);
}
}
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);
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);
}
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);
}
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);
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);
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);
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;
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;
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);
}
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);
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);
}
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");
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;
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;
}
}
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;
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;
"%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:
/*
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 */
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;
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;
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;
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;
-/* packet-aim.c
+/* packet-aim-chatnav.c
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
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;
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 */
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);
-/* packet-aim.c
+/* packet-aim-oft.c
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
-/* packet-aim.c
+/* packet-aim-popup.c
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
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;
}
/* 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;
}
/* 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) */
/* 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;
}
/* 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;
}
/* 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;
}
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);
}
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;
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;
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;
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,
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);
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);
*
* 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
*
/*
* 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.
*/
#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;
}
/*
- * 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.
#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
#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
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);
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_);
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,
/* 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 */
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;
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;
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"},
{ 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 */
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);
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;
* 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)
{
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)
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;
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);
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)) {
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;
}
}
+/* 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;
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);
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
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);
}
* 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,
"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,
{&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 */
&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[] = {
{ &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;
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,
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);
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);
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,
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);
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,
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,
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
{
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)
{
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;
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 */
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 */
/* 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 );
/* 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 */
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 )
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))
{
}
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 */
/*
* See
*
- * http://www.artisticlicence.com/art-net.pdf
+ * http://www.artisticlicence.com/WebSiteMaster/User%20Guides/art-net.pdf
*/
void proto_register_artnet(void);
}
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);
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);
}
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]"));
}
#include <glib.h>
#include <epan/packet.h>
+#include <epan/prefs.h>
#include "wmem/wmem.h"
#include <stdio.h>
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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 */
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 */
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 */
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 */
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 */
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 */
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[] = {
{ 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 };
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[] = {
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 };
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 };
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 };
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 };
/* 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" },
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 };
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 } };
&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 } };
&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 } };
&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 } };
&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 } };
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 */
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 */
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 */
};
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;
/*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;
}
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]);
}
}
}
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;
}
{ &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 } },
{ &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 } },
{ &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 } },
{ &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 } },
{ &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 } },
{ &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 } },
{ &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 } },
&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,
&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,
&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,
&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,
&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,
&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,
&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,
&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,
&ett_065_SP
};
+ module_t *asterix_prefs_module;
+
proto_asterix = proto_register_protocol (
"ASTERIX packet", /* name */
"ASTERIX", /* short name */
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)
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++;
}
}
- 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++;
}
}
- 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);
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))) {
};
/* 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}
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;
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;
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 */
/* 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;
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;
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" },
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++;
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++;
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[] = {
&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,
};
{
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;
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[] = {
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);
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;
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;
}
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;
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 ;
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;
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);
}
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);
}
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);
}
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);
}
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);
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);
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);
}
}
/* 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,
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;
}
}
- 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++;
}
}
- 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++;
}
}
- 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);
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;
{
ssl_dissect_hnd_hello_ext(&dissect_dtls_hf, tvb, tree, offset,
length -
- (offset - start_offset), TRUE);
+ (offset - start_offset), TRUE, ssl);
}
}
}
{
offset = ssl_dissect_hnd_hello_ext(&dissect_dtls_hf, tvb, tree, offset,
length -
- (offset - start_offset), FALSE);
+ (offset - start_offset), FALSE, ssl);
}
}
return offset;
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;
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;
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;
#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;
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);
}
/* 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;
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);
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);
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);
}
}
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);
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:
}
}
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);
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);
}
{ "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",
{ "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 }
{ "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",
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;
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";
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)
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);
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;
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 } },
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 } },
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 } },
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 } },
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 } },
#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
*
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 ---*/
#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 */
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;
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]);
/*--- 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) {
"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 */
&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[] = {
/*--- 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"
}
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;
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,
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 */
);
*/
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++;
bits_in_oct -= bits_needed;
/* analyse bits */
- if ((oct>>(32-bits_needed)) == 1)
+ if (value == 1)
{
/*
* 8PSK Power Capability
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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;
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 */
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 */
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;
}
+
+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 },
{ &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 }
};
}
+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 }
};
{ &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 }
};
}
-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 },
{ &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 }
};
{ &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 }
};
}
+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 },
{ &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 }
};
{ &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 }
};
}
+
+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,
+ ¶meter_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 }
};
{ &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 }
};
{ 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 }
};
{ &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 }
};
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)
{ &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 }
};
}
-
-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 },
};
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);
{ &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 }
};
-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,
{ &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 }
};
}
-
-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,
- ¶meter_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" },
}
-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_) {
{ &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 }
};
{ &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 }
};
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
&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,
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;
/* < 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;
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;
-
+#if 0
static int hf_si1_restoctet_nch_position = -1;
static int hf_si1_restoctet_bandindicator = -1;
static int hf_selection_parameters_cbq = -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;
NULL, HFILL
}
},
-#endif
-#if 0
{ &hf_single_rf_channel_spare,
{ "spare", "gsm_rlcmac.dl.single_rf_channel_spare",
FT_UINT8, BASE_DEC, NULL, 0x0,
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,
NULL, HFILL
}
},
+#endif
{ &hf_tsc,
{ "TSC", "gsm_rlcmac.dl.tsc",
FT_UINT8, BASE_DEC, NULL, 0x0,
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,
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,
/* < 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,
NULL, HFILL
}
},
+#endif
/* < MS Radio Access capability IE > */
{ &hf_dtm_egprs_dtm_egprs_multislot_class,
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,
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,
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,
/* < 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,
NULL, HFILL
}
},
+#endif
/* < Additional MS Radio Access Capability message content > */
/* < End Additional MS Radio Access Capability> */
/* < 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 }},
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;
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 */
#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
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;
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;
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;
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 */
{ "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,
#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",
{"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",
{"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 }
&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,
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;
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);
#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)
}
#define SPX_HEADER_LEN 12
+#define SPX2_HEADER_LEN 14
static void
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;
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) {
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);
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);
+ }
}
/*
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
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))
{
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 }},
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,
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,
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);
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:
+ */
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) &&
}
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 */
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) &&
}
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 */
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 }}
};
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 */
* 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
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);
}
}
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){
* 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;
}
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);
}
/* 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);
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) {
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;
}
--- /dev/null
+/* 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:
+ */
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;
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,
#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);
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,
"MBIM fragments"
};
-struct mbim_info {
- guint32 req_frame;
- guint32 resp_frame;
-};
-
struct mbim_conv_info {
wmem_tree_t *trans;
wmem_tree_t *open;
{ 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"},
#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}}},
};
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);
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;
}
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;
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");
{
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;
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;
{
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;
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;
{
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");
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;
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);
}
}
- 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;
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);
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);
}
}
- 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;
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;
&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)
{
--- /dev/null
+/* 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__ */
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;
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,
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);
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;
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;
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;
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 */
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,
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,
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,
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,
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
guint8 *hpp, *pls;
if (len < offset+2) {
- /* Buffer to small */
+ /* Buffer too small */
return 0;
}
#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"
/* 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,
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,
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;
/* 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);
+
+
* 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
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 */
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)
{
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;
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);
+ }
}
}
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)) {
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]");
/*--- 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)
{
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)
/* 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 }},
"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 */
&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;
/*--- 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");
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,
}
},
{ &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
}
},
}
},
{ &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
}
},
}
},
{ &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
}
}
{ &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 }},
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;
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:
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
};
/*
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. ",
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");
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;
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 */
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++;
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++;
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++;
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++;
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);
{ &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_DEC, VALS(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 }},
{ &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_DEC, VALS(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 }},
{ &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_DEC, VALS(gmpls_lsp_enc_rvals), 0x0, NULL, HFILL }},
- { &hf_rsvp_label_request_switching_type, { "Switching Type", "rsvp.label_request.switching_type", FT_UINT8, BASE_DEC, VALS(gmpls_switching_type_rvals), 0x0, NULL, HFILL }},
- { &hf_rsvp_g_pid, { "G-PID", "rsvp.label_request.g_pid", FT_UINT16, BASE_HEX, VALS(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 }},
{ &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_DEC, VALS(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, VALS(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 }},
/* 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);
}
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 */
&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[] = {
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);
}
}
#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);
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:
+ */
#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;
void proto_register_sgsap(void) {
guint i;
guint last_offset;
+ module_t *sgsap_module;
/* List of fields */
/* 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
*/
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");
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);
}
/* 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);
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;
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;
* 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
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
/* 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,
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,
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 */
},
{ &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
}
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{
{ 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 }
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;
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)
{
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)
{
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;
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,
#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
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;
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);
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,
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);
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:
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;
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 */
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);
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);
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);
}
}
}
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) {
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
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);
/*--- 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"
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);
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);
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,
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);
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;
/*--- 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_)
"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 */
&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 */
/*--- 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
/*--- 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 */
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;
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;
}
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--;
}
PRIVATE ENTERPRISE NUMBERS
-(last updated 2014-01-12)
+(last updated 2014-01-26)
SMI Network Management Private Enterprise Codes:
ishamir&senterprise.com
7057
SuSE Linux AG
- Carsten Hoeger
+ Ralf Haferkamp
suse-oid&suse.de
7058
BB4 Technologies Inc
M. Wortmann
kontakt&activ-net.de
19199
- SHC Netzwerktechnik
+ SHC Netzwerktechnik GmbH
Hans Lang
- hal&shcnet.de
+ hal&shc.eu
19200
MMG
Hans Lang
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
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
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
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
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
dmcclain&falconsteel.com
38636
Starfish Technologies Limited
- Andrew Dix
- andrew&starfish.tv
+ Graham Neden-Watts
+ graham&starfish.tv
38637
U2 Systems
Tony Ching
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&lesky.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
#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
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);
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 *);
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;
}
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();
}
{
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();
}
}
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;
}
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;
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;
}
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)
/* 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");
#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:
+ */
#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
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 */
* 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:
+ */
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
}
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);
}
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
}
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);
}
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;
}
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
}
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
}
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;
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;
}
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;
}
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
{
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,
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 */
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 */
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 */
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 */
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 */
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 */
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 */
}
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;
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 */
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 */
#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
}
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);
}
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;
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 */
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;
}
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;
}
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);
}
}
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;
}
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;
}
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;
/* 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)
{
/*
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 */
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 */
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 */
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 */
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,
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 */
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 */
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 */
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 */
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,
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 */
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 */
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 */
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 */
}
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? */
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 */
#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;
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 */
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 */
/* 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;
/* 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);
/* 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
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 */
}
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
}
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);
}
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;
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 */
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 */
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 */
* 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;
}
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;
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;
}
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);
}
}
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
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 */
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 */
}
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
}
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;
}
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;
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 */
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);
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;
}
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;
}
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;
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
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.
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);
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) {
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 ));
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
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 */
if (length > 0) {
g_byte_array_append(bytes, start_ptr, length);
}
- fvalue_set(&fi->value, bytes, TRUE);
+ fvalue_set_byte_array(&fi->value, bytes);
}
/* 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;
/* 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 */
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
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
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
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
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 */
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 ]");
}
}
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
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
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
}
proto_tree *
-proto_item_get_subtree(const proto_item *pi) {
+proto_item_get_subtree(proto_item *pi) {
field_info *fi;
if (!pi)
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;
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;
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\"!"
}
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);
" 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);
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;
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 */
};
/**
*/
#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 */
/** 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
/** 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
@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
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) {
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) {
}
}
-/* 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 ...
*/
#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;
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)
{
}
/*
- * 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])
}
/*
- * 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)?
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)
{
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.
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);
}
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);
}
* 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,
* 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:
* 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:
}
/*
- * 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;
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)
{
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)
{
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)
{
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);
}
* 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:
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
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 ...
*/
/**
* 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
* 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
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);
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) {
/*
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(
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(
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(
use strict;
use Time::Local;
+use File::Basename;
use POSIX qw(strftime);
use Getopt::Long;
use Pod::Usage;
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;
"version_build" => 0,
"enable" => 1,
+ "git_client" => 0,
"svn_client" => 1,
"tortoise_svn" => 0,
"format" => "SVN %Y%m%d%H%M%S",
# 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 = "";
$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") {
$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";
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";
&get_config();
-&read_svn_info();
+&read_repo_info();
&print_svn_revision;
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
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
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
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.
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,
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
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
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
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
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
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
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
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.
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
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
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.
}
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) {
/*
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:
+++ /dev/null
-/*
- * $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;
-}
+++ /dev/null
-/*
- * $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 */
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
+}
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
+}
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)
{
(((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) \
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;
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]
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
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
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]
#
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
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
#
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
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.
(*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]))
){
}
}
}
- 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:"");
}
/*
-#! /bin/sh
+#! /bin/bash
#
# runlex.sh
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.
#
# OK, run it.
#
-echo "Running ${LEX}"
+echo "Running ${LEX} -o$outfile $flags $@"
${LEX} -o"$outfile" $flags "$@"
#
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.
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;
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",
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;
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
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 \
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 \
#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;
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkansi_a_stat(void);
+
enum
{
IEI_COLUMN,
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkansi_map_stat(void);
+
enum
{
OP_CODE_COLUMN,
#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 */
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++) {
}
}
- do_export_pdu(data);
+ export_pdu_action(data);
}
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkcomparestat(void);
+
/* From colorize conversion */
#define COLOR_N 1
#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)
{
#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)
#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)
{
#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)
{
#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)
{
#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)
#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)
{
#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)
{
#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)
{
#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)
{
#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)
{
#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)
{
#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_)
{
#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)
{
#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;
#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;
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();
}
}
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");
+ }
}
{
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);
+ }
}
g_free(tree_info);
}
-static GtkWidget*
+static GtkWidget *
init_table(void)
{
GtkTreeStore *store;
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);
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)));
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:
+ */
#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
}
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);
}
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;
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");
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 */
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");
#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__ */
#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;
#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;
#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;
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkgsm_a_stat(void);
+
enum
{
IEI_COLUMN,
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkgsm_map_stat(void);
+
enum
{
ID_COLUMN,
#define SUM_STR_MAX 1024
+void register_tap_listener_gtkgsm_map_summary(void);
static void
add_string_to_box(gchar *str, GtkWidget *box)
#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;
#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[] = {
#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[] = {
#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)
#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)
#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)
{
#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)
{
#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)
{
#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)
{
#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)
{
#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_)
{
#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)
{
#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)
{
#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)
{
#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)
{
#include "frame_tvbuff.h"
+void register_tap_listener_iax2_analysis(void);
+
enum
{
PACKET_COLUMN,
#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
#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;
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_mac_lte_stat(void);
+
/**********************************************/
/* Table column identifiers and title strings */
#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>
#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"
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkmegacostat(void);
+
static void
megacostat_reset(void *pms)
{
#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 */
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkmtp3_stat(void);
+
enum
{
OPC_COLUMN,
#define SUM_STR_MAX 1024
+void register_tap_listener_gtkmtp3_summary(void);
typedef struct _my_columns_t {
guint32 value;
#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 {
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_gtkradiusstat(void);
+
#define NUM_COLUMNS 11
typedef enum _radius_category {
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_rlc_lte_stat(void);
+
/**********************************************/
/* Table column identifiers and title strings */
#define NANOSECS_PER_SEC 1000000000
+void register_tap_listener_gtkrpcprogs(void);
+
static GtkWidget *win = NULL;
static GtkWidget *grid = NULL;
static int num_progs = 0;
#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;
#include "frame_tvbuff.h"
+void register_tap_listener_rtp_analysis(void);
+
enum
{
PACKET_COLUMN,
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;
#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;
#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[] = {
#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;
#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;
#include "ui/win32/file_dlg_win32.h"
#endif
+void register_tap_listener_stats_tree_stat(void);
+
struct _st_node_pres {
GtkTreeIter* iter;
};
{
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");
#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;
#include "ui/gtk/old-gtk-compat.h"
+void register_tap_listener_wlanstat(void);
+
enum {
BSSID_COLUMN,
CHANNEL_COLUMN,
#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;
void MainWindow::on_actionHelpAbout_triggered()
{
- AboutDialog *about_dialog = new AboutDialog(this);;
+ AboutDialog *about_dialog = new AboutDialog(this);
if (about_dialog->isMinimized() == true)
{
<?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><html><head/><body><p><br/></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wireshark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><span size=\"x-large\" weight=\"bold\">Network Protocol Analyzer</span></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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <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><html><head/><body><p>Capture packets in the next-generation capture file format.</p></body></html></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><html><head/><body><p>Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.</p></body></html></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><html><head/><body><p>Keep the packet list scrolled to the bottom while capturing.</p></body></html></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Type</source>
+ <source>Capture packets in promiscuous mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Field name</source>
+ <source><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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 <%2/></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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
<translation type="unfinished"></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><html><head/><body><p>Capture packets in the next-generation capture file format.</p></body></html></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><html><head/><body><p>Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.</p></body></html></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><html><head/><body><p>Keep the packet list scrolled to the bottom while capturing.</p></body></html></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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 "Decode As" 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 "Decode As" 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 <%2/></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 &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 "Follow Stream" client text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sample "Follow Stream" 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><i>(No format will be applied)</i></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><html><head/>
+<body>
+
+<h2><a href="http://www.wireshark.org/docs/wsug_html_chunked/">User's Guide</a></h2>
+<p>
+How to install Wireshark and how to use each of its features.<br/>
+Other formats and command-line man pages can be found on<br/>
+the <a href="http://www.wireshark.org/docs/">documentation page</a>.
+</p>
+
+<h2><a href="http://wiki.wireshark.org/">The Wireshark Wiki</a></h2>
+<p>
+User-contributed pages on different aspects of using Wireshark.<br/>
+Capturing in different environments, filtering, specific protocols,<br/>
+and a variety of other information.
+</p>
+
+<h2><a href="http://ask.wireshark.org/">Wireshark Q&amp;A</a></h2>
+<p>
+Question and answer site for Wireshark and protocol analysis.
+</p>
+
+<h2><a href="http://www.wireshark.org/lists/">Mailing Lists</a></h2>
+<p>
+In-depth discussions about Wireshark and protocol analysis.
+</p>
+
+</body></html></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'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&&A)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Manual pages</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&Contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&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>&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>&Start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ctrl+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>S&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&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>&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 &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>&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>&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 &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 &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>&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>&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>&Options...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Capture options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Capture &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>&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't be merged.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Save changes in "%1" 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'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'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't save them.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Do you want to save the changes you've made to the capture file "%1"%2?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Your changes will be lost if you don'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 "%1".</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 &Text...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>As CSV...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>As "C" 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>&HTTP...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&DICOM...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&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>&Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&Not Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Not Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... &and Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... and Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... &or Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... or Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... a&nd not Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... and not Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>... o&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 &Macros...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Apply as Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&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&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&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>&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>&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's preferences</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ctrl+Shift+P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Couldn'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>&Preferences...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&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'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>&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&PP Operations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>SMPP operation statistics</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&UCP Messages</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>UCP message statistics</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Decode &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 & 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><html><head/><body><p>Packet summary lines similar to the packet list</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Summary line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p>Packet details similar to the protocol tree</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Details:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p>Export only top-level packet detail items</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>All co&llapsed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p>Expand and collapse packet details as they are currently displayed.</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>As displa&yed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p>Export all packet detail items</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>All e&xpanded</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p>Export a hexdump of the packet data similar to the packet bytes view</p></body></html></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't work well with the currently selected Time Display Format.
+Do you want to switch to "Seconds Since Beginning of Capture" 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>&Marked packets only</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&Range:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Remove &ignored packets</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>First &to last marked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&All packets</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&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><html><head/><body><p>Use the &quot;+&quot; and &quot;-&quot; keys to zoom the preview in and out. Use the &quot;0&quot; key to reset the zoom level.</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source><html><head/><body><p><span style=" font-size:small; font-style:italic;">+ and - zoom, 0 resets</span></p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Packet Range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&Print...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Page &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><i>(No format will be applied)</i></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><html><head/><body><p>User's Guide</p><p><br/></p><p>Wiki</p></body></html></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'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&&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>&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>&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>&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><html><head/><body><p><br/></p></body></html></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>&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&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><small><i>Graph %1: a_rwnd=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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&xpand Subtrees</source>
+ <source>Received Bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Expand the current packet detail</source>
+ <source><small><i>Graph %1: Received bytes=%2 Time=%3 secs </i></small></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>&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 &All</source>
+ <source>Reset to full size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Collapse all packet details</source>
+ <source><html><head/><body><p><br/></p></body></html></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>&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>&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 &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><small><i>%1: %2 Time: %3 secs </i></small></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 &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>&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><html><head/><body><p>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).</p></body></html></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>&Reload</source>
+ <source>Packet bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Reload the current file</source>
+ <source><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Ctrl+R</source>
+ <source>Narrow & Wide</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&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 &Filters...</source>
+ <source>Case sensitive</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Capture filters</source>
+ <source><html><head/><body><p>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).</p></body></html></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>&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't be merged.</source>
+ <source>That filter doesn't test anything.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Save changes in "%1" before merging?</source>
+ <source>That'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't specify any text for which to search.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The filter expression %1 isn'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'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't save them.</source>
+ <source>Flow</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>Do you want to save the changes you've made to the capture file "%1"%2?</source>
+ <message utf8="true">
+ <source><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+</tbody></table>
+</body></html></source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Your changes will be lost if you don't save them.</source>
+ <source><small><i>A hint</i></small></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 "%1".</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 &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 "C" 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>&HTTP...</source>
+ <source>Move Left 10 Pixels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&DICOM...</source>
+ <source>Move left 10 pixels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&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>&Selected</source>
+ <source>Shift+Down</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&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>... &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>... &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&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&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 &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>&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&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&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>&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>&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'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'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>&Preferences...</source>
+ <source>Displayed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&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'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 & 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><html><head/><body><p>Packet summary lines similar to the packet list</p></body></html></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><html><head/><body><p>Packet details similar to the protocol tree</p></body></html></source>
+ <source>unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Details:</source>
+ <source>none</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source><html><head/><body><p>Export only top-level packet detail items</p></body></html></source>
+ <source>%u bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All co&llapsed</source>
+ <source>Packets</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source><html><head/><body><p>Expand and collapse packet details as they are currently displayed.</p></body></html></source>
+ <source>Between first and last packet</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>As displa&yed</source>
+ <source>%.3f sec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source><html><head/><body><p>Export all packet detail items</p></body></html></source>
+ <source>Avg. packets/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>All e&xpanded</source>
+ <source>Avg. packet size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source><html><head/><body><p>Export a hexdump of the packet data similar to the packet bytes view</p></body></html></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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>+</th><td>Zoom in</td></th>
+<tr><th>-</th><td>Zoom out</td></th>
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th><i>Pg Up</i></th><td>Next stream</td></th>
+<tr><th><i>Pg Dn</i></th><td>Previous stream</td></th>
+<tr><th>d</th><td>Switch direction (swap TCP endpoints)</td></th>
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+<tr><th>z</th><td>Toggle mouse drag / zoom</td></th>
+<tr><th>s</th><td>Toggle relative / absolute sequence numbers</td></th>
+<tr><th>t</th><td>Toggle capture / session time origin</td></th>
+<tr><th>Space</th><td>Toggle crosshairs</td></th>
+
+<tr><th>1</th><td>Round Trip Time graph</td></th>
+<tr><th>2</th><td>Throughput graph</td></th>
+<tr><th>3</th><td>Stevens-style Time / Sequence graph</td></th>
+<tr><th>4</th><td>tcptrace-style Time / Sequence graph</td></th>
+<tr><th>5</th><td>Window Scaling graph</td></th>
+
+</tbody></table>
+</body></html></source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Bytes</source>
+ <source><small><i>Mouse over for shortcuts</i></small></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't work well with the currently selected Time Display Format.
-Do you want to switch to "Seconds Since Beginning of Capture" now?</source>
+ <source>Stream</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Frame %1: %2
-
-</source>
+ <source><html><head/><body><p>Switch the direction of the connection (view the opposite flow).</p></body></html></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>&Marked packets only</source>
+ <source>zooms</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&Range:</source>
+ <source><html><head/><body><p>Reset the graph to its initial state.</p></body></html></source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Remove &ignored packets</source>
+ <source>Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>First &to last marked</source>
+ <source>Reset Graph</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&All packets</source>
+ <source>Reset the graph to its initial state.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&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><html><head/><body><p>Use the &quot;+&quot; and &quot;-&quot; keys to zoom the preview in and out. Use the &quot;0&quot; key to reset the zoom level.</p></body></html></source>
+ <source>Move Left 1 Pixel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source><html><head/><body><p><span style=" font-size:small; font-style:italic;">+ and - zoom, 0 resets</span></p></body></html></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>&Print...</source>
+ <source>Move Right 1 Pixel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Page &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><html><head/><body><p>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).</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
+ <source>Space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Narrow & 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><html><head/><body><p>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).</p></body></html></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't test anything.</source>
+ <source>Time / Sequence (tcptrace)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>That'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'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>
<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>
<?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><html><head/><body><p><br/></p></body></html></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><span size=\"x-large\" weight=\"bold\">Network Protocol Analyzer</span></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'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>&MAC name resolution</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="capture_file_dialog.cpp" line="507"/>
+ <source>&Transport name resolution</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="capture_file_dialog.cpp" line="511"/>
+ <source>&Network name resolution</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="capture_file_dialog.cpp" line="515"/>
+ <source>&External name resolver</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="capture_file_dialog.cpp" line="521"/>
+ <source>Compress with g&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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <translation type="unfinished"></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <translation type="unfinished"></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><html><head/><body><p>Capture packets in the next-generation capture file format.</p></body></html></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><html><head/><body><p>Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.</p></body></html></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><html><head/><body><p>Keep the packet list scrolled to the bottom while capturing.</p></body></html></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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 "Decode As" 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 "Decode As" 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 <%2/></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 &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 "Follow Stream" client text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="font_color_preferences_frame.ui" line="149"/>
+ <source>Sample "Follow Stream" 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><i>(No format will be applied)</i></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><html><head/>
+<body>
+
+<h2><a href="http://www.wireshark.org/docs/wsug_html_chunked/">User's Guide</a></h2>
+<p>
+How to install Wireshark and how to use each of its features.<br/>
+Other formats and command-line man pages can be found on<br/>
+the <a href="http://www.wireshark.org/docs/">documentation page</a>.
+</p>
+
+<h2><a href="http://wiki.wireshark.org/">The Wireshark Wiki</a></h2>
+<p>
+User-contributed pages on different aspects of using Wireshark.<br/>
+Capturing in different environments, filtering, specific protocols,<br/>
+and a variety of other information.
+</p>
+
+<h2><a href="http://ask.wireshark.org/">Wireshark Q&amp;A</a></h2>
+<p>
+Question and answer site for Wireshark and protocol analysis.
+</p>
+
+<h2><a href="http://www.wireshark.org/lists/">Mailing Lists</a></h2>
+<p>
+In-depth discussions about Wireshark and protocol analysis.
+</p>
+
+</body></html></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>&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>&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&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>&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'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>&About Wireshark</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="635"/>
+ <source>Ask (Q&&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&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>&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 &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>&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>&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>&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 &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 &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>&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>&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>&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 &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>&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 &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 "C" 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>&HTTP...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="909"/>
+ <source>&DICOM...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="914"/>
+ <source>&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>&Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="956"/>
+ <location filename="main_window.ui" line="1001"/>
+ <source>&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>... &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>... &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&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&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 &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>&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&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&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>&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>&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>&Preferences...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="1263"/>
+ <source>Manage Wireshark'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>&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&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>&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 &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't be merged.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.cpp" line="546"/>
+ <source>Save changes in "%1" 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'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 "%1".</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'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'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've made to the capture file "%1"%2?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.cpp" line="1183"/>
+ <source>Your changes will be lost if you don'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'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'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 & 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><html><head/><body><p>Packet summary lines similar to the packet list</p></body></html></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><html><head/><body><p>Packet details similar to the protocol tree</p></body></html></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><html><head/><body><p>Export only top-level packet detail items</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="58"/>
+ <source>All co&llapsed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="71"/>
+ <source><html><head/><body><p>Expand and collapse packet details as they are currently displayed.</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="74"/>
+ <source>As displa&yed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="90"/>
+ <source><html><head/><body><p>Export all packet detail items</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="93"/>
+ <source>All e&xpanded</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_format_group_box.ui" line="100"/>
+ <source><html><head/><body><p>Export a hexdump of the packet data similar to the packet bytes view</p></body></html></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't work well with the currently selected Time Display Format.
+Do you want to switch to "Seconds Since Beginning of Capture" 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>&Marked packets only</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_range_group_box.ui" line="66"/>
+ <source>&Range:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_range_group_box.ui" line="86"/>
+ <source>Remove &ignored packets</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_range_group_box.ui" line="103"/>
+ <source>First &to last marked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_range_group_box.ui" line="123"/>
+ <source>&All packets</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="packet_range_group_box.ui" line="163"/>
+ <source>&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><html><head/><body><p>Use the &quot;+&quot; and &quot;-&quot; keys to zoom the preview in and out. Use the &quot;0&quot; key to reset the zoom level.</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="print_dialog.ui" line="60"/>
+ <source><html><head/><body><p><span style=" font-size:small; font-style:italic;">+ and - zoom, 0 resets</span></p></body></html></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>&Print...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="print_dialog.cpp" line="122"/>
+ <source>Page &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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: a_rwnd=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: Received bytes=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>%1: %2 Time: %3 secs </i></small></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><html><head/><body><p>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).</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="search_frame.ui" line="71"/>
+ <source>Narrow & 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><html><head/><body><p>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).</p></body></html></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't test anything.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="250"/>
+ <source>That's not a valid hex string.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="258"/>
+ <source>You didn'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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sequence_dialog.ui" line="73"/>
+ <source><small><i>A hint</i></small></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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>+</th><td>Zoom in</td></th>
+<tr><th>-</th><td>Zoom out</td></th>
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th><i>Pg Up</i></th><td>Next stream</td></th>
+<tr><th><i>Pg Dn</i></th><td>Previous stream</td></th>
+<tr><th>d</th><td>Switch direction (swap TCP endpoints)</td></th>
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+<tr><th>z</th><td>Toggle mouse drag / zoom</td></th>
+<tr><th>s</th><td>Toggle relative / absolute sequence numbers</td></th>
+<tr><th>t</th><td>Toggle capture / session time origin</td></th>
+<tr><th>Space</th><td>Toggle crosshairs</td></th>
+
+<tr><th>1</th><td>Round Trip Time graph</td></th>
+<tr><th>2</th><td>Throughput graph</td></th>
+<tr><th>3</th><td>Stevens-style Time / Sequence graph</td></th>
+<tr><th>4</th><td>tcptrace-style Time / Sequence graph</td></th>
+<tr><th>5</th><td>Window Scaling graph</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="tcp_stream_dialog.ui" line="71"/>
+ <source><small><i>Mouse over for shortcuts</i></small></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><html><head/><body><p>Switch the direction of the connection (view the opposite flow).</p></body></html></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><html><head/><body><p>Reset the graph to its initial state.</p></body></html></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><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></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><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></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>
<?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><html><head/><body><p><br/></p></body></html></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><span size=\"x-large\" weight=\"bold\">Network Protocol Analyzer</span></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'affichage:</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="435"/>
+ <location filename="capture_file_dialog.cpp" line="503"/>
<source>&MAC name resolution</source>
<oldsource>Enable &network name resolution</oldsource>
<translation>Résolution d'adresse &MAC</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="439"/>
+ <location filename="capture_file_dialog.cpp" line="507"/>
<source>&Transport name resolution</source>
<oldsource>Use &external name resolver</oldsource>
<translation>Résolution du nom de &Transport</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="443"/>
+ <location filename="capture_file_dialog.cpp" line="511"/>
<source>&Network name resolution</source>
<translation>Résolution de nom &Réseau</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="447"/>
+ <location filename="capture_file_dialog.cpp" line="515"/>
<source>&External name resolver</source>
<translation>Résolution de nom &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'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&zip</source>
<translation>Compresser avec g&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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <translation type="unfinished"></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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 "Decode As" 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 "Decode As" 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 <%2/></source>
<translation>Appliquer un filtre d'affichage %1 <%2/></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'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'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 &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 "Follow Stream" 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 "Follow Stream" 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><i>(No format will be applied)</i></source>
<translation><I>(Aucun format sera appliqué)</i></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><html><head/><body><p>User's Guide</p><p><br/></p><p>Wiki</p></body></html></source>
- <translation><html><head/><body><p>Guide d'utilisateur</p><p><br/></p><p>Wiki</p></body></html></translation>
+ <translation type="obsolete"><html><head/><body><p>Guide d'utilisateur</p><p><br/></p><p>Wiki</p></body></html></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><html><head/>
+<body>
+
+<h2><a href="http://www.wireshark.org/docs/wsug_html_chunked/">User's Guide</a></h2>
+<p>
+How to install Wireshark and how to use each of its features.<br/>
+Other formats and command-line man pages can be found on<br/>
+the <a href="http://www.wireshark.org/docs/">documentation page</a>.
+</p>
+
+<h2><a href="http://wiki.wireshark.org/">The Wireshark Wiki</a></h2>
+<p>
+User-contributed pages on different aspects of using Wireshark.<br/>
+Capturing in different environments, filtering, specific protocols,<br/>
+and a variety of other information.
+</p>
+
+<h2><a href="http://ask.wireshark.org/">Wireshark Q&amp;A</a></h2>
+<p>
+Question and answer site for Wireshark and protocol analysis.
+</p>
+
+<h2><a href="http://www.wireshark.org/lists/">Mailing Lists</a></h2>
+<p>
+In-depth discussions about Wireshark and protocol analysis.
+</p>
+
+</body></html></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
<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>
<translation type="obsolete">Barre d'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&xpand Subtrees</source>
<translation>E&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>&Expand All</source>
<translation>&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 &All</source>
<translation>Reduire &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>&Merge...</source>
<translation>&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>
<translation type="obsolete">&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>&Save</source>
<translation>&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 &As...</source>
<translation>Sauveg&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 &Text...</source>
<translation>En &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 "C" Arrays...</source>
<translation>En Tableau "C"...</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>&HTTP...</source>
<translation></translation>
</message>
<message>
- <location filename="main_window.ui" line="817"/>
+ <location filename="main_window.ui" line="909"/>
<source>&DICOM...</source>
<translation></translation>
</message>
<message>
- <location filename="main_window.ui" line="822"/>
+ <location filename="main_window.ui" line="914"/>
<source>&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>&Selected</source>
<translation>&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>&Not Selected</source>
<translation>&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>... &and Selected</source>
<translation>.. &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>... &or Selected</source>
<translation>... &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&nd not Selected</source>
<translation>... e&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&r not Selected</source>
<translation>... o&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 &Macros...</source>
<translation>Afficher les filtres &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>&Find Packet...</source>
<translation>&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&xt...</source>
<translation>Trouver paquet &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&vious...</source>
<translation>Trouver paquet &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>&Mark/Unmark Packet</source>
<translation>&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>&Ignore/Unignore Packet</source>
<translation>&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'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>&Preferences...</source>
- <translation>&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'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>&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 &Bytes...</source>
- <translation>Exporter les &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>&Print...</source>
- <translation>Im&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>&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&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>&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 &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'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>&Preferences...</source>
+ <translation>&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'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>&Import from Hex Dump...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="788"/>
+ <source>Export Packet &Bytes...</source>
+ <translation>Exporter les &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>&Print...</source>
+ <translation>Im&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>&Reload</source>
<translation>&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>&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 &Filters...</source>
<translation>&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>&Restart</source>
<translation>&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>&Contents</source>
<translation>&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>&About Wireshark</source>
<translation>&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>&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>&Start</source>
<translation>&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&top</source>
<translation>Arre&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'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'Exemple</translation>
</message>
<message>
- <location filename="main_window.ui" line="549"/>
+ <location filename="main_window.ui" line="635"/>
<source>Ask (Q&&A)</source>
<translation>Questions (Q&&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'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't a valid display filter. (%2).</source>
<translation>Le filtre %1 n'est pas un filtre d'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'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 "%1" before merging?</source>
<translation>Sauvegarder les changements dans "%1" 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'import d'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 "%1".</source>
<translation>Impossible d'exporter dans "%1".</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'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'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've made to the capture file "%1"%2?</source>
<translation>Voulez-vous enregistrer les modifications que vous avez apportées au fichier de capture "%1"%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'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'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'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>
</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 & Text</source>
<translation type="unfinished"></translation>
</message>
<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"/>
<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>
</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'affichage du temps?</translation>
</message>
<message>
- <location filename="packet_list.cpp" line="776"/>
+ <location filename="packet_list.cpp" line="872"/>
<source>Time References don't work well with the currently selected Time Display Format.
Do you want to switch to "Seconds Since Beginning of Capture" now?</source>
<translation>Le temps de Références ne fonctionnent pas bien avec le format d'affichage sélectionné.
<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>
<translation>Plage de Paquet</translation>
</message>
<message>
- <location filename="print_dialog.cpp" line="80"/>
+ <location filename="print_dialog.cpp" line="81"/>
<source>&Print...</source>
<translation>Im&primer...</translation>
</message>
<message>
- <location filename="print_dialog.cpp" line="121"/>
+ <location filename="print_dialog.cpp" line="122"/>
<source>Page &Setup...</source>
<translation>&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'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'imprimer sur %1.</translation>
</message>
<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>
<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>
<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><html><head/><body><p>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).</p></body></html></source>
- <translation><html><head/><body><p>Recherche la colonne Info dans la liste des paquets (vue sommaire), Paquet décodé par afffichage d'étiquettes (vue arboresence) or les paquets convertir en ASCII (vue d'affichage hexa).</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
- <translation><html><head/><body><p>Recherche les chaines contenant UTF-8 / ASCII ou UTF-16 caractères.</p></body></html></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 & 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><html><head/><body><p>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).</p></body></html></source>
- <translation><html><head/><body><p>Recherche des données en utilisant la syntaxe d'un filtre d'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).</p></body></html></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'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'é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'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's not a valid hex string.</source>
- <translation>Ce n'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't specify any text for which to search.</source>
- <translation>Vous n'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'é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'é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'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'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><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></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'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><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></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'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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: a_rwnd=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: Received bytes=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>%1: %2 Time: %3 secs </i></small></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><html><head/><body><p>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).</p></body></html></source>
+ <translation><html><head/><body><p>Recherche la colonne Info dans la liste des paquets (vue sommaire), Paquet décodé par afffichage d'étiquettes (vue arboresence) or les paquets convertir en ASCII (vue d'affichage hexa).</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
+ <translation><html><head/><body><p>Recherche les chaines contenant UTF-8 / ASCII ou UTF-16 caractères.</p></body></html></translation>
+ </message>
+ <message>
+ <location filename="search_frame.ui" line="71"/>
+ <source>Narrow & 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><html><head/><body><p>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).</p></body></html></source>
+ <translation><html><head/><body><p>Recherche des données en utilisant la syntaxe d'un filtre d'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).</p></body></html></translation>
+ </message>
+ <message>
+ <location filename="search_frame.ui" line="113"/>
+ <source>Display filter</source>
+ <translation>Filtre d'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'é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't test anything.</source>
+ <translation>Ce filtre ne teste rien.</translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="250"/>
+ <source>That's not a valid hex string.</source>
+ <translation>Ce n'est pas un filtre hexa valide.</translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="258"/>
+ <source>You didn't specify any text for which to search.</source>
+ <translation>Vous n'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'é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'é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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sequence_dialog.ui" line="73"/>
+ <source><small><i>A hint</i></small></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'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'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'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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>+</th><td>Zoom in</td></th>
+<tr><th>-</th><td>Zoom out</td></th>
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th><i>Pg Up</i></th><td>Next stream</td></th>
+<tr><th><i>Pg Dn</i></th><td>Previous stream</td></th>
+<tr><th>d</th><td>Switch direction (swap TCP endpoints)</td></th>
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+<tr><th>z</th><td>Toggle mouse drag / zoom</td></th>
+<tr><th>s</th><td>Toggle relative / absolute sequence numbers</td></th>
+<tr><th>t</th><td>Toggle capture / session time origin</td></th>
+<tr><th>Space</th><td>Toggle crosshairs</td></th>
+
+<tr><th>1</th><td>Round Trip Time graph</td></th>
+<tr><th>2</th><td>Throughput graph</td></th>
+<tr><th>3</th><td>Stevens-style Time / Sequence graph</td></th>
+<tr><th>4</th><td>tcptrace-style Time / Sequence graph</td></th>
+<tr><th>5</th><td>Window Scaling graph</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="tcp_stream_dialog.ui" line="71"/>
+ <source><small><i>Mouse over for shortcuts</i></small></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><html><head/><body><p>Switch the direction of the connection (view the opposite flow).</p></body></html></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><html><head/><body><p>Reset the graph to its initial state.</p></body></html></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><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="time_shift_dialog.ui" line="65"/>
+ <source>Set the time for packet</source>
+ <translation>Réglez l'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><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></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'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>
<?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><html><head/><body><p><br/></p></body></html></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><span size=\"x-large\" weight=\"bold\">Network Protocol Analyzer</span></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>&MAC name resolution</source>
<oldsource>Enable &network name resolution</oldsource>
<translatorcomment>MAC 名字解析</translatorcomment>
<translation>MAC 厂家解析(&M)</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="443"/>
+ <location filename="capture_file_dialog.cpp" line="507"/>
<source>&Transport name resolution</source>
<oldsource>Use &external name resolver</oldsource>
<translatorcomment>传输名字解析</translatorcomment>
<translation>端口号解析(&T)</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="447"/>
+ <location filename="capture_file_dialog.cpp" line="511"/>
<source>&Network name resolution</source>
<translatorcomment>网络名字解析</translatorcomment>
<translation>ip 地址解析(&N)</translation>
</message>
<message>
- <location filename="capture_file_dialog.cpp" line="451"/>
+ <location filename="capture_file_dialog.cpp" line="515"/>
<source>&External name resolver</source>
<translatorcomment>外部名字解析器</translatorcomment>
<translation>使用外部解析服务(&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'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&zip</source>
<translation>用 gzip 压缩(&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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <translation type="unfinished"></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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><html><head/><body><p>You probably want to enable this. Usually a network card will only capture the traffic sent to its own network address. If you want to capture all traffic that the network card can &quot;see&quot;, mark this option. See the FAQ for some more details of capturing packets from a switched network.</p></body></html></source>
+ <translation type="unfinished"></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><html><head/><body><p>Capture packets in the next-generation capture file format.</p></body></html></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><html><head/><body><p>Update the list of packets while capture is in progress. This can result in dropped packets on high-speed networks.</p></body></html></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><html><head/><body><p>Keep the packet list scrolled to the bottom while capturing.</p></body></html></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><html><head/><body><p>Show the capture summary dialog while capturing.</p></body></html></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 "Decode As" 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 "Decode As" 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 <%2/></source>
<translation>应用显示筛选器 %1 <%2/></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 &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 "Follow Stream" client text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="font_color_preferences_frame.ui" line="149"/>
+ <source>Sample "Follow Stream" 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><i>(No format will be applied)</i></source>
<translation><i>(不会应用任何格式变更)</i></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><html><head/><body><p>User's Guide</p><p><br/></p><p>Wiki</p></body></html></source>
- <translation><html><head/><body><p>用户指南</p><p><br/></p><p>Wiki</p></body></html></translation>
+ <translation type="obsolete"><html><head/><body><p>用户指南</p><p><br/></p><p>Wiki</p></body></html></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><html><head/>
+<body>
+
+<h2><a href="http://www.wireshark.org/docs/wsug_html_chunked/">User's Guide</a></h2>
+<p>
+How to install Wireshark and how to use each of its features.<br/>
+Other formats and command-line man pages can be found on<br/>
+the <a href="http://www.wireshark.org/docs/">documentation page</a>.
+</p>
+
+<h2><a href="http://wiki.wireshark.org/">The Wireshark Wiki</a></h2>
+<p>
+User-contributed pages on different aspects of using Wireshark.<br/>
+Capturing in different environments, filtering, specific protocols,<br/>
+and a variety of other information.
+</p>
+
+<h2><a href="http://ask.wireshark.org/">Wireshark Q&amp;A</a></h2>
+<p>
+Question and answer site for Wireshark and protocol analysis.
+</p>
+
+<h2><a href="http://www.wireshark.org/lists/">Mailing Lists</a></h2>
+<p>
+In-depth discussions about Wireshark and protocol analysis.
+</p>
+
+</body></html></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>了解
<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&xpand Subtrees</source>
<translation>展开子树(&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>&Expand All</source>
<translation>展开全部(&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 &All</source>
<translation>收起全部(&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>&Merge...</source>
<translation>合并(&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>&Import...</source>
- <translation>导入(&I)...</translation>
+ <translation type="obsolete">导入(&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>&Save</source>
<translation>保存(&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 &As...</source>
<translation>另存为(&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 &Text...</source>
<translation>为纯文本(&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 "C" 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>&HTTP...</source>
<translation>&HTTP...</translation>
</message>
<message>
- <location filename="main_window.ui" line="819"/>
+ <location filename="main_window.ui" line="909"/>
<source>&DICOM...</source>
<translation>&DICOM...</translation>
</message>
<message>
- <location filename="main_window.ui" line="824"/>
+ <location filename="main_window.ui" line="914"/>
<source>&SMB...</source>
<translation>&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>&Selected</source>
<translation>选中(&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>&Not Selected</source>
<translation>非选中(&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>... &and Selected</source>
<translation>... 与选中(&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>... &or Selected</source>
<translation>... 或选中(&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&nd not Selected</source>
<translation>... 与非选中(&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&r not Selected</source>
<translation>... 或非选中(&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 &Macros...</source>
<translation>显示筛选器宏(&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>&Find Packet...</source>
<translation>查找分组(&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&xt...</source>
<translation>查找下一个(&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&vious...</source>
<translation>查找上一个(&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>&Mark/Unmark Packet</source>
<translation>标记/取消标记分组(&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>&Ignore/Unignore Packet</source>
<translation>忽略/取消忽略分组(&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>&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&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>&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 &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>&Preferences...</source>
<translation>偏好设置(&P)...</translation>
</message>
<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>
<translation type="obsolete">偏好设置...</translation>
</message>
<message>
- <location filename="main_window.ui" line="1173"/>
+ <location filename="main_window.ui" line="1263"/>
<source>Manage Wireshark'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>&Import from Hex Dump...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main_window.ui" line="788"/>
<source>Export Packet &Bytes...</source>
<translation>导出分组字节流(&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>&Print...</source>
<translation>打印(&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>&Reload</source>
<translation>重新加载(&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>&Options...</source>
<translation>选项(&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 &Filters...</source>
<translation>捕获筛选器(&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>&Restart</source>
<translation>重新开始(&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>&Contents</source>
<translation>内容(&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>&About Wireshark</source>
<translation>关于 Wireshark (&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>&Interfaces...</source>
<translation>接口列表(&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>&Start</source>
<translation>开始(&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&top</source>
<translation>停止(&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'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&&A)</source>
<translation>提问 (问答平台) (&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'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'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 "%1" 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 "%1".</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'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'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've made to the capture file "%1"%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'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'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'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>
<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 & 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>
<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>
</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't work well with the currently selected Time Display Format.
Do you want to switch to "Seconds Since Beginning of Capture" now?</source>
<translation>时间参考与当前选中的时间显示格式搭配使用效果不佳。
<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"/>
<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>
<translation>分组范围</translation>
</message>
<message>
- <location filename="print_dialog.cpp" line="80"/>
+ <location filename="print_dialog.cpp" line="81"/>
<source>&Print...</source>
<translation>打印(&P)...</translation>
</message>
<message>
- <location filename="print_dialog.cpp" line="121"/>
+ <location filename="print_dialog.cpp" line="122"/>
<source>Page &Setup...</source>
<translation>页面配置(&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>
<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>
<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>
<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><html><head/><body><p>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).</p></body></html></source>
- <translation><html><head/><body><p>搜索分组列表 (概要窗格) 的“信息”列、解码分组显示标签 (树形视图窗格) 或转换为 ASCII 字符的分组数据 (十六进制视图窗格)。</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
- <translation><html><head/><body><p>搜索包含窄字符集 (UTF-8 与 ASCII) 或宽字符集 (UTF-16) 的字符串。</p></body></html></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 & 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><html><head/><body><p>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).</p></body></html></source>
- <translation><html><head/><body><p>以显示筛选器语法 (如 ip.addr==10.1.1.1)、十六进制字符串 (如 fffffda5) 或纯字符串 (如 My String) 搜索数据。</p></body></html></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'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'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'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><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></source>
- <translation><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></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><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></source>
- <translation><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: a_rwnd=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>Graph %1: Received bytes=%2 Time=%3 secs </i></small></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><html><head/><body><p><br/></p></body></html></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><small><i>%1: %2 Time: %3 secs </i></small></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><html><head/><body><p>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).</p></body></html></source>
+ <translation><html><head/><body><p>搜索分组列表 (概要窗格) 的“信息”列、解码分组显示标签 (树形视图窗格) 或转换为 ASCII 字符的分组数据 (十六进制视图窗格)。</p></body></html></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><html><head/><body><p>Search for strings containing narrow (UTF-8 and ASCII) or wide (UTF-16) characters.</p></body></html></source>
+ <translation><html><head/><body><p>搜索包含窄字符集 (UTF-8 与 ASCII) 或宽字符集 (UTF-16) 的字符串。</p></body></html></translation>
+ </message>
+ <message>
+ <location filename="search_frame.ui" line="71"/>
+ <source>Narrow & 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><html><head/><body><p>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).</p></body></html></source>
+ <translation><html><head/><body><p>以显示筛选器语法 (如 ip.addr==10.1.1.1)、十六进制字符串 (如 fffffda5) 或纯字符串 (如 My String) 搜索数据。</p></body></html></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't test anything.</source>
+ <translation>该筛选器未测试任何项目。</translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="250"/>
+ <source>That's not a valid hex string.</source>
+ <translation>不是有效的十六进制字符串。</translation>
+ </message>
+ <message>
+ <location filename="search_frame.cpp" line="258"/>
+ <source>You didn'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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sequence_dialog.ui" line="73"/>
+ <source><small><i>A hint</i></small></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><html><head/><body>
+
+<h3>Valuable and amazing time-saving keyboard shortcuts</h3>
+<table><tbody>
+
+<tr><th>+</th><td>Zoom in</td></th>
+<tr><th>-</th><td>Zoom out</td></th>
+<tr><th>0</th><td>Reset graph to its initial state</td></th>
+
+<tr><th>→</th><td>Move right 10 pixels</td></th>
+<tr><th>←</th><td>Move left 10 pixels</td></th>
+<tr><th>↑</th><td>Move up 10 pixels</td></th>
+<tr><th>↓</th><td>Move down 10 pixels</td></th>
+<tr><th><i>Shift+</i>→</th><td>Move right 1 pixel</td></th>
+<tr><th><i>Shift+</i>←</th><td>Move left 1 pixel</td></th>
+<tr><th><i>Shift+</i>↑</th><td>Move up 1 pixel</td></th>
+<tr><th><i>Shift+</i>↓</th><td>Move down 1 pixel</td></th>
+
+<tr><th><i>Pg Up</i></th><td>Next stream</td></th>
+<tr><th><i>Pg Dn</i></th><td>Previous stream</td></th>
+<tr><th>d</th><td>Switch direction (swap TCP endpoints)</td></th>
+<tr><th>g</th><td>Go to packet under cursor</td></th>
+
+<tr><th>z</th><td>Toggle mouse drag / zoom</td></th>
+<tr><th>s</th><td>Toggle relative / absolute sequence numbers</td></th>
+<tr><th>t</th><td>Toggle capture / session time origin</td></th>
+<tr><th>Space</th><td>Toggle crosshairs</td></th>
+
+<tr><th>1</th><td>Round Trip Time graph</td></th>
+<tr><th>2</th><td>Throughput graph</td></th>
+<tr><th>3</th><td>Stevens-style Time / Sequence graph</td></th>
+<tr><th>4</th><td>tcptrace-style Time / Sequence graph</td></th>
+<tr><th>5</th><td>Window Scaling graph</td></th>
+
+</tbody></table>
+</body></html></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="tcp_stream_dialog.ui" line="71"/>
+ <source><small><i>Mouse over for shortcuts</i></small></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><html><head/><body><p>Switch the direction of the connection (view the opposite flow).</p></body></html></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><html><head/><body><p>Reset the graph to its initial state.</p></body></html></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><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></source>
+ <translation><html><head/><body><p><span style=" font-size:small; font-style:italic;">[-][[hh:]mm:]ss[.ddd] </span></p></body></html></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><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></source>
+ <translation><html><head/><body><p align="right"><span style=" font-size:small; font-style:italic;">[YYYY-MM-DD] hh:mm:ss[.ddd] </span></p></body></html></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>
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;
}
/*
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);
}
/*
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);
}
/*
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:
+ */
};
#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:
+ */
--- /dev/null
+/* 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:
+ */
--- /dev/null
+/* 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:
+ */
#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>
+++ /dev/null
-/* 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);
-}
-
_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);
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;
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;
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);
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;
}
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;
}
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{
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;
/* 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;
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);
}
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) {
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,");
double x;
int i;
int len;
- struct timeval tv;
+ struct timeval tv;
LA_TmpInfo *itmp = (LA_TmpInfo*)(wdh->priv);
struct timeval td;
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))
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
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;
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?
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);
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) {
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
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
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;
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);
/* 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);
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)
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])
#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 */