Commit Graph

49 Commits

Author SHA1 Message Date
Michael Mann 6db9eb0b73 Bugfix OpenSafety "heuristics" to only consider a packet "handled" if a subdissector is called. Fixes bug 9572 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9572)
Also removed tree check in Modbus dissector because dissector_try_string() is being called under it.

#BACKPORT(1.10)

svn path=/trunk/; revision=54193
2013-12-17 20:06:03 +00:00
Jakub Zawadzki 715e2d6699 Fix [-Wmissing-prototypes]
svn path=/trunk/; revision=54095
2013-12-14 16:09:57 +00:00
Michael Mann 9b7fb8a811 Create the ability to have packet scoped "proto" data. Bug 9470 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9470)
I'm not sold on the name or module the proto_data functions live in, but I believe the function arguments are solid and gives us the most flexibility for the future.  And search/replace of a function name is easy enough to do.

The big driving force for getting this in sooner rather than later is the saved memory on ethernet packets (and IP packets soon), that used to have file_scope() proto data when all it needed was packet_scope() data (technically packet_info->pool scoped), strictly for Decode As.

All dissectors that use p_add_proto_data() only for Decode As functionality have been converted to using packet_scope().  All other dissectors were converted to using file_scope() which was the original scope for "proto" data.

svn path=/trunk/; revision=53520
2013-11-23 02:20:13 +00:00
Michael Mann 8081cf1d90 Add data parameter to tcp_dissect_pdus() as well as convert it to using "new" style dissectors.
Now that "bytes consumed" can be determined, should tcp_dissect_pdus() take advantage of that?

Should tcp_dissect_pdus return length (bytes consumed)?  There are many dissectors that just call tcp_dissect_pdus() then return tvb_length(tvb).  Seems like that could all be rolled into one.

svn path=/trunk/; revision=53198
2013-11-09 17:46:28 +00:00
Michael Mann 02a8391535 Require dissector_try_string to pass a data parameter to its subdissectors. There weren't that many calls, so might as well modify the function than create a need for dissector_try_string_new.
svn path=/trunk/; revision=53049
2013-11-02 15:52:25 +00:00
Pascal Quantin 7850883904 emem -> wmem
svn path=/trunk/; revision=52063
2013-09-15 15:11:11 +00:00
Chris Maynard 0c41507bad Change some internal dissector table UI names so it's clear which protocol they pertain to and it's easier to find in the list.
svn path=/trunk/; revision=51904
2013-09-09 21:55:57 +00:00
Michael Mann 9e3f9b449f expert_add_info_format_text -> expert_add_info_format
svn path=/trunk/; revision=51852
2013-09-09 00:44:09 +00:00
Jakub Zawadzki f4bcbeb9f2 Keep result of [new_]register_dissector in some dissectors. [2 of x]
(don't create new dissector handle if we can use already existing one)

svn path=/trunk/; revision=51159
2013-08-05 19:09:44 +00:00
Jeff Morriss 490f48044c From Chris Bontje via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9001 :
Some small improvements to the Modbus Dissector:
- Better detection of query/response w/ serial line Modbus RTU
- Smallest Modbus RTU message can actually be 6 bytes, not 8.
- Only check 16/32-bit register decoding options with appropriate function codes

svn path=/trunk/; revision=51083
2013-08-01 19:32:24 +00:00
Michael Mann de68fd6eea Removed check_col() and the occasional tree.
svn path=/trunk/; revision=49938
2013-06-14 17:49:53 +00:00
Michael Mann ea177a2575 Batch of filterable expert infos
svn path=/trunk/; revision=49596
2013-05-27 17:30:43 +00:00
Anders Broman 85a8e304dd Add the posibillity to use a key for per-packet-data.
svn path=/trunk/; revision=49259
2013-05-12 18:11:02 +00:00
Anders Broman 3eb06be97d From beroset:
remove C++ incompatibilities 
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416

svn path=/trunk/; revision=48425
2013-03-19 19:28:57 +00:00
Bill Meier 1823aa007c it's ==> its & its ==> it's as needed.
svn path=/trunk/; revision=47891
2013-02-26 01:06:19 +00:00
Chris Maynard f2dd9bc0d2 Avoid any possibility of an infinte loop. Fixes Coverity CID 739883: Infinite loop. (Minor whitespace cleanup also.)
svn path=/trunk/; revision=47076
2013-01-14 19:14:51 +00:00
Michael Mann 4b0a6ca955 Add CRC verification to Modbus RTU dissector. CRC algorithm is the same as the "crc16-plain" with a different initial CRC (0xFFFF instead of 0). Created crc16_plain_tvb_offset_seed to "replace" crc16_plain_tvb_offset, but didn't remove crc16_plain_tvb_offset for backwards compatibility worries. Updated only dissector that used crc16_plain_tvb_offset (profinet/packet-pn-rt.c) to use crc16_plain_tvb_offset_seed(..., 0)
svn path=/trunk/; revision=45854
2012-10-31 20:09:05 +00:00
Pascal Quantin 1ac326467c Fix copy/paste error
svn path=/trunk/; revision=45795
2012-10-26 05:50:57 +00:00
Anders Broman 0b645cf006 Fix [-Werror=sign-compare] [-Wunused-but-set-variable]
svn path=/trunk/; revision=45794
2012-10-26 05:46:56 +00:00
Michael Mann 1fe105a5ab Improve Modbus/TCP dissector, Part 1
This is a portion of the patch supplied in bug 7902 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7902).  Breaking the functionality up into smaller chunks.

