* Greg Morris <gmorris@novell.com>
* Copyright (c) Novell, Inc. 2002-2003
*
- * $Id: packet-ndps.c,v 1.21 2003/04/21 23:06:38 guy Exp $
+ * $Id: packet-ndps.c,v 1.25 2003/10/17 22:59:18 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* desegmentation of ndps */
static gboolean ndps_defragment = TRUE;
-static guint32 frag_number = 0;
-static guint32 save_frag_length=0;
-static guint32 save_frag_seq=0;
-static gboolean ndps_fragmented = FALSE;
-static gboolean more_fragment = FALSE;
+
static guint32 tid = 1;
/* Show ID's value */
static int hf_ndps_packet_type = -1;
static int hf_ndps_rpc_version = -1;
static int hf_ndps_error = -1;
-static int hf_ndps_items = -1;
-static int hf_ndps_objects = -1;
-static int hf_ndps_attributes = -1;
+static int hf_ndps_num_objects = -1;
+static int hf_ndps_num_attributes = -1;
static int hf_ndps_sbuffer = -1;
static int hf_ndps_rbuffer = -1;
static int hf_ndps_user_name = -1;
static int hf_ndps_broker_name = -1;
+static int hf_ndps_num_results = -1;
+static int hf_ndps_num_options = -1;
+static int hf_ndps_num_jobs = -1;
static int hf_ndps_pa_name = -1;
static int hf_ndps_tree = -1;
static int hf_ndps_reqframe = -1;
static int hf_printer_name = -1;
static int hf_ndps_qualified_name = -1;
static int hf_ndps_item_count = -1;
+static int hf_ndps_num_passwords = -1;
+static int hf_ndps_num_servers = -1;
+static int hf_ndps_num_locations = -1;
+static int hf_ndps_num_areas = -1;
+static int hf_ndps_num_address_items = -1;
+static int hf_ndps_num_job_categories = -1;
+static int hf_ndps_num_page_selects = -1;
+static int hf_ndps_num_page_informations = -1;
+static int hf_ndps_num_names = -1;
+static int hf_ndps_num_categories = -1;
+static int hf_ndps_num_colorants = -1;
+static int hf_ndps_num_events = -1;
+static int hf_ndps_num_args = -1;
+static int hf_ndps_num_transfer_methods = -1;
+static int hf_ndps_num_doc_types = -1;
+static int hf_ndps_num_destinations = -1;
static int hf_ndps_qualifier = -1;
static int hf_ndps_lib_error = -1;
static int hf_ndps_other_error = -1;
static int hf_ndps_integer_or_oid = -1;
static int hf_ndps_profile_id = -1;
static int hf_ndps_persistence = -1;
+static int hf_ndps_language_count = -1;
static int hf_ndps_language_id = -1;
static int hf_address_type = -1;
static int hf_ndps_address = -1;
static int hf_ndps_port = -1;
static int hf_ndps_ip = -1;
static int hf_ndps_server_type = -1;
+static int hf_ndps_num_services = -1;
static int hf_ndps_service_type = -1;
static int hf_ndps_service_enabled = -1;
static int hf_ndps_method_name = -1;
static int hf_ndps_item_ptr = -1;
static int hf_ndps_len = -1;
static int hf_limit_enc = -1;
+static int hf_ndps_delivery_add_count = -1;
static int hf_ndps_qualified_name2 = -1;
static int hf_ndps_delivery_add_type = -1;
static int hf_ndps_criterion_type = -1;
+static int hf_ndps_num_ignored_attributes = -1;
static int hf_ndps_ignored_type = -1;
+static int hf_ndps_num_resources = -1;
static int hf_ndps_resource_type = -1;
static int hf_ndps_identifier_type = -1;
static int hf_ndps_page_flag = -1;
static int hf_ndps_colorant_set = -1;
static int hf_ndps_card_enum_time = -1;
static int hf_ndps_attrs_arg = -1;
+static int hf_ndps_context_len = -1;
static int hf_ndps_context = -1;
static int hf_ndps_filter = -1;
static int hf_ndps_item_filter = -1;
static int hf_ndps_operator = -1;
static int hf_ndps_password = -1;
static int hf_ndps_retrieve_restrictions = -1;
+static int hf_ndps_bind_security_option_count = -1;
static int hf_bind_security = -1;
static int hf_ndps_max_items = -1;
static int hf_ndps_status_flags = -1;
static int hf_ndps_resource_list_type = -1;
+static int hf_os_count = -1;
static int hf_os_type = -1;
+static int hf_ndps_printer_type_count = -1;
static int hf_ndps_printer_type = -1;
static int hf_ndps_printer_manuf = -1;
static int hf_ndps_inf_file_name = -1;
static int hf_printer_id = -1;
static int hf_ndps_font_name = -1;
static int hf_ndps_return_code = -1;
+static int hf_ndps_banner_count = -1;
static int hf_ndps_banner_name = -1;
+static int hf_ndps_font_type_count = -1;
static int hf_font_type_name = -1;
+static int hf_ndps_font_file_count = -1;
static int hf_font_file_name = -1;
+static int hf_ndps_printer_def_count = -1;
static int hf_ndps_prn_file_name = -1;
static int hf_ndps_prn_dir_name = -1;
static int hf_ndps_def_file_name = -1;
-static int hf_ndps_win31_items = -1;
-static int hf_ndps_win95_items = -1;
+static int hf_ndps_num_win31_keys = -1;
+static int hf_ndps_num_win95_keys = -1;
+static int hf_ndps_num_windows_keys = -1;
static int hf_ndps_windows_key = -1;
static int hf_archive_type = -1;
static int hf_archive_file_size = -1;
static int hf_ndps_doc_name = -1;
static int hf_print_arg = -1;
static int hf_local_id = -1;
+static int hf_ndps_included_doc_len = -1;
static int hf_ndps_included_doc = -1;
static int hf_ndps_ref_name = -1;
static int hf_interrupt_job_type = -1;
static int hf_time = -1;
static int hf_ndps_supplier_name = -1;
static int hf_ndps_message = -1;
+static int hf_ndps_delivery_method_count = -1;
static int hf_delivery_method_type = -1;
static int hf_ndps_get_session_type = -1;
static int hf_packet_count = -1;
static int hf_last_packet_flag = -1;
static int hf_ndps_get_resman_session_type = -1;
static int hf_problem_type = -1;
-static int hf_ndps_values = -1;
+static int hf_ndps_num_values = -1;
static int hf_ndps_object_ids_7 = -1;
static int hf_ndps_object_ids_8 = -1;
static int hf_ndps_object_ids_9 = -1;
}
static int
-ndps_string(tvbuff_t* tvb, int hfinfo, proto_tree *ndps_tree, int offset)
+ndps_string(tvbuff_t* tvb, int hfinfo, proto_tree *ndps_tree, int offset, char *stringval, size_t buflen)
{
int foffset = offset;
guint32 str_length;
guint16 c_char;
guint32 length_remaining = 0;
+ if (stringval == NULL) {
+ stringval = buffer;
+ buflen = sizeof buffer;
+ }
str_length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
length_remaining = tvb_length_remaining(tvb, foffset);
if (c_char != 0x00)
{
c_char = 0x2e;
- buffer[i] = c_char & 0xff;
+ if (i < buflen - 1)
+ stringval[i] = c_char & 0xff;
}
else
{
}
else
{
- buffer[i] = c_char & 0xff;
+ if (i < buflen - 1)
+ stringval[i] = c_char & 0xff;
}
foffset++;
length_remaining--;
break;
}
}
- buffer[i] = '\0';
+ stringval[i] = '\0';
str_length = tvb_get_ntohl(tvb, offset);
proto_tree_add_string(ndps_tree, hfinfo, tvb, offset+4,
- str_length, buffer);
+ str_length, stringval);
foffset += align_4(tvb, foffset);
return foffset;
}
static int
objectidentifier(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
- guint32 length=0;
+ guint32 length;
char *label=NULL;
guint32 label_value=0;
proto_tree *atree;
proto_item *aitem;
gboolean found=TRUE;
- if (tvb_get_ntohl(tvb, foffset)==0)
+ length = tvb_get_ntohl(tvb, foffset);
+ if (length==0)
{
return foffset;
}
- length = tvb_get_ntohl(tvb, foffset);
+ if (ndps_show_oids)
+ {
+ proto_tree_add_uint(ndps_tree, hf_oid_struct_size, tvb, foffset, 4, length);
+ }
foffset += 4;
switch (length)
{
static int
name_or_id(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
+ guint32 name_or_id_val;
- proto_tree_add_item(ndps_tree, hf_ndps_nameorid, tvb, foffset, 4, FALSE);
+ name_or_id_val = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_nameorid, tvb, foffset, 4, name_or_id_val);
foffset += 4;
- if(tvb_get_ntohl(tvb, foffset-4)==1) /* Global */
+ switch (name_or_id_val)
{
- foffset = objectidentifier(tvb, ndps_tree, foffset);
- }
- else
- {
- if(tvb_get_ntohl(tvb, foffset-4)==2) /* Local */
- {
- foffset = ndps_string(tvb, hf_local_object_name, ndps_tree, foffset);
- }
+ case 1: /* Global */
+ foffset = objectidentifier(tvb, ndps_tree, foffset);
+ break;
+
+ case 2: /* Local */
+ foffset = ndps_string(tvb, hf_local_object_name, ndps_tree, foffset, NULL, 0);
+ break;
}
+ foffset += align_4(tvb, foffset);
return foffset;
}
foffset += 4;
if (qualified_name_type != 0) {
if (qualified_name_type == 1) {
- foffset = ndps_string(tvb, hf_printer_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_printer_name, ndps_tree, foffset, NULL, 0);
}
else
{
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
}
}
return foffset;
switch(object_type)
{
case 0: /* Printer Contained Object ID */
- foffset = ndps_string(tvb, hf_printer_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_printer_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_ndps_object, tvb, foffset,
4, FALSE);
foffset += 4;
break;
case 1: /* Document Identifier */
- foffset = ndps_string(tvb, hf_printer_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_printer_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_ndps_document_number, tvb, foffset,
4, FALSE);
foffset += 4;
foffset = objectidentifier(tvb, atree, foffset);
break;
case 3: /* Object Name */
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
if (foffset > tvb_length_remaining(tvb, foffset)) {
return foffset;
}
foffset = name_or_id(tvb, atree, foffset);
break;
case 5: /* Simple Name */
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
break;
case 6: /* Printer Configuration Object ID */
- foffset = ndps_string(tvb, hf_printer_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_printer_name, atree, foffset, NULL, 0);
break;
case 7: /* Qualified Name */
foffset = qualifiedname(tvb, ndps_tree, foffset);
break;
case 8: /* Event Object ID */
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
foffset = objectidentifier(tvb, atree, foffset);
proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset,
4, FALSE);
case 10:
case 11:
case 12:
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
break;
case 13:
proto_tree_add_item(ndps_tree, hf_ndps_attrib_boolean, tvb, foffset, 4, FALSE);
case 16:
case 17:
default:
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
break;
}
return foffset;
{
guint32 cred_type=0;
guint32 length=0;
- guint32 number_of_items=0;
+ guint32 number_of_items;
guint32 i;
proto_tree *atree;
proto_item *aitem;
switch (cred_type)
{
case 0:
- foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset, NULL, 0);
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_passwords, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Password %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Password %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_password, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_password, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
foffset += length;
}
break;
case 1:
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_certified, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_certified, tvb, foffset, length, FALSE);
+ }
foffset += length;
break;
case 2:
- foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset, NULL, 0);
foffset += 2;
proto_tree_add_item(ndps_tree, hf_ndps_connection, tvb, foffset, 2, FALSE);
foffset += 2;
break;
case 3:
length=tvb_get_ntohl(tvb, foffset);
- foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset, NULL, 0);
if (length == 0)
{
foffset += 2;
}
proto_tree_add_item(ndps_tree, hf_ndps_connection, tvb, foffset, 2, FALSE);
foffset += 2;
- foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset, NULL, 0);
break;
case 4:
- foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset, NULL, 0);
foffset += 2;
proto_tree_add_item(ndps_tree, hf_ndps_connection, tvb, foffset, 2, FALSE);
foffset += 2;
- foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_user_name, ndps_tree, foffset, NULL, 0);
foffset += 8; /* Don't know what these 8 bytes signify */
- proto_tree_add_item(ndps_tree, hf_ndps_items, tvb, foffset, 4, FALSE);
- foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ proto_tree_add_item(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, FALSE);
+ foffset += 4; /* XXX - what does this count? */
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
break;
default:
break;
static int
event_object_set(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
- guint32 number_of_items=0;
- guint32 number_of_items2=0;
- guint32 i=0;
- guint32 j=0;
+ guint32 number_of_items;
+ guint32 number_of_items2;
+ guint32 i;
+ guint32 j;
+ guint32 object_identifier;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
proto_tree *ctree;
proto_item *citem;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_events, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
+ bitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
+ proto_tree_add_item(btree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = objectidentifier(tvb, btree, foffset);
foffset += align_4(tvb, foffset);
foffset += align_4(tvb, foffset);
proto_tree_add_item(btree, hf_ndps_object_op, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_uint(btree, hf_ndps_event_object_identifier, tvb, foffset, 4, FALSE);
+ object_identifier = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_event_object_identifier, tvb, foffset, 4, object_identifier);
foffset += 4;
- if(tvb_get_ntohl(tvb, foffset-4)==1)
+ switch (object_identifier)
{
- foffset = objectidentifier(tvb, btree, foffset);
- foffset += align_4(tvb, foffset);
- }
- else
- {
- if(tvb_get_ntohl(tvb, foffset-4)==2)
- {
+ case 1:
+ foffset = objectidentifier(tvb, btree, foffset);
+ foffset += align_4(tvb, foffset);
+ break;
+
+ case 2:
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_item_count, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Item %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Item %u", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(citem, tvb, foffset);
}
- }
+ break;
}
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
return foffset;
}
static int
cardinal_seq(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
- guint32 number_of_items=0;
- guint32 length=0;
- guint32 i=0;
+ guint32 number_of_items;
+ guint32 length;
+ guint32 i;
proto_tree *atree;
proto_item *aitem;
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Cardinal %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Cardinal %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
+ proto_item_set_end(aitem, tvb, foffset);
}
return foffset;
}
static int
server_entry(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
- guint32 number_of_items=0;
- guint32 i=0;
- guint32 data_type=0;
+ char server_name[1024];
+ guint32 number_of_items;
+ guint32 i;
+ guint32 data_type;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
proto_item *bitem;
- proto_tree *ctree;
- proto_item *citem;
- foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset);
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_server_type, tvb, foffset, 4, FALSE);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Server Info");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ foffset = ndps_string(tvb, hf_ndps_server_name, ndps_tree, foffset, server_name, sizeof server_name);
+ proto_item_append_text(aitem, ": %s", server_name);
+ proto_tree_add_item(atree, hf_ndps_server_type, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = print_address(tvb, atree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Server Info");
- btree = proto_item_add_subtree(bitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_servers, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Info %d", i);
- ctree = proto_item_add_subtree(citem, ett_ndps);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Info %u", i);
+ btree = proto_item_add_subtree(bitem, ett_ndps);
data_type = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ctree, hf_ndps_data_item_type, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(btree, hf_ndps_data_item_type, tvb, foffset, 4, FALSE);
foffset += 4;
switch (data_type)
{
case 0: /* Int8 */
- proto_tree_add_item(ctree, hf_info_int, tvb, foffset, 1, FALSE);
+ proto_tree_add_item(btree, hf_info_int, tvb, foffset, 1, FALSE);
foffset++;
break;
case 1: /* Int16 */
- proto_tree_add_item(ctree, hf_info_int16, tvb, foffset, 2, FALSE);
+ proto_tree_add_item(btree, hf_info_int16, tvb, foffset, 2, FALSE);
foffset += 2;
break;
case 2: /* Int32 */
- proto_tree_add_item(ctree, hf_info_int32, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(btree, hf_info_int32, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 3: /* Boolean */
- proto_tree_add_item(ctree, hf_info_boolean, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(btree, hf_info_boolean, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 4: /* String */
case 5: /* Bytes */
- foffset = ndps_string(tvb, hf_info_string, ctree, foffset);
+ foffset = ndps_string(tvb, hf_info_string, btree, foffset, NULL, 0);
break;
default:
break;
}
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
return foffset;
}
{
guint32 i;
guint32 j;
- guint32 number_of_items=0;
- guint32 number_of_items2=0;
- guint32 attribute_type=0;
- guint32 integer_or_oid=0;
- guint32 event_object_type=0;
- guint32 ignored_type=0;
- guint32 resource_type=0;
- guint32 identifier_type=0;
- guint32 criterion_type=0;
- guint32 card_enum_time=0;
- guint32 media_type=0;
- guint32 doc_content=0;
- guint32 page_size=0;
- guint32 medium_size=0;
- guint32 numbers_up=0;
- guint32 colorant_set=0;
- guint32 length=0;
+ guint32 number_of_items;
+ guint32 number_of_items2;
+ guint32 attribute_type;
+ guint32 integer_or_oid;
+ guint32 event_object_type;
+ guint32 ignored_type;
+ guint32 resource_type;
+ guint32 identifier_type;
+ guint32 criterion_type;
+ guint32 card_enum_time;
+ guint32 media_type;
+ guint32 doc_content;
+ guint32 page_size;
+ guint32 medium_size;
+ guint32 numbers_up;
+ guint32 colorant_set;
+ guint32 length;
+ guint32 dimension;
+ guint32 location;
+ guint32 cardinal;
char *label;
- guint32 label_value=0;
+ guint32 label_value;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
case 102: /* File Path */
case 103: /* Uniform Resource Identifier */
case 108: /* Extended Resource Identifier */
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
break;
case 4: /* Message */
case 5: /* Error Message */
break;
case 39: /* Name or OID Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 7: /* Distinguished Name String*/
case 79: /* File Reference */
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
foffset = name_or_id(tvb, ndps_tree, foffset);
break;
case 8: /* Distinguished Name String Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Name %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Name %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 9: /* Delta Time */
case 14: /* Cardinal Seq */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_info_int32, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_info_int32, tvb, foffset, length, FALSE);
+ }
foffset += length;
break;
case 16: /* Integer Range */
case 23: /* Cardinal 64 Seq */
case 30: /* Real Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_n64, tvb, foffset, 8, FALSE);
foffset += 8;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 25: /* Integer 64 Range */
break;
case 37: /* Object Identifier Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 41: /* Relative Distinguished Name Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_names, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Name %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Name %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 42: /* Realization */
foffset += 8;
break;
case 44: /* Dimension */
- proto_tree_add_item(ndps_tree, hf_ndps_dim_value, tvb, foffset, 8, FALSE);
+ dimension = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_dim_value, tvb, foffset, 4, dimension);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4) == 0) {
+ if (dimension == 0) {
proto_tree_add_item(ndps_tree, hf_ndps_n64, tvb, foffset, 8, FALSE);
foffset += 8;
}
{
foffset = name_or_id(tvb, ndps_tree, foffset);
}
- proto_tree_add_item(ndps_tree, hf_ndps_dim_flag, tvb, foffset, 8, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_dim_flag, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_n64, tvb, foffset, 8, FALSE);
foffset += 8;
break;
case 45: /* XY Dimensions */
- proto_tree_add_item(ndps_tree, hf_ndps_xydim_value, tvb, foffset, 8, FALSE);
+ dimension = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_xydim_value, tvb, foffset, 4, dimension);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4) == 1) {
+ if (dimension == 1) {
foffset = name_or_id(tvb, ndps_tree, foffset);
}
else
foffset += 8;
break;
case 46: /* Locations */
- proto_tree_add_item(ndps_tree, hf_ndps_location_value, tvb, foffset, 8, FALSE);
+ location = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_location_value, tvb, foffset, 4, location);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4) == 0) {
+ if (location == 0) {
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_locations, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Location %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Location %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_n64, tvb, foffset, 8, FALSE);
foffset += 8;
+ proto_item_set_end(aitem, tvb, foffset);
}
}
else
{
foffset = name_or_id(tvb, ndps_tree, foffset);
}
- proto_tree_add_item(ndps_tree, hf_ndps_dim_flag, tvb, foffset, 8, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_dim_flag, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_n64, tvb, foffset, 8, FALSE);
foffset += 8;
break;
case 48: /* Area Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_areas, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Area %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Area %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_xmin_n64, tvb, foffset, 8, FALSE);
foffset += 8;
foffset += 8;
proto_tree_add_item(atree, hf_ndps_ymax_n64, tvb, foffset, 8, FALSE);
foffset += 8;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 49: /* Edge */
foffset += 4;
break;
case 51: /* Cardinal or OID */
- proto_tree_add_item(ndps_tree, hf_ndps_cardinal_or_oid, tvb, foffset, 4, FALSE);
+ cardinal = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_cardinal_or_oid, tvb, foffset, 4, cardinal);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) {
+ if (cardinal==0) {
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
}
foffset += 4;
break;
case 53: /* Cardinal or Name or OID */
- proto_tree_add_item(ndps_tree, hf_ndps_cardinal_name_or_oid, tvb, foffset, 4, FALSE);
+ cardinal = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_cardinal_name_or_oid, tvb, foffset, 4, cardinal);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) {
+ if (cardinal==0) {
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
}
foffset = qualifiedname(tvb, ndps_tree, foffset);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = name_or_id(tvb, ndps_tree, foffset);
+
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_address_items, tvb, foffset, 4, number_of_items);
+ foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Address Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Address Item %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset += address_item(tvb, atree, foffset);
+ foffset = address_item(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_events, tvb, foffset, 4, number_of_items);
+ foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = objectidentifier(tvb, atree, foffset);
+ foffset += align_4(tvb, foffset);
foffset = objectidentification(tvb, atree, foffset);
proto_tree_add_item(atree, hf_ndps_object_op, tvb, foffset, 4, FALSE);
foffset += 4;
-
event_object_type = tvb_get_ntohl(tvb, foffset);
proto_tree_add_uint(atree, hf_ndps_event_object_identifier, tvb, foffset, 4, event_object_type);
foffset += 4;
- if(event_object_type==1)
- {
- foffset = objectidentifier(tvb, atree, foffset);
- }
- else
+ switch (event_object_type)
{
- if(event_object_type==0)
- {
+ case 2:
+ /* Number of Objects */
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (j = 1 ; j <= number_of_items2; j++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object %d", i);
+ foffset = objectidentifier(tvb, atree, foffset);
+ }
+ foffset += 4;
+ break;
+
+ case 1:
+ foffset = objectidentifier(tvb, atree, foffset);
+ break;
+
+ case 0:
+ number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items2);
+ foffset += 4;
+ for (j = 1 ; j <= number_of_items2; j++ )
+ {
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
- }
+ break;
}
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 56: /* Octet String */
case 63: /* Job Password */
case 66: /* Print Checkpoint */
- foffset = ndps_string(tvb, hf_info_string, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_info_string, ndps_tree, foffset, NULL, 0);
break;
case 59: /* Method Delivery Address */
proto_tree_add_item(ndps_tree, hf_ndps_delivery_add_type, tvb, foffset, 4, FALSE);
case 1: /*DISTINGUISHED_NAME*/
case 2: /*TEXT*/
case 3: /*OCTET_STRING*/
- foffset = ndps_string(tvb, hf_info_string, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_info_string, ndps_tree, foffset, NULL, 0);
break;
case 4: /*DIST_NAME_STRING*/
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
foffset = name_or_id(tvb, ndps_tree, foffset);
break;
case 5: /*RPC_ADDRESS*/
case 65: /* Job Categories */
foffset = objectidentifier(tvb, ndps_tree, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_job_categories, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 67: /* Ignored Attribute */
foffset += 4;
foffset = objectidentifier(tvb, ndps_tree, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_ignored_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Ignored Attribute %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Ignored Attribute %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
ignored_type = tvb_get_ntohl(tvb, foffset);
proto_tree_add_uint(atree, hf_ndps_ignored_type, tvb, foffset, 4, ignored_type);
{
foffset = objectidentifier(tvb, atree, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 68: /* Resource */
}
else
{
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
}
break;
case 69: /* Medium Substitution */
foffset = name_or_id(tvb, ndps_tree, foffset);
break;
case 70: /* Font Substitution */
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
break;
case 71: /* Resource Context Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_resources, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resource %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resource %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
resource_type = tvb_get_ntohl(tvb, foffset);
proto_tree_add_uint(atree, hf_ndps_resource_type, tvb, foffset, 4, resource_type);
}
else
{
- foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset, NULL, 0);
}
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 73: /* Page Select Seq */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_page_selects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Page Select %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Page Select %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_page_flag, tvb, foffset, 4, FALSE);
foffset += 4;
}
if (identifier_type == 1)
{
- foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset, NULL, 0);
}
if (identifier_type == 2)
{
}
if (identifier_type == 1)
{
- foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset, NULL, 0);
}
if (identifier_type == 2)
{
foffset = name_or_id(tvb, atree, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 74: /* Page Media Select */
}
else
{
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_page_flag, tvb, foffset, 4, FALSE);
foffset += 4;
}
if (identifier_type == 1)
{
- foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, atree, foffset, NULL, 0);
}
if (identifier_type == 2)
{
foffset = name_or_id(tvb, atree, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
}
}
break;
{
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
}
else
{
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
foffset = name_or_id(tvb, ndps_tree, foffset);
}
break;
}
break;
case 77: /* Presentation Direction */
- proto_tree_add_uint(ndps_tree, hf_ndps_direction, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_direction, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 78: /* Page Order */
- proto_tree_add_uint(ndps_tree, hf_ndps_page_order, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_page_order, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 80: /* Medium Source Size */
break;
case 82: /* Output Bins Characteristics */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_page_informations, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Page Information %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Page Information %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- proto_tree_add_uint(atree, hf_ndps_page_order, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(atree, hf_ndps_page_order, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_uint(atree, hf_ndps_page_orientation, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(atree, hf_ndps_page_orientation, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 83: /* Page ID Type */
- proto_tree_add_uint(ndps_tree, hf_ndps_identifier_type, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_identifier_type, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 84: /* Level Range */
case 85: /* Category Set */
foffset = objectidentifier(tvb, ndps_tree, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_categories, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Category %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Category %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
}
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_values, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Value %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Value %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 86: /* Numbers Up Supported */
- proto_tree_add_uint(ndps_tree, hf_ndps_numbers_up, tvb, foffset, 4, FALSE);
numbers_up=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_numbers_up, tvb, foffset, 4, numbers_up);
foffset += 4;
switch(numbers_up)
{
break;
case 87: /* Finishing */
case 88: /* Print Contained Object ID */
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 89: /* Print Config Object ID */
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
foffset = qualifiedname(tvb, ndps_tree, foffset);
break;
case 90: /* Typed Name */
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_level, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_interval, tvb, foffset, 4, FALSE);
foffset += 4;
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_add_bytes, tvb, foffset, 4, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_add_bytes, tvb, foffset, 4, FALSE);
+ }
foffset += length;
break;
case 92: /* XY Dimensions Value */
- proto_tree_add_item(ndps_tree, hf_ndps_xydim_value, tvb, foffset, 8, FALSE);
+ dimension = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_xydim_value, tvb, foffset, 4, dimension);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4) == 1) {
- foffset = name_or_id(tvb, ndps_tree, foffset);
- }
- else
+ switch (dimension)
{
- if (tvb_get_ntohl(tvb, foffset-4) == 0)
- {
+ case 1:
+ foffset = name_or_id(tvb, ndps_tree, foffset);
+ break;
+
+ case 0:
proto_tree_add_item(ndps_tree, hf_ndps_xdimension_n64, tvb, foffset, 8, FALSE);
foffset += 8;
proto_tree_add_item(ndps_tree, hf_ndps_ydimension_n64, tvb, foffset, 8, FALSE);
foffset += 8;
- }
- else
- {
+ break;
+
+ default:
proto_tree_add_item(ndps_tree, hf_ndps_xdimension, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_ydimension, tvb, foffset, 4, FALSE);
foffset += 4;
- }
+ break;
}
break;
case 93: /* Name or OID Dimensions Map */
break;
case 97: /* Qualified Name Set */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_names, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Name %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Name %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 98: /* Colorant Set */
foffset = objectidentifier(tvb, ndps_tree, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_colorants, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Colorant %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Colorant %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
}
break;
case 99: /* Resource Printer ID */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_printer_def_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Printer %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Printer %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 100: /* Event Object ID */
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
foffset = objectidentifier(tvb, ndps_tree, foffset);
proto_tree_add_item(ndps_tree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
- foffset +=4;
+ foffset += 4;
break;
case 101: /* Qualified Name Map */
foffset = qualifiedname(tvb, ndps_tree, foffset);
card_enum_time = tvb_get_ntohl(tvb, foffset);
proto_tree_add_item(ndps_tree, hf_ndps_card_enum_time, tvb, foffset, 4, FALSE);
foffset += 4;
- if (card_enum_time==0)
+ switch (card_enum_time)
{
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
- foffset += 4;
- }
- else
- {
- if (card_enum_time==1)
- {
+ case 0:
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
- }
- else
- {
+ break;
+
+ case 1:
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
- }
+ break;
+
+ default:
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
+ foffset += 4;
+ break;
}
break;
case 105: /* Print Contained Object ID Set */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 106: /* Octet String Pair */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
break;
case 107: /* Octet String Integer Pair */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset = qualifiedname(tvb, ndps_tree, foffset);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
case 0: /*MHS ADDR*/
case 1: /*DISTINGUISHED_NAME*/
case 2: /*TEXT*/
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
break;
case 3: /*OCTET_STRING*/
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_octet_string, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
break;
case 4: /*DIST_NAME_STRING*/
- foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, ndps_tree, foffset, NULL, 0);
foffset = name_or_id(tvb, ndps_tree, foffset);
break;
case 5: /*RPC_ADDRESS*/
break;
}
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_events, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_object_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_object_name, atree, foffset, NULL, 0);
foffset = objectidentifier(tvb, atree, foffset);
- proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset,
- 4, FALSE);
+ proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
foffset = objectidentifier(tvb, ndps_tree, foffset);
foffset = qualifiedname(tvb, ndps_tree, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
break;
default:
break;
static int
commonarguments(tvbuff_t* tvb, proto_tree *ndps_tree, int foffset)
{
- guint32 number_of_items=0;
- guint32 i=0;
+ guint32 number_of_items;
+ guint32 i;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
proto_item *bitem;
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Common Arguments");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Common Arguments");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_args, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Argument %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Argument %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, atree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
return foffset;
}
{
guint32 resource_type=0;
- proto_tree_add_item(ndps_tree, hf_res_type, tvb, foffset, 4, FALSE);
resource_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_res_type, tvb, foffset, 4, resource_type);
foffset += 4;
switch (resource_type)
{
case 0: /* Print Drivers */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 1: /* Printer Definitions */
- foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 2: /* Banner Page Files */
- foffset = ndps_string(tvb, hf_ndps_banner_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_banner_name, ndps_tree, foffset, NULL, 0);
break;
case 3: /* Font Types */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_font_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 4: /* Generic Files/ Archive */
case 5: /* Printer Driver Archive */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_archive_type, tvb, foffset, 4, FALSE);
foffset += 4;
break;
guint32 ndps_prog;
guint32 ndps_func;
guint32 ndps_frame_num;
+ gboolean ndps_frag;
+ guint32 ndps_end_frag;
} ndps_req_hash_value;
static GHashTable *ndps_req_hash = NULL;
request_value->ndps_prog = 0;
request_value->ndps_func = 0;
request_value->ndps_frame_num = 0;
+ request_value->ndps_frag = FALSE;
+ request_value->ndps_end_frag = 0;
g_hash_table_insert(ndps_req_hash, request_key, request_value);
static guint
get_ndps_pdu_len(tvbuff_t *tvb, int offset)
{
- guint16 plen;
-
- /*
- * Get the length of the NDPS packet.
- */
- plen = tvb_get_ntohs(tvb, offset + 2);
-
- /*
- * That length doesn't include the length of the record mark field
- * or the length field itself; add that in.
- * (XXX - is the field really a 31-bit length with the uppermost bit
- * being a record mark bit?)
- */
- return plen + 4;
+ return tvb_get_ntohs(tvb, offset +2) + 4;
}
static void
dissect_ndps(tvb, pinfo, ndps_tree);
}
+/*
+ * Defrag logic
+ *
+ * SPX EOM not being set indicates we are inside or at the
+ * beginning of a fragment. But when the end of the fragment
+ * is encounterd the flag is set. So we must mark what the
+ * frame number is of the end fragment so that we will be
+ * able to redissect if the user clicks on the packet
+ * or resorts/filters the trace.
+ *
+ * Once we are certain that we are in a fragment sequence
+ * then we can just process each fragment in this conversation
+ * until we reach the eom message packet. We can tell we are at
+ * the final fragment because it is flagged as SPX EOM.
+ *
+ * We will be able to easily determine if a conversation is a fragment
+ * with the exception of the last packet in the fragment. So remember
+ * the last fragment packet number.
+ */
static void
ndps_defrag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint16 record_mark=0;
- guint16 ndps_length=0;
- int len=0;
- tvbuff_t *next_tvb = NULL;
- fragment_data *fd_head;
- spx_info *spx_info;
+ int len=0;
+ tvbuff_t *next_tvb = NULL;
+ fragment_data *fd_head;
+ spx_info *spx_info;
+ ndps_req_hash_value *request_value = NULL;
+ conversation_t *conversation;
+ /* Get SPX info from SPX dissector */
spx_info = pinfo->private_data;
+ /* Check to see if defragmentation is enabled in the dissector */
if (!ndps_defragment) {
dissect_ndps(tvb, pinfo, tree);
return;
}
- record_mark = tvb_get_ntohs(tvb, 0);
- ndps_length = tvb_get_ntohs(tvb, 2);
- if (ndps_length > tvb_length_remaining(tvb, 0) || ndps_fragmented || ndps_length==0)
+ /* Has this already been dissected? */
+ if (!pinfo->fd->flags.visited)
+ {
+ /* Lets see if this is a new conversation */
+ conversation = find_conversation(&pinfo->src, &pinfo->dst,
+ PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->srcport, 0);
+
+ if (conversation == NULL)
+ {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(&pinfo->src, &pinfo->dst,
+ PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->srcport, 0);
+ /* Create new request value hash */
+ request_value = ndps_hash_insert(conversation, (guint32) pinfo->srcport);
+ }
+ /* So now we need to get the request info for this conversation */
+ request_value = ndps_hash_lookup(conversation, (guint32) pinfo->srcport);
+ if (request_value == NULL)
+ {
+ /* We haven't seen a packet with this conversation yet so create one. */
+ request_value = ndps_hash_insert(conversation, (guint32) pinfo->srcport);
+ }
+ /* Add it to pinfo so we can get it on further dissection requests */
+ p_add_proto_data(pinfo->fd, proto_ndps, (void*) request_value);
+ }
+ else
+ {
+ /* Get request value data */
+ request_value = p_get_proto_data(pinfo->fd, proto_ndps);
+ }
+ /* Check to see of this is a fragment. If so then mark as a fragment. */
+ if (!spx_info->eom) {
+ request_value->ndps_frag = TRUE;
+ }
+ /* Now we process the fragments */
+ if (request_value->ndps_frag || (request_value->ndps_end_frag == pinfo->fd->num))
{
- more_fragment = TRUE;
- ndps_fragmented = TRUE;
-
/*
* Fragment
*/
tid = (pinfo->srcport+pinfo->destport);
len = tvb_reported_length_remaining(tvb, 0);
- if ((frag_number + tvb_length_remaining(tvb, 0)-save_frag_length)<=10)
- {
- more_fragment = FALSE;
- }
if (tvb_bytes_exist(tvb, 0, len))
{
- fd_head = fragment_add_seq_next(tvb, 0, pinfo, tid, ndps_fragment_table, ndps_reassembled_table, len, more_fragment);
+ fd_head = fragment_add_seq_next(tvb, 0, pinfo, tid, ndps_fragment_table, ndps_reassembled_table, len, !spx_info->eom);
if (fd_head != NULL)
{
- if (fd_head->next != NULL)
+ /* Is this the last fragment? EOM will indicate */
+ if (fd_head->next != NULL && spx_info->eom)
{
next_tvb = tvb_new_real_data(fd_head->data,
fd_head->len, fd_head->len);
next_tvb);
tid++;
}
- more_fragment = FALSE;
- save_frag_length = 0;
- frag_number=0;
- ndps_fragmented=FALSE;
+ /* Remember this fragment number so we can dissect again */
+ request_value->ndps_end_frag = pinfo->fd->num;
+
}
else
{
+ /* This is either a beggining or middle fragment on second dissection */
next_tvb = tvb_new_subset(tvb, 0, -1, -1);
- }
- }
- else
- {
- if (save_frag_length == 0)
- {
- save_frag_length = ndps_length; /* First Fragment */
- save_frag_seq = tid;
- }
- if ((pinfo->srcport+pinfo->destport) == save_frag_seq)
- {
- if (!pinfo->fd->flags.visited)
- {
- frag_number += tvb_length_remaining(tvb, 0); /* Current offset */
- }
if (check_col(pinfo->cinfo, COL_INFO))
{
- if (more_fragment)
+ if (!spx_info->eom)
{
- col_append_fstr(pinfo->cinfo, COL_INFO, " [NDPS Fragment]");
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[NDPS Fragment]");
}
}
}
+ }
+ else
+ {
+ /* Fragment from first pass of dissection */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ if (!spx_info->eom)
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, "[NDPS Fragment]");
+ }
+ }
next_tvb = NULL;
}
}
else
{
/*
- * Dissect this
+ * There are no bytes so Dissect this
*/
next_tvb = tvb_new_subset(tvb, 0, -1, -1);
}
if (next_tvb == NULL)
{
- if ((pinfo->srcport+pinfo->destport) == save_frag_seq)
- {
- next_tvb = tvb_new_subset (tvb, 0, -1, -1);
- call_dissector(ndps_data_handle, next_tvb, pinfo, tree);
- }
- else
- {
- if (spx_info->eom)
- {
- ndps_fragmented=FALSE;
- }
- dissect_ndps(tvb, pinfo, tree);
- }
+ /* This is a fragment packet */
+ next_tvb = tvb_new_subset (tvb, 0, -1, -1);
+ call_dissector(ndps_data_handle, next_tvb, pinfo, tree);
}
else
{
- if (spx_info->eom)
- {
- ndps_fragmented=FALSE;
+ /* This is the end fragment so dissect and mark end */
+ if (spx_info->eom) {
+ request_value->ndps_frag = FALSE;
+ dissect_ndps(next_tvb, pinfo, tree);
}
- dissect_ndps(next_tvb, pinfo, tree);
}
}
else
{
- if (spx_info->eom)
- {
- ndps_fragmented=FALSE;
- }
+ /* This is not any fragment packet */
+ request_value->ndps_frag = FALSE;
dissect_ndps(tvb, pinfo, tree);
}
}
{
ndps_req_hash_value *request_value = NULL;
conversation_t *conversation;
- guint32 i=0;
- guint32 j=0;
- guint32 field_len=0;
- guint32 cred_type=0;
- guint32 resource_type=0;
- guint32 filter_type=0;
- guint32 print_type=0;
- guint32 length=0;
- guint32 number_of_items=0;
- guint32 number_of_items2=0;
+ guint32 i;
+ guint32 j;
+ guint32 field_len;
+ guint32 cred_type;
+ guint32 resource_type;
+ guint32 filter_type;
+ guint32 print_type;
+ guint32 length;
+ guint32 number_of_items;
+ guint32 number_of_items2;
+ guint32 doc_content;
+ guint32 list_attr_op;
+ guint32 scope;
+ guint32 job_type;
+ gboolean supplier_flag;
+ gboolean language_flag;
+ gboolean method_flag;
+ gboolean delivery_address_flag;
+ guint32 profiles_type;
+ guint32 profiles_choice_type;
+ guint32 integer_type_flag;
+ guint32 local_servers_type;
+ gint length_remaining;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
if (!pinfo->fd->flags.visited)
{
-
/* This is the first time we've looked at this packet.
Keep track of the Program and connection whence the request
came, and the address and connection to which the request
PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->srcport, 0);
if (conversation == NULL)
- {
+ {
/* It's not part of any conversation - create a new one. */
conversation = conversation_new(&pinfo->src, &pinfo->dst,
PT_NCP, (guint32) pinfo->srcport, (guint32) pinfo->srcport, 0);
proto_tree_add_item(ndps_tree, hf_ndps_retrieve_restrictions, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_bind_security_option_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Security %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Security %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
+ if (length!=0)
+ {
+ proto_tree_add_uint(atree, hf_bind_security, tvb, foffset, 4, length);
+ }
foffset += 4;
- proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ proto_item_set_end(aitem, tvb, foffset);
}
foffset = qualifiedname(tvb, ndps_tree, foffset);
break;
case 0x00000004: /* Print */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_print_arg, tvb, foffset, 4, FALSE);
print_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_print_arg, tvb, foffset, 4, print_type);
foffset += 4;
switch (print_type)
{
case 0: /* Create Job */
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_sub_complete, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Transfer Method");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Transfer Method");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Value %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Value %u", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = attribute_value(tvb, ctree, foffset);
+ proto_item_set_end(citem, tvb, foffset);
}
proto_tree_add_item(btree, hf_ndps_qualifier, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(bitem, tvb, foffset);
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Content");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Content");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Type %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Type %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
foffset += align_4(tvb, foffset);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
- proto_tree_add_item(atree, hf_doc_content, tvb, foffset, 4, FALSE);
+ doc_content = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_doc_content, tvb, foffset, 4, doc_content);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Value %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Value %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
- if (tvb_get_ntohl(tvb, foffset-4)==0)
+ if (doc_content==0)
{
- if (tvb_get_ntohl(tvb, foffset) > tvb_length_remaining(tvb, foffset)) /* Segmented Data */
+ length = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_included_doc_len, tvb, foffset, 4, length);
+ foffset += 4;
+ length_remaining = tvb_length_remaining(tvb, foffset);
+ if (length_remaining == -1 || length > (guint32) length_remaining) /* Segmented Data */
{
- proto_tree_add_item(btree, hf_ndps_data, tvb, foffset, tvb_length_remaining(tvb, foffset), FALSE);
+ proto_tree_add_item(btree, hf_ndps_data, tvb, foffset, -1, FALSE);
return;
}
- proto_tree_add_item(btree, hf_ndps_included_doc, tvb, foffset+4, tvb_get_ntohl(tvb, foffset), FALSE);
- foffset += tvb_get_ntohl(tvb, foffset)+4;
+ if (length!=0)
+ {
+ proto_tree_add_item(btree, hf_ndps_included_doc, tvb, foffset, length, FALSE);
+ }
+ foffset += length;
foffset += (length%2);
}
else
{
- foffset = ndps_string(tvb, hf_ndps_ref_name, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_ref_name, btree, foffset, NULL, 0);
foffset = name_or_id(tvb, btree, foffset);
}
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset += 4;
if (align_4(tvb, foffset)>0) {
foffset += align_4(tvb, foffset);
- foffset += 2;
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Type");
- number_of_items = tvb_get_ntohl(tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Type");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Value %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Value %u", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = attribute_value(tvb, ctree, foffset);
+ proto_item_set_end(citem, tvb, foffset);
}
proto_tree_add_item(btree, hf_ndps_qualifier, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(bitem, tvb, foffset);
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Attributes");
- number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Attributes");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Document Attributes */
+ proto_item_set_end(bitem, tvb, foffset);
}
break;
case 1: /* Add Job */
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_sub_complete, tvb, foffset, 4, FALSE);
foffset += 4;
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Transfer Method");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Transfer Method");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_transfer_methods, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Method %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset); /* Transfer Method */
+ proto_item_set_end(bitem, tvb, foffset);
}
proto_tree_add_item(ndps_tree, hf_doc_content, tvb, foffset, 4, FALSE);
foffset += 4;
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Type");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Type");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_doc_types, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Type %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Type %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset); /* Document Type */
+ proto_item_set_end(bitem, tvb, foffset);
}
foffset += align_4(tvb, foffset);
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Attributes");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Attributes");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Document Attributes */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 2: /* Close Job */
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 0x00000005: /* Modify Job */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_document_number, tvb, foffset, 4, FALSE);
foffset += 4;
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job Modifications");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job Modifications");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Modification %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Modification %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Job Modifications */
+ proto_item_set_end(bitem, tvb, foffset);
}
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Document Modifications");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Document Modifications");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Modification %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Modification %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Document Modifications */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000006: /* Cancel Job */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_document_number, tvb, foffset, 4, FALSE);
foffset += 4;
+ /* XXX - what does this count? */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Cancel Message");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Cancel Message");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Retention Period");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Retention Period");
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_status_flags, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, 4, FALSE);
foffset += 4;
-
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000007: /* List Object Attributes */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attrs_arg, tvb, foffset, 4, FALSE);
+ list_attr_op = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_attrs_arg, tvb, foffset, 4, list_attr_op);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Continuation */
+ if (list_attr_op==0) /* Continuation */
{
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Attribute %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Attribute %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = attribute_value(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
}
else /* Specification */
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Class");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
foffset += 4;
foffset += align_4(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_scope, tvb, foffset, 4, FALSE);
+ scope = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_scope, tvb, foffset, 4, scope);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0) /* Scope Does not equal 0 */
+ if (scope!=0) /* Scope Does not equal 0 */
{
- number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of NWDPSelector */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Selector Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Selector Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of NWDPSelector */
+ proto_tree_add_uint(atree, hf_ndps_num_options, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Option %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Option %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset += align_4(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_filter, tvb, foffset, 4, FALSE);
filter_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_filter, tvb, foffset, 4, filter_type);
foffset += 4;
/*if (filter_type == 0 || filter_type == 3 )
{
}
else
{
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, FALSE);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Filter Items");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
foffset = filteritem(tvb, ndps_tree, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
}*/
proto_tree_add_item(ndps_tree, hf_ndps_time_limit, tvb, foffset, 4, FALSE);
foffset += 4;
foffset += 4; /* End of NWDPSelector */
}
foffset += 4; /* Don't know what this is */
- number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of NWDPObjectIdentifierSet */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Requested Attributes");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Requested Attributes");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of NWDPObjectIdentifierSet */
+ proto_tree_add_uint(atree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- } /* End of NWDPObjectIdentifierSet */
+ proto_item_set_end(bitem, tvb, foffset);
+ }
+ proto_item_set_end(aitem, tvb, foffset); /* End of NWDPObjectIdentifierSet */
if (number_of_items == 0)
{
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x00000009: /* Interrupt */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_interrupt_job_type, tvb, foffset, 4, FALSE);
+ job_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_interrupt_job_type, tvb, foffset, 4, job_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0)
+ if (job_type==0)
{
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
}
else
{
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
}
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Interrupt Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Interrupt Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Interrupting Job");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Interrupting Job");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x0000000a: /* Pause */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_pause_job_type, tvb, foffset, 4, FALSE);
+ job_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_pause_job_type, tvb, foffset, 4, job_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0)
+ if (job_type==0)
{
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
}
else
{
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
}
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Pause Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Pause Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resume Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resume Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of nameorid */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Clean Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Clean Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of nameorid */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x0000000d: /* Create */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Class");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
proto_tree_add_item(ndps_tree, hf_ndps_force, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Reference Object Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Reference Object Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Attribute");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Attribute");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x0000000e: /* Delete */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Class");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x0000000f: /* Disable PA */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Disable PA Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Disable PA Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Enable PA Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Enable PA Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
foffset = address_item(tvb, ndps_tree, foffset);
proto_tree_add_item(ndps_tree, hf_resubmit_op_type, tvb, foffset, 4, FALSE);
foffset += 4;
- number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of ResubmitJob Set */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resubmit Job");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resubmit Job");
atree = proto_item_add_subtree(aitem, ett_ndps);
- proto_tree_add_item(atree, hf_ndps_item_count, tvb, foffset, 4, FALSE);
+ number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of ResubmitJob Set */
+ proto_tree_add_uint(atree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
/* Start of NWDPPrtContainedObjectId */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Job ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Job ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, btree, foffset, NULL, 0);
proto_tree_add_item(btree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(bitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
proto_tree_add_item(atree, hf_ndps_document_number, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Job Attributes");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Job Attributes");
btree = proto_item_add_subtree(bitem, ett_ndps);
+ number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items2);
foffset += 4;
- for (j = 1 ; j <= number_of_items; j++ )
+ for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Attribute %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Attribute %u", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = attribute_value(tvb, ctree, foffset); /* Object Attribute Set */
+ proto_item_set_end(citem, tvb, foffset);
}
+ proto_item_set_end(bitem, tvb, foffset);
/* End of AttributeSet */
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Document Attributes");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Document Attributes");
btree = proto_item_add_subtree(bitem, ett_ndps);
+ number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items2);
foffset += 4;
- for (j = 1 ; j <= number_of_items; j++ )
+ for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Attribute %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Attribute %u", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = attribute_value(tvb, ctree, foffset); /* Object Attribute Set */
+ proto_item_set_end(citem, tvb, foffset);
}
+ proto_item_set_end(bitem, tvb, foffset);
/* End of AttributeSet */
- } /* End of ResubmitJob Set */
+ }
+ proto_item_set_end(aitem, tvb, foffset); /* End of ResubmitJob Set */
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resubmit Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resubmit Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x00000012: /* Set */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Class");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Attribute Modifications");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Attribute Modifications");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Modification %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Modification %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_shutdown_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Shutdown Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Shutdown Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
case 0x00000014: /* Startup PA */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Startup Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Startup Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job Identification");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job Identification");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Reference Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Reference Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Pause Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Pause Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resume Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resume Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of Object Identifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Operation ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Operation ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of Object Identifier */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
proto_tree_add_item(ndps_tree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = qualifiedname(tvb, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Address");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Address %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = event_object_set(tvb, ndps_tree, foffset);
foffset = qualifiedname(tvb, ndps_tree, foffset);
break;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_profile_id, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_supplier_flag, tvb, foffset, 4, FALSE);
+ supplier_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_supplier_flag, tvb, foffset, 4, supplier_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (supplier_flag)
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Supplier ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
+ proto_item_set_end(aitem, tvb, foffset);
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_language_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ language_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_language_flag, tvb, foffset, 4, language_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (language_flag)
{
- proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_method_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ method_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_method_flag, tvb, foffset, 4, method_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (method_flag)
{
/* Start of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method ID");
- btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset = name_or_id(tvb, btree, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
+ foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_delivery_address_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ delivery_address_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_delivery_address_flag, tvb, foffset, 4, delivery_address_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (delivery_address_flag)
{
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Address");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = print_address(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
foffset = event_object_set(tvb, ndps_tree, foffset);
break;
case 0x0000001d: /* List Event Profiles */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, FALSE);
+ profiles_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, profiles_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Spec */
+ if (profiles_type==0) /* Spec */
{
foffset = qualifiedname(tvb, ndps_tree, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, FALSE);
+ profiles_choice_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, profiles_choice_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Choice */
+ if (profiles_choice_type==0) /* Choice */
{
foffset = cardinal_seq(tvb, ndps_tree, foffset);
}
else
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
/* End of NameorID */
proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_result_type, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of integeroption */
- proto_tree_add_item(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, FALSE);
+ integer_type_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, integer_type_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0)
+ if (integer_type_flag!=0)
{
proto_tree_add_item(ndps_tree, hf_ndps_integer_type_value, tvb, foffset, 4, FALSE);
foffset += 4;
else /* Cont */
{
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Cancel Shutdown Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Cancel Shutdown Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_ds_info_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_printer_name, ndps_tree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "DS Object Name");
+ foffset = ndps_string(tvb, hf_printer_name, ndps_tree, foffset, NULL, 0);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "DS Object Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000021: /* Clean User Jobs */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Clean Message Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Clean Message Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = commonarguments(tvb, ndps_tree, foffset);
break;
case 0x00000022: /* Map GUID to NDS Name */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_guid, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_guid, tvb, foffset, length, FALSE);
+ }
foffset += length;
break;
case 0x00000023: /* AddEventProfile2 */
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
+ foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Address");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Address %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = event_object_set(tvb, ndps_tree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Account");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Account");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of object identifier set */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Notify Attributes");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Notify Attributes");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of object identifier set */
proto_tree_add_item(ndps_tree, hf_notify_time_interval, tvb, foffset, 4, FALSE);
foffset += 4;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_notify_lease_exp_time, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_notify_printer_uri, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_notify_printer_uri, ndps_tree, foffset, NULL, 0);
/* End of Eventhandling2 */
break;
case 0x00000024: /* ListEventProfiles2 */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, FALSE);
+ profiles_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, profiles_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Spec */
+ if (profiles_type==0) /* Spec */
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Supplier Alias");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier Alias");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, FALSE);
+ proto_item_set_end(aitem, tvb, foffset);
+ profiles_choice_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, profiles_choice_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Choice */
+ if (profiles_choice_type==0) /* Choice */
{
foffset = cardinal_seq(tvb, ndps_tree, foffset);
}
else
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
}
proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_result_type, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of integeroption */
- proto_tree_add_item(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, FALSE);
+ integer_type_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, integer_type_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0)
+ if (integer_type_flag!=0)
{
proto_tree_add_item(ndps_tree, hf_ndps_integer_type_value, tvb, foffset, 4, FALSE);
foffset += 4;
else /* Cont */
{
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_retrieve_restrictions, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_bind_security_option_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Security %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Security %u", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Unbind */
case 0x00000004: /* Enable Service */
proto_tree_add_item(ndps_tree, hf_ndps_service_type, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Parameters");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Parameters");
atree = proto_item_add_subtree(aitem, ett_ndps);
- proto_tree_add_item(atree, hf_ndps_item_count, tvb, foffset, 4, FALSE);
+ number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_item_bytes, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_item_bytes, tvb, foffset, length, FALSE);
+ }
foffset += length;
- }
+ }
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000005: /* Disable Service */
proto_tree_add_item(ndps_tree, hf_ndps_list_services_type, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_retrieve_restrictions, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_bind_security_option_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Security %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Security %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Unbind */
/* NoOp */
break;
case 0x00000005: /* Register Registry */
- foffset = ndps_string(tvb, hf_ndps_registry_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_registry_name, ndps_tree, foffset, NULL, 0);
foffset = print_address(tvb, ndps_tree, foffset);
break;
case 0x00000007: /* Registry Update */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Add");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Add");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Entry %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Entry %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = server_entry(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Remove");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Remove");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Entry %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Entry %u", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = server_entry(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000008: /* List Local Servers */
case 0x00000009: /* List Servers */
case 0x0000000a: /* List Known Registries */
- proto_tree_add_item(ndps_tree, hf_ndps_list_local_servers_type, tvb, foffset, 4, FALSE);
+ local_servers_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_local_servers_type, tvb, foffset, 4, local_servers_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0)
+ if (local_servers_type==0)
{
/* Start of integeroption */
- proto_tree_add_item(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, FALSE);
+ integer_type_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, integer_type_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0)
+ if (integer_type_flag!=0)
{
proto_tree_add_item(ndps_tree, hf_ndps_integer_type_value, tvb, foffset, 4, FALSE);
foffset += 4;
else
{
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Security %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Security %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Notify Unbind */
/* NoOp */
break;
case 0x00000003: /* Register Supplier */
- foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset, NULL, 0);
/* Start of QualifiedName Set*/
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Supplier Alias");
- btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset = qualifiedname(tvb, btree, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier Alias %u", i);
+ atree = proto_item_add_subtree(aitem, ett_ndps);
+ foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
/* End of QualifiedName Set*/
break;
case 0x00000005: /* Add Profile */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Supplier Alias");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier Alias");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of Eventhandling */
proto_tree_add_item(ndps_tree, hf_ndps_profile_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
- atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Addresses");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Address %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset += address_item(tvb, btree, foffset);
+ foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = event_object_set(tvb, ndps_tree, foffset);
/* End of Eventhandling */
break;
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_profile_id, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_supplier_flag, tvb, foffset, 4, FALSE);
+ supplier_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_supplier_flag, tvb, foffset, 4, supplier_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (supplier_flag)
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Supplier ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
+ proto_item_set_end(aitem, tvb, foffset);
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_language_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ language_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_language_flag, tvb, foffset, 4, language_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (language_flag)
{
- proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_method_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ method_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_method_flag, tvb, foffset, 4, method_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (method_flag)
{
/* Start of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method ID");
- btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset = name_or_id(tvb, btree, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
+ foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
}
- aitem = proto_tree_add_item(ndps_tree, hf_ndps_delivery_address_flag, tvb, foffset, 4, FALSE);
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ delivery_address_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_boolean(ndps_tree, hf_ndps_delivery_address_flag, tvb, foffset, 4, delivery_address_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==TRUE)
+ if (delivery_address_flag)
{
- foffset = print_address(tvb, atree, foffset);
+ foffset = print_address(tvb, ndps_tree, foffset);
}
foffset = event_object_set(tvb, ndps_tree, foffset);
break;
case 0x00000008: /* List Profiles */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, FALSE);
+ profiles_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_list_profiles_type, tvb, foffset, 4, profiles_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Spec */
+ if (profiles_type==0) /* Spec */
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Supplier Alias");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Supplier Alias");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
- proto_tree_add_item(atree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, FALSE);
+ profiles_choice_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_list_profiles_choice_type, tvb, foffset, 4, profiles_choice_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Choice */
+ proto_item_set_end(aitem, tvb, foffset);
+ if (profiles_choice_type==0) /* Choice */
{
foffset = cardinal_seq(tvb, ndps_tree, foffset);
}
else
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
/* End of NameorID */
proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
proto_tree_add_item(ndps_tree, hf_ndps_list_profiles_result_type, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of integeroption */
- proto_tree_add_item(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, FALSE);
+ integer_type_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, integer_type_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0)
+ if (integer_type_flag!=0)
{
proto_tree_add_item(ndps_tree, hf_ndps_integer_type_value, tvb, foffset, 4, FALSE);
foffset += 4;
else /* Cont */
{
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of ReportEventItemSet */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event Items");
- atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event Items");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Item %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Item %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
/* Start of ReportEventItem */
proto_tree_add_item(btree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Containing Class");
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Containing Class");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Containing Object");
+ proto_item_set_end(citem, tvb, foffset);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Containing Object");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentification(tvb, ctree, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Filter Class");
+ proto_item_set_end(citem, tvb, foffset);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Filter Class");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Object Class");
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Object Class");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(citem, tvb, foffset);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Object ID");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentification(tvb, ctree, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Event Object ID");
+ proto_item_set_end(citem, tvb, foffset);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Event Object ID");
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
+ proto_item_set_end(citem, tvb, foffset);
/* Start of AttributeSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Attribute Modifications");
- ctree = proto_item_add_subtree(citem, ett_ndps);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Attribute Modifications");
+ ctree = proto_item_add_subtree(citem, ett_ndps);
for (j = 1 ; j <= number_of_items; j++ )
{
- ditem = proto_tree_add_text(ctree, tvb, foffset, 0, "Modification %d", j);
+ ditem = proto_tree_add_text(ctree, tvb, foffset, -1, "Modification %d", j);
dtree = proto_item_add_subtree(ditem, ett_ndps);
foffset = attribute_value(tvb, dtree, foffset); /* Object Attribute Set */
+ proto_item_set_end(ditem, tvb, foffset);
}
+ proto_item_set_end(citem, tvb, foffset);
/* End of AttributeSet */
- foffset = ndps_string(tvb, hf_ndps_message, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_message, btree, foffset, NULL, 0);
proto_tree_add_item(btree, hf_time, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(bitem, tvb, foffset);
/* End of ReportEventItem */
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of ReportEventItemSet */
break;
case 0x0000000b: /* Report Notification */
/* Start of DestinationSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_destinations, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Destination %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Destination %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
/* Start of Destination */
/* Start of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Method ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = name_or_id(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* End of NameorID */
/* Start of NotifyDeliveryAddr */
proto_tree_add_item(atree, hf_address_len, tvb, foffset, 4, FALSE);
foffset += 4;
foffset = print_address(tvb, atree, foffset);
/* End of NotifyDeliveryAddr */
+ proto_item_set_end(aitem, tvb, foffset);
/* End of Destination */
}
/* End of DestinationSet */
- foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_supplier_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Containing Class");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Containing Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Containing Object");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Containing Object");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Filter Class");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Filter Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Class");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Class");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentification(tvb, atree, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event Object ID");
+ proto_item_set_end(aitem, tvb, foffset);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event Object ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of AttributeSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Attributes");
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Attributes");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
- foffset = ndps_string(tvb, hf_ndps_message, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_message, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_time, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Account");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Account");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x0000000c: /* Add Delivery Method */
- foffset = ndps_string(tvb, hf_ndps_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_file_name, ndps_tree, foffset, NULL, 0);
break;
case 0x0000000d: /* Remove Delivery Method */
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
break;
case 0x0000000e: /* List Delivery Methods */
{
case 0: /* Specification */
/* Start of integeroption */
- proto_tree_add_item(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, FALSE);
+ integer_type_flag = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_integer_type_flag, tvb, foffset, 4, integer_type_flag);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)!=0)
+ if (integer_type_flag!=0)
{
proto_tree_add_item(ndps_tree, hf_ndps_integer_type_value, tvb, foffset, 4, FALSE);
foffset += 4;
break;
case 1: /* Continuation */
length = tvb_get_ntohl(tvb, foffset);
- proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_context_len, tvb, foffset, 4, length);
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_context, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset += (length%2);
proto_tree_add_item(ndps_tree, hf_ndps_abort_flag, tvb, foffset, 4, FALSE);
break;
case 0x0000000f: /* Get Delivery Method Information */
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_retrieve_restrictions, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_bind_security_option_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Security %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Security %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_bind_security, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Unbind */
foffset += 4;
foffset = res_add_input_data(tvb, ndps_tree, foffset);
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length=tvb_get_ntohl(tvb, foffset);
- if(tvb_length_remaining(tvb, foffset) < length)
+ length_remaining = tvb_length_remaining(tvb, foffset);
+ if(length_remaining == -1 || (guint32) length_remaining < length)
{
return;
}
proto_tree_add_item(atree, hf_ndps_item_ptr, tvb, foffset, length, FALSE);
foffset += length;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000004: /* Delete Resource File */
break;
case 1: /* Printer Definitions */
case 2: /* Printer Definitions Short */
- foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset, NULL, 0);
break;
case 3: /* Banner Page Files */
proto_tree_add_item(ndps_tree, hf_banner_type, tvb, foffset, 4, FALSE);
case 9: /* Generic Files */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset, NULL, 0);
field_len = tvb_get_ntohl(tvb, foffset);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_printer_id, tvb, foffset, field_len, FALSE);
break;
case 6: /* Printer Definition File */
case 10: /* Printer Definition File 2 */
- foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset, NULL, 0);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset, NULL, 0);
field_len = tvb_get_ntohl(tvb, foffset);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_printer_id, tvb, foffset, field_len, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_font_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_font_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_font_name, ndps_tree, foffset, NULL, 0);
break;
case 8: /* Generic Type */
case 11: /* Printer Driver Types 2 */
case 13: /* Printer Driver Types Archive */
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, ndps_tree, foffset, NULL, 0);
break;
case 14: /* Languages Available */
break;
case 0: /* Print Drivers */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 1: /* Printer Definitions */
- foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_vendor_dir, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 2: /* Banner Page Files */
- foffset = ndps_string(tvb, hf_ndps_banner_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_banner_name, ndps_tree, foffset, NULL, 0);
break;
case 3: /* Font Types */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_font_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, ndps_tree, foffset, NULL, 0);
break;
case 4: /* Generic Files/ Archive */
case 5: /* Printer Driver Archive */
proto_tree_add_item(ndps_tree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_archive_type, tvb, foffset, 4, FALSE);
foffset += 4;
break;
break;
case 0x00000003: /* Delivery Send */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Supplier ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Supplier ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(btree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(btree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(btree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Containing Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Containing Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Containing Object");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Containing Object");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Filter Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Filter Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Event Object ID");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Event Object ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
foffset = attribute_value(tvb, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_message, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_message, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_time, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Account");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Account");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = qualifiedname(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000004: /* Delivery Send2 */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Supplier ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Supplier ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(btree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(btree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(atree, hf_ndps_event_type, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Containing Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Containing Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Containing Object");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Containing Object");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Filter Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Filter Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object Class");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object Class");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object ID");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Event Object ID");
+ proto_item_set_end(bitem, tvb, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Event Object ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* Start of AttributeSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute");
- btree = proto_item_add_subtree(bitem, ett_ndps);
- proto_tree_add_item(btree, hf_ndps_attributes, tvb, foffset, 4, FALSE);
+ proto_tree_add_uint(atree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute");
+ btree = proto_item_add_subtree(bitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
foffset = attribute_value(tvb, btree, foffset);
}
+ proto_item_set_end(bitem, tvb, foffset);
/* End of AttributeSet */
- foffset = ndps_string(tvb, hf_ndps_message, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_message, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_time, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Account");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Account");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = qualifiedname(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
default:
static int
ndps_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ndps_tree, int foffset)
{
- guint32 number_of_items=0;
- guint32 problem_type=0;
+ guint32 number_of_items;
+ guint32 ndps_problem_type;
+ guint32 problem_type;
guint32 i;
proto_tree *atree;
proto_item *aitem;
proto_tree *btree;
proto_item *bitem;
- problem_type = tvb_get_ntohl(tvb, foffset);
+ ndps_problem_type = tvb_get_ntohl(tvb, foffset);
if (check_col(pinfo->cinfo, COL_INFO))
col_add_fstr(pinfo->cinfo, COL_INFO, "R NDPS - Error");
- proto_tree_add_item(ndps_tree, hf_ndps_problem_type, tvb, foffset, 4, FALSE);
+ proto_tree_add_uint(ndps_tree, hf_ndps_problem_type, tvb, foffset, 4, ndps_problem_type);
foffset += 4;
- switch(problem_type)
+ switch(ndps_problem_type)
{
case 0: /* Security Error */
- proto_tree_add_item(ndps_tree, hf_problem_type, tvb, foffset, 4, FALSE);
+ problem_type = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_problem_type, tvb, foffset, 4, problem_type);
foffset += 4;
- if (tvb_get_ntohl(tvb, foffset-4)==0) /* Standard Error */
+ if (problem_type==0) /* Standard Error */
{
proto_tree_add_item(ndps_tree, hf_security_problem_type, tvb, foffset, 4, FALSE);
foffset += 4;
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Message");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Message");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
break;
case 1: /* Service Error */
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
break;
case 6: /* Attribute Error */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_problem_type, tvb, foffset, 4, FALSE);
foffset += 4;
else /* Extended Error */
{
/* Start of objectidentifier */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Extended Error");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Extended Error");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentifier(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = attribute_value(tvb, atree, foffset); /* Object Attribute Set */
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 7: /* Update Error */
else /* Extended Error */
{
/* Start of objectidentifier */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Extended Error");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Extended Error");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = objectidentifier(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of objectidentifier */
}
foffset = objectidentification(tvb, ndps_tree, foffset);
guint32 ndps_prog=0;
guint32 error_val=0;
guint32 resource_type=0;
+ gint length_remaining;
if (!pinfo->fd->flags.visited) {
/* Find the conversation whence the request would have come. */
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "PSM Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "PSM Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
break;
case 0x00000002: /* Bind PA */
proto_tree_add_item(ndps_tree, hf_ndps_oid, tvb, foffset, 4, FALSE);
proto_tree_add_item(ndps_tree, hf_ndps_session, tvb, foffset, 4, FALSE);
foffset += 4;
}
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
break;
case 0x00000003: /* Unbind */
break;
case 0x00000004: /* Print */
- foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ndps_tree, foffset, NULL, 0);
proto_tree_add_item(ndps_tree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
if(error_val != 0)
case 0x0000000d: /* Create */
/* Start of AttributeSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Attribute Set");
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Attribute Set");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
if(error_val != 0)
{
proto_tree_add_item(ndps_tree, hf_answer_time, tvb, foffset, 4, FALSE);
foffset += 4;
/* Continuation Option */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Continuation Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Continuation Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_options, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Option %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Option %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
length=tvb_get_ntohl(tvb, foffset);
- if(tvb_length_remaining(tvb, foffset) < length)
+ length_remaining = tvb_length_remaining(tvb, foffset);
+ if(length_remaining == -1 || (guint32) length_remaining < length)
{
return;
}
proto_tree_add_item(btree, hf_ndps_item_ptr, tvb, foffset, length, FALSE);
foffset += length;
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* Limit Encountered Option */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Limit Encountered Option");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Limit Encountered Option");
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_len, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(atree, hf_limit_enc, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* Object Results Set */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Results Set");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Results Set");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_results, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Result %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Result %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = objectidentification(tvb, btree, foffset);
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_objects, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (j = 1 ; j <= number_of_items2; j++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Attribute %d", j);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Attribute %d", j);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
foffset += align_4(tvb, foffset);
number_of_items3 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ctree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items3);
foffset += 4;
for (k = 1 ; k <= number_of_items3; k++ )
{
- ditem = proto_tree_add_text(ctree, tvb, foffset, 0, "Value %d", k);
+ ditem = proto_tree_add_text(ctree, tvb, foffset, -1, "Value %d", k);
dtree = proto_item_add_subtree(ditem, ett_ndps);
foffset = attribute_value(tvb, dtree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(ditem, tvb, foffset);
}
proto_tree_add_item(ctree, hf_ndps_qualifier, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(citem, tvb, foffset);
}
foffset = objectidentifier(tvb, btree, foffset);
foffset += 2;
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
if(error_val != 0)
{
foffset = ndps_error(tvb, pinfo, ndps_tree, foffset);
case 0x00000009: /* Interrupt */
case 0x0000000a: /* Pause */
/* Start of NWDPPrtContainedObjectId */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of AttributeSet */
number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Object Attribute Set");
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Object Attribute Set");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Attribute %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Attribute %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
if(error_val != 0)
{
break;
case 0x00000011: /* Resubmit Jobs */
number_of_items = tvb_get_ntohl(tvb, foffset); /* Start of ResubmitJob Set */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Resubmit Job");
- atree = proto_item_add_subtree(aitem, ett_ndps);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_jobs, tvb, foffset, 4, number_of_items);
foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Resubmit Job");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Job %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Job %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
/* Start of NWDPPrtContainedObjectId */
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Old Job");
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Old Job");
ctree = proto_item_add_subtree(citem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, ctree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ctree, foffset, NULL, 0);
proto_tree_add_item(ctree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(citem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of NWDPPrtContainedObjectId */
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "New Job");
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "New Job");
ctree = proto_item_add_subtree(citem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_pa_name, ctree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_pa_name, ctree, foffset, NULL, 0);
proto_tree_add_item(ctree, hf_local_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(citem, tvb, foffset);
/* End of NWDPPrtContainedObjectId */
/* Start of AttributeSet */
number_of_items2 = tvb_get_ntohl(tvb, foffset);
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Job Status");
- ctree = proto_item_add_subtree(citem, ett_ndps);
+ proto_tree_add_uint(ctree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items2);
foffset += 4;
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Job Status");
+ ctree = proto_item_add_subtree(citem, ett_ndps);
for (j = 1 ; j <= number_of_items2; j++ )
{
- ditem = proto_tree_add_text(ctree, tvb, foffset, 0, "Object %d", j);
+ ditem = proto_tree_add_text(ctree, tvb, foffset, -1, "Object %d", j);
dtree = proto_item_add_subtree(ditem, ett_ndps);
foffset = attribute_value(tvb, dtree, foffset); /* Object Attribute Set */
+ proto_item_set_end(ditem, tvb, foffset);
}
+ proto_item_set_end(citem, tvb, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* End of AttributeSet */
- } /* End of ResubmitJob Set */
+ }
+ proto_item_set_end(aitem, tvb, foffset);
+ /* End of ResubmitJob Set */
if(error_val != 0)
{
foffset = ndps_error(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000015: /* Reorder Job */
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Job Status");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Job Status");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, btree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
if(error_val != 0)
{
case 0x00000016: /* Pause PA */
case 0x00000017: /* Resume PA */
/* Start of AttributeSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Printer Status");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Printer Status");
atree = proto_item_add_subtree(aitem, ett_ndps);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Object %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Object %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = attribute_value(tvb, atree, foffset); /* Object Attribute Set */
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
/* End of AttributeSet */
if(error_val != 0)
{
case 0x0000001d: /* List Event Profiles */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
/* Start of Eventhandling */
proto_tree_add_item(ndps_tree, hf_ndps_profile_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Addresses");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Address %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset += address_item(tvb, btree, foffset);
+ foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = event_object_set(tvb, ndps_tree, foffset);
/* End of Eventhandling */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ }
foffset += length;
if(error_val != 0)
{
}
break;
case 0x00000022: /* Map GUID to NDS Name */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "NDS Printer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "NDS Printer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
if(error_val != 0)
{
foffset = ndps_error(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000024: /* ListEventProfiles2 */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_events, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Event %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Event %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
/* Start of Eventhandling2 */
proto_tree_add_item(atree, hf_ndps_profile_id, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(atree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Consumer Name");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Consumer Name");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = qualifiedname(tvb, btree, foffset);
- foffset = ndps_string(tvb, hf_ndps_supplier_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_supplier_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(bitem, tvb, foffset);
/* Start of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Method ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = name_or_id(tvb, btree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* End of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Delivery Address");
- btree = proto_item_add_subtree(bitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
foffset += 4;
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Delivery Addresses");
+ btree = proto_item_add_subtree(bitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Address %d", i);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Address %d", i);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = address_item(tvb, ctree, foffset);
+ proto_item_set_end(citem, tvb, foffset);
}
- foffset = event_object_set(tvb, ndps_tree, foffset);
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Account");
+ proto_item_set_end(bitem, tvb, foffset);
+ foffset = event_object_set(tvb, atree, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Account");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = qualifiedname(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* Start of object identifier set */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Notify Attributes");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Notify Attributes");
btree = proto_item_add_subtree(bitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(btree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- citem = proto_tree_add_text(btree, tvb, foffset, 0, "Attribute %d", i);
+ citem = proto_tree_add_text(btree, tvb, foffset, -1, "Attribute %d", i);
ctree = proto_item_add_subtree(citem, ett_ndps);
foffset = objectidentifier(tvb, ctree, foffset);
+ proto_item_set_end(citem, tvb, foffset);
}
+ proto_item_set_end(bitem, tvb, foffset);
/* End of object identifier set */
proto_tree_add_item(atree, hf_notify_time_interval, tvb, foffset, 4, FALSE);
foffset += 4;
foffset += 4;
proto_tree_add_item(atree, hf_notify_lease_exp_time, tvb, foffset, 4, FALSE);
foffset += 4;
- foffset = ndps_string(tvb, hf_notify_printer_uri, atree, foffset);
+ foffset = ndps_string(tvb, hf_notify_printer_uri, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of Eventhandling2 */
- proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ length = tvb_get_ntohl(tvb, foffset); /* Added on 10-17-03 */
+ foffset += 4;
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ }
foffset += length;
if(error_val != 0)
{
break;
case 0x00000003: /* List Services */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_services, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Service %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Service %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- bitem = proto_tree_add_item(atree, hf_ndps_service_type, tvb, foffset, 4, FALSE);
- btree = proto_item_add_subtree(bitem, ett_ndps);
+ proto_tree_add_item(atree, hf_ndps_service_type, tvb, foffset, 4, FALSE);
foffset += 4;
- proto_tree_add_item(btree, hf_ndps_service_enabled, tvb, foffset, 4, FALSE);
+ proto_tree_add_item(atree, hf_ndps_service_enabled, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000007: /* Get Broker NDS Object Name */
- proto_tree_add_item(ndps_tree, hf_ndps_items, tvb, foffset,
- 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_item_count, tvb, foffset,
+ 4, FALSE); /* XXX - what does this count? */
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_broker_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_broker_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000008: /* Get Broker Session Information */
{
case 0x00000001: /* Bind */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Attribute %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Attribute %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Unbind */
case 0x00000008: /* List Local Servers */
case 0x00000009: /* List Servers */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = server_entry(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
aitem = proto_tree_add_item(ndps_tree, hf_ndps_client_server_type, tvb, foffset, 4, FALSE);
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_registry_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_registry_name, atree, foffset, NULL, 0);
foffset = print_address(tvb, atree, foffset);
}
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x0000000b: /* Get Registry NDS Object Name */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "NDS Printer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "NDS Printer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x0000000c: /* Get Registry Session Information */
{
case 0x00000001: /* Notify Bind */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_num_attributes, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Attribute %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Attribute %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(atree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(atree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ }
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 0x00000002: /* Notify Unbind */
foffset += 4;
proto_tree_add_item(ndps_tree, hf_ndps_persistence, tvb, foffset, 4, FALSE);
foffset += 4;
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Consumer Name");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Consumer Name");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = qualifiedname(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_value, tvb, foffset, length, FALSE);
+ }
foffset += length;
proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Addresses");
atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- foffset += address_item(tvb, atree, foffset);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %d", i);
+ btree = proto_item_add_subtree(bitem, ett_ndps);
+ foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = event_object_set(tvb, ndps_tree, foffset);
/* End of Eventhandling */
/* End of ProfileResultSet */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_continuation_option, tvb, foffset, length, FALSE);
+ }
foffset += length;
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
/* Start of IntegerSeq */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_language_id, tvb, foffset, length, FALSE);
+ }
foffset += length;
/* End of IntegerSeq */
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x0000000c: /* Add Delivery Method */
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
/* End of NameorID */
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x0000000e: /* List Delivery Methods */
/* Start of DeliveryMethodSet */
- number_of_items = tvb_get_ntohl(tvb, foffset);
+ number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_delivery_method_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method %d", i);
- atree = proto_item_add_subtree(aitem, ett_ndps);
/* Start of DeliveryMethod */
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method %d", i);
+ atree = proto_item_add_subtree(aitem, ett_ndps);
/* Start of NameorID */
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Method ID");
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Method ID");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset = name_or_id(tvb, btree, foffset);
foffset += align_4(tvb, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
/* End of NameorID */
- foffset = ndps_string(tvb, hf_ndps_method_name, btree, foffset);
- foffset = ndps_string(tvb, hf_ndps_method_ver, btree, foffset);
- foffset = ndps_string(tvb, hf_ndps_file_name, btree, foffset);
- proto_tree_add_item(btree, hf_ndps_admin_submit, tvb, foffset, 4, FALSE);
+ foffset = ndps_string(tvb, hf_ndps_method_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_method_ver, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_file_name, atree, foffset, NULL, 0);
+ proto_tree_add_item(atree, hf_ndps_admin_submit, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of DeliveryMethod */
}
/* End of DeliveryMethodSet */
case 0x0000000f: /* Get Delivery Method Information */
/* Start of DeliveryMethod */
/* Start of NameorID */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Method ID");
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Method ID");
atree = proto_item_add_subtree(aitem, ett_ndps);
foffset = name_or_id(tvb, atree, foffset);
/* End of NameorID */
- foffset = ndps_string(tvb, hf_ndps_method_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_method_ver, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_method_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_method_ver, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_file_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_ndps_admin_submit, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
/* End of DeliveryMethod */
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Delivery Address");
- atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_delivery_add_count, tvb, foffset, 4, number_of_items);
+ foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Delivery Addresses");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Address %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Address %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset += address_item(tvb, btree, foffset);
+ foffset = address_item(tvb, btree, foffset);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000010: /* Get Notify NDS Object Name */
- proto_tree_add_item(ndps_tree, hf_ndps_items, tvb, foffset,
- 4, FALSE);
+ proto_tree_add_item(ndps_tree, hf_ndps_item_count, tvb, foffset,
+ 4, FALSE); /* XXX - what does this count? */
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_broker_name, ndps_tree, foffset);
- foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_broker_name, ndps_tree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_tree, ndps_tree, foffset, NULL, 0);
foffset = return_code(tvb, pinfo, ndps_tree, foffset);
break;
case 0x00000011: /* Get Notify Session Information */
case 0x00000001: /* Bind */
length = tvb_get_ntohl(tvb, foffset);
foffset += 4;
- proto_tree_add_item(ndps_tree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ if (length!=0)
+ {
+ proto_tree_add_item(ndps_tree, hf_ndps_attribute_set, tvb, foffset, length, FALSE);
+ }
break;
case 0x00000002: /* Unbind */
/* NoOp */
case 1: /* Printer Definitions */
case 2: /* Printer Definitions Short */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_printer_def_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Definition %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Definition %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
if (tvb_get_ntohl(tvb, foffset)==0) { /* Offset for old type support */
foffset += 2;
}
foffset += 4; /* Item always == 1 */
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset, NULL, 0);
if (tvb_get_ntohl(tvb, foffset)==0) {
foffset += 2;
}
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset, NULL, 0);
if (tvb_get_ntohl(tvb, foffset)==0) {
foffset += 2;
}
foffset += 4;
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 3: /* Banner Page Files */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Banner %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Banner %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_banner_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_banner_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 4: /* Font Types */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_font_type_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Font %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Font %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_font_type_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_font_type_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 7: /* Font Files */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_font_file_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Font File %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Font File %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_font_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_font_file_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 5: /* Printer Driver Files */
case 12: /* Printer Driver Files 2 */
case 9: /* Generic Files */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_printer_def_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "File %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "File %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 6: /* Printer Definition File */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_printer_def_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Definition %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Definition %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_inf_file_name, atree, foffset, NULL, 0);
+ proto_item_set_end(aitem, tvb, foffset);
}
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Item %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Item %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_def_file_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_def_file_name, atree, foffset, NULL, 0);
number_of_items2 = tvb_get_ntohl(tvb, foffset);
- bitem = proto_tree_add_item(atree, hf_ndps_win31_items, tvb, foffset, 4, FALSE);
+ proto_tree_add_uint(atree, hf_ndps_num_win31_keys, tvb, foffset, 4, number_of_items2);
+ bitem = proto_tree_add_text(atree, tvb, foffset, 4, "Windows 3.1 Keys");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset += 4;
for (i = 1 ; i <= number_of_items2; i++ )
{
- foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset, NULL, 0);
}
+ proto_item_set_end(bitem, tvb, foffset);
number_of_items2 = tvb_get_ntohl(tvb, foffset);
- bitem = proto_tree_add_item(atree, hf_ndps_win95_items, tvb, foffset, 4, FALSE);
+ proto_tree_add_uint(atree, hf_ndps_num_win95_keys, tvb, foffset, 4, number_of_items2);
+ bitem = proto_tree_add_text(atree, tvb, foffset, 4, "Windows 95 Keys");
btree = proto_item_add_subtree(bitem, ett_ndps);
foffset += 4;
for (i = 1 ; i <= number_of_items2; i++ )
{
- foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset, NULL, 0);
}
+ proto_item_set_end(bitem, tvb, foffset);
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 10: /* Printer Definition File 2 */
- foffset = ndps_string(tvb, hf_ndps_def_file_name, ndps_tree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_def_file_name, ndps_tree, foffset, NULL, 0);
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_os_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "OS %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "OS %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_os_type, tvb, foffset, 4, FALSE);
foffset += 4;
number_of_items2 = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(atree, hf_ndps_num_windows_keys, tvb, foffset, 4, number_of_items2);
foffset += 4;
for (i = 1 ; i <= number_of_items2; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Key %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Key %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_windows_key, btree, foffset, NULL, 0);
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 8: /* Generic Type */
case 11: /* Printer Driver Types 2 */
case 13: /* Printer Driver Types Archive */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_printer_type_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Type %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Type %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
- foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset);
- foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset);
+ foffset = ndps_string(tvb, hf_ndps_printer_manuf, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_printer_type, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_file_name, atree, foffset, NULL, 0);
+ foffset = ndps_string(tvb, hf_ndps_prn_dir_name, atree, foffset, NULL, 0);
proto_tree_add_item(atree, hf_archive_type, tvb, foffset, 4, FALSE);
foffset += 4;
proto_tree_add_item(atree, hf_archive_file_size, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
case 14: /* Languages Available */
number_of_items = tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_language_count, tvb, foffset, 4, number_of_items);
foffset += 4;
for (i = 1 ; i <= number_of_items; i++ )
{
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Language %d", i);
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Language %d", i);
atree = proto_item_add_subtree(aitem, ett_ndps);
proto_tree_add_item(atree, hf_ndps_language_id, tvb, foffset, 4, FALSE);
foffset += 4;
+ proto_item_set_end(aitem, tvb, foffset);
}
break;
default:
{
break;
}
- aitem = proto_tree_add_text(ndps_tree, tvb, foffset, 0, "Failed Items");
- atree = proto_item_add_subtree(aitem, ett_ndps);
number_of_items=tvb_get_ntohl(tvb, foffset);
+ proto_tree_add_uint(ndps_tree, hf_ndps_item_count, tvb, foffset, 4, number_of_items);
foffset += 4;
+ aitem = proto_tree_add_text(ndps_tree, tvb, foffset, -1, "Failed Items");
+ atree = proto_item_add_subtree(aitem, ett_ndps);
for (i = 1 ; i <= number_of_items; i++ )
{
- bitem = proto_tree_add_text(atree, tvb, foffset, 0, "Item %d", i);
+ bitem = proto_tree_add_text(atree, tvb, foffset, -1, "Item %d", i);
btree = proto_item_add_subtree(bitem, ett_ndps);
length=tvb_get_ntohl(tvb, foffset);
- if(tvb_length_remaining(tvb, foffset) < length)
+ length_remaining = tvb_length_remaining(tvb, foffset);
+ if(length_remaining == -1 || (guint32) length_remaining < length)
{
return;
}
proto_tree_add_item(btree, hf_ndps_item_ptr, tvb, foffset, length, FALSE);
foffset += length;
+ proto_item_set_end(bitem, tvb, foffset);
}
+ proto_item_set_end(aitem, tvb, foffset);
break;
default:
break;
FT_UINT32, BASE_HEX, VALS(spx_ndps_broker_func_vals), 0x0,
"Broker Program", HFILL }},
- { &hf_ndps_items,
- { "Number of Items", "ndps.items",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Number of Items", HFILL }},
-
- { &hf_ndps_objects,
- { "Number of Objects", "ndps.objects",
+ { &hf_ndps_num_objects,
+ { "Number of Objects", "ndps.num_objects",
FT_UINT32, BASE_DEC, NULL, 0x0,
"Number of Objects", HFILL }},
- { &hf_ndps_attributes,
- { "Number of Attributes", "ndps.attributes",
+ { &hf_ndps_num_attributes,
+ { "Number of Attributes", "ndps.num_attributes",
FT_UINT32, BASE_DEC, NULL, 0x0,
"Number of Attributes", HFILL }},
FT_STRING, BASE_NONE, NULL, 0x0,
"Broker Name", HFILL }},
+ { &hf_ndps_num_results,
+ { "Number of Results", "ndps.num_results",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Results", HFILL }},
+
+ { &hf_ndps_num_options,
+ { "Number of Options", "ndps.num_options",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Options", HFILL }},
+
+ { &hf_ndps_num_jobs,
+ { "Number of Jobs", "ndps.num_jobs",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Jobs", HFILL }},
+
{ &hf_ndps_pa_name,
{ "Printer Name", "ndps.pa_name",
FT_STRING, BASE_NONE, NULL, 0x0,
{ &hf_oid_struct_size,
{ "OID Struct Size", "ndps.rpc_oid_struct_size",
- FT_UINT16, BASE_HEX, NULL, 0x0,
+ FT_UINT16, BASE_DEC, NULL, 0x0,
"OID Struct Size", HFILL }},
{ &hf_object_name,
FT_UINT32, BASE_HEX, VALS(qualified_name_enum2), 0x0,
"Qualified Name Type", HFILL }},
-
{ &hf_ndps_item_count,
{ "Number of Items", "ndps.ndps_item_count",
FT_UINT32, BASE_DEC, NULL, 0x0,
"Number of Items", HFILL }},
+ { &hf_ndps_num_passwords,
+ { "Number of Passwords", "ndps.num_passwords",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Passwords", HFILL }},
+
+ { &hf_ndps_num_servers,
+ { "Number of Servers", "ndps.num_servers",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Servers", HFILL }},
+
+ { &hf_ndps_num_locations,
+ { "Number of Locations", "ndps.num_locations",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Locations", HFILL }},
+
+ { &hf_ndps_num_areas,
+ { "Number of Areas", "ndps.num_areas",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Areas", HFILL }},
+
+ { &hf_ndps_num_address_items,
+ { "Number of Address Items", "ndps.num_address_items",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Address Items", HFILL }},
+
+ { &hf_ndps_num_job_categories,
+ { "Number of Job Categories", "ndps.num_job_categories",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Job Categories", HFILL }},
+
+ { &hf_ndps_num_page_selects,
+ { "Number of Page Select Items", "ndps.num_page_selects",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Page Select Items", HFILL }},
+
+ { &hf_ndps_num_page_informations,
+ { "Number of Page Information Items", "ndps.num_page_informations",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Page Information Items", HFILL }},
+
+ { &hf_ndps_num_names,
+ { "Number of Names", "ndps.num_names",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Names", HFILL }},
+
+ { &hf_ndps_num_categories,
+ { "Number of Categories", "ndps.num_categories",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Categories", HFILL }},
+
+ { &hf_ndps_num_colorants,
+ { "Number of Colorants", "ndps.num_colorants",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Colorants", HFILL }},
+
+ { &hf_ndps_num_events,
+ { "Number of Events", "ndps.num_events",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Events", HFILL }},
+
+ { &hf_ndps_num_args,
+ { "Number of Arguments", "ndps.num_argss",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Arguments", HFILL }},
+
+ { &hf_ndps_num_transfer_methods,
+ { "Number of Transfer Methods", "ndps.num_transfer_methods",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Transfer Methods", HFILL }},
+
+ { &hf_ndps_num_doc_types,
+ { "Number of Document Types", "ndps.num_doc_types",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Document Types", HFILL }},
+
+ { &hf_ndps_num_destinations,
+ { "Number of Destinations", "ndps.num_destinations",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Destinations", HFILL }},
+
{ &hf_ndps_qualifier,
{ "Qualifier", "ndps.ndps_qual",
FT_UINT32, BASE_HEX, NULL, 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_persistence_enum), 0x0,
"Persistence", HFILL }},
+ { &hf_ndps_language_count,
+ { "Number of Languages", "ndps.ndps_language_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Languages", HFILL }},
+
{ &hf_ndps_language_id,
{ "Language ID", "ndps.ndps_lang_id",
FT_UINT32, BASE_HEX, NULL, 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_server_type_enum), 0x0,
"NDPS Server Type", HFILL }},
+ { &hf_ndps_num_services,
+ { "Number of Services", "ndps.ndps_num_services",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Services", HFILL }},
+
{ &hf_ndps_service_type,
{ "NDPS Service Type", "ndps.ndps_service_type",
FT_UINT32, BASE_HEX, VALS(ndps_service_type_enum), 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_limit_enc_enum), 0x0,
"Limit Encountered", HFILL }},
+ { &hf_ndps_delivery_add_count,
+ { "Number of Delivery Addresses", "ndps.delivery_add_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Delivery Addresses", HFILL }},
+
{ &hf_ndps_delivery_add_type,
{ "Delivery Address Type", "ndps.ndps_delivery_add_type",
FT_UINT32, BASE_HEX, VALS(ndps_delivery_add_enum), 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_attribute_enum), 0x0,
"Criterion Type", HFILL }},
+ { &hf_ndps_num_ignored_attributes,
+ { "Number of Ignored Attributes", "ndps.num_ignored_attributes",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Ignored Attributes", HFILL }},
+
{ &hf_ndps_ignored_type,
{ "Ignored Type", "ndps.ndps_ignored_type",
FT_UINT32, BASE_HEX, VALS(ndps_attribute_enum), 0x0,
"Ignored Type", HFILL }},
+ { &hf_ndps_num_resources,
+ { "Number of Resources", "ndps.ndps_num_resources",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Resources", HFILL }},
+
{ &hf_ndps_resource_type,
{ "Resource Type", "ndps.ndps_resource_type",
FT_UINT32, BASE_HEX, VALS(ndps_resource_enum), 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_attrs_arg_enum), 0x0,
"List Attribute Operation", HFILL }},
+ { &hf_ndps_context_len,
+ { "Context Length", "ndps.context_len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Context Length", HFILL }},
+
{ &hf_ndps_context,
{ "Context", "ndps.context",
FT_BYTES, BASE_NONE, NULL, 0x0,
FT_UINT32, BASE_DEC, NULL, 0x0,
"Retrieve Restrictions", HFILL }},
+ { &hf_ndps_bind_security_option_count,
+ { "Number of Bind Security Options", "ndps.ndps_bind_security_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Bind Security Options", HFILL }},
+
{ &hf_bind_security,
{ "Bind Security Options", "ndps.ndps_bind_security",
FT_UINT32, BASE_DEC, NULL, 0x0,
FT_UINT32, BASE_DEC, VALS(ndps_resource_type_enum), 0x0,
"Resource Type", HFILL }},
+ { &hf_os_count,
+ { "Number of OSes", "ndps.os_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of OSes", HFILL }},
+
{ &hf_os_type,
{ "OS Type", "ndps.os_type",
FT_UINT32, BASE_DEC, VALS(ndps_os_type_enum), 0x0,
"OS Type", HFILL }},
+ { &hf_ndps_printer_type_count,
+ { "Number of Printer Types", "ndps.printer_type_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Printer Types", HFILL }},
+
{ &hf_ndps_printer_type,
{ "Printer Type", "ndps.prn_type",
FT_STRING, BASE_NONE, NULL, 0x0,
FT_UINT32, BASE_HEX, VALS(ndps_error_types), 0x0,
"Return Code", HFILL }},
+ { &hf_ndps_banner_count,
+ { "Number of Banners", "ndps.banner_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Banners", HFILL }},
+
{ &hf_ndps_banner_name,
{ "Banner Name", "ndps.banner_name",
FT_STRING, BASE_NONE, NULL, 0x0,
"Banner Name", HFILL }},
+ { &hf_ndps_font_type_count,
+ { "Number of Font Types", "ndps.font_type_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Font Types", HFILL }},
+
{ &hf_font_type_name,
{ "Font Type Name", "ndps.font_type_name",
FT_STRING, BASE_NONE, NULL, 0x0,
"Font Type Name", HFILL }},
+ { &hf_ndps_font_file_count,
+ { "Number of Font Files", "ndps.font_file_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Font Files", HFILL }},
+
{ &hf_font_file_name,
{ "Font File Name", "ndps.font_file_name",
FT_STRING, BASE_NONE, NULL, 0x0,
"Font File Name", HFILL }},
+ { &hf_ndps_printer_def_count,
+ { "Number of Printer Definitions", "ndps.printer_def_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Printer Definitions", HFILL }},
+
{ &hf_ndps_prn_file_name,
{ "Printer File Name", "ndps.print_file_name",
FT_STRING, BASE_NONE, NULL, 0x0,
FT_STRING, BASE_NONE, NULL, 0x0,
"Printer Definition Name", HFILL }},
- { &hf_ndps_win31_items,
- { "Windows 31 Keys", "ndps.win31_keys",
+ { &hf_ndps_num_win31_keys,
+ { "Number of Windows 3.1 Keys", "ndps.num_win31_keys",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Windows 3.1 Keys", HFILL }},
+
+ { &hf_ndps_num_win95_keys,
+ { "Number of Windows 95 Keys", "ndps.num_win95_keys",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Windows 31 Keys", HFILL }},
+ "Number of Windows 95 Keys", HFILL }},
- { &hf_ndps_win95_items,
- { "Windows 95 Keys", "ndps.win95_keys",
+ { &hf_ndps_num_windows_keys,
+ { "Number of Windows Keys", "ndps.num_windows_keys",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Windows 95 Keys", HFILL }},
+ "Number of Windows Keys", HFILL }},
{ &hf_ndps_windows_key,
{ "Windows Key", "ndps.windows_key",
FT_UINT32, BASE_DEC, NULL, 0x0,
"Local ID", HFILL }},
+ { &hf_ndps_included_doc_len,
+ { "Included Document Length", "ndps.included_doc_len",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Included Document Length", HFILL }},
+
{ &hf_ndps_included_doc,
{ "Included Document", "ndps.included_doc",
FT_BYTES, BASE_NONE, NULL, 0x0,
FT_STRING, BASE_NONE, NULL, 0x0,
"Message", HFILL }},
+ { &hf_ndps_delivery_method_count,
+ { "Number of Delivery Methods", "ndps.delivery_method_count",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Number of Delivery Methods", HFILL }},
+
{ &hf_delivery_method_type,
{ "Delivery Method Type", "ndps.delivery_method_type",
FT_UINT32, BASE_HEX, VALS(ndps_delivery_method_enum), 0x0,
FT_UINT32, BASE_HEX, VALS(problem_type_enum), 0x0,
"Problem Type", HFILL }},
- { &hf_ndps_values,
- { "Number of Values", "ndps.values",
- FT_UINT32, BASE_HEX, NULL, 0x0,
+ { &hf_ndps_num_values,
+ { "Number of Values", "ndps.num_values",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"Number of Values", HFILL }},
{ &hf_ndps_object_ids_7,
"Whether the NDPS dissector should desegment all messages spanning multiple SPX packets",
&ndps_defragment);
prefs_register_bool_preference(ndps_module, "show_oid",
- "Display NDPS Details?",
+ "Display NDPS Details",
"Whether or not the NDPS dissector should show object id's and other details",
&ndps_show_oids);