aboutsummaryrefslogtreecommitdiffstats
path: root/packet-icmpv6.c
AgeCommit message (Collapse)AuthorFilesLines
2002-01-30Make some variables volatile because GCC on Digital UNIX complainedGuy Harris1-7/+7
about them being trashed by setjmp/longjmp (does GCC there stuff them into registers? They're bigger than 64 bits, so they don't even fit into a single register on Alpha). svn path=/trunk/; revision=4636
2002-01-24Replace a bunch of "tvb_length()" and "tvb_length_remaining()" calls inGuy Harris1-14/+13
arguments to "proto_tree_add_text()", and to "proto_tree_add_XXX()" calls that add FT_NONE or FT_PROTO items to the protocol tree, with -1. Replace some calls to "tvb_length()" or "tvb_length_remaining()" with calls to "tvb_reported_length()" and "tvb_reported_length_remaining()", as those give the actual length of the data in the packet, not just the data that happened to be captured. svn path=/trunk/; revision=4605
2002-01-21Include files from the "epan" directory and subdirectories thereof withGuy Harris1-3/+3
"epan/..." pathnames, so as to avoid collisions with header files in any of the directories in which we look (e.g., "proto.h", as some other package has its own "proto.h" file which it installs in the top-level include directory). Don't add "-I" flags to search "epan", as that's no longer necessary (and we want includes of "epan" headers to fail if the "epan/" is left out, so that we don't re-introduce includes lacking "epan/"). svn path=/trunk/; revision=4586
2002-01-15From Martti Kuparinen: update the HMIPv6 support to match the latestGuy Harris1-8/+8
draft (draft-ietf-mobileip-hmipv6-05.txt). svn path=/trunk/; revision=4546
2002-01-11Put in a comment giving various Internet Draft names for ICMPv6 stuff weGuy Harris1-1/+15
handle. svn path=/trunk/; revision=4526
2002-01-11Fix some more signed vs. unsigned issues.Guy Harris1-4/+4
svn path=/trunk/; revision=4525
2002-01-10Fix more unsigned items to be displayed with "%u" rather than "%d", asGuy Harris1-4/+4
per Martti Kuparinen's comments. svn path=/trunk/; revision=4515
2002-01-10The filetime is an unsigned quantity, so display it with %u, as perGuy Harris1-2/+2
Martti Kuparinen's comment. svn path=/trunk/; revision=4512
2002-01-09HMIPv6 fix, from Martti Kuparinen.Guy Harris1-7/+7
svn path=/trunk/; revision=4506
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-9/+9
structure to the "packet_info" structure; only stuff that's permanently stored with each frame should be in the "frame_data" structure, and the "column_info" structure is not guaranteed to hold the column values for that frame at all times - it was only in the "frame_data" structure so that it could be passed to dissectors, and, as all dissectors are now passed a pointer to a "packet_info" structure, it could just as well be put in the "packet_info" structure. That saves memory, by shrinking the "frame_data" structure (there's one of those per frame), and also lets us clean up the code a bit. svn path=/trunk/; revision=4370
2001-12-03Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris1-2/+5
take a dissector handle as an argument, rather than a pointer to a dissector function and a protocol ID. Associate dissector handles with dissector table entries. svn path=/trunk/; revision=4308
2001-11-25Moved from using dissect_data to using call_dissector()Ed Warnicke1-6/+8
svn path=/trunk/; revision=4264
2001-10-01Have a flag in the "packet_info" structure, which indicates whether theGuy Harris1-2/+16
stuff currently being dissected is part of a packet included in an error packet (e.g., an ICMP Unreachable packet). Have the TCP dissector not bother doing reassembly if the TCP segment is part of an error packet, rather than an actual TCP transmission; other dissectors might want to treat those packets specially as well. Add to the "tcpinfo" structure a flag indicating whether the URG flag was set, rather than having the zero or non-zero value of the urgent pointer indicate that. (Yes, at least as I read RFC 793, a zero urgent pointer value isn't useful, as it means "the stuff before this segment is urgent", but it's certainly possible to put onto the wire a TCP segment with URG set and a zero urgent pointer.) Don't dissect the TCP header by grabbing the entire header with "tvb_memcpy()" and then pulling stuff out of it - extract stuff with individual tvbuff calls, and put stuff into the protocol tree and the Info column as we extract it, so that we can dissect a partial header. This lets us, for example, get the source and destination ports from the TCP header of the part of a TCP segment included in a minimum-length ICMPv4 error packet. svn path=/trunk/; revision=3986
2001-09-27When dissecting an ICMP datagram that contains part of an IP datagram,Guy Harris1-3/+12
hand the (possibly-partial) IP datagram to the IP dissector, as we do for IPv6 datagrams inside ICMPv6 and CLNP datagrams inside CLNP ER PDUs. When dissecting IPv6 datagrams inside ICMPv6 and CLNP datagrams inside CLNP ER PDUs, catch the ReportedLengthError exception and ignore it, as they don't guarantee that all of the original PDU is present. svn path=/trunk/; revision=3960
2001-09-25If "snprintf()" can't print all the data because there's not enoughGuy Harris1-2/+2
room, it might return -1 in some versions of glibc; check for that, and quit if that happens. It might also return the number of characters that would've been printed had there been enough room; this means that a loop that does n += snprintf (buf + n, BUF_LENGTH - n, ...); may end up making "n" bigger than BUF_LENGTH, and "snprintf()" might not sanely handle being passed a negative length, so if "n" isn't less than the total length of the string buffer, don't add stuff to it. The "capabilitiesStart" variable in "add_capabilities()" in the WSP dissector is an offset into the PDU data; there's no guarantee that said offet is < 256, and, even if there were, there's no point in making it an 8-bit variable. Add some additional buffer overflow checks to the WSP dissector. svn path=/trunk/; revision=3953
2001-09-05Typo fix, from Martti Kuparinen.Guy Harris1-2/+2
svn path=/trunk/; revision=3910
2001-09-04HMIPv6 support, from Martti Kuparinen.Guy Harris1-2/+60
svn path=/trunk/; revision=3907
2001-07-02Tvbuffify the DNS, NBNS, NBDS, and NBSS dissectors.Guy Harris1-14/+7
Add a "tvb_memeql()" routine, for doing "memcmp()"-style equality comparisons. svn path=/trunk/; revision=3631
2001-06-18From Joerg Mayer: explicitly fill in all members of aGuy Harris1-5/+5
"header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
2001-06-02Not all platforms have u_int32_t (for example, Windows+MSVC doesn't), soGuy Harris1-2/+2
use "guint32" instead. svn path=/trunk/; revision=3503
2001-06-02Create the tree for an ICMPv6 optionn before putting something in it.Guy Harris1-5/+5
svn path=/trunk/; revision=3499
2001-06-01draft-draves-ipngwg-router-selection-01 support.Jun-ichiro itojun Hagino1-28/+97
fix icmp6 homeagent info option decoding (convert to tvb framework). plug a memory leak. sync some of mobile-ip6 #define symbol names with draft-ietf-ipngwg-2292bis-02. svn path=/trunk/; revision=3497
2001-05-27In the ICMPv6 and OSI CLNP dissectors, when calling the IPv6 or CLNPGuy Harris1-56/+62
dissector to dissect the datagram inside an error report datagram, save the current values of the source and destination addresses, and restore them after the subdissector returns, so that all address columns in the summary pane will reflect the error datagram, not the datagram that provoked the error. Set the Protocol and Info columns upon entry to the ICMPv6 dissector, so that if we throw an exception they don't reflect the protocol above ICMPv6. svn path=/trunk/; revision=3456
2001-04-27More signed-vs-unsigned changes from Joerg Mayer.Guy Harris1-10/+12
svn path=/trunk/; revision=3386
2001-04-23Move the declarations of IP protocol numbers to "ipproto.h" fromGuy Harris1-2/+2
"packet-ip.h". Fix Gerald's address in some files while we're at it. svn path=/trunk/; revision=3366
2001-04-23Now that the IPv6 dissector has been tvbuffified, we can register it; doGuy Harris1-7/+43
so, make it static, and call it only through a handle. In the ICMPv6 dissector, when we dissect the invoking packet in an ICMPv6 error or in a redirected header option, make the columns non-writable, so the summary line for the packet shows it as an ICMPv6 packet, not as the packet included in the ICMPv6 packet. svn path=/trunk/; revision=3361
2001-04-23Tvbuffification of the IPv6 and ICMPv6 dissectors, and some bug fixesGuy Harris1-282/+314
and an update to draft 7 of ICMPv6 name lookups, from Heikki Vatiainen. Fix some formats in the ICMPv6 dissector to use %u, rather than %d, for unsigned quantities. Show various type and code values in ICMPv6 as decimal, not hexadecimal (they're decimal in the RFCs). svn path=/trunk/; revision=3360
2001-03-28Replace proto_tree_add_item_hidden with proto_tree_add_boolean_hidden toOlivier Abad1-2/+2
fix a crash found by Heikki Vatiainen when adding the hf_icmpv6_checksum_bad field. svn path=/trunk/; revision=3201
2001-02-28Add hidden fields for bad checksums to various IP-family protocols.Guy Harris1-2/+10
Initialize the "hf_" value for "icmp.checksum_bad" to -1, the way all other "hf_" values are initialized, and declare it and "ip.checksum_bad" to have base BASE_NONE, not 4. svn path=/trunk/; revision=3087
2001-01-23Mobile IPv6 updates from Borosa Tomislav <tomislav.borosa@SIEMENS.HR>.Gerald Combs1-4/+43
svn path=/trunk/; revision=2935
2001-01-22Remove more "CHECK_DISPLAY_AS_DATA()" calls and "pinfo->current_proto ="Guy Harris1-3/+1
statements. Move the setting of the Protocol column in various dissectors before anything is fetched from the packet, and also clear the Info column at that point in those and some other dissectors, so that if an exception is thrown, the columns don't reflect the previous protocol. svn path=/trunk/; revision=2932
2001-01-09Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris1-2/+2
"{old_}heur_dissector_add()", "{old_}conv_dissector_add()", and "register_dissector()", so that an entry in those tables has associated with it the protocol index of the protocol the dissector handles (or -1, if there is no protocol index for it). This is for future use in a number of places. (Arguably, "proto_register_protocol()" should take a dissector pointer as an argument, but 1) it'd have to handle both regular and heuristic dissectors; 2) making it take either a "dissector_t" or a union of that and a "heur_dissector_t" introduces some painful header-file interdependencies so I'm punting on that for now. As with other Ethereal internal APIs, these APIs are subject to change in the future, at least until Ethereal 1.0 comes out....) svn path=/trunk/; revision=2849
2001-01-03Have "proto_register_protocol()" build a list of data structures forGuy Harris1-2/+2
protocols, in addition to adding structures to the list of filterable fields. Give it an extra argument that specifies a "short name" for the protocol, for use in such places as pinfo->current_proto; the dialog box for constructing filters; the preferences tab for the protocol; and so on (although we're not yet using it in all those places). Make the preference name that appears in the preferences file and the command line for the DIAMETER protocol "diameter", not "Diameter"; the convention is that the name in question be all-lower-case. Make some routines and variables that aren't exported static. Update a comment in the ICP dissector to make it clear that the dissector won't see fragments other than the first fragment of a fragmented datagram. svn path=/trunk/; revision=2810
2000-12-14Check the checksum on ICMPv6 packets, if possible.Guy Harris1-5/+45
svn path=/trunk/; revision=2759
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-2/+2
can be put, and a pointer to the string for the column, which might or might not point to that buffer. Add a routine "col_set_str()", which sets the string for the column to the string passed to it as an argument; it should only be handed a static string (a string constant would be ideal). It doesn't do any copying, so it's faster than "col_add_str()". Make the routines that append to columns check whether the pointer to the string for the column points to the buffer for the column and, if not, copy the string for the column to the buffer for the column so that you can append to it (so you can use "col_set_str()" and then use "col_append_str()" or "col_append_fstr()"). Convert a bunch of "col_add_str()" calls that take a string constant as an argument to "col_set_str()" calls. Convert some "col_add_fstr()" calls that take a string constant as the only argument - i.e., the format string doesn't have any "%" slots into which to put strings for subsequent arguments to "col_set_str()" calls (those calls are just like "col_add_str()" calls). Replace an END_OF_FRAME reference in a tvbuffified dissector with a "tvb_length(tvb)" call. svn path=/trunk/; revision=2670
2000-11-11Get rid of the definitions of LITTLE_ENDIAN and BIG_ENDIAN inGuy Harris1-13/+13
"epan/pint.h" - they caused GCC to whine about them being redefined when I compiled on FreeBSD 3.4. Get rid of the stuff in "packet-ipv6.h" that defines various bit vectors differently depending on the byte order of the machine; instead, define them so that they work with items in host byte order. This lets us use a number of them rather than using hardwired hex values. Put "frag.ip6f_offlg" in host byte order before using it; this means that IP6F_MORE_FRAG can still be used even though it now works only on items in host byte order. svn path=/trunk/; revision=2610
2000-11-09Fix a "proto_tree_add_text()" call.Guy Harris1-2/+2
svn path=/trunk/; revision=2593
2000-11-09support match-prefix and use-prefix decoding for router renumbering protocolJun-ichiro itojun Hagino1-37/+165
svn path=/trunk/; revision=2592
2000-11-09correct IPv6 router renumbering dissector.Jun-ichiro itojun Hagino1-5/+6
svn path=/trunk/; revision=2591
2000-10-12Don't loop infinitely on options with zero length.Gilbert Ramirez1-6/+13
From Santeri Paavolainen. svn path=/trunk/; revision=2489
2000-08-29correct nodeinfo (node addresses). it returns address (16byte) + ttl (4byte),Jun-ichiro itojun Hagino1-5/+6
not just addresses. KAME kernel currently uses old format, so ethereal does not work with current KAME kernel (KAME kernel will be corrected). svn path=/trunk/; revision=2381
2000-08-22Change u_int32_t to guint32Gilbert Ramirez1-4/+4
svn path=/trunk/; revision=2342
2000-08-22more support for icmp6 node information query.Jun-ichiro itojun Hagino1-8/+167
- DNS name decode (uses function in packet-dns.c) - supported bitmap svn path=/trunk/; revision=2338
2000-08-18avoid pointer typecast, which leads to unaligned access.Jun-ichiro itojun Hagino1-6/+5
svn path=/trunk/; revision=2294
2000-08-18add dissector for draft-ietf-ipngwg-icmp-name-lookups-06.txtJun-ichiro itojun Hagino1-48/+303
(icmp node information query). not finished yet - need DNS decoding. for DNS name queries/replies. svn path=/trunk/; revision=2289
2000-08-13Add the "Edit:Protocols..." feature which currently only implementsLaurent Deniel1-1/+3
the following: It is now possible to enable/disable a particular protocol decoding (i.e. the protocol dissector is void or not). When a protocol is disabled, it is displayed as Data and of course, all linked sub-protocols are disabled as well. Disabling a protocol could be interesting: - in case of buggy dissectors - in case of wrong heuristics - for performance reasons - to decode the data as another protocol (TODO) Currently (if I am not wrong), all dissectors but NFS can be disabled (and dissectors that do not register protocols :-) I do not like the way the RPC sub-dissectors are disabled (in the sub-dissectors) since this could be done in the RPC dissector itself, knowing the sub-protocol hfinfo entry (this is why, I've not modified the NFS one yet). Two functions are added in proto.c : gboolean proto_is_protocol_enabled(int n); void proto_set_decoding(int n, gboolean enabled); and two MACROs which can be used in dissectors: OLD_CHECK_DISPLAY_AS_DATA(index, pd, offset, fd, tree) CHECK_DISPLAY_AS_DATA(index, tvb, pinfo, tree) See also the XXX in proto_dlg.c and proto.c around the new functions. svn path=/trunk/; revision=2267
2000-08-11Miscellaneous code cleaningLaurent Deniel1-7/+3
- add <stdarg.h> or <varargs.h> in snprintf.h and remove those inclusions in the other #ifdef NEED_SNPRINTF_H codes - remove the check of multiple inclusions in source (.c) code (there is a bit loss of _cpp_ performance, but I prefer the gain of code reading and maintenance; and nowadays, disk caches and VM are correctly optimized ;-). - protect all (well almost) header files against multiple inclusions - add header (i.e. GPL license) in some include files - reorganize a bit the way header files are included: First: #include <system_include_files> #include <external_package_include_files (e.g. gtk, glib etc.)> Then #include "ethereal_include_files" with the correct HAVE_XXX or NEED_XXX protections. - add some HAVE_XXX checks before including some system header files - add the same HAVE_XXX in wiretap as in ethereal Please forgive me, if I break something (I've only compiled and regression tested on Linux). svn path=/trunk/; revision=2254
2000-08-07Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris1-9/+9
dissectors to be registered as dissectors for particular ports, registered as heuristic dissectors, and registered as dissectors for conversations, and have routines to be used both by old-style and new-style dissectors to call registered dissectors. Have the code that calls those dissectors translate the arguments as necessary. (For conversation dissectors, replace "find_conversation_dissector()", which just returns a pointer to the dissector, with "old_try_conversation_dissector()" and "try_conversation_dissector()", which actually call the dissector, so that there's a single place at which we can do that translation. Also make "dissector_lookup()" static and, instead of calling it and, if it returns a non-null pointer, calling that dissector, just use "old_dissector_try_port()" or "dissector_try_port()", for the same reason.) This allows some dissectors that took old-style arguments and immediately translated them to new-style arguments to just take new-style arguments; make them do so. It also allows some new-style dissectors not to have to translate arguments before calling routines to look up and call dissectors; make them not do so. Get rid of checks for too-short frames in new-style dissectors - the tvbuff code does those checks for you. Give the routines to register old-style dissectors, and to call dissectors from old-style dissectors, names beginning with "old_", with the routines for new-style dissectors not having the "old_". Update the dissectors that use those routines appropriately. Rename "dissect_data()" to "old_dissect_data()", and "dissect_data_tvb()" to "dissect_data()". svn path=/trunk/; revision=2218
2000-05-31Add routines for adding items to a protocol tree that take arguments ofGuy Harris1-3/+3
a particular type, rather than taking a varargs list, along the lines of the "proto_tree_add_XXX_format()" routines. Replace most calls to "proto_tree_add_item()" and "proto_tree_add_item_hidden()" with calls to those routines. Rename "proto_tree_add_item()" and "proto_tree_add_item_hidden()" to "proto_tree_add_item_old()" and "proto_tree_add_item_hidden_old()", and add new "proto_tree_add_item()" and "proto_tree_add_item_hidden()" routines that don't take the item to be added as an argument - instead, they fetch the argument from the packet whose tvbuff was handed to them, from the offset handed to them. svn path=/trunk/; revision=2031
2000-05-11Add tvbuff class.Gilbert Ramirez1-48/+48
Add exceptions routines. Convert proto_tree_add_*() routines to require tvbuff_t* argument. Convert all dissectors to pass NULL argument ("NullTVB" macro == NULL) as the tvbuff_t* argument to proto_tree_add_*() routines. dissect_packet() creates a tvbuff_t, wraps the next dissect call in a TRY block, will print "Short Frame" on the proto_tree if a BoundsError exception is caught. The FDDI dissector is converted to use tvbuff's. svn path=/trunk/; revision=1939