This definitively breaks the Modbus dissection into 3 dissectors:
Modbus - real protocol PDU
Modbus/TCP - Encapsulation of Modbus over TCP (with a small header before PDU)
Modbus RTU - Originally an encapsulation of Modbus over serial (with smaller header + CRC), but can also be sent over TCP.

General cleanup/refactoring (including display filter names) based on the 3 dissectors.
Also included:
1. Enhanced dissection to include preferences for register data to be dissected as UINT16, UINT32 or FLOAT
2. Dynamic port registration
3. Additional fields now filterable

svn path=/trunk/; revision=45793
2012-10-26 02:15:20 +00:00
Bill Meier 82d40100d2 Change 'for (i=1; i<=n;...' to 'for (i=0; i<n; ...)'
Done on general principles altho upon inspection
none of the cases changed would have actually
resulted in an infinite loop.



svn path=/trunk/; revision=45478
2012-10-11 19:39:32 +00:00
Jeff Morriss 2552c750e5 We always HAVE_CONFIG_H so don't bother checking whether we have it or not.
svn path=/trunk/; revision=45017
2012-09-20 02:03:38 +00:00
Jakub Zawadzki 5a8783f5b1 Initial commit to support yet another method of passing data between dissectors.
Add new parameter 'data' to heur_dissector_t and new_dissector_t, for now it's always NULL

svn path=/trunk/; revision=44860
2012-09-10 21:40:21 +00:00
Bill Meier 638d74d43f Use val_to_str_const() where appropriate;
Also (for a few files):
- create/use some extended value strings;
- remove unneeded #include files;
- remove unneeded variable initialization;
- re-order fcns slightly so prefs_reg_handoff...() at end, etc

svn path=/trunk/; revision=44438
2012-08-10 22:55:02 +00:00
Michael Mann 1d9c472cae convert some simple uses to use ephemeral memory
svn path=/trunk/; revision=44413
2012-08-10 02:05:19 +00:00
Jakub Zawadzki b18e880040 Update FSF address - part II.
svn path=/trunk/; revision=43538
2012-06-28 23:18:38 +00:00
Alexis La Goutte 00dd4b455e From Michael Mann via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6697
Modbus object support for CIP dissector

Support for the Modbus object within the CIP dissector.  Essentially wraps the Modbus protocol within a CIP object.

Also included update to Modbus error code per 
http://www.wireshark.org/lists/wireshark-dev/201111/msg00187.html

