aboutsummaryrefslogtreecommitdiffstats
path: root/packet-ipv6.c
AgeCommit message (Collapse)AuthorFilesLines
2002-08-03We don't use anything from <sys/socket.h> (we need to know the AF_INET6Guy Harris1-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
2002-08-02Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer1-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
2002-07-30From Michael Tuexen: AF_INET6 support for DLT_NULL captures fromGuy Harris1-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
2002-06-07Add "show_fragment_seq_tree()", which is like "show_fragment_tree()",Guy Harris1-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
2002-06-04Get rid of the "data_src" member of the "frame_data" structure; put itGuy Harris1-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
2002-05-02Only say "IPv6" once in the Info column for "no next header" packets.Guy Harris1-6/+7
svn path=/trunk/; revision=5363
2002-05-02Handle the "no next header" next header value specially - put into theGuy Harris1-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
2002-03-27In the protocol tree entries for lists of fragments/segments, make theGuy Harris1-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
2002-02-27Label the data source for various forms of reassembled data with theGuy Harris1-2/+2
protocol that fragmented them, rather than just calling them "Reassembled". Do the same with uncompressed WCP data. svn path=/trunk/; revision=4822
2002-02-18Don't give tvbuffs names; instead, give data sources names, where aGuy Harris1-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
2002-02-17With the tvbuffication of all dissectors, the "packet_info" structure noGuy Harris1-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
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-20If reassembly is enabled, don't try to do any reassembly work at all onGuy Harris1-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
2002-01-17Use the "fragmented" field of the "packet_info" structure inGuy Harris1-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
2002-01-10As per a comment from Ronnie Sahlberg, display TCP sequence numbers inGuy Harris1-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
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-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
2001-12-03Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris1-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
2001-12-02An NLPID of 1 means T.70 when used as an X.263/ISO 9577 initial protocolGuy Harris1-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
2001-11-26Moved from using dissect_data() to using call_dissector()Ed Warnicke1-3/+6
svn path=/trunk/; revision=4269
2001-11-21If we have to worry about subdissectors changing the "packet_info"Guy Harris1-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
2001-11-20Get rid of the "len" and "captured_len" members of the "packet_info"Guy Harris1-5/+4
structure; they're no longer used. svn path=/trunk/; revision=4236
2001-11-15Get rid of NullTVB, the "compat_top_tvb" member of the "packet_info"Guy Harris1-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
2001-10-26Fix the rest of the signed/unsigned comparison warnings.Gilbert Ramirez1-2/+2
svn path=/trunk/; revision=4088
2001-09-30"packet-ipv6.c" doesn't need anything from "packet-tcp.h" orGuy Harris1-3/+1
"packet-udp.h", so it shouldn't #include them. svn path=/trunk/; revision=3983
2001-09-04HMIPv6 support, from Martti Kuparinen.Guy Harris1-2/+2
svn path=/trunk/; revision=3907
2001-06-29Create a routine to do the tvbuff-length-adjusting andGuy Harris1-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
2001-06-26indentation consistencies.Jun-ichiro itojun Hagino1-404/+408
svn path=/trunk/; revision=3608
2001-06-18From Joerg Mayer: explicitly fill in all members of aGuy Harris1-36/+36
"header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
2001-06-08Add support for reassemmbling IPv6 fragments, and add an option toGuy Harris1-29/+262
control whether to do it or not. svn path=/trunk/; revision=3528
2001-05-27In the IPv6 dissector, don't bother with the "CHECK_DISPLAY_AS_DATA()",Guy Harris1-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
2001-04-23Now that the IPv6 dissector has been tvbuffified, we can register it; doGuy Harris1-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
2001-04-23Tvbuffification of the IPv6 and ICMPv6 dissectors, and some bug fixesGuy Harris1-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
2001-04-19FT_UINTn and FT_INTn fields must always have a base selected for them;Guy Harris1-4/+4
otherwise, the filtering GUI gets very upset when you try to construct a filter expression to test the value of that field. Make them BASE_DEC. svn path=/trunk/; revision=3334
2001-04-17Move the declaration of "etype_vals[]" from "epan/packet.h" toGuy Harris1-4/+4
"etypes.h". svn path=/trunk/; revision=3314
2001-04-17Move the declaration of "ipprotostr()" out of "epan/packet.h" into a newGuy Harris1-1/+2
"ipproto.h" header file. svn path=/trunk/; revision=3313
2001-01-23Mobile IPv6 updates from Borosa Tomislav <tomislav.borosa@SIEMENS.HR>.Gerald Combs1-140/+510
svn path=/trunk/; revision=2935
2001-01-09Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris1-7/+13
"{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/+3
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-14Set the "fragmented" field of the "packet_info" structure based onGuy Harris1-1/+5
whether the packet has any fragmentation headers or not. svn path=/trunk/; revision=2757
2000-12-14Mobile IPv6 support, from Martti Kuparinen.Guy Harris1-1/+29
svn path=/trunk/; revision=2755
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-3/+3
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-17Give the "null" link-layer header dissector a dissector table, and putGuy Harris1-1/+4
the BSD AF_ type values it uses into an "aftypes.h" header file for dissectors that register themselves in that dissector table include. svn path=/trunk/; revision=2653
2000-11-11Get rid of the definitions of LITTLE_ENDIAN and BIG_ENDIAN inGuy Harris1-5/+6
"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-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-11- add ipv6.addr for the source and destination addresses (like ipv4)Laurent Deniel1-1/+15
- implement the TCP follow feature for TCP over IPv6 svn path=/trunk/; revision=2258
2000-08-08Fix display of IPv6 frag header display in proto tree, fromGilbert Ramirez1-1/+36
Santeri Paavolainen. svn path=/trunk/; revision=2230
2000-08-07Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris1-8/+8
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-06-05Change dissect_ah() so that dissect_ip() doesn't have to make aGilbert Ramirez1-2/+2
special case for it. dissect_ah() is registered with the "ip.proto" handoff table, and dissect_ah() calls the next dissector using this same "ip.proto" handoff table. The old dissect_ah() is kept as dissect_ah_old() since dissect_ipv6() still uses it. I need to convert some more functions before I can get rid of dissect_ah_old(). svn path=/trunk/; revision=2039
2000-05-31Add routines for adding items to a protocol tree that take arguments ofGuy Harris1-7/+7
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-24Display the fragment offset in decimal (as the IPv4 dissector does)Guy Harris1-2/+2
rather than hex. svn path=/trunk/; revision=1997