aboutsummaryrefslogtreecommitdiffstats
path: root/packet-rpc.c
AgeCommit message (Collapse)AuthorFilesLines
2000-10-21Support for conversations with "wildcard" destination addresses, fromGuy Harris1-4/+4
Jeff Foster. svn path=/trunk/; revision=2523
2000-08-24Add a comment giving the RFC numbers of specs for ONC RPC.Guy Harris1-1/+17
svn path=/trunk/; revision=2366
2000-08-24Name updates to stuff in GSS authentication for ONC RPC, from Dug Song.Guy Harris1-21/+21
svn path=/trunk/; revision=2365
2000-08-24Use 0, rather that 0xffffffff, as the "no reply frame number known yet"Guy Harris1-5/+9
- frame numbers are 1-origin, so 0 can be used as an "exception" value. In the protocol tree for a reply, don't say that the reply is to frame N, just say that it's to a request starting in frame N - a frame can contain more than one request, and a request may take more than one frame. svn path=/trunk/; revision=2360
2000-08-24Instead of keeping in the information about an RPC call a count of theGuy Harris1-22/+60
number of replies seen, keep the frame number of the first request seen for that call and the first reply seen for that call. Use that to determine whether a request or reply is a duplicate or not. That means that we don't have to reset the table of RPC calls on a rescan of the capture (which didn't even fix all the cases where we'd have misreported the original call or reply as a duplicate due to having seen it once on the initial pass through the file and once again when, for example, the user clicked on the packet); doing so causes plenty of other problems, so don't do that - and don't clear the "visited" flag on frames on a rescan, either, as that's only done because we were clearing out conversations and calling all protocols' "init" routines. As a free bonus, this means that, for a reply, we know what frame the request was in; put that information into the protocol tree for the reply, snoop-style. Make the table of RPC call information, and the routines that manipulate it, static to "packet-rpc.c"; nobody outside "packet-rpc.c" uses them. svn path=/trunk/; revision=2358
2000-08-14proto_is_protocol_enabled() test for sub-dissectors made here already.Uwe Girlich1-10/+9
svn path=/trunk/; revision=2269
2000-08-13Add the "Edit:Protocols..." feature which currently only implementsLaurent Deniel1-1/+4
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-08Several new RPC dissecting function introduced. Interface toUwe Girlich1-3/+79
existing functions changed. So NFS was also necessary to change. svn path=/trunk/; revision=2225
2000-08-07Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris1-4/+4
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-07-17Support for dissecting RPCSEC_GSS credentials in ONC RPC, from Dug Song.Guy Harris1-111/+358
svn path=/trunk/; revision=2141
2000-07-14dissect_rpc() listed as an heuristic dissector for tcp and udp.Uwe Girlich1-1/+11
svn path=/trunk/; revision=2140
2000-05-31Add routines for adding items to a protocol tree that take arguments ofGuy Harris1-31/+31
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-11Add tvbuff class.Gilbert Ramirez1-50/+50
Add exceptions routines. Convert proto_tree_add_*() routines to require tvbuff_t* argument. Convert all dissectors to pass NULL argument ("NullTVB" macro == NULL) as the tvbuff_t* argument to proto_tree_add_*() routines. dissect_packet() creates a tvbuff_t, wraps the next dissect call in a TRY block, will print "Short Frame" on the proto_tree if a BoundsError exception is caught. The FDDI dissector is converted to use tvbuff's. svn path=/trunk/; revision=1939
2000-04-04Use the new split between protocol registration and protocol handoffGuy Harris1-17/+15
registration routines to get rid of the special handling of ONC RPC protocols - dissectors for ONC RPC-based protocols should register their protocol, fields, and ETT values in a protocol registration routine, and register themselves with the ONC RPC dissector in their protocol handoff routine, so that the latter is done after the ONC RPC dissector's protocol registration routine is called, so that the data structures needed when dissectors for ONC RPC protocols register themselves with the ONC RPC dissector have been initialized. Get rid of "init_dissect_rpc()", which initializes said data structures; do that in "proto_register_rpc()" instead. svn path=/trunk/; revision=1789
2000-03-12Break proto_tree_add_item_format() into multiple functions:Gilbert Ramirez1-7/+7
proto_tree_add_protocol_format() proto_tree_add_uint_format() proto_tree_add_ipxnet_format() proto_tree_add_ipv4_format() proto_tree_add_ipv6_format() proto_tree_add_bytes_format() proto_tree_add_string_format() proto_tree_add_ether_format() proto_tree_add_time_format() proto_tree_add_double_format() proto_tree_add_boolean_format() If using GCC 2.x, we can check the print-format against the variable args passed in. Regardless of compiler, we can now check at run-time that the field type passed into the function corresponds to what that function expects (FT_UINT, FT_BOOLEAN, etc.) Note that proto_tree_add_protocol_format() does not require a value field, since the value of a protocol is always NULL. It's more intuitive w/o the vestigial argument. Fixed a proto_tree_add_item_format-related bug in packet-isis-hello.c Fixed a variable usage bug in packet-v120.c. (ett_* was used instead of hf_*) Checked in Guy's fix for the function declearation for proto_tree_add_text() and proto_tree_add_notext(). svn path=/trunk/; revision=1713
2000-03-09New generic function dissect_rpc_list() for variable length RPC lists.Uwe Girlich1-2/+30
svn path=/trunk/; revision=1705
2000-01-22Give "dissect_rpc_string()" an extra "char **" argument; if it'sGuy Harris1-9/+20
non-null, it returns through that argument a pointer to the displayed version of the string, otherwise it just frees that string. Use that to put, in the tree item for READDIR and READDIRPLUS reply directory entry items, the file name from the directory entry. svn path=/trunk/; revision=1521
2000-01-07Fix Gerald's e-mail address.Guy Harris1-2/+2
svn path=/trunk/; revision=1437
1999-12-14New function dissect_rpc_bool() for generic boolean value parsing.Uwe Girlich1-1/+41
Duplicate transactions can be found with the filter rpc.dup or more specific rpc.call.dup and rpc.reply.dup. svn path=/trunk/; revision=1328
1999-12-13Fixed types. The RPC procedure (hf_rpc_procedure) in the logical proto_treeGilbert Ramirez1-4/+4
(but not in the string attached to the GUI proto_tree, because proto_tree_add_item_format() was being used) was getting filled in with the value of "prog" instead of "proc". svn path=/trunk/; revision=1314
1999-12-10hex output of 64 Bit numbers with 0x prefixedUwe Girlich1-2/+2
svn path=/trunk/; revision=1281
1999-12-06dissect_rpc_string() can now better handle truncated strings.Uwe Girlich1-4/+15
svn path=/trunk/; revision=1227
1999-12-02new dissect_rpc_opaque_data() for RPC data with length and fill-bytesUwe Girlich1-35/+102
svn path=/trunk/; revision=1182
1999-11-19Make various "value_string" tables "const"; this allows the compiler toGuy Harris1-2/+2
stuff them into shared read-only space. Put the "VALS()" cast macro into the initialization of an "hf_register_info" array. svn path=/trunk/; revision=1072
1999-11-19Added Uwe's update to RPC.Gilbert Ramirez1-28/+113
svn path=/trunk/; revision=1069
1999-11-17Provide a general mechanism by which dissectors can register "init"Guy Harris1-3/+5
routines, which are called before a dissection pass is made over all the packets in a capture - the "init" routine would clear out any state information that needs to be initialized before such a dissection pass. Make the NCP, SMB, AFS, and ONC RPC dissectors register their "init" routines with that mechanism, have the code that reads in a capture file call the routine that calls all registered "init" routines rather than calling a wired-in set of "init" routines, and also have the code that runs a filtering or colorizing pass over all the packets call that routine, as a filtering or colorizing pass is a dissection pass. Have the ONC RPC "init" routine zero out the table of RPC calls, so that it completely erases any state from the previous dissection pass (so that, for example, if you run a filtering pass, it doesn't mark any non-duplicate packets as duplicates because it remembers them from the previous pass). svn path=/trunk/; revision=1050
1999-11-16Replace the ETT_ "enum" members, declared in "packet.h", withGuy Harris1-16/+28
dynamically-assigned "ett_" integer values, assigned by "proto_register_subtree_array()"; this: obviates the need to update "packet.h" whenever you add a new subtree type - you only have to add a call to "proto_register_subtree_array()" to a "register" routine and an array of pointers to "ett_", if they're not already there, and add a pointer to the new "ett_" variable to the array, if they are there; would allow run-time-loaded dissectors to allocate subtree types when they're loaded. svn path=/trunk/; revision=1043
1999-11-15Got rid of dissect_rpc_string routine, renamed dissect_rpc_string_item toNathan Neulinger1-130/+130
dissect_rpc_string. Replaced only instance of this routine being called. Added display filtering to rpc dissector. Replaced most instances of proto_tree_add_text with proto_tree_add_item. Added program version and procedure to the program tree in addition to it being in the RPC tree. svn path=/trunk/; revision=1037
1999-11-15start of display filters and fix for toupper prototypeNathan Neulinger1-2/+48
svn path=/trunk/; revision=1036
1999-11-15Fixed rpc dissector to upcase program name.Nathan Neulinger1-2/+14
Fixed nfs and nlm to use a lowercase protocol name so filtering will work. svn path=/trunk/; revision=1035
1999-11-15Uwe Girlich's patches for nfs,mount,portmap and addition of nlm.Nathan Neulinger1-29/+10
svn path=/trunk/; revision=1034
1999-11-14For ONC RPC, when constructing conversations, use a null address as theGuy Harris1-7/+24
destination address for calls and the source address of the reply - we should't require the server address to be the same for a call and reply, as they may not be on a multi-homed server (clients presumably check the XID only, or perhaps the XID and the port whence the reply came, although with TI-RPC I don't think they can check the port without checking the address as well). This requires that the conversation code not assume that the source and destination addresses for a given packet in a conversation have the same type, so, when comparing addresses for equality, it must explicitly check the address types. In said code, also check the port numbers before we check the addresses - testing ports is cheaper, as they're just integers, and there's probably a decent chance that you won't see two conversations between different pairs of hosts and the *same* pair of ports in a capture file, so the cheaper port tests are probably decently likely to fail first. svn path=/trunk/; revision=1031
1999-11-14Move the test to see if something looks like an ONC RPC request or replyGuy Harris1-24/+91
into "dissect_rpc()" itself; it returns TRUE if it is, FALSE if it isn't. svn path=/trunk/; revision=1030
1999-11-12enhancements to ypserv dissectorNathan Neulinger1-2/+2
svn path=/trunk/; revision=1018
1999-11-11Added mount dissector.Nathan Neulinger1-11/+21
Added stat dissector. Enhancements to portmap dissector. Added rpc_prog_name function to packet-rpc to retrieve the name of an rpc program. This should likely eventually be modified to use the /etc/rpc or rpc.bynumber NIS maps in addition to the programs that are registered within ethereal. svn path=/trunk/; revision=1016
1999-11-11Expanded bootparams dissector to handle decoding getfile calls and replies.Nathan Neulinger1-1/+44
Added proto_registrar_get_name routine to proto.c to retrieve the name of particular proto_tree field. Added dissect_rpc_string_item to packet-rpc.c. This routine does the same thing as dissect_rpc_string, except it takes a hfindex of a proto_tree item instead of a name. It uses the p_r_get_name call to get the name, and adds the actual string content as a hidden field (so that the subtree highlights the entire data area - length, data, and padding). There is only one call to dissect_rpc_string, so I believe that this routine should replace it. svn path=/trunk/; revision=1011
1999-11-10Added stubs for various RPC routines:Nathan Neulinger1-26/+1
portmap ypserv ypxfr ypserv bootparams Stubs currently just map procedure numbers to names. I'll add some more decoding of the actual procedure call/reply contents eventually. svn path=/trunk/; revision=998
1999-11-10added ypxfr program to rpcNathan Neulinger1-1/+6
svn path=/trunk/; revision=997
1999-11-10fix ypbinb/ypbind typoNathan Neulinger1-2/+2
svn path=/trunk/; revision=996
1999-11-05Updates to the ONC RPC and NFS code, from Uwe Girlich.Guy Harris1-41/+116
svn path=/trunk/; revision=976
1999-10-29Have the PROTOCOL field for ONC RPC just give the RPC programGuy Harris1-25/+25
name/number, and put the call/reply info, procedure, and version number into the INFO field. Implement "col_append_fstr()", and use it to add information to the info field. Make "col_add_fstr()" aware that COL_INFO fields can have more data than other COL_XXX fields (as "col_add_str()" and "col_append_str()" already were). svn path=/trunk/; revision=947
1999-10-29Uwe Girlich's ONC RPC and NFS dissectors.Guy Harris1-0/+861
svn path=/trunk/; revision=946