Ethereal-dev: Re: [Ethereal-dev] trouble with afs and cinfo
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jaime Fournier <jafour1@xxxxxxxxx>
Date: Tue, 8 Apr 2003 21:14:00 -0700 (PDT)
Yeah, I commented out the col_clear at the top dissector for afs. I have attached a diff of packet-afs.c of what I did to try to get it to work. There is also a trace of a create-file for afs. The problem is that despite having included the pinfo to each function, no additional col_appends seem to work. As you can see if the diff. This is what I get on this trace file. 1 0.000000 192.168.0.69 -> 192.168.0.22 AFS (RX) FS Request: create-file (137) What I expected with that diff is 1 0.000000 192.168.0.69 -> 192.168.0.22 AFS (RX) FS Request: create-file (137): Testing 1 2 3 Is this possible? Or am I just doing this the wrong way? Thanks again. --- Guy Harris <guy@xxxxxxxxxx> wrote: > On Tue, Apr 08, 2003 at 05:45:19PM -0700, Jaime > Fournier wrote: > > I have been trying to get the afs > > code to print more info on colinfo. > > Using the -z options for all the vars that I want > is > > not real feasible with so many vars. I have even > > modified the packet-afs.c to pass > > pinfo to all subdisectors. > > However this does not seem to work. > > What doesn't work? Passing pinfo is > straightforward, so that presumably > works, and there's something else, e.g. some call to > "col_add_str()" or > "col_append_fstr()" or something such as that, > that's not working. > > If so, what are the calls you're making in the > subdissectors? They > should be something like > > if (check_col(pinfo->cinfo, COL_INFO)) { > col_append_fstr(pinfo->cinfo, COL_INFO, ", Foo > %s", > op_string); > } > > Note that "col_add_str()" and "col_add_fstr()" will > *overwrite* what > "dissect_afs()" puts into the column, so, unless you > *want* to trash the > operation name, etc., you need to use > "col_append_str()" or > "col_append_fstr()", to *append* to what > "dissect_afs()" put into the > column. ===== Jaime Fournier __________________________________________________ Do you Yahoo!? Yahoo! Tax Center - File online, calculators, forms, and more http://tax.yahoo.com
--- ethereal/packet-afs.c Fri Jan 17 20:18:39 2003 +++ ethnew/packet-afs.c Tue Apr 8 22:57:36 2003 @@ -75,43 +75,43 @@ * Dissector prototypes */ static int dissect_acl(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset); + proto_tree *tree, int offset, packet_info * pinfo); static void dissect_fs_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_bos_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_bos_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_vol_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_vol_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_kauth_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_kauth_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_cb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_cb_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_prot_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_prot_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_vldb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_vldb_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_ubik_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_ubik_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_backup_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); static void dissect_backup_request(tvbuff_t *tvb, struct rxinfo *rxinfo, - proto_tree *tree, int offset, int opcode); + proto_tree *tree, int offset, int opcode, packet_info * pinfo); /* * Hash Functions @@ -185,15 +185,16 @@ int port, node, typenode, opcode; value_string const *vals; int offset = 0; - void (*dissector)(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode); - + void (*dissector)(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo); if (check_col(pinfo->cinfo, COL_PROTOCOL)) { - col_set_str(pinfo->cinfo, COL_PROTOCOL, "AFS (RX)"); + col_add_str(pinfo->cinfo, COL_PROTOCOL, "AFS (RX)"); } + /* if (check_col(pinfo->cinfo, COL_INFO)) { col_clear(pinfo->cinfo, COL_INFO); } + */ reply = (rxinfo->flags & RX_CLIENT_INITIATED) == 0; port = ((reply == 0) ? pinfo->destport : pinfo->srcport ); @@ -332,6 +333,7 @@ val_to_str(port, port_types_short, "Unknown(%d)"), reply ? "Reply" : "Request", val_to_str(opcode, vals, "Unknown(%d)"), opcode); + } else { if (check_col(pinfo->cinfo, COL_INFO)) col_add_fstr(pinfo->cinfo, COL_INFO, "%s%s %s: Unknown(%d)", @@ -391,8 +393,9 @@ } /* Process the packet according to what service it is */ + /* JAF make sure we pass *pinfo to the sub dissectors */ if ( dissector ) { - (*dissector)(tvb, rxinfo, afs_op_tree, offset, opcode); + (*dissector)(tvb, rxinfo, afs_op_tree, offset, opcode, pinfo); } } } @@ -432,7 +435,7 @@ * Should this just scan the string itself, rather than using "sscanf()"? */ static int -dissect_acl(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset) +dissect_acl(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, packet_info * pinfo) { int old_offset; gint32 bytes; @@ -491,7 +494,7 @@ */ static void -dissect_fs_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_fs_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -508,7 +511,7 @@ OUT_BYTES_ALL(hf_afs_fs_data); break; case 131: /* fetch acl */ - offset = dissect_acl(tvb, rxinfo, tree, offset); + offset = dissect_acl(tvb, rxinfo, tree, offset, pinfo); OUT_FS_AFSFetchStatus("Status"); OUT_FS_AFSVolSync(); break; @@ -606,18 +609,21 @@ } static void -dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_fs_request(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { /* skip the opcode if this is the first packet in the stream */ if ( rxinfo->seq == 1 ) { offset += 4; /* skip the opcode */ } + /* JAF in here */ + if (check_col (pinfo->cinfo, COL_INFO)) + col_append_str (pinfo->cinfo, COL_INFO, ": Testing 1 2 3"); switch ( opcode ) { case 130: /* Fetch data */ - OUT_FS_AFSFid("Source"); + OUT_FS_AFSFid("Source"); OUT_UINT(hf_afs_fs_offset); OUT_UINT(hf_afs_fs_length); break; @@ -640,7 +646,7 @@ break; case 134: /* Store ACL */ OUT_FS_AFSFid("Target"); - offset = dissect_acl(tvb, rxinfo, tree, offset); + offset = dissect_acl(tvb, rxinfo, tree, offset, pinfo); break; case 135: /* Store Status */ OUT_FS_AFSFid("Target"); @@ -769,7 +775,7 @@ * BOS Helpers */ static void -dissect_bos_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_bos_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -899,7 +905,7 @@ } static void -dissect_bos_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_bos_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1029,7 +1035,7 @@ * VOL Helpers */ static void -dissect_vol_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_vol_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1049,7 +1055,7 @@ } static void -dissect_vol_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_vol_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1066,7 +1072,7 @@ * KAUTH Helpers */ static void -dissect_kauth_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_kauth_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1081,7 +1087,7 @@ } static void -dissect_kauth_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_kauth_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1120,7 +1126,7 @@ * CB Helpers */ static void -dissect_cb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_cb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1135,7 +1141,7 @@ } static void -dissect_cb_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_cb_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1167,7 +1173,7 @@ * PROT Helpers */ static void -dissect_prot_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_prot_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1229,7 +1235,7 @@ } static void -dissect_prot_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_prot_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1310,7 +1316,7 @@ * VLDB Helpers */ static void -dissect_vldb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_vldb_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1483,7 +1489,7 @@ } static void -dissect_vldb_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_vldb_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1533,7 +1539,7 @@ * UBIK Helpers */ static void -dissect_ubik_reply(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_ubik_reply(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { switch ( opcode ) { @@ -1579,7 +1585,7 @@ } static void -dissect_ubik_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode) +dissect_ubik_request(tvbuff_t *tvb, struct rxinfo *rxinfo _U_, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */ @@ -1658,7 +1664,7 @@ * BACKUP Helpers */ static void -dissect_backup_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode) +dissect_backup_reply(tvbuff_t *tvb, struct rxinfo *rxinfo, proto_tree *tree, int offset, int opcode, packet_info * pinfo) { if ( rxinfo->type == RX_PACKET_TYPE_DATA ) { @@ -1673,7 +1679,7 @@ } static void -dissect_backup_request(tvbuff_t *tvb _U_, struct rxinfo *rxinfo _U_, proto_tree *tree _U_, int offset, int opcode) +dissect_backup_request(tvbuff_t *tvb _U_, struct rxinfo *rxinfo _U_, proto_tree *tree _U_, int offset, int opcode, packet_info * pinfo) { offset += 4; /* skip the opcode */
Attachment:
trace1
Description: trace1
- Follow-Ups:
- Re: [Ethereal-dev] trouble with afs and cinfo
- From: Guy Harris
- Re: [Ethereal-dev] trouble with afs and cinfo
- References:
- Re: [Ethereal-dev] trouble with afs and cinfo
- From: Guy Harris
- Re: [Ethereal-dev] trouble with afs and cinfo
- Prev by Date: [Ethereal-dev] Diameter Protocol
- Next by Date: RE: [Ethereal-Dev] WTP Negative-Ack bug
- Previous by thread: Re: [Ethereal-dev] trouble with afs and cinfo
- Next by thread: Re: [Ethereal-dev] trouble with afs and cinfo
- Index(es):