For proto_tree_add_item(..., proto_xxx, ...)use ENC_NA as the encoding arg.
[obnox/wireshark/wip.git] / epan / dissectors / packet-collectd.c
index 649d6cb35b68013b0a9a800efe8da16499b8f403..741e79d49ab6bd0d403f41bd325145f0012b46c2 100644 (file)
@@ -432,10 +432,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
                        value_tree = proto_item_add_subtree (pi,
                                        ett_collectd_valinfo);
                        proto_tree_add_item (value_tree, hf_collectd_val_type,
-                                            tvb, value_type_offset, 1, FALSE);
+                                            tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
                        proto_tree_add_item (value_tree,
                                             hf_collectd_val_counter, tvb,
-                                            value_offset, 8, FALSE);
+                                            value_offset, 8, ENC_BIG_ENDIAN);
                        break;
                }
 
@@ -451,11 +451,11 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
                        value_tree = proto_item_add_subtree (pi,
                                        ett_collectd_valinfo);
                        proto_tree_add_item (value_tree, hf_collectd_val_type,
-                                            tvb, value_type_offset, 1, FALSE);
+                                            tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
                        /* Set the `little endian' flag to TRUE here, because
                         * collectd stores doubles in x86 representation. */
                        proto_tree_add_item (value_tree, hf_collectd_val_gauge,
-                                            tvb, value_offset, 8, TRUE);
+                                            tvb, value_offset, 8, ENC_LITTLE_ENDIAN);
                        break;
                }
 
@@ -471,10 +471,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
                        value_tree = proto_item_add_subtree (pi,
                                        ett_collectd_valinfo);
                        proto_tree_add_item (value_tree, hf_collectd_val_type,
-                                            tvb, value_type_offset, 1, FALSE);
+                                            tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
                        proto_tree_add_item (value_tree,
                                             hf_collectd_val_derive, tvb,
-                                            value_offset, 8, FALSE);
+                                            value_offset, 8, ENC_BIG_ENDIAN);
                        break;
                }
 
@@ -490,10 +490,10 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
                        value_tree = proto_item_add_subtree (pi,
                                        ett_collectd_valinfo);
                        proto_tree_add_item (value_tree, hf_collectd_val_type,
-                                            tvb, value_type_offset, 1, FALSE);
+                                            tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
                        proto_tree_add_item (value_tree,
                                             hf_collectd_val_absolute, tvb,
-                                            value_offset, 8, FALSE);
+                                            value_offset, 8, ENC_BIG_ENDIAN);
                        break;
                }
 
@@ -510,9 +510,9 @@ dissect_collectd_values(tvbuff_t *tvb, gint msg_off, gint val_cnt,
                        value_tree = proto_item_add_subtree (pi,
                                        ett_collectd_valinfo);
                        proto_tree_add_item (value_tree, hf_collectd_val_type,
-                                            tvb, value_type_offset, 1, FALSE);
+                                            tvb, value_type_offset, 1, ENC_BIG_ENDIAN);
                        proto_tree_add_item (value_tree, hf_collectd_val_unknown,
-                                            tvb, value_offset, 8, FALSE);
+                                            tvb, value_offset, 8, ENC_BIG_ENDIAN);
                        break;
                }
                } /* switch (value_type) */
@@ -602,7 +602,7 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
        proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
 
        pi = proto_tree_add_item (pt, hf_collectd_data_valcnt, tvb,
-                                 offset + 4, 2, FALSE);
+                                 offset + 4, 2, ENC_BIG_ENDIAN);
        if (values_count != corrected_values_count)
                expert_add_info_format (pinfo, pi, PI_MALFORMED, PI_WARN,
                                        "Number of values and length of part do not match. "
@@ -616,23 +616,23 @@ dissect_collectd_part_values (tvbuff_t *tvb, packet_info *pinfo, gint offset,
        pi = proto_tree_add_text (pt, tvb, offset + 6, length - 6, "Dispatch simulation");
        pt = proto_item_add_subtree(pi, ett_collectd_dispatch);
        proto_tree_add_text (pt, tvb, vdispatch->host_off, vdispatch->host_len,
-                            "Host: %s", vdispatch->host);
+                            "Host: %s", vdispatch->host ? vdispatch->host : "(null)");
        proto_tree_add_text (pt, tvb, vdispatch->plugin_off,
                             vdispatch->plugin_len,
-                            "Plugin: %s", vdispatch->plugin);
+                            "Plugin: %s", vdispatch->plugin ? vdispatch->plugin : "(null)");
        if (vdispatch->plugin_instance)
                proto_tree_add_text (pt, tvb, vdispatch->plugin_instance_off,
                                     vdispatch->plugin_instance_len,
                                     "Plugin instance: %s", vdispatch->plugin_instance);
        proto_tree_add_text (pt, tvb, vdispatch->type_off, vdispatch->type_len,
-                            "Type: %s", vdispatch->type);
+                            "Type: %s", vdispatch->type ? vdispatch->type : "(null)");
        if (vdispatch->type_instance)
                proto_tree_add_text(pt, tvb, vdispatch->type_instance_off,
                                    vdispatch->type_instance_len,
                                    "Type instance: %s", vdispatch->type_instance);
        proto_tree_add_text (pt, tvb, vdispatch->time_off, 8,
                             "Timestamp: %"G_GINT64_MODIFIER"u (%s)",
-                            vdispatch->time, vdispatch->time_str);
+                            vdispatch->time, vdispatch->time_str ? vdispatch->time_str : "(null)");
        proto_tree_add_text (pt, tvb, vdispatch->interval_off, 8,
                             "Interval: %"G_GINT64_MODIFIER"u",
                             vdispatch->interval);