svn path=/trunk/; revision=40371
2012-01-04 13:29:48 +00:00
Bill Meier 4e57694d4a Convert 'encoding' parameter of certain proto_tree_add_item() calls in non-autogenerated epan/dissectors:
Specifically:  Replace FALSE|0 and TRUE|1 by ENC_BIG_ENDIAN|ENC_LITTLE_ENDIAN as
 the encoding parameter for proto_tree_add_item() calls which directly reference
 an item in hf[] which has a type of:
    FT_UINT8
    FT_UINT16
    FT_UINT24
    FT_UINT32
    FT_UINT64
    FT_INT8
    FT_INT16
    FT_INT24
    FT_INT32
    FT_INT64
    FT_FLOAT
    FT_DOUBLE


svn path=/trunk/; revision=39288
2011-10-06 03:35:44 +00:00
Guy Harris 9988c54700 Put Modbus/UDP support back.
svn path=/trunk/; revision=37947
2011-07-09 19:58:19 +00:00
Anders Broman 5bb09a0c10 From Roland Knall:
Modbus/TCP: Calculating the drop-out criteria for special data dissection fails.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5997

svn path=/trunk/; revision=37566
2011-06-06 10:32:19 +00:00
Guy Harris 0082437631 Clean up indentation.
svn path=/trunk/; revision=37547
2011-06-05 02:48:03 +00:00
Anders Broman 7b75e66774 Try to pacify the OSX build bot.
svn path=/trunk/; revision=37542
2011-06-04 20:14:06 +00:00
Anders Broman a8a69c6111 Try to fix part of the build bot errors.
svn path=/trunk/; revision=37541
2011-06-04 19:17:28 +00:00
Anders Broman 3821038f94 From Michael Mann:
I made the following improvements to the Modbus/TCP dissector:

1. Implemented protocol to the latest specification (v1.1b).  See
http://www.modbus.org/specs.php.
2. Upgraded to "tcp_dissect_pdus" instead of having the dissector do it
manually.  This also provides TCP packet reassembly support.
3. Removed support for UDP port 502 because it's not supported by the protocol
specification.  I believe "Decode As..." could be used in its place.
4. Added dissector support for the following function codes:
  a) 8 - Diagnostics
  b) 11 - Event Counter
  c) 12 - Event Log
  d) 43 - Encapsulation Transport (mostly for 43/14)
5. Removed support for function codes not in the protocol specification. None
of them were really being parsed, they just offered a "name" for the function
code.
6. Moved protocol #defines to header file for access from other dissectors.  I
plan to have other dissectors use this, but one patch at a time.
7. Created "modbus" dissector that is accessible to other dissectors.
8. Renamed base "display filter name" to reflect PROTOABBREV.

I removed defines for value_strings, I think it's better to export the vaöue strings if needed.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5923

svn path=/trunk/; revision=37539
2011-06-04 15:45:50 +00:00
Jeff Morriss 1722bec6e7 From Roland Knall via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5786 :
This patch registers a dissector table to allow other dissectors to register as
subdissectors for modbus/tcp data.

Additionally it registers the dissector, so it can be invoked by another
dissector by name.

Additionally this version of the patch adds the Data field not as a text field,
but rather as a field which can be selected and tested for by name.

svn path=/trunk/; revision=36925
2011-04-28 03:01:54 +00:00
Guy Harris a8bc4a0d13 Rename the routines that handle dissector tables with unsigned integer
keys to have _uint in their names, to match the routines that handle
dissector tables with string keys.  (Using _port can confuse people into
thinking they're intended solely for use with TCP/UDP/etc. ports when,
in fact, they work better for things such as Ethernet types, where the
binding of particular values to particular protocols are a lot
stronger.)

