aboutsummaryrefslogtreecommitdiffstats
path: root/packet-srvloc.c
diff options
context:
space:
mode:
authorGilbert Ramirez <gram@alumni.rice.edu>2000-05-11 08:18:09 +0000
committerGilbert Ramirez <gram@alumni.rice.edu>2000-05-11 08:18:09 +0000
commit292e38e2c61edcd14bfa30ca3c72bacda1bcbe32 (patch)
treedb4edef02456a48d0f6d505166ac7d70f6c0f644 /packet-srvloc.c
parent162800efb308901e0c302517be01226130e39b19 (diff)
Add tvbuff class.
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
Diffstat (limited to 'packet-srvloc.c')
-rw-r--r--packet-srvloc.c154
1 files changed, 77 insertions, 77 deletions
diff --git a/packet-srvloc.c b/packet-srvloc.c
index dea077c72e..e3558787c3 100644
--- a/packet-srvloc.c
+++ b/packet-srvloc.c
@@ -6,7 +6,7 @@
* In particular I have not had an opportunity to see how it
* responds to SRVLOC over TCP.
*
- * $Id: packet-srvloc.c,v 1.7 2000/04/08 07:07:37 guy Exp $
+ * $Id: packet-srvloc.c,v 1.8 2000/05/11 08:15:52 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -158,18 +158,18 @@ dissect_authblk(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
seconds = pntohl(&pd[offset]) - 2208988800ul;
stamp = gmtime(&seconds);
floatsec = stamp->tm_sec + pntohl(&pd[offset + 4]) / 4294967296.0;
- proto_tree_add_text(tree, offset, 8,
+ proto_tree_add_text(tree, NullTVB, offset, 8,
"Timestamp: %04d-%02d-%02d %02d:%02d:%07.4f UTC",
stamp->tm_year + 1900, stamp->tm_mon + 1,
stamp->tm_mday, stamp->tm_hour, stamp->tm_min,
floatsec);
- proto_tree_add_text(tree, offset + 8, 2, "Block Structure Desciptor: %u",
+ proto_tree_add_text(tree, NullTVB, offset + 8, 2, "Block Structure Desciptor: %u",
pntohs(&pd[offset + 8]));
length = pntohs(&pd[offset + 10]);
- proto_tree_add_text(tree, offset + 10, 2, "Authenticator length: %u",
+ proto_tree_add_text(tree, NullTVB, offset + 10, 2, "Authenticator length: %u",
length);
offset += 12;
- proto_tree_add_text(tree, offset, length, "Authentication block: %s",
+ proto_tree_add_text(tree, NullTVB, offset, length, "Authentication block: %s",
format_text(&pd[offset], length));
offset += length;
};
@@ -192,7 +192,7 @@ dissect_srvloc(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
col_add_str(fd, COL_INFO, val_to_str(pd[offset + 1], srvloc_functions, "Unknown Function (%d)"));
if (tree) {
- ti = proto_tree_add_item(tree, proto_srvloc, offset, END_OF_FRAME, NULL);
+ ti = proto_tree_add_item(tree, proto_srvloc, NullTVB, offset, END_OF_FRAME, NULL);
srvloc_tree = proto_item_add_subtree(ti, ett_srvloc);
if ( END_OF_FRAME > sizeof(srvloc_hdr) ) {
@@ -200,54 +200,54 @@ dissect_srvloc(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
srvloc_hdr.length = pntohs(&srvloc_hdr.length);
srvloc_hdr.encoding = pntohs(&srvloc_hdr.encoding);
srvloc_hdr.xid = pntohs(&srvloc_hdr.xid);
- proto_tree_add_item(srvloc_tree, hf_srvloc_version, offset, 1, srvloc_hdr.version);
- proto_tree_add_item(srvloc_tree, hf_srvloc_function, offset + 1, 1, srvloc_hdr.function);
- proto_tree_add_text(srvloc_tree, offset + 2, 2, "Length: %d",srvloc_hdr.length);
- tf = proto_tree_add_item(srvloc_tree, hf_srvloc_flags, offset + 4, 1, srvloc_hdr.flags);
+ proto_tree_add_item(srvloc_tree, hf_srvloc_version, NullTVB, offset, 1, srvloc_hdr.version);
+ proto_tree_add_item(srvloc_tree, hf_srvloc_function, NullTVB, offset + 1, 1, srvloc_hdr.function);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset + 2, 2, "Length: %d",srvloc_hdr.length);
+ tf = proto_tree_add_item(srvloc_tree, hf_srvloc_flags, NullTVB, offset + 4, 1, srvloc_hdr.flags);
srvloc_flags = proto_item_add_subtree(tf, ett_srvloc_flags);
- proto_tree_add_text(srvloc_flags, offset + 4, 0, "Overflow %d... .xxx", (srvloc_hdr.flags & FLAG_O) >> 7 );
- proto_tree_add_text(srvloc_flags, offset + 4, 0, "Monolingual .%d.. .xxx", (srvloc_hdr.flags & FLAG_M) >> 6 );
- proto_tree_add_text(srvloc_flags, offset + 4, 0, "URL Authentication Present ..%d. .xxx", (srvloc_hdr.flags & FLAG_U) >> 5 );
- proto_tree_add_text(srvloc_flags, offset + 4, 0, "Attribute Authentication Present ...%d .xxx", (srvloc_hdr.flags & FLAG_A) >> 4 );
- proto_tree_add_text(srvloc_flags, offset + 4, 0, "Fresh Service Entry .... %dxxx", (srvloc_hdr.flags & FLAG_F) >> 3 );
- proto_tree_add_text(srvloc_tree, offset + 5, 1, "Dialect: %d",srvloc_hdr.dialect);
- proto_tree_add_text(srvloc_tree, offset + 6, 2, "Language: %s", format_text(srvloc_hdr.language,2));
- proto_tree_add_text(srvloc_tree, offset + 8, 2, "Encoding: %d", srvloc_hdr.encoding);
- proto_tree_add_text(srvloc_tree, offset + 10, 2, "Transaction ID: %d", srvloc_hdr.xid);
+ proto_tree_add_text(srvloc_flags, NullTVB, offset + 4, 0, "Overflow %d... .xxx", (srvloc_hdr.flags & FLAG_O) >> 7 );
+ proto_tree_add_text(srvloc_flags, NullTVB, offset + 4, 0, "Monolingual .%d.. .xxx", (srvloc_hdr.flags & FLAG_M) >> 6 );
+ proto_tree_add_text(srvloc_flags, NullTVB, offset + 4, 0, "URL Authentication Present ..%d. .xxx", (srvloc_hdr.flags & FLAG_U) >> 5 );
+ proto_tree_add_text(srvloc_flags, NullTVB, offset + 4, 0, "Attribute Authentication Present ...%d .xxx", (srvloc_hdr.flags & FLAG_A) >> 4 );
+ proto_tree_add_text(srvloc_flags, NullTVB, offset + 4, 0, "Fresh Service Entry .... %dxxx", (srvloc_hdr.flags & FLAG_F) >> 3 );
+ proto_tree_add_text(srvloc_tree, NullTVB, offset + 5, 1, "Dialect: %d",srvloc_hdr.dialect);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset + 6, 2, "Language: %s", format_text(srvloc_hdr.language,2));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset + 8, 2, "Encoding: %d", srvloc_hdr.encoding);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset + 10, 2, "Transaction ID: %d", srvloc_hdr.xid);
offset += 12;
} else {
- proto_tree_add_text(srvloc_tree, offset, END_OF_FRAME, "Invalid Packet: Length less than header.");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, END_OF_FRAME, "Invalid Packet: Length less than header.");
};
if (( srvloc_hdr.length - 12 ) == END_OF_FRAME ) {
switch (srvloc_hdr.function) {
case SRVREQ:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Request");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Request");
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Previous Response List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Previous Response List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Predicate length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Predicate length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Predicate: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Predicate: %s", format_text(&pd[offset], length));
offset += length;
break;
case SRVRPLY:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Reply");
- proto_tree_add_item(srvloc_tree, hf_srvloc_error, offset, 2, pd[offset]);;
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Reply");
+ proto_tree_add_item(srvloc_tree, hf_srvloc_error, NullTVB, offset, 2, pd[offset]);;
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, 2, "URL Count: %d", pntohs(&pd[offset]));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL Count: %d", pntohs(&pd[offset]));
offset += 2;
for (count = pntohs(&pd[offset]) + 1; count > 0; count--, offset++) {
- proto_tree_add_text(srvloc_tree, offset, 2, "URL lifetime: %d", pntohs(&pd[offset]));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL lifetime: %d", pntohs(&pd[offset]));
offset += 2;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "URL length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service URL: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service URL: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_U) == FLAG_U )
dissect_authblk(pd, offset, fd, srvloc_tree);
@@ -255,140 +255,140 @@ dissect_srvloc(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
break;
case SRVREG:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Registration");
- proto_tree_add_text(srvloc_tree, offset, 2, "URL lifetime: %d", pntohs(&pd[offset]));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Registration");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL lifetime: %d", pntohs(&pd[offset]));
offset += 2;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "URL length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service URL: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service URL: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_U) == FLAG_U )
dissect_authblk(pd, offset, fd, srvloc_tree);
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Attribute List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Attribute List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_A) == FLAG_A )
dissect_authblk(pd, offset, fd, srvloc_tree);
break;
case SRVDEREG:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Deregister");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Deregister");
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "URL length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service URL: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service URL: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_U) == FLAG_U )
dissect_authblk(pd, offset, fd, srvloc_tree);
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Attribute List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Attribute List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_A) == FLAG_A )
dissect_authblk(pd, offset, fd, srvloc_tree);
break;
case SRVACK:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Acknowledge");
- proto_tree_add_item(srvloc_tree, hf_srvloc_error, offset, 2, pd[offset]);;
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Acknowledge");
+ proto_tree_add_item(srvloc_tree, hf_srvloc_error, NullTVB, offset, 2, pd[offset]);;
offset += 2;
break;
case ATTRRQST:
- proto_tree_add_text(srvloc_tree, offset, 0, "Attribute Request");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Attribute Request");
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Previous Response List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Previous Response List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "URL length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service URL: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service URL: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Scope List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Scope List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Attribute List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Attribute List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
offset += length;
break;
case ATTRRPLY:
- proto_tree_add_text(srvloc_tree, offset, 0, "Attribute Reply");
- proto_tree_add_item(srvloc_tree, hf_srvloc_error, offset, 2, pd[offset]);;
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Attribute Reply");
+ proto_tree_add_item(srvloc_tree, hf_srvloc_error, NullTVB, offset, 2, pd[offset]);;
offset += 2;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Attribute List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Attribute List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Attribute List: %s", format_text(&pd[offset], length));
offset += length;
if ( (srvloc_hdr.flags & FLAG_A) == FLAG_A )
dissect_authblk(pd, offset, fd, srvloc_tree);
break;
case DAADVERT:
- proto_tree_add_text(srvloc_tree, offset, 0, "DA Advertisement");
- proto_tree_add_item(srvloc_tree, hf_srvloc_error, offset, 2, pd[offset]);;
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "DA Advertisement");
+ proto_tree_add_item(srvloc_tree, hf_srvloc_error, NullTVB, offset, 2, pd[offset]);;
offset += 2;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "URL length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "URL length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service URL: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service URL: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Scope List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Scope List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
offset += length;
break;
case SRVTYPERQST:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Type Request");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Type Request");
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Previous Response List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Previous Response List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Previous Response List: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Naming Authority List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Naming Authority List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Naming Authority List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Naming Authority List: %s", format_text(&pd[offset], length));
offset += length;
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Scope List Length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Scope List Length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Scope Response List: %s", format_text(&pd[offset], length));
offset += length;
break;
case SRVTYPERPLY:
- proto_tree_add_text(srvloc_tree, offset, 0, "Service Type Reply");
- proto_tree_add_item(srvloc_tree, hf_srvloc_error, offset, 2, pd[offset]);;
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 0, "Service Type Reply");
+ proto_tree_add_item(srvloc_tree, hf_srvloc_error, NullTVB, offset, 2, pd[offset]);;
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, 2, "Service Type Count: %d", pntohs(&pd[offset]));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Service Type Count: %d", pntohs(&pd[offset]));
offset += 2;
for (count = pntohs(&pd[offset]) + 1; count > 0; count--, offset++) {
length = pntohs(&pd[offset]);
- proto_tree_add_text(srvloc_tree, offset, 2, "Service Type List length: %d", length);
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, 2, "Service Type List length: %d", length);
offset += 2;
- proto_tree_add_text(srvloc_tree, offset, length, "Service Type List: %s", format_text(&pd[offset], length));
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, length, "Service Type List: %s", format_text(&pd[offset], length));
offset += length;
};
break;
default:
- proto_tree_add_text(srvloc_tree, offset, END_OF_FRAME, "Unknown Function Type");
+ proto_tree_add_text(srvloc_tree, NullTVB, offset, END_OF_FRAME, "Unknown Function Type");
};
- } else { proto_tree_add_text(srvloc_tree, offset, END_OF_FRAME,"Invalid packet: Bad length value");
+ } else { proto_tree_add_text(srvloc_tree, NullTVB, offset, END_OF_FRAME,"Invalid packet: Bad length value");
};
};
};