@@ -703,8 +703,8 @@ dissect_collectd_signature (tvbuff_t *tvb, packet_info *pinfo,
        proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
        proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2,
                             length);
-       proto_tree_add_item (pt, hf_collectd_data_sighash, tvb, offset + 4, 32, FALSE);
-       proto_tree_add_item (pt, hf_collectd_data_username, tvb, offset + 36, length - 36, FALSE);
+       proto_tree_add_item (pt, hf_collectd_data_sighash, tvb, offset + 4, 32, ENC_NA);
+       proto_tree_add_item (pt, hf_collectd_data_username, tvb, offset + 36, length - 36, ENC_ASCII|ENC_NA);
 
        return (0);
 } /* int dissect_collectd_signature */
@@ -793,12 +793,12 @@ dissect_collectd_encrypted (tvbuff_t *tvb, packet_info *pinfo,
        proto_tree_add_uint (pt, hf_collectd_type, tvb, offset, 2, type);
        proto_tree_add_uint (pt, hf_collectd_length, tvb, offset + 2, 2, length);
        proto_tree_add_uint (pt, hf_collectd_data_username_len, tvb, offset + 4, 2, username_length);
-       proto_tree_add_item (pt, hf_collectd_data_username, tvb, offset + 6, username_length, FALSE);
+       proto_tree_add_item (pt, hf_collectd_data_username, tvb, offset + 6, username_length, ENC_ASCII|ENC_NA);
        proto_tree_add_item (pt, hf_collectd_data_initvec, tvb,
-                            offset + (6 + username_length), 16, FALSE);
+                            offset + (6 + username_length), 16, ENC_NA);
        proto_tree_add_item (pt, hf_collectd_data_encrypted, tvb,
                             offset + (22 + username_length),
-                            length - (22 + username_length), FALSE);
+                            length - (22 + username_length), ENC_NA);
 
        return (0);
 } /* int dissect_collectd_encrypted */
@@ -857,7 +857,7 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
        size = tvb_reported_length(tvb);
 
        /* create the collectd protocol tree */
-       pi = proto_tree_add_item(tree, proto_collectd, tvb, 0, -1, FALSE);
+       pi = proto_tree_add_item(tree, proto_collectd, tvb, 0, -1, ENC_NA);
        collectd_tree = proto_item_add_subtree(pi, ett_collectd);
 
        memset (&tap_data, 0, sizeof (tap_data));
@@ -1107,13 +1107,13 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                                pkt_errors++;
                        else
                        {
-                               vdispatch.time_str = abs_time_secs_to_str ((time_t) vdispatch.time, ABSOLUTE_TIME_LOCAL);
+                               vdispatch.time_str = abs_time_secs_to_str ((time_t) vdispatch.time, ABSOLUTE_TIME_LOCAL, TRUE);
 
                                ndispatch.time = vdispatch.time;
                                ndispatch.time_str = vdispatch.time_str;
 
                                proto_item_set_text (pi, "collectd TIME segment: %"G_GINT64_MODIFIER"u (%s)",
-                                                    vdispatch.time, vdispatch.time_str);
+                                                    vdispatch.time, vdispatch.time_str ? vdispatch.time_str : "(null)");
                        }
 
                        break;
@@ -1181,10 +1181,10 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                        pt = proto_item_add_subtree(pi, ett_collectd_dispatch);
                        proto_tree_add_text (pt, tvb, ndispatch.host_off,
                                             ndispatch.host_len,
-                                            "Host: %s", ndispatch.host);
+                                            "Host: %s", ndispatch.host ? ndispatch.host : "(null)");
                        proto_tree_add_text (pt, tvb, ndispatch.time_off, 8,
                                             "Timestamp: %"G_GINT64_MODIFIER"u (%s)",
-                                            ndispatch.time, ndispatch.time_str);
+                                            ndispatch.time, ndispatch.time_str ? ndispatch.time_str : "(null)");
                        proto_tree_add_text (pt, tvb, ndispatch.severity_off, 8,
                                             "Severity: %s (%#"G_GINT64_MODIFIER"x)",
                                             val_to_str((gint32)ndispatch.severity, severity_names, "UNKNOWN"),
@@ -1254,7 +1254,7 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
                        proto_tree_add_uint (pt, hf_collectd_length, tvb,
                                                  offset + 2, 2, part_length);
                        proto_tree_add_item (pt, hf_collectd_data, tvb,
-                                            offset + 4, part_length - 4, FALSE);
+                                            offset + 4, part_length - 4, ENC_NA);
 
                        expert_add_info_format (pinfo, pi,
                                                PI_UNDECODED, PI_NOTE,
@@ -1457,10 +1457,10 @@ void proto_reg_handoff_collectd (void)
        /* Change the dissector registration if the preferences have been
         * changed. */
        if (registered_udp_port != -1)
-               dissector_delete ("udp.port", registered_udp_port,
+               dissector_delete_uint ("udp.port", registered_udp_port,
                                  collectd_handle);
 
-       dissector_add ("udp.port", collectd_udp_port, collectd_handle);
+       dissector_add_uint ("udp.port", collectd_udp_port, collectd_handle);
        registered_udp_port = collectd_udp_port;
 
        if (first_run)