svn path=/trunk/; revision=35224
2010-12-20 05:35:29 +00:00
Bill Meier 055dd62063 #include <string.h> not needed.
svn path=/trunk/; revision=32410
2010-04-06 21:14:01 +00:00
Bill Meier 09764dd969 Remove unneeded #include <stdio.h>
svn path=/trunk/; revision=32367
2010-04-03 21:55:23 +00:00
Kovarththanan Rajaratnam 0a5b014cec Don't guard col_clear with col_check
svn path=/trunk/; revision=29344
2009-08-09 07:36:13 +00:00
Kovarththanan Rajaratnam e971354a54 Don't guard col_set_str (COL_PROTOCOL) with col_check
svn path=/trunk/; revision=29340
2009-08-09 06:26:46 +00:00
Stig Bjørlykke b228488bc0 From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
    for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
    FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero

svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
Jaap Keuter a0c9431909 From Joakim Wiberg:
This patch allows the ModbusTCP dissector (packet-mbtcp.c) to decode ModbusUDP packets. Essentially this is the same packets over UDP instead of TCP. 

ModbusUDP isn't an official part of the ModbusTCP specification but used by several vendors.

svn path=/trunk/; revision=26812
2008-11-19 22:30:45 +00:00
Jaap Keuter 51a72a3478 Fix for bug 2917:
Modbus Application Protocol Specification V1.1b includes a function 43 (0x2b)
Encapsulated Interface Transport.  When Wireshark encounters this message it is
shown as a TCP message, not a Modbus message.

svn path=/trunk/; revision=26314
2008-09-30 21:23:19 +00:00
Guy Harris 83fc9d5e09 Constify a bunch of stuff, to squelch -Wwrite-strings warnings.
epan/dissectors/packet-ncp2222.inc is a bit hard to fix, so we're not
ready to enable that warning by default yet.

Throw in some casts to handle GLib routines that take arbitrary
non-const pointers (they can later return the pointers, and some
callers might want to modify or free up those pointers in cases where
they're known to be writable or allocated).

Use ep_tvb_memdup() rather than a combination of ep_alloc() and
tvb_memcpy().

Clean up some indentation.

svn path=/trunk/; revision=25601
2008-06-25 09:12:35 +00:00
Ronnie Sahlberg feab79e328 change a whole bunch of ethereal into wireshark
svn path=/trunk/; revision=18196
2006-05-21 04:49:01 +00:00
Ronnie Sahlberg 651a48c2e2 update to modbus/tcp
Make the dissector new-style and add simple (better than nothing) heuristics so that it can reject some packets that are obviously not modbus.

change the constants to upper case


 the horrors:
replace two instances where tvb_memcpy()  were used to read straight into a structure to instead read the structure field by field using tvb_get_...()
This may allow the modbus dissector to actually work.






svn path=/trunk/; revision=16811
2005-12-15 22:54:33 +00:00
Ronnie Sahlberg 9a0ebcc75c remove some redundant strcpy() and arrays on the stack
svn path=/trunk/; revision=16164
2005-10-08 11:37:00 +00:00
Guy Harris ab797734dd Get rid of the private "my_match_strval()" routine in many dissectors;
add a "match_strval_idx()" routine that does the same thing, and have
"match_strval()" call it.

Make those routines, and "val_to_str()", return a "const" pointer. 
Update dissectors as necessary to squelch compiler warnings produced by
that.

Use "val_to_str()" rather than using "match_strval()" and then, if the
result is null, substituting a specific string.  Clean up some other
"match_strval()"/"val_to_str()" usages.

Add a null pointer check in the NDPS dissector's "attribute_value()"
routine, as it's not clear that "global_attribute_name" won't be null at
that point.

Make some global variables in the AFS4INT dissector local.

Make some routines not used outside the module they're in static.

Make some tables "static const".

Clean up white space.

Fix Gerald's address in some files.

svn path=/trunk/; revision=14786
2005-06-26 19:56:52 +00:00
Gilbert Ramirez 669db206cb Move dissectors to epan/dissectors directory.
Also move ncp222.py, x11-fields, process-x11-fields.pl,
make-reg-dotc, and make-reg-dotc.py.

Adjust #include lines in files that include packet-*.h
files.

svn path=/trunk/; revision=11410
2004-07-18 18:06:47 +00:00