aboutsummaryrefslogtreecommitdiffstats
path: root/packet-ipv6.c
Commit message (Collapse)AuthorAgeFilesLines
* Move dissectors to epan/dissectors directory.Gilbert Ramirez2004-07-181-960/+0
| | | | | | | | | | 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
* Set the svn:eol-style property on all text files to "native", so thatGuy Harris2004-07-181-1/+1
| | | | | | | | | they have LF at the end of the line on UN*X and CR/LF on Windows; hopefully this means that if a CR/LF version is checked in on Windows, the CRs will be stripped so that they show up only when checked out on Windows, not on UN*X. svn path=/trunk/; revision=11400
* The "len" argument to capture routines should not be decremented as youGuy Harris2004-03-231-5/+1
| | | | | | move through the packet - it's the total length of captured data. svn path=/trunk/; revision=10448
* From Taisuke Sasaki: convert the ident field in the fragment header toGuy Harris2004-01-211-1/+2
| | | | | | host byte order. svn path=/trunk/; revision=9766
* Make "process_reassembled_data()" do the check for fragmentation notGuy Harris2003-08-281-7/+2
| | | | | | | | | | | being complete and for fragmentation being trivial (i.e., the packet in question is both the first and last fragment). Have its callers *not* do that check - this lets "process_reassembled_data()" put in the "Reassembled in" item for fragments other than the last fragment. Add a "Reassembled in" field to TDS. svn path=/trunk/; revision=8295
* Add a routine "dissect_ipv6_options()" that works likeGuy Harris2003-07-111-1/+99
| | | | | | | | | | | | | | | | "dissect_ip_tcp_options()" but for options that are like IPv6 options (i.e., the length byte has a value that doesn't include the option code or length byte). Add an "ip_opts.h" header to declare it, and move the declaration of stuff used by it and "dissect_ip_tcp_options()", and the declaration of "dissect_ip_tcp_options()", to that header. Use "dissect_ipv6_options()" for Mobile IPv6 options. Get rid of the unused "mip6_opt_types[]" array in "packet-mip6.h". svn path=/trunk/; revision=8015
* Don't export "ip_dissector_table" explicitly; now that we haveGuy Harris2003-04-291-2/+5
| | | | | | | "find_dissector_table()", have the IPv6 and IPSEC dissectors fetch the IP dissector table by name. svn path=/trunk/; revision=7600
* Add a pointer to an hf_ value for a "reassembled_in" field (which can beGuy Harris2003-04-201-4/+10
| | | | | | | | | | | | | | null) to the "fragment_items" structure, and don't pass that value into "process_reassembled_data()", just have it use the value in the "fragment_items" structure passed to it. Make "process_reassembled_data()" capable of handling reassembly done by "fragment_add_seq_check()", and use it in the ATP and 802.11 dissectors; give them "reassembled_in" fields. Make "process_reassembled_data()" handle only the case of a completed reassembly (fd_head != NULL) so that we can use it in those dissectors without gunking the code up too much. svn path=/trunk/; revision=7513
* Pull much of the processing done after a call to "fragment_add_check()"Guy Harris2003-04-201-23/+10
| | | | | | | | into a subroutine, for use in other dissectors. Use it in the IPv6 and CLNP dissectors. svn path=/trunk/; revision=7510
* Use "fragment_add_check()" for IPv6 and CLNP reassembly. (Possibly anGuy Harris2003-04-201-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | issue for CLNP, with its 16-bit IDs, which could be duplicated in a sufficiently large capture even if CLNP implementations don't deliberately reuse IDs; less of an issue for IPv6, with its 32-bit IDs and with its prohibition on reuse: For every packet that is to be fragmented, the source node generates an Identification value. The Identification must be different than that of any other fragmented packet sent recently* with the same Source Address and Destination Address. If a Routing header is present, the Destination Address of concern is that of the final destination. * "recently" means within the maximum likely lifetime of a packet, including transit time from source to destination and time spent awaiting reassembly with other fragments of the same packet. However, it is not required that a source node know the maximum packet lifetime. Rather, it is assumed that the requirement can be met by maintaining the Identification value as a simple, 32- bit, "wrap-around" counter, incremented each time a packet must be fragmented. It is an implementation choice whether to maintain a single counter for the node or multiple counters, e.g., one for each of the node's possible source addresses, or one for each active (source address, destination address) combination. but perhaps we'll ultimately be able to get rid of the old "fragment_add()" entirely and rename "fragment_add_check()" to "fragment_add()"). svn path=/trunk/; revision=7507
* When deciding whether we have enough data in a lower-level packet toGuy Harris2003-03-041-2/+2
| | | | | | | | | | | | | | | | attempt reassembly of a higher-level packet that includes the lower-level packet, use "tvb_bytes_exist()" to check whether all the data that's to be included in the reassembly is available, rather than by checking whether the packet is short. Add some checks of that sort that were missing. Use the reported length of the packet when doing reassembly. Make the "iphdrlen" field of a "packet_info" structure be the length of the IP header in bytes, not in 4-byte words. svn path=/trunk/; revision=7274
* From Teemu Rinta-aho: draft 20 MIPv6 support (now in a file of its own).Guy Harris2003-02-041-365/+21
| | | | svn path=/trunk/; revision=7071
* Support Appletalk, IPv6, and Banyan Vines over ARCNET.Guy Harris2003-01-231-1/+3
| | | | svn path=/trunk/; revision=6987
* Update reassemble.c/show_item and all callers to use FT_FRAMENUM for the ↵Ronnie Sahlberg2002-12-191-3/+3
| | | | | | list of packets corresponding to a reassembled pdu svn path=/trunk/; revision=6807
* Count ICMPv6 packets as ICMP when capturing.Guy Harris2002-10-251-7/+87
| | | | | | | | | | | | Check the next header type - properly handling extension headers - in "capture_ipv6()". Get rid of the count of IPv6 packets - we break that down in "capture_ipv6()" now. Fix a typo. svn path=/trunk/; revision=6510
* Add a "fragment_add_seq_next()" to reassemble fragments that don't haveGuy Harris2002-10-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | sequence numbers or offsets and are thus assumed to be received in order with no duplicates or dropped fragments (e.g., for NetBIOS Frame, where 802.2 LLC guarantees in-order delivery to NetBIOS with no duplicates or dropped fragments). "show_fragment_tree()' and "show_fragment_seq_tree()" don't modify the "fragment_items" to which the "fit" argument points, so make that argument a "const fragment_items *". Make all the "fragment_items" tables "static" (as they're not used outside the modules defining them) and "const" (as they're not modified). Add support for reassembly of NetBIOS fragmented requests and responses. Get rid of an unnecessary include of "packet-tr.c" in the NetBIOS dissector, and make its table of dissection function pointers static. Fix some typos in the AppleTalk and NetBIOS dissectors. svn path=/trunk/; revision=6491
* Minimalistic support for counting IPv6 packets during captureJörg Mayer2002-10-221-1/+11
| | | | svn path=/trunk/; revision=6476
* Removed trailing whitespaces from .h and .c files using theJörg Mayer2002-08-281-2/+2
| | | | | | | winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
* We don't use anything from <sys/socket.h> (we need to know the AF_INET6Guy Harris2002-08-031-5/+1
| | | | | | | | values of the various BSDs that support DLT_NULL, but those aren't necessarily the AF_ values on the machine on which you're building Ethereal), so we don't need to include it. svn path=/trunk/; revision=5942
* Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer2002-08-021-14/+6
| | | | | | | | equivalents for the toplevel directory. The removal of winsock2.h will hopefully not cause any problems under MSVC++, as those files using struct timeval still include wtap.h, which still includes winsock2.h. svn path=/trunk/; revision=5932
* From Michael Tuexen: AF_INET6 support for DLT_NULL captures fromGuy Harris2002-07-301-1/+2
| | | | | | | | Darwin/MacOS X. (As if FreeBSD and {Net,Open}BSD having different AF_INET6 values wasn't enough, we have The Other BSD having its own value....) svn path=/trunk/; revision=5914
* Add "show_fragment_seq_tree()", which is like "show_fragment_tree()",Guy Harris2002-06-071-73/+16
| | | | | | | | | | | | | | | but for stuff reassembled with "fragment_add_seq()" or "fragment_add_seq_check()". Add a "fragment tag" string to the "fragment_items", so that packets with fragmentation errors can be properly flagged as having "Illegal fragments" or "Illegal segments" depending on the term used with the protocol in question. Make all the dissectors that can use "show_fragment_tree()" or "show_fragment_seq_tree()", and don't already use them, do so. svn path=/trunk/; revision=5644
* Get rid of the "data_src" member of the "frame_data" structure; put itGuy Harris2002-06-041-2/+2
| | | | | | | | in the "packet_info" structure instead, as we don't need a pointer for every single frame in the capture file, just for each frame for which we currently have an open "epan_dissect_t". svn path=/trunk/; revision=5614
* Only say "IPv6" once in the Info column for "no next header" packets.Guy Harris2002-05-021-6/+7
| | | | svn path=/trunk/; revision=5363
* Handle the "no next header" next header value specially - put into theGuy Harris2002-05-021-24/+44
| | | | | | | | | | | | | | | Info column information about the non-final headers seen in the packet (or leave the information put in there by the AH dissector alone, if there were AH's), or, if none were seen, just mark it as a "no next header" packet, and do that in the code used if there's no match for the next header value in the protocol table, rather than registering a dissector for "no next header", which also means we'll dissect the payload as data if there is any. Use -1, not "tvb_reported_length_remaining()", when making a subset tvbuff that runs to the end of the parent tvbuff. svn path=/trunk/; revision=5353
* In the protocol tree entries for lists of fragments/segments, make theGuy Harris2002-03-271-24/+24
| | | | | | | | top-level item correspond to the reassembled data, and make the item for each fragment/segment correspond to the part of that reassembled data that came from that fragment/segment. svn path=/trunk/; revision=5025
* Label the data source for various forms of reassembled data with theGuy Harris2002-02-271-2/+2
| | | | | | | protocol that fragmented them, rather than just calling them "Reassembled". Do the same with uncompressed WCP data. svn path=/trunk/; revision=4822
* Don't give tvbuffs names; instead, give data sources names, where aGuy Harris2002-02-181-3/+3
| | | | | | | | | | | | | | | "data source" has a name and a top-level tvbuff, and frames can have a list of data sources associated with them. Use the tvbuff pointer to determine which data source is the data source for a given field; this means we don't have to worry about multiple data sources with the same name - the only thing the name does is label the notebook tab for the display of the data source, and label the hex dump of the data source in print/Tethereal output. Clean up a bunch of things discovered in the process of doing the above. svn path=/trunk/; revision=4749
* With the tvbuffication of all dissectors, the "packet_info" structure noGuy Harris2002-02-171-2/+2
| | | | | | | longer contains length fields, so there's no need to pass a "packet_info *" argument to "set_actual_length()". svn path=/trunk/; revision=4748
* Include files from the "epan" directory and subdirectories thereof withGuy Harris2002-01-211-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
* If reassembly is enabled, don't try to do any reassembly work at all onGuy Harris2002-01-201-15/+9
| | | | | | | | | | | a fragment unless we've captured all the data in the fragment and (in IPv4 and CLNP) it has a valid checksum, so that if the first fragment is a short frame or a frame with an invalid checksum, we'll treat it as if reassembly weren't enabled, and will dissect what data we have in it, rather than not dissecting *any* of the fragments above the IP/CLNP layer. svn path=/trunk/; revision=4575
* Use the "fragmented" field of the "packet_info" structure inGuy Harris2002-01-171-1/+5
| | | | | | | | | | | | | | | | | "dissect_frame()" to indicate whether a ReportedBoundsError was due to the packet being malformed (i.e., the packet was shorter than it's supposed to be, so the dissector went past the end trying to extract fields that were supposed to be there) or due to it not being reassembled (i.e., the packet was fragmented, and we didn't reassemble it, but just treated the first fragment as the entire packet, so the dissector went past the end trying to extract fields that were partially or completely in fragments after that). Mark the latter as being unreasembled rather than malformed. Properly initialize, save, and restore that field, and properly set it, so that works. svn path=/trunk/; revision=4555
* As per a comment from Ronnie Sahlberg, display TCP sequence numbers inGuy Harris2002-01-101-3/+3
| | | | | | | | | | the list of segments in a desegmented PDU as unsigned, rather than signed. Fix some other displays of unsigned quantities with "%d" while we're at it. svn path=/trunk/; revision=4516
* Move the pointer to the "column_info" structure in the "frame_data"Guy Harris2001-12-101-15/+15
| | | | | | | | | | | | | | | 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
* Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris2001-12-031-12/+16
| | | | | | | | 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
* An NLPID of 1 means T.70 when used as an X.263/ISO 9577 initial protocolGuy Harris2001-12-021-2/+8
| | | | | | | | | | | | | | | | | | | | identifier, but means X.29 when used as an X.263/ISO 9577 secondary protocol identifier. Add support for the IPv6 NLPID, and Ethernet type, in more places. Fix up the handling of the user data of a CALL REQUEST packet to more correctly distinguish between user data containing an NLPID and user data containing an X.264/ISO 11570 UN TPDU. If it's an NLPID, use "nlpid_vals" to show its value. Put that user data in a subtree. Create a new "x.25.spi" dissector table, for protocols running atop X.25, rather than having a built-in switch statement, so that other protocols can register themselves by NLPID. svn path=/trunk/; revision=4300
* Moved from using dissect_data() to using call_dissector()Ed Warnicke2001-11-261-3/+6
| | | | svn path=/trunk/; revision=4269
* If we have to worry about subdissectors changing the "packet_info"Guy Harris2001-11-211-9/+1
| | | | | | | | | | structure, we may have to worry about it in more places than the places that *used* to set "pi.len" and "pi.captured_len", so there's no point in just saving and restoring it there. We'll remove those saves/restores, and worry about saves and restores when we find a problem. svn path=/trunk/; revision=4245
* Get rid of the "len" and "captured_len" members of the "packet_info"Guy Harris2001-11-201-5/+4
| | | | | | structure; they're no longer used. svn path=/trunk/; revision=4236
* Get rid of NullTVB, the "compat_top_tvb" member of the "packet_info"Guy Harris2001-11-151-2/+1
| | | | | | | | structure, the check for a null tvbuff pointer in "alloc_field_info()", and the "tvb_create_from_top()" macro; they're no longer needed, as there's no non-tvbuffified dissector code remaining. svn path=/trunk/; revision=4205
* Fix the rest of the signed/unsigned comparison warnings.Gilbert Ramirez2001-10-261-2/+2
| | | | svn path=/trunk/; revision=4088
* "packet-ipv6.c" doesn't need anything from "packet-tcp.h" orGuy Harris2001-09-301-3/+1
| | | | | | "packet-udp.h", so it shouldn't #include them. svn path=/trunk/; revision=3983
* HMIPv6 support, from Martti Kuparinen.Guy Harris2001-09-041-2/+2
| | | | svn path=/trunk/; revision=3907
* Create a routine to do the tvbuff-length-adjusting andGuy Harris2001-06-291-5/+3
| | | | | | | | | | | | | "pinfo->{len,captured_len}"-adjusting currently done by the IP dissector, make the IP dissector call that rather than doing the work itself, make the IPv6 dissector call that rather than just adjusting the tvbuff length itself, and make the IPX dissector call that rather than just adjusting "pi.{len,captured_len}" itself. This cleans things up a bit, and causes trailers to be properly reported in IPX-over-Ethernet frames. svn path=/trunk/; revision=3621
* indentation consistencies.Jun-ichiro itojun Hagino2001-06-261-404/+408
| | | | svn path=/trunk/; revision=3608
* From Joerg Mayer: explicitly fill in all members of aGuy Harris2001-06-181-36/+36
| | | | | | | "header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
* Add support for reassemmbling IPv6 fragments, and add an option toGuy Harris2001-06-081-29/+262
| | | | | | control whether to do it or not. svn path=/trunk/; revision=3528
* In the IPv6 dissector, don't bother with the "CHECK_DISPLAY_AS_DATA()",Guy Harris2001-05-271-13/+10
| | | | | | | | | | as it's called only through a handle or a dissector table, and the code that handles those calls does the check. Also, set the Protocol and Info columns before fetching anything from the packet, so they're set if we throw an exception. svn path=/trunk/; revision=3455
* Now that the IPv6 dissector has been tvbuffified, we can register it; doGuy Harris2001-04-231-8/+10
| | | | | | | | | | | 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
* Tvbuffification of the IPv6 and ICMPv6 dissectors, and some bug fixesGuy Harris2001-04-231-109/+134
| | | | | | | | | | | | 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