Ethereal-dev: [ethereal-dev] TFTP Option Support (RFC2347)
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: "Craig Newell (W2/VK4YEQ)" <craign@xxxxxxxxxxxxxxxx>
Date: Thu, 27 Jan 2000 01:46:57 -0500 (EST)
Hi All,
Here is my first attempt at adding to Ethereal - TFTP Options Support
(RFC2347). I hope this is the required format patch, else email me
directly and I will try again.
Thanks,
CraigN
---
Craig Newell email: CraigN@xxxxxxxxxxxxxxxx
Free Spirit icbm: somewhere in NJ, USA
Index: packet-tftp.c
===================================================================
RCS file: /cvsroot/ethereal/packet-tftp.c,v
retrieving revision 1.8
diff -u -r1.8 packet-tftp.c
--- packet-tftp.c 2000/01/07 22:05:41 1.8
+++ packet-tftp.c 2000/01/27 06:45:30
@@ -2,6 +2,8 @@
* Routines for tftp packet dissection
*
* Richard Sharpe <rsharpe@xxxxxxxxxx>
+ * Craig Newell <CraigN@xxxxxxxxxxxxxxxx>
+ * RFC2347 TFTP Option Extension
*
* $Id: packet-tftp.c,v 1.8 2000/01/07 22:05:41 guy Exp $
*
@@ -52,6 +54,7 @@
#define DATA 3
#define ACK 4
#define ERROR 5
+#define OACK 6
char *tftp_opcodes[8] = {
"Unknown Request",
@@ -60,7 +63,7 @@
"Data Packet",
"Acknowledgement",
"Error Code",
- "Unknown Request",
+ "Option Acknowledgement",
"Unknown Request"
};
@@ -88,7 +91,7 @@
if (check_col(fd, COL_INFO)) {
i1 = pntohs(&pd[offset]);
- col_add_fstr(fd, COL_INFO, "TFTP %s", i1 <= ERROR ? tftp_opcodes[i1 % 8] : "Unknown Request");
+ col_add_fstr(fd, COL_INFO, "TFTP %s", i1 <= OACK ? tftp_opcodes[i1 % 8] : "Unknown Request");
}
@@ -106,16 +109,36 @@
offset += 2;
i1 = strlen(pd+offset);
proto_tree_add_text(tftp_tree, offset, i1+1, "Source File: %s", pd+offset);
+ offset += i1 + 1;
+ i1 = strlen(pd+offset);
+ proto_tree_add_text(tftp_tree, offset, i1+1, "Type: %s",pd+offset);
offset += i1 + 1;
- proto_tree_add_text(tftp_tree, offset, END_OF_FRAME, "Type: %s",pd+offset);
+ while (offset < pi.captured_len) {
+ int i2;
+ i1 = strlen(pd+offset); /* length of option */
+ i2 = strlen(pd+offset+i1+1); /* length of value */
+ proto_tree_add_text(tftp_tree, offset, i1+i2+2, "Option: %s = %s",
+ pd+offset, pd+offset+i1+1);
+ offset += i1 + i2 + 2;
+ }
break;
case WRQ:
proto_tree_add_text(tftp_tree, offset, 2, "Write Request");
offset += 2;
i1 = strlen(pd+offset);
proto_tree_add_text(tftp_tree, offset, i1+1, "Destination File: %s", pd+offset);
+ offset += i1 + 1;
+ i1 = strlen(pd+offset);
+ proto_tree_add_text(tftp_tree, offset, i1+1, "Type: %s",pd+offset);
offset += i1 + 1;
- proto_tree_add_text(tftp_tree, offset+2, END_OF_FRAME, "Type: %s",pd+offset);
+ while (offset < pi.captured_len) {
+ int i2;
+ i1 = strlen(pd+offset); /* length of option */
+ i2 = strlen(pd+offset+i1+1); /* length of value */
+ proto_tree_add_text(tftp_tree, offset, i1+i2+2, "Option: %s = %s",
+ pd+offset, pd+offset+i1+1);
+ offset += i1 + i2 + 2;
+ }
break;
case DATA:
proto_tree_add_text(tftp_tree, offset, 2, "Data Packet");
@@ -140,6 +163,21 @@
proto_tree_add_text(tftp_tree, offset, 2, "Code = %s", tftp_errors[i1 % 8]);
offset += 2;
proto_tree_add_text(tftp_tree, offset, END_OF_FRAME, "Error Message: %s", pd + offset);
+ break;
+ case OACK:
+ proto_tree_add_text(tftp_tree, offset, 2, "Option Acknowledgement");
+ offset += 2;
+ i1 = pntohs(pd+offset);
+ proto_tree_add_text(tftp_tree, offset, 2, "Block = %u", i1);
+ offset += 2;
+ while (offset < pi.captured_len) {
+ int i2;
+ i1 = strlen(pd+offset); /* length of option */
+ i2 = strlen(pd+offset+i1+1); /* length of value */
+ proto_tree_add_text(tftp_tree, offset, i1+i2+2, "Option: %s = %s",
+ pd+offset, pd+offset+i1+1);
+ offset += i1 + i2 + 2;
+ }
break;
default:
proto_tree_add_text(tftp_tree, offset, 2, "Unknown TFTP Request: %0X.", i1);
- Follow-Ups:
- Re: [ethereal-dev] TFTP Option Support (RFC2347)
- From: Guy Harris
- Re: [ethereal-dev] TFTP Option Support (RFC2347)
- Prev by Date: Re: [ethereal-dev] framenum-bug with patch
- Next by Date: Re: [ethereal-dev] TFTP Option Support (RFC2347)
- Previous by thread: Re: [ethereal-dev] framenum-bug with patch
- Next by thread: Re: [ethereal-dev] TFTP Option Support (RFC2347)
- Index(es):





