aboutsummaryrefslogtreecommitdiffstats
path: root/packet-ieee80211.c
AgeCommit message (Collapse)AuthorFilesLines
2003-04-01From Solomon Peachy: add support for the latest stuff defined in theGuy Harris1-3/+15
draft 7.1 of 802.11g, plus a few response codes defined in 802.11b. svn path=/trunk/; revision=7392
2003-03-04When deciding whether we have enough data in a lower-level packet toGuy Harris1-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
2003-02-18From Martijn Schipper: fix the tag for the 802.11g ERP Information fieldGuy Harris1-2/+2
to match draft 6.1 of the 802.11g spec. svn path=/trunk/; revision=7168
2003-01-22Make all the stuff in the capability fixed field in a management frameGuy Harris1-34/+34
2-byte bitfields, as the capability field is 2 bytes long. svn path=/trunk/; revision=6980
2003-01-22From Jouni Malinen:Guy Harris1-3/+57
support for two new 802.11 elements used in the latest IEEE 802.11g draft version: ERP Information and Extended Support Rates; two new capabilities flags. svn path=/trunk/; revision=6978
2002-12-19Update reassemble.c/show_item and all callers to use FT_FRAMENUM for the ↵Ronnie Sahlberg1-3/+3
list of packets corresponding to a reassembled pdu svn path=/trunk/; revision=6807
2002-11-06From Solomon Peachy: support for new "wlancap" 802.11 extra-informationGuy Harris1-3/+3
header. Add overflow checks to "BYTES_ARE_IN_FRAME()", and cast all arguments to unsigned values (negative values should never be passed) to squelch compiler warnings. svn path=/trunk/; revision=6567
2002-10-31From Chris Waters: put the "wlan.fc.fromds" and "wlan.fc.tods" fieldsGuy Harris1-5/+9
into the protocol tree. svn path=/trunk/; revision=6524
2002-10-24Add a "fragment_add_seq_next()" to reassemble fragments that don't haveGuy Harris1-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
2002-10-21From Solomon Peachy: display "(correct)" or "(not verified)" for the WEPGuy Harris1-5/+17
ICV, depending on whether it was successfully verified or not. svn path=/trunk/; revision=6464
2002-08-28Removed trailing whitespaces from .h and .c files using theJörg Mayer1-25/+25
winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
2002-08-02Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer1-12/+4
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-31From Chris Waters: check 802.11 FCS if present.Guy Harris1-3/+36
svn path=/trunk/; revision=5918
2002-07-17From Joerg Mayer:Guy Harris1-6/+1
dftest.c: Remove #if-0-ed includes packet-ieee80211.c, packet-wtls.c, packet-afp.c, packet-wsp.c, packet-wtp.c, ethereal_gen.py: Remove redundant include varargs (already in snprintf.h, and required only for snprintf.h) Remove unused include of snprintf.h from files not using "snprintf()". svn path=/trunk/; revision=5889
2002-06-22Fetch the WEP IV before building a subtree for the WEP parameters, so weGuy Harris1-9/+16
don't end up with an empty tree for the parameters. Fetch the IV and key regardless of whether we're building a protocol tree; that ensures that we know we have the IV/key before we try to dissect stuff after it. svn path=/trunk/; revision=5741
2002-06-22"uint" is defined on all platforms; use "guint" instead.Guy Harris1-2/+2
svn path=/trunk/; revision=5735
2002-06-19Fix to WEP decoding, from Solomon Peachy.Guy Harris1-8/+5
svn path=/trunk/; revision=5706
2002-06-19Fix some bugs in the dissection of WEP-encrypted frames.Guy Harris1-26/+40
Put the WEP header tree under the top-level 802.11 tree, rather than putting it at the top level itself. svn path=/trunk/; revision=5702
2002-06-18From Solomon Peachy: do WEP decryption before reassembly.Guy Harris1-104/+107
Use "memset()" rather than "bzero()", as "memset()" is the official ANSI C routine (and you get an error when compiling with MSVC++ if you use "bzero()"). svn path=/trunk/; revision=5699
2002-06-18From Solomon Peachy: WEP cleanups, WEP decryption support and otherGuy Harris1-171/+558
mangling of the 802.11 dissector, and optional processing of an FCS at the end of the frame. When dissecting the frame-type-dependent part of the header, dissect all management frames (including ones with an invalid subtype) the same, and dissect all data frames (including ones with an invalid subtype) the same. svn path=/trunk/; revision=5696
2002-06-07Add "show_fragment_seq_tree()", which is like "show_fragment_tree()",Guy Harris1-64/+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-30Don't pass "tvb_reported_length_remaining(tvb, offset)" as the fourthGuy Harris1-2/+4
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
2002-05-01Fix an error in a blurb.Guy Harris1-2/+2
svn path=/trunk/; revision=5327
2002-04-24From Joerg Mayer: get rid of extra arguments to capture routines.Guy Harris1-2/+2
svn path=/trunk/; revision=5233
2002-04-22Get rid of some unused variables and arguments.Guy Harris1-2/+1
svn path=/trunk/; revision=5221
2002-04-17Don't try to reassemble short frames - but do still pass them through atGuy Harris1-3/+1
least some of the reassembly mechanism, so we can deal with both bogus and real last fragment (display the bogus ones as unfragmented frames, treat the real ones as fragments). svn path=/trunk/; revision=5186
2002-04-17Fix up the handling of the "fragmented" flag in the "packet_info"Guy Harris1-13/+26
structure (make it match the way it's done in the IP dissector). svn path=/trunk/; revision=5184
2002-04-17Show the "More Fragments" indicator as such, rather than as a "this isGuy Harris1-4/+4
fragmented" vs. "this is not fragmented" indicator. svn path=/trunk/; revision=5182
2002-04-17Add a separate hash table to the reassembly code for reassembledGuy Harris1-34/+255
packets, using the reassembly ID and the frame number of the final frame as the key. There is no guarantee that reassembly IDs won't be reused, even when talking between the same source and destination address; if, once reassembly is complete, the "fragment_data" structure is moved to the latter hash table, this will keep reused reassembly IDs from causing mis-reassembly. Add a routine "fragment_add_seq_check()", which if a fragment has the "more fragments" flag not set but is the first fragment of a reassembly, treats that as a non-fragmented frame, allocating a "fragment_data" structure for the reassembly but not attaching any fragment to it, and adding it to a reassembled packet list; if a packet has been reassembled, removes it from the table of reassemblies and moves it to the table of reassembled packets; if the frame's been seen already, looks it up in the table of reassembled packets rather than the table of reassemblies. Add reassembly support for fragmented 802.11 frames. Use "fragment_add_seq_check()" to cope with the fact that some hardware+drivers apparently hands us reassembled frames with a non-zero fragment number and the "more fragments" bit clear (as if it puts the 802.11 header of the *last* fragment onto the reassembled data). svn path=/trunk/; revision=5177
2002-04-13From Jouni Malinen:Guy Harris1-3/+11
Fix offset of challenge element in 802.11 dissector. Show fragmented 802.11 frames as fragments. svn path=/trunk/; revision=5151
2002-04-08Add an encapsulation type for "802.11 with radio information"; that typeGuy Harris1-5/+59
returns radio information such as signal strength, channel, and data rate in a pseudo-header. Add that pseudo-header. Use the "802.11 with radio information" encapsulation type for Wireless Sniffer files; extract the radio information from where it appears to be in the header. Add dissector code for that encapsulation type. Fix an error in the code to put radio information into the AiroPeek tree. Make the "wrapped" flag for NetXRay/Windows Sniffer captures a "gboolean". svn path=/trunk/; revision=5122
2002-03-09From Jouni Malinen: fix bugs in 802.11 authentication frame dissection.Guy Harris1-3/+3
svn path=/trunk/; revision=4902
2002-02-22Properly handle the "no data" data frames.Guy Harris1-2/+20
svn path=/trunk/; revision=4774
2002-02-21The number of bytes of tagged parameters should be computed by seeingGuy Harris1-9/+9
how many bytes remain in the packet starting at the initial offset of the tagged parameters, not by seeing how many bytes remain in the packet starting 4 bytes later. (If you're trying to avoid counting a CRC that appears at the end of the packet data, then you need to be sure there *is* a CRC first; this may require using a different DLT_ type, in libpcap, for those captures.) svn path=/trunk/; revision=4769
2002-01-28Some capture formats for 802.11 have fixed-length link-layer headersGuy Harris1-6/+52
(padded to the maximum length); add code to handle that. svn path=/trunk/; revision=4614
2002-01-24Replace a bunch of "tvb_length()" and "tvb_length_remaining()" calls inGuy Harris1-2/+2
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-5/+5
"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
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-20/+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
2001-12-03Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris1-3/+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-28Support for 802.11+Prism II monitor-mode link-layer headers, fromGuy Harris1-1/+3
Tim Newsham. Add in missing item for WTAP_ENCAP_CISCO_IOS in the Wiretap encapsulation type table. svn path=/trunk/; revision=4290
2001-11-26Switched from using CHECK_DISPLAY_AS_DATA to using CHECK_DISPLAY_AS_XEd Warnicke1-2/+2
which also takes a handle as an argument and thus doesn't call dissect_data directly. svn path=/trunk/; revision=4270
2001-11-26Moved from using dissect_data() to using call_dissector()Ed Warnicke1-2/+4
svn path=/trunk/; revision=4269
2001-11-20Make the capture routines take an additional argument giving the amountGuy Harris1-4/+13
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
2001-09-25If "snprintf()" can't print all the data because there's not enoughGuy Harris1-5/+12
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. svn path=/trunk/; revision=3952
2001-09-25The data in a tagged field can be up to 255 bytes (the length is anGuy Harris1-2/+2
8-bit value), and the raw data of an SSID parameter is the interpretation, so the buffer into which we put the interpretation must be at least 256 bytes long; it's an array of size SHORT_STR, so boost SHORT_STR to 256. svn path=/trunk/; revision=3951
2001-07-25Add a "wlan.addr" field, and put two instances into it for all framesGuy Harris1-3/+29
with both source and destination addresses - one instance with the source address, and one instance with the destination address - to allow display filtering that checks both the source and destination address against a single value (as the other 802.x dissectors, and the FDDI dissector, do). svn path=/trunk/; revision=3785
2001-07-21I guess some bridges take Netware Ethernet_802_3 frames, which are 802.3Guy Harris1-4/+49
frames (with a length field rather than a type field, but with no 802.2 header in the payload), and just stick the payload into an 802.11 frame. I've seen captures that show frames of that sort. This means we have to do the same check for Netware 802.3 - or, if you will, "Netware 802.11" - that we do in the Ethernet dissector, i.e. checking for 0xffff as the first four bytes of the payload and, if we find it, treating it as an IPX frame. svn path=/trunk/; revision=3759
2001-06-22Allow the 802.11 management-frame protocol to be disabled.Guy Harris1-1/+21
Don't bother doing the WEP processing and child-tvbuff construction for frames other than management and data frames, as they have no payload to be WEP-encrypted or dissected. svn path=/trunk/; revision=3600
2001-06-22Dissect the payload of a management frame as a separate protocol, soGuy Harris1-419/+416
that you can open up that protocol without opening up the 802.11 MAC header; this can save some screen real estate. Make the tree item for all the WEP parameters a text item, rather than a "string" field with a null string pointer, as "strings" with null string pointers give the filtering code gastric distress. Dissect the WEP initialization vector as an FT_UINT24 (as it's a 3-byte field), and dissect the key ID as part of an FT_UINT8 (as it's in an 8-bit byte). After dissecting the frame control field, dissect the rest of the header in one switch statement, and then: handle WEP-encrypted frames with common code for all frame types; handle the payload of other frames. (If we can supply the relevant keys to Ethereal, we could perhaps add code to decrypt the WEP payload and then dissect the decrypted payload the same way we dissect un-encrypted payloads.) svn path=/trunk/; revision=3599