aboutsummaryrefslogtreecommitdiffstats
path: root/packet-fr.c
Commit message (Collapse)AuthorAgeFilesLines
* Add in a notion of "circuits", which are for virtual circuit-orientedGuy Harris2002-10-221-1/+3
| | | | | | | | | | | | | protocols (where there's a virtual circuit ID of some sort in packets) what conversations are for protocols ultimately running atop connectionless network layers. Have circuit type and ID values in the "packet_info" structure. Have the Frame Relay dissector set the circuit type and ID values, and have the Wellfleet compression protocol set up circuit information and store compression information with the circuit. svn path=/trunk/; revision=6469
* The Frame Relay DLCI is a virtual circuit identifer, not a source orGuy Harris2002-10-191-6/+4
| | | | | | | | destination address, so yank out the AT_DLCI stuff. Clean up indentation. svn path=/trunk/; revision=6455
* Removed trailing whitespaces from .h and .c files using theJörg Mayer2002-08-281-29/+29
| | | | | | | winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
* From Motonori Shindo: support for reading CoSine L2 debug output.Guy Harris2002-07-311-2/+3
| | | | svn path=/trunk/; revision=5922
* 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
* Move the pointer to the "column_info" structure in the "frame_data"Guy Harris2001-12-101-17/+17
| | | | | | | | | | | | | | | 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-3/+6
| | | | | | | | 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-3/+5
| | | | | | | | | | | | | | | | | | | | 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
* Make "fr_subdissector_table" static - it's not used outside the FrameGuy Harris2001-11-301-4/+2
| | | | | | Relay dissector. svn path=/trunk/; revision=4298
* Get rid of some code to set "pinfo->current_proto"; let the EtherealGuy Harris2001-11-271-2/+1
| | | | | | | | infrastructure do it for the dissectors. Make some WCP dissector routines static. svn path=/trunk/; revision=4283
* Change "conversation_set_dissector()" to take a dissector handle, ratherGuy Harris2001-11-271-8/+6
| | | | | | | | | | | | | | | | | | | | | than a pointer to a dissector function, as an argument. This means that the conversation dissector is called through "call_dissector()", so the dissector itself doesn't have to worry about checking whether the protocol is enabled or setting "pinfo->current_proto", so get rid of the code that does that in conversation dissectors. Also, make the conversation dissectors static. Get rid of some direct calls to dissectors; replace them with calls through handles, and, again, get rid of code to check whether a protocol is enabled and set "pinfo->current_proto" where that code isn't needed. Make those dissectors static if they aren't already static. Add a routine "create_dissector_handle()" to create a dissector handle without registering it by name, if the dissector isn't used outside the module in which it's defined. svn path=/trunk/; revision=4281
* Switched from using CHECK_DISPLAY_AS_DATA to using CHECK_DISPLAY_AS_XEd Warnicke2001-11-261-2/+2
| | | | | | | which also takes a handle as an argument and thus doesn't call dissect_data directly. svn path=/trunk/; revision=4270
* Moved from using dissect_data to using call_dissector()Ed Warnicke2001-11-261-4/+7
| | | | svn path=/trunk/; revision=4266
* From Joerg Mayer: explicitly fill in all members of aGuy Harris2001-06-181-13/+13
| | | | | | | "header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
* Move the declaration of "etype_vals[]" from "epan/packet.h" toGuy Harris2001-04-171-1/+2
| | | | | | "etypes.h". svn path=/trunk/; revision=3314
* In various Frame Relay and PPP routines that set the length of theGuy Harris2001-03-311-11/+12
| | | | | | | | | | top-level protocol tree items, use "offset" to set the length, rather than fetching the length of the item - "offset" is the offset from the beginning of the Frame Relay or PPP header just past the last field processed in that header, so it indicates how much of the header we've processed. svn path=/trunk/; revision=3215
* Call the encapsulation described in Annex E of Q.933 "Q.933Guy Harris2001-03-301-4/+10
| | | | | | | | | | | Encapsulation", not "IETF Encapsulation" - RFC's 1490 and 2427 include stuff from that appendix, but say that Annex E is the authoritative source for that information. Include the second byte of the Cisco HDLC type in the top-level protocol tree item. svn path=/trunk/; revision=3213
* NLPID's of 0x08 and 0x09 should be labeled as Q.933 and LMI,Guy Harris2001-03-301-46/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | respectively, not Q.931 and Q.2931, in Frame Relay. When dissecting Q.933-style multiprotocol encapsulated Frame Relay frames, use the "osinl" dissector table to check for OSI network layer protocols, include the NLPID in the tvbuff you hand to "dissector_try_port()" with that dissector table, and put the NLPID into the protocol tree as an invisible item - the NLPID is considered part of the PDU for those protocols, so you have to include it in the tvbuff, and the dissector will put it into the protocol tree. Also, make sure the top-level entry for the Frame Relay protocol includes all the bytes preceding the payload, and none of the payload bytes. Export a routine to do Q.933-style dissection, and have the WCP dissector call it, rather than duplicating that code in the WCP dissector. Don't register OSI network layer protocols with the "fr.ietf" dissector table; it's now sufficient to register them with the "osinl" dissector table, as the Frame Relay dissector now checks that. Get rid of unnecessary checks for protocols being enabled (if the dissector is always called through handles or dissector tables, the common code for handles and dissector tables will do the checks for you). Get rid of some unnecessary #includes. svn path=/trunk/; revision=3211
* Add WCP to the list of Ethernet types in "etype_vals[]", and addGuy Harris2001-03-291-2/+2
| | | | | | | | "compressed" to the list of NLPIDs in "nlpid_vals[]". Use "nlpid_vals" for the Frame Relay NLPID field. svn path=/trunk/; revision=3206
* Add a macro to extract the DLCI from the address field.Guy Harris2001-03-231-21/+12
| | | | | | Extract the DLCI only once. svn path=/trunk/; revision=3178
* Pull the NLPID for Wellfleet compression into "nlpid.h".Guy Harris2001-03-231-3/+1
| | | | svn path=/trunk/; revision=3173
* Updated the frame relay dissector - dissect-fr.cJeff Foster2001-03-231-27/+109
| | | | | | | Added the LMI dissector for frame relay - dissect-lmi.c Added Wellfleet compression dissector - dissect-wcp.c svn path=/trunk/; revision=3168
* Add a new Wiretap encapsulation type for Cisco HDLC. Map the NetBSDGuy Harris2001-03-151-14/+15
| | | | | | | | | | | | | | | | | | | | | | | 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
* Remove more "CHECK_DISPLAY_AS_DATA()" calls and "pinfo->current_proto ="Guy Harris2001-01-251-4/+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. "Tvbuffify" the Mobile IP dissector (it took old-style arguments, and then converted them into tvbuff arguments, so there wasn't much to do, other than to fix references to "fd" to refer to "pinfo->fd"). In the SCTP dissector, refer to the port type and source and destination ports through "pinfo" rather than through the global "pi", as it's a tvbuffified dissector. In the SMTP and Time Protocol dissectors, use "pinfo->match_port" rather than "TCP_PORT_SMTP" when checking whether the packet is a request or reply, just in case somebody makes a non-standard port be dissected as SMTP or Time. (Also, remove a bogus comment from the Time dissector; it was probably cut-and-pasted from the TFTP dissector.) svn path=/trunk/; revision=2938
* Make GRE use a dissector table for its protocol types, and registerGuy Harris2001-01-131-5/+4
| | | | | | | | | | | dissectors for protcools that can be encapsulated inside GRE in that table. Fix a bug in the handling of WCCPv2 IP encapsulation (it was constructing the next tvbuff before, rather than after, advancing the offset past the redirection header). svn path=/trunk/; revision=2893
* Make the stuff to handle SNAP frames (OUI, PID, payload) a routine ofGuy Harris2001-01-101-44/+126
| | | | | | | | | | | | | | its own; it's used not only by LLC, but by Frame Relay with RFC 2427 and ATM with RFC 2684. Support for RFC 2427-encapsulation Frame Relay packets, from Paul Ionescu. Get rid of the CISCO_IP PPP protocol type - Cisco HDLC uses, in most cases, Ethernet packet types, so use ETHERTYPE_IP instead (they're both 0x0800). svn path=/trunk/; revision=2854
* Register the IPX dissector, make it static, and call it through aGuy Harris2001-01-091-3/+12
| | | | | | | | handle. Call the IP dissector through a handle in the Frame Relay dissector. svn path=/trunk/; revision=2851
* Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris2001-01-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | "{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
* Code to handle Frame Relay Sniffer captures, from Jeff Foster.Guy Harris2001-01-081-1/+6
| | | | | | | Code to register the Frame Relay dissector to handle Frame Relay captures, from Paul Ionescu. svn path=/trunk/; revision=2845
* Fix the Frame Relay dissector to call subdissectors regardless ofGuy Harris2001-01-071-17/+16
| | | | | | whether a full protocol tree dissection is being done or not. svn path=/trunk/; revision=2843
* Frame Relay and Frame-Relay-over-GRE support, from Paul Ionescu.Guy Harris2001-01-071-0/+146
Fix the GRE dissector to call subdissectors regardless of whether a full protocol tree dissection is being done or not. svn path=/trunk/; revision=2842