Ethereal-dev: [Ethereal-dev] [patch] interpret codes for FTP
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Brad Hards <bhards@xxxxxxxxxxxxxx>
Date: Tue, 25 Feb 2003 18:53:20 +1100
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 G'day, The attached patch provides a textual interpretation for the various FTP response codes, based on the list in RFC 959. I also did some minor cleanups to the same area. Please review and apply, as appropriate. Brad -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE+WyDwW6pHgIdAuOMRAqCnAKCXxUgsuDP+/SILXl/2RZXG6tCEkwCfQ8Wi cXf6TLxRV+fwimy6Pvy+WCo= =sSDg -----END PGP SIGNATURE-----
diff -Naur -X ethereal-dontdiff clean/ethereal-0.9.9/packet-ftp.c ethereal-0.9.9-ftp/packet-ftp.c --- clean/ethereal-0.9.9/packet-ftp.c 2002-08-29 10:39:52.000000000 +1000 +++ ethereal-0.9.9-ftp/packet-ftp.c 2003-02-25 18:02:06.000000000 +1100 @@ -57,6 +57,52 @@ #define TCP_PORT_FTPDATA 20 #define TCP_PORT_FTP 21 +struct response_table { + guint32 code; + gchar *text; +} response_table[] = { + { 110, "Restart marker reply" }, + { 120, "Service ready in nnn minutes" }, + { 125, "Data connection already open; transfer starting" }, + { 150, "File status okay; about to open data connection" }, + { 200, "Command okay" }, + { 202, "Command not implemented, superfluous at this site" }, + { 211, "System status, or system help reply" }, + { 212, "Directory status" }, + { 213, "File status" }, + { 214, "Help message" }, + { 215, "NAME system type" }, + { 220, "Service ready for new user" }, + { 221, "Service closing control connection" }, + { 225, "Data connection open; no transfer in progress" }, + { 226, "Closing data connection" }, + { 227, "Entering Passive Mode" }, + { 230, "User logged in, proceed" }, + { 250, "Requested file action okay, completed" }, + { 257, "PATHNAME created" }, + { 331, "User name okay, need password" }, + { 332, "Need account for login" }, + { 350, "Requested file action pending further information" }, + { 421, "Service not available, closing control connection" }, + { 425, "Can't open data connection" }, + { 426, "Connection closed; transfer aborted" }, + { 450, "Requested file action not taken" }, + { 451, "Requested action aborted: local error in processing" }, + { 452, "Requested action not taken. Insufficient storage space in system" }, + { 500, "Syntax error, command unrecognized" }, + { 501, "Syntax error in parameters or arguments" }, + { 502, "Command not implemented" }, + { 503, "Bad sequence of commands" }, + { 504, "Command not implemented for that parameter" }, + { 530, "Not logged in" }, + { 532, "Need account for storing files" }, + { 550, "Requested action not taken: File unavailable" }, + { 551, "Requested action aborted: page type unknown" }, + { 552, "Requested file action aborted: Exceeded storage allocation" }, + { 553, "Requested action not taken: File name not allowed" }, + { 0, "Unknown" }, +}; + static void dissect_ftpdata(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -207,11 +253,13 @@ gint offset = 0; const guchar *line; guint32 code; + gchar code_str[4]; gboolean is_pasv_response = FALSE; gint next_offset; int linelen; int tokenlen; const guchar *next_token; + int i = 0; if (pinfo->match_port == pinfo->destport) is_request = TRUE; @@ -291,12 +339,30 @@ * One-line reply, or first or last line * of a multi-line reply. */ - code = (line[0] - '0')*100 + (line[1] - '0')*10 - + (line[2] - '0'); + tvb_get_nstringz0(tvb, offset, 3, code_str); + code = strtoul(code_str, NULL, 10); + for (i = 0; response_table[i].code; i++) { + if (code == response_table[i].code) + break; + } + if (tree) { - proto_tree_add_uint(ftp_tree, - hf_ftp_response_code, tvb, offset, 3, code); - + proto_tree_add_uint_hidden(ftp_tree, + hf_ftp_response_code, + tvb, offset, 3, code); + + if (response_table[i].code) { + proto_tree_add_text(ftp_tree, tvb, + offset, 3, + "Response code: %i (%s)", + code, + response_table[i].text); + } else { /* no string */ + proto_tree_add_text(ftp_tree, tvb, + offset, 3, + "Response code: %i", + code); + } } /*
- Follow-Ups:
- Re: [Ethereal-dev] [patch] interpret codes for FTP
- From: Guy Harris
- Re: [Ethereal-dev] [patch] interpret codes for FTP
- Prev by Date: Re: Re: [Ethereal-dev] Re: ethereal bug
- Next by Date: [Ethereal-dev] IPsec dissecting
- Previous by thread: [Ethereal-dev] Re: [Ethereal-users] Packet Length:1284 instead of expected 1280
- Next by thread: Re: [Ethereal-dev] [patch] interpret codes for FTP
- Index(es):