aboutsummaryrefslogtreecommitdiffstats
path: root/packet-ip.c
Commit message (Collapse)AuthorAgeFilesLines
* Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer2002-08-021-11/+3
| | | | | | | | 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 Joerg Mayer:Guy Harris2002-07-151-9/+9
| | | | | | | | | Change struct addr to guint32 which is the way it is used anyway. Use the GLib macros to convert from network to host byte order. svn path=/trunk/; revision=5878
* From John Wells: Fix the default offset adjustment in dissect_mip_extentions.Gerald Combs2002-06-091-2/+2
| | | | svn path=/trunk/; revision=5657
* Add "show_fragment_seq_tree()", which is like "show_fragment_tree()",Guy Harris2002-06-071-4/+5
| | | | | | | | | | | | | | | 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
* Added show_fragment_tree() to reassemble. This function will do the commonRonnie Sahlberg2002-06-051-73/+15
| | | | | | | | | | task of creating a fregment tree for the fragmented packets. Having this identical code to create this tree in every dissector that does PDU reassembly is a huge waste and duplication of code. Updated IP, SMB and DCERPC to use the new function. svn path=/trunk/; revision=5626
* 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
* Don't pass "tvb_reported_length_remaining(tvb, offset)" as the fourthGuy Harris2002-05-301-4/+7
| | | | | | | argument to "tvb_new_subset()" - just use -1 if the subset tvbuff is to run to the end of the parent tvbuff. svn path=/trunk/; revision=5597
* Get rid of an unused argument.Guy Harris2002-03-311-10/+12
| | | | | | | | | Use the reported length, not the captured length, of a tvbuff when scanning through it. Mark unused arguments that can't be eliminated as unused. svn path=/trunk/; revision=5058
* 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
* Properly add the Boolean "checksum is bad" flag.Guy Harris2002-02-011-3/+3
| | | | svn path=/trunk/; revision=4666
* Make some variables volatile because GCC on Digital UNIX complainedGuy Harris2002-01-301-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
* 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-16/+11
| | | | | | | | | | | 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-2/+6
| | | | | | | | | | | | | | | | | "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-5/+5
| | | | | | | | | | 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
* Make "dscp_vals[]" a "const" array again.Guy Harris2001-12-291-2/+2
| | | | svn path=/trunk/; revision=4460
* Changes to RSVP:Ashok Narayanan2001-12-291-2/+2
| | | | | | | | | - Cleaned up TSpec and Flowspec support to handle multiple parameters - Added support for Compression Hint (RFC3006) - Added support for DCLASS (RFC2996) - Corrected some bugs in support for Null Service (RFC2997) svn path=/trunk/; revision=4459
* Move the pointer to the "column_info" structure in the "frame_data"Guy Harris2001-12-101-29/+29
| | | | | | | | | | | | | | | 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
* Attach a descriptive name field type and base to dissector tables; thatGuy Harris2001-12-081-2/+3
| | | | | | | | | | | | | | specifies how the selector values used as keys in those tables are to be displayed, and the title to use when displaying the table. Use that information in the code to display the initial and current entries of various dissector tables. Have the dissector for BACnet APDUs register itself by name, and have the BACnet NPDU dissector call it iff the BAC_CONTROL_NET bit isn't set, rather than doing it with a dissector table. svn path=/trunk/; revision=4358
* Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris2001-12-031-13/+19
| | | | | | | | 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-1/+2
| | | | | | | | | | | | | | | | | | | | 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-5/+7
| | | | svn path=/trunk/; revision=4269
* If we have to worry about subdissectors changing the "packet_info"Guy Harris2001-11-211-15/+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
* Make the capture routines take an additional argument giving the amountGuy Harris2001-11-201-3/+3
| | | | | | | | | | | of packet data captured. Make the "BYTES_ARE_IN_FRAME()" macro take a "captured length of the packet" argument. Add some length checks to capture routines. svn path=/trunk/; revision=4235
* 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
* Support for Mobile IP's use of ICMP Router Advertisements, from DavidGuy Harris2001-10-311-11/+269
| | | | | | | | | | | | Frascone. Small white-space fix. Display the preference level in router advertisements as signed, not unsigned, as per RFC 1256, which says it's a "signed, twos-complement value". svn path=/trunk/; revision=4118
* Have a flag in the "packet_info" structure, which indicates whether theGuy Harris2001-10-011-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
* When dissecting an ICMP datagram that contains part of an IP datagram,Guy Harris2001-09-271-5/+57
| | | | | | | | | | | 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
* Get rid of some unused variables.Guy Harris2001-07-201-2/+1
| | | | svn path=/trunk/; revision=3744
* Create a routine to do the tvbuff-length-adjusting andGuy Harris2001-06-291-26/+4
| | | | | | | | | | | | | "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
* More signed vs. unsigned cleanups, and initialization cleanups, fromGuy Harris2001-06-191-3/+4
| | | | | | Joerg Mayer. svn path=/trunk/; revision=3578
* From Joerg Mayer: explicitly fill in all members of aGuy Harris2001-06-181-37/+37
| | | | | | | "header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
* Don't display the data portion of an ER NPDU - we dissect it as a CLNPGuy Harris2001-06-081-2/+2
| | | | | | PDU. svn path=/trunk/; revision=3527
* Move the fragment reassembly code into "reassemble.c" andGuy Harris2001-06-081-323/+22
| | | | | | | | "reassemble.h", and remove IPv4 dependencies from it. Use it for OSI CLNP segment reassembly as well. svn path=/trunk/; revision=3525
* There is no string value assigned to the "ip.fragment.error",Guy Harris2001-06-051-8/+8
| | | | | | | | | "ip.fragment", and "ip.fragments" fields, so make them FT_NONE, not FT_STRING. (Otherwise, if you try to do a "Match Selected" on them, we dump core because the value is a null pointer and we try to dereference it.) svn path=/trunk/; revision=3512
* Add tree summary information similar to what's in packet-tcp.c.Gerald Combs2001-05-231-3/+17
| | | | svn path=/trunk/; revision=3436
* Rewritten IGMP dissector, from Ronnie Sahlberg.Guy Harris2001-05-201-131/+1
| | | | svn path=/trunk/; revision=3426
* IP fragment reassembly, from Ronnie Sahlberg.Guy Harris2001-04-181-34/+545
| | | | svn path=/trunk/; revision=3324
* Move the declaration of "ipprotostr()" out of "epan/packet.h" into a newGuy Harris2001-04-171-1/+2
| | | | | | "ipproto.h" header file. svn path=/trunk/; revision=3313
* Use "proto_tree_add_boolean_hidden()", notGuy Harris2001-03-281-3/+3
| | | | | | | | "proto_tree_add_item_hidden()", to add the "checksum bad" flags to packets; the value should be "TRUE", not the numerical value of the checksum field. svn path=/trunk/; revision=3202
* If the IP header length is < 20, don't try to dissect the header (otherGuy Harris2001-03-281-4/+17
| | | | | | | than, well, dissecting the header length field), just show the packet has having a bogus IP header length. svn path=/trunk/; revision=3198
* Add a new Wiretap encapsulation type for Cisco HDLC. Map the NetBSDGuy Harris2001-03-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | DLT_HDLC to it. Make a separate dissector for Cisco HDLC, and add a dissector for Cisco SLARP. Have the PPP dissector call the Cisco HDLC dissector if the address field is the Cisco HDLC unicast or multicast address. Use the Cisco HDLC dissector for the Cisco HDLC Wiretap encapsulation type. Add a new dissector table "chdlctype", for Cisco HDLC packet types (they're *almost* the same as Ethernet types, but 0x8035 is SLARP, not Reverse ARP, and 0x2000 is the Cisco Discovery protocol, for example), replacing "fr.chdlc". Have a "chdlctype()" routine, similar to "ethertype()", used both by the Cisco HDLC and Frame Relay dissectors. Have a "chdlc_vals[]" "value_string" table for Cisco HDLC types and protocol names. Split the packet type field in the Frame Relay dissector into separate SNAP and Cisco HDLC fields, and give them the Ethernet type and Cisco HDLC type "value_string" tables, respectively. svn path=/trunk/; revision=3133
* IP_PROTO_IPV4 and IP_PROTO_IPIP are both 4; there's no need to registerGuy Harris2001-03-051-2/+1
| | | | | | both of them as dissected by the IP dissector. svn path=/trunk/; revision=3105
* Add hidden fields for bad checksums to various IP-family protocols.Guy Harris2001-02-281-6/+6
| | | | | | | | 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
* Initialize hf_ip_checksum_bad to -1 like all other fields.Gilbert Ramirez2001-02-211-2/+2
| | | | svn path=/trunk/; revision=3064
* Change from James E. Flemer to add hidden Boolean fields that are set ifGuy Harris2001-02-211-1/+14
| | | | | | the IP or ICMP checksum is bad. svn path=/trunk/; revision=3063