From 8cbeee42fef8948282e411fbf59df1e87faa2669 Mon Sep 17 00:00:00 2001 From: etxrab Date: Tue, 2 Mar 2010 06:12:21 +0000 Subject: [PATCH] From Hitoshi Irino: Displaying value and type of IPFIX reverse PEN elements in data records https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4399 git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@32082 f5534014-38df-0310-8fa8-9805f1628bb7 --- asn1/snmp/packet-snmp-template.c | 44 +- capinfos.c | 8 +- capture_sync.c | 2 +- color_filters.c | 48 +-- epan/dissectors/packet-netflow.c | 689 ++++++++++++++++--------------- epan/dissectors/packet-snmp.c | 46 ++- fileset.c | 22 +- fileset.h | 12 +- 8 files changed, 463 insertions(+), 408 deletions(-) diff --git a/asn1/snmp/packet-snmp-template.c b/asn1/snmp/packet-snmp-template.c index 022dc2fd2e..90bbe4d6e5 100644 --- a/asn1/snmp/packet-snmp-template.c +++ b/asn1/snmp/packet-snmp-template.c @@ -1114,11 +1114,11 @@ static snmp_ue_assoc_t* localize_ue( snmp_ue_assoc_t* o, const guint8* engine, g #define localized_match(a,u,ul,e,el) \ ( a->user.userName.len == ul \ && a->engine.len == el \ - && memcmp( a->user.userName.data, u, (a->user.userName.len < ul) ? a->user.userName.len : ul ) == 0 \ - && memcmp( a->engine.data, e, (a->engine.len < el) ? a->engine.len : el ) == 0 ) + && memcmp( a->user.userName.data, u, ul ) == 0 \ + && memcmp( a->engine.data, e, el ) == 0 ) #define unlocalized_match(a,u,l) \ - ( a->user.userName.len == l && memcmp( a->user.userName.data, u, a->user.userName.len < l ? a->user.userName.len : l) == 0 ) + ( a->user.userName.len == l && memcmp( a->user.userName.data, u, l) == 0 ) static snmp_ue_assoc_t* get_user_assoc(tvbuff_t* engine_tvb, tvbuff_t* user_tvb) { static snmp_ue_assoc_t* a; @@ -1830,7 +1830,8 @@ static void snmp_usm_password_to_key_sha1(const guint8 *password, } -static void process_prefs(void) {} +static void process_prefs(void) { +} static void* snmp_users_copy_cb(void* dest, const void* orig, unsigned len _U_) { const snmp_ue_assoc_t* o = orig; @@ -1861,7 +1862,7 @@ static void* snmp_users_copy_cb(void* dest, const void* orig, unsigned len _U_) d->user.privKey.data = o->user.privKey.data ? g_memdup(o->user.privKey.data,o->user.privKey.len) : NULL; d->user.privKey.len = o->user.privKey.len; - + return d; } @@ -1878,16 +1879,40 @@ static void snmp_users_free_cb(void* p) { static void snmp_users_update_cb(void* p _U_, const char** err) { snmp_ue_assoc_t* ue = p; GString* es = g_string_new(""); - + unsigned i; + *err = NULL; - if (! ue->user.userName.len) g_string_append(es,"no userName, "); - + if (! ue->user.userName.len) + g_string_append_printf(es,"no userName\n",num_ueas); + + for (i=0; iuser.userName.len == ue->user.userName.len + && u->engine.len == ue->engine.len ) { + + if (u->engine.len > 0 && memcmp( u->engine.data, ue->engine.data, u->engine.len ) == 0) { + if ( memcmp( u->user.userName.data, ue->user.userName.data, ue->user.userName.len ) == 0 ) { + /* XXX: make a string for the engineId */ + g_string_append_printf(es,"duplicate key (userName='%s' engineId='???')\n",ue->user.userName.data); + } + } + + if (u->engine.len == 0) { + if ( memcmp( u->user.userName.data, ue->user.userName.data, ue->user.userName.len ) == 0 ) { + g_string_append_printf(es,"duplicate key (userName='%s' engineId=NONE)\n",ue->user.userName.data); + } + } + } + } + if (es->len) { g_string_truncate(es,es->len-2); *err = ep_strdup(es->str); } - + g_string_free(es,TRUE); return; @@ -2108,6 +2133,7 @@ void proto_register_snmp(void) { value_sub_dissectors_table = register_dissector_table("snmp.variable_oid","SNMP Variable OID", FT_STRING, BASE_NONE); register_init_routine(renew_ue_cache); + } diff --git a/capinfos.c b/capinfos.c index 90a638d6b9..da32dceb74 100644 --- a/capinfos.c +++ b/capinfos.c @@ -253,7 +253,7 @@ ctime_no_lf(const time_t* timer) static gchar * time_string(const time_t *timer, capture_info *cf_info, gboolean want_lf) { - gchar *lf = want_lf ? "\n" : ""; + const gchar *lf = want_lf ? "\n" : ""; static gchar time_string_buf[15]; if (cf_info->packet_count > 0) { @@ -278,7 +278,7 @@ secs_nsecs(const struct wtap_nstime * nstime) return (nstime->nsecs / 1000000000.0) + (double)nstime->secs; } -static void print_value(gchar *text_p1, gint width, gchar *text_p2, double value) { +static void print_value(const gchar *text_p1, gint width, const gchar *text_p2, double value) { if (value > 0.0) printf("%s%.*f%s\n", text_p1, width, value, text_p2); else @@ -333,7 +333,7 @@ putquote(void) } static void -print_stats_table_header_label(gchar *label) +print_stats_table_header_label(const gchar *label) { putsep(); putquote(); @@ -886,7 +886,7 @@ main(int argc, char *argv[]) gcry_md_enable(hd, GCRY_MD_RMD160); gcry_md_enable(hd, GCRY_MD_MD5); } - hash_buf = g_malloc(HASH_BUF_SIZE); + hash_buf = (char *)g_malloc(HASH_BUF_SIZE); } #endif diff --git a/capture_sync.c b/capture_sync.c index bcfeba534a..3b04933337 100644 --- a/capture_sync.c +++ b/capture_sync.c @@ -615,7 +615,7 @@ sync_pipe_open_command(const char** argv, int *read_fd, int *fork_child, gchar * sa.lpSecurityDescriptor = NULL; /* Create a pipe for the child process */ - /* (inrease this value if you have trouble while fast capture file switches) */ + /* (increase this value if you have trouble while fast capture file switches) */ if (! CreatePipe(&sync_pipe_read, &sync_pipe_write, &sa, 5120)) { /* Couldn't create the pipe between parent and child. */ *msg = g_strdup_printf("Couldn't create sync pipe: %s", strerror(errno)); diff --git a/color_filters.c b/color_filters.c index dd41ec7d09..7d624c9404 100644 --- a/color_filters.c +++ b/color_filters.c @@ -79,7 +79,7 @@ color_filter_new(const gchar *name, /* The name of the filter to create */ { color_filter_t *colorf; - colorf = g_malloc(sizeof (color_filter_t)); + colorf = (color_filter_t *)g_malloc(sizeof (color_filter_t)); colorf->filter_name = g_strdup(name); colorf->filter_text = g_strdup(filter_string); colorf->bg_color = *bg_color; @@ -137,8 +137,8 @@ color_filters_add_tmp(GSList **cfl) static gint color_filters_find_by_name_cb(gconstpointer arg1, gconstpointer arg2) { - color_filter_t *colorf = (color_filter_t *)arg1; - gchar *name = (gchar *)arg2; + const color_filter_t *colorf = (const color_filter_t *)arg1; + const gchar *name = (const gchar *)arg2; return (strstr(colorf->filter_name, name)==NULL) ? -1 : 0 ; } @@ -148,12 +148,12 @@ color_filters_find_by_name_cb(gconstpointer arg1, gconstpointer arg2) void color_filters_set_tmp(guint8 filt_nr, gchar *filter, gboolean disabled) { - gchar *name = NULL; - gchar *tmpfilter = NULL; - GSList *cfl; + gchar *name = NULL; + const gchar *tmpfilter = NULL; + GSList *cfl; color_filter_t *colorf; dfilter_t *compiled_filter; - guint8 i; + guint8 i; /* Go through the tomporary filters and look for the same filter string. * If found, clear it so that a filter can be "moved" up and down the list @@ -167,7 +167,7 @@ color_filters_set_tmp(guint8 filt_nr, gchar *filter, gboolean disabled) name = g_strdup_printf("%s%02d",TEMP_COLOR_PREFIX,i); cfl = g_slist_find_custom(color_filter_list, (gpointer *) name, color_filters_find_by_name_cb); - colorf = cfl->data; + colorf = (color_filter_t *)cfl->data; /* Only change the filter rule if this is the rule to change or if * a matching filter string has been found @@ -230,7 +230,7 @@ color_filter_delete(color_filter_t *colorf) static void color_filter_delete_cb(gpointer filter_arg, gpointer unused _U_) { - color_filter_t *colorf = filter_arg; + color_filter_t *colorf = (color_filter_t *)filter_arg; color_filter_delete(colorf); } @@ -250,7 +250,7 @@ color_filter_clone(color_filter_t *colorf) { color_filter_t *new_colorf; - new_colorf = g_malloc(sizeof (color_filter_t)); + new_colorf = (color_filter_t *)g_malloc(sizeof (color_filter_t)); new_colorf->filter_name = g_strdup(colorf->filter_name); new_colorf->filter_text = g_strdup(colorf->filter_text); new_colorf->bg_color = colorf->bg_color; @@ -266,10 +266,10 @@ color_filter_clone(color_filter_t *colorf) static void color_filter_list_clone_cb(gpointer filter_arg, gpointer cfl_arg) { - gpointer *cfl = cfl_arg; + GSList **cfl = (GSList **)cfl_arg; color_filter_t *new_colorf; - new_colorf = color_filter_clone(filter_arg); + new_colorf = color_filter_clone((color_filter_t *)filter_arg); *cfl = g_slist_append(*cfl, new_colorf); } @@ -327,7 +327,7 @@ color_filters_cleanup(void) static void color_filters_clone_cb(gpointer filter_arg, gpointer user_data) { - color_filter_t * new_colorf = color_filter_clone(filter_arg); + color_filter_t * new_colorf = color_filter_clone((color_filter_t *)filter_arg); color_filter_add_cb (new_colorf, user_data); } @@ -341,7 +341,7 @@ color_filters_clone(gpointer user_data) static void color_filter_compile_cb(gpointer filter_arg, gpointer unused _U_) { - color_filter_t *colorf = filter_arg; + color_filter_t *colorf = (color_filter_t *)filter_arg; g_assert(colorf->c_colorfilter == NULL); if (!dfilter_compile(colorf->filter_text, &colorf->c_colorfilter)) { @@ -357,7 +357,7 @@ color_filter_compile_cb(gpointer filter_arg, gpointer unused _U_) static void color_filter_validate_cb(gpointer filter_arg, gpointer unused _U_) { - color_filter_t *colorf = filter_arg; + color_filter_t *colorf = (color_filter_t *)filter_arg; g_assert(colorf->c_colorfilter == NULL); if (!dfilter_compile(colorf->filter_text, &colorf->c_colorfilter)) { @@ -422,8 +422,8 @@ color_filters_enable(gboolean enable) static void prime_edt(gpointer data, gpointer user_data) { - color_filter_t *colorf = data; - epan_dissect_t *edt = user_data; + color_filter_t *colorf = (color_filter_t *)data; + epan_dissect_t *edt = (epan_dissect_t *)user_data; if (colorf->c_colorfilter != NULL) epan_dissect_prime_dfilter(edt, colorf->c_colorfilter); @@ -456,7 +456,7 @@ color_filters_colorize_packet(gint row, epan_dissect_t *edt) curr = color_filter_list; while(curr != NULL) { - colorf = curr->data; + colorf = (color_filter_t *)curr->data; if ( (!colorf->disabled) && (colorf->c_colorfilter != NULL) && dfilter_apply_edt(colorf->c_colorfilter, edt)) { @@ -491,8 +491,8 @@ read_filters_file(FILE *f, gpointer user_data) gboolean disabled = FALSE; gboolean skip_end_of_line = FALSE; - name = g_malloc(name_len + 1); - filter_exp = g_malloc(filter_exp_len + 1); + name = (gchar *)g_malloc(name_len + 1); + filter_exp = (gchar *)g_malloc(filter_exp_len + 1); while (1) { @@ -540,7 +540,7 @@ read_filters_file(FILE *f, gpointer user_data) if (i >= name_len) { /* buffer isn't long enough; double its length.*/ name_len *= 2; - name = g_realloc(name, name_len + 1); + name = (gchar *)g_realloc(name, name_len + 1); } name[i++] = c; } @@ -562,7 +562,7 @@ read_filters_file(FILE *f, gpointer user_data) if (i >= filter_exp_len) { /* buffer isn't long enough; double its length.*/ filter_exp_len *= 2; - filter_exp = g_realloc(filter_exp, filter_exp_len + 1); + filter_exp = (gchar *)g_realloc(filter_exp, filter_exp_len + 1); } filter_exp[i++] = c; } @@ -719,8 +719,8 @@ struct write_filter_data static void write_filter(gpointer filter_arg, gpointer data_arg) { - struct write_filter_data *data = data_arg; - color_filter_t *colorf = filter_arg; + struct write_filter_data *data = (struct write_filter_data *)data_arg; + color_filter_t *colorf = (color_filter_t *)filter_arg; FILE *f = data->f; if ( (colorf->selected || !data->only_selected) && diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c index 74a8b12a97..b3974634c5 100644 --- a/epan/dissectors/packet-netflow.c +++ b/epan/dissectors/packet-netflow.c @@ -545,22 +545,24 @@ const value_string special_mpls_top_label_type[] = { {0, NULL } }; -static void +static proto_item * proto_tree_add_mpls_label(proto_tree * pdutree, tvbuff_t * tvb, int offset, int length, int level) { + proto_item * ti; if( length == 3) { guint8 b0 = tvb_get_guint8(tvb, offset); guint8 b1 = tvb_get_guint8(tvb, offset + 1); guint8 b2 = tvb_get_guint8(tvb, offset + 2); - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "MPLS-Label%d: %u exp-bits: %u %s", level, ((b0<<12)+(b1<<4)+(b2>>4)), ((b2>>1)&0x7), ((b2&0x1)?"top-of-stack":"")); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "MPLS-Label%d: bad length %d", level, length); } + return ti; } void proto_reg_handoff_netflow(void); @@ -585,11 +587,11 @@ static int dissect_v9_flowset(tvbuff_t * tvb, packet_info * pinfo, proto_tree * static int dissect_v9_data(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int offset, guint16 id, guint length, hdrinfo_t * hdrinfo); static guint dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, - int offset, struct v9_template * tplt); + int offset, struct v9_template * tplt, hdrinfo_t * hdrinfo); static int dissect_v9_options_template(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, int offset, hdrinfo_t *hdrinfo, guint16 flowset_id); static int dissect_v9_template(proto_tree * pdutree, tvbuff_t * tvb, packet_info *pinfo, - int offset, int len, hdrinfo_t * hdrinfo); + int offset, int len, hdrinfo_t * hdrinfo, guint16 flowset_id); static int v9_template_hash(guint16 id, const address * net_src, guint32 src_id); static struct v9_template *v9_template_get(guint16 id, address * net_src, @@ -1247,7 +1249,7 @@ dissect_v9_flowset(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, in offset, 2, FALSE); offset += 2; - dissect_v9_template(pdutree, tvb, pinfo, offset, length - 4, hdrinfo); + dissect_v9_template(pdutree, tvb, pinfo, offset, length - 4, hdrinfo, flowset_id); } else if ((flowset_id == 1) || (flowset_id == 3)) { /* Option Template */ proto_tree_add_item(pdutree, hf_cflow_options_flowset_id, tvb, @@ -1303,7 +1305,7 @@ dissect_v9_data(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int o data_tree = proto_item_add_subtree(data_item, ett_dataflowset); - pdu_len = dissect_v9_pdu(tvb, pinfo, data_tree, offset, tplt); + pdu_len = dissect_v9_pdu(tvb, pinfo, data_tree, offset, tplt, hdrinfo); offset += tplt->length; /* XXX - Throw an exception */ @@ -1348,7 +1350,7 @@ dissect_v9_data(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int o static guint dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int offset, - struct v9_template * tplt) + struct v9_template * tplt, hdrinfo_t * hdrinfo) { int orig_offset = offset; int i; @@ -1428,7 +1430,7 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of rev = 0; type = tplt->entries[i].type; length = tplt->entries[i].length; - if (type & 0x8000) { + if (hdrinfo->vspec == 10 && type & 0x8000) { pen = tplt->entries[i].pen; if (pen == REVPEN) { /* reverse PEN */ type &= 0x7fff; @@ -1436,20 +1438,20 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of } } - pen_type = pen << 16 | (type & 0x7fff); - + pen_type = (pen > 0 && pen != REVPEN) ? pen << 16 | (type & 0x7fff) : type; + ti = NULL; switch (pen_type) { case 85: /* BYTES_PERMANENT */ case 1: /* bytes */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Octets: length %u", length); } @@ -1458,13 +1460,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 86: /* PACKETS_PERMANENT */ case 2: /* packets */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Packets: length %u", length); } @@ -1473,134 +1475,134 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 163: /* observedFlowTotalCount */ case 3: /* flows */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_flows, + ti = proto_tree_add_item(pdutree, hf_cflow_flows, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Flows: length %u", length); } break; case 4: /* proto */ - proto_tree_add_item(pdutree, hf_cflow_prot, + ti = proto_tree_add_item(pdutree, hf_cflow_prot, tvb, offset, length, FALSE); break; case 5: /* TOS */ - proto_tree_add_item(pdutree, hf_cflow_tos, + ti = proto_tree_add_item(pdutree, hf_cflow_tos, tvb, offset, length, FALSE); break; case 6: /* TCP flags */ - proto_tree_add_item(pdutree, hf_cflow_tcpflags, + ti = proto_tree_add_item(pdutree, hf_cflow_tcpflags, tvb, offset, length, FALSE); break; case 7: /* source port */ case 180: /* udpSourcePort */ case 182: /* tcpSourcePort */ - proto_tree_add_item(pdutree, hf_cflow_srcport, + ti = proto_tree_add_item(pdutree, hf_cflow_srcport, tvb, offset, length, FALSE); break; case 8: /* source IP */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_srcaddr, + ti = proto_tree_add_item(pdutree, hf_cflow_srcaddr, tvb, offset, length, FALSE); } else if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_srcaddr_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_srcaddr_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "SrcAddr: length %u", length); } break; case 9: /* source mask */ - proto_tree_add_item(pdutree, hf_cflow_srcmask, + ti = proto_tree_add_item(pdutree, hf_cflow_srcmask, tvb, offset, length, FALSE); break; case 10: /* input SNMP */ - proto_tree_add_item(pdutree, hf_cflow_inputint, + ti = proto_tree_add_item(pdutree, hf_cflow_inputint, tvb, offset, length, FALSE); break; case 11: /* dest port */ case 181: /* udpDestinationPort */ case 183: /* tcpDestinationPort */ - proto_tree_add_item(pdutree, hf_cflow_dstport, + ti = proto_tree_add_item(pdutree, hf_cflow_dstport, tvb, offset, length, FALSE); break; case 12: /* dest IP */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_dstaddr, + ti = proto_tree_add_item(pdutree, hf_cflow_dstaddr, tvb, offset, length, FALSE); } else if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_dstaddr_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_dstaddr_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "DstAddr: length %u", length); } break; case 13: /* dest mask */ - proto_tree_add_item(pdutree, hf_cflow_dstmask, + ti = proto_tree_add_item(pdutree, hf_cflow_dstmask, tvb, offset, length, FALSE); break; case 14: /* output SNMP */ - proto_tree_add_item(pdutree, hf_cflow_outputint, + ti = proto_tree_add_item(pdutree, hf_cflow_outputint, tvb, offset, length, FALSE); break; case 15: /* nexthop IP */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_nexthop, + ti = proto_tree_add_item(pdutree, hf_cflow_nexthop, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "NextHop: length %u", length); } break; case 16: /* source AS */ - proto_tree_add_item(pdutree, hf_cflow_srcas, + ti = proto_tree_add_item(pdutree, hf_cflow_srcas, tvb, offset, length, FALSE); break; case 17: /* dest AS */ - proto_tree_add_item(pdutree, hf_cflow_dstas, + ti = proto_tree_add_item(pdutree, hf_cflow_dstas, tvb, offset, length, FALSE); break; case 18: /* BGP nexthop IP */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_bgpnexthop, + ti = proto_tree_add_item(pdutree, hf_cflow_bgpnexthop, tvb, offset, length, FALSE); } else if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_bgpnexthop_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_bgpnexthop_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "BGPNextHop: length %u", length); } break; case 19: /* multicast packets */ - proto_tree_add_item(pdutree, hf_cflow_mulpackets, + ti = proto_tree_add_item(pdutree, hf_cflow_mulpackets, tvb, offset, length, FALSE); break; case 20: /* multicast octets */ - proto_tree_add_item(pdutree, hf_cflow_muloctets, + ti = proto_tree_add_item(pdutree, hf_cflow_muloctets, tvb, offset, length, FALSE); break; @@ -1706,13 +1708,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 23: /* postOctetDeltaCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Octets: length %u", length); } @@ -1720,45 +1722,45 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 24: /* postPacketDeltaCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Packets: length %u", length); } break; case 25: /* length_min */ - proto_tree_add_item(pdutree, hf_cflow_length_min, + ti = proto_tree_add_item(pdutree, hf_cflow_length_min, tvb, offset, length, FALSE); break; case 26: /* length_max */ - proto_tree_add_item(pdutree, hf_cflow_length_max, + ti = proto_tree_add_item(pdutree, hf_cflow_length_max, tvb, offset, length, FALSE); break; case 27: /* IPv6 src addr */ - proto_tree_add_item(pdutree, hf_cflow_srcaddr_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_srcaddr_v6, tvb, offset, length, FALSE); break; case 28: /* IPv6 dst addr */ - proto_tree_add_item(pdutree, hf_cflow_dstaddr_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_dstaddr_v6, tvb, offset, length, FALSE); break; case 29: /* IPv6 src addr mask */ - proto_tree_add_item(pdutree, hf_cflow_srcmask_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_srcmask_v6, tvb, offset, length, FALSE); break; case 30: /* IPv6 dst addr mask */ - proto_tree_add_item(pdutree, hf_cflow_dstmask_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_dstmask_v6, tvb, offset, length, FALSE); break; @@ -1766,202 +1768,202 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of /* RFC5102 defines that Abstract Data Type of this Information Element is unsigned32 */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_ipv6_flowlabel, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv6_flowlabel, tvb, offset, length, FALSE); } /* RFC3954 defines that length of this field is 3 Bytes */ else if (length == 3) { - proto_tree_add_item(pdutree, hf_cflow_ipv6_flowlabel24, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv6_flowlabel24, tvb, offset, length, FALSE); } break; case 32: /* ICMP_TYPE */ - proto_tree_add_item(pdutree, hf_cflow_icmp_type, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_type, tvb, offset, length, FALSE); break; case 33: /* IGMP_TYPE */ - proto_tree_add_item(pdutree, hf_cflow_igmp_type, + ti = proto_tree_add_item(pdutree, hf_cflow_igmp_type, tvb, offset, length, FALSE); break; case 34: /* sampling interval */ - proto_tree_add_item(pdutree, hf_cflow_sampling_interval, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_interval, tvb, offset, length, FALSE); break; case 35: /* sampling algorithm */ - proto_tree_add_item(pdutree, hf_cflow_sampling_algorithm, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_algorithm, tvb, offset, length, FALSE); break; case 36: /* flow active timeout */ - proto_tree_add_item(pdutree, hf_cflow_flow_active_timeout, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_active_timeout, tvb, offset, length, FALSE); break; case 37: /* flow inactive timeout */ - proto_tree_add_item(pdutree, hf_cflow_flow_inactive_timeout, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_inactive_timeout, tvb, offset, length, FALSE); break; case 38: /* engine type */ - proto_tree_add_item(pdutree, hf_cflow_engine_type, + ti = proto_tree_add_item(pdutree, hf_cflow_engine_type, tvb, offset, length, FALSE); break; case 39: /* engine id*/ - proto_tree_add_item(pdutree, hf_cflow_engine_id, + ti = proto_tree_add_item(pdutree, hf_cflow_engine_id, tvb, offset, length, FALSE); break; case 40: /* bytes exported */ if( length == 8 ) { - proto_tree_add_item(pdutree, hf_cflow_octets_exp64, + ti = proto_tree_add_item(pdutree, hf_cflow_octets_exp64, tvb, offset, length, FALSE); } else if( length == 4 ) { - proto_tree_add_item(pdutree, hf_cflow_octets_exp, + ti = proto_tree_add_item(pdutree, hf_cflow_octets_exp, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "BytesExported: length %u", length); } break; case 41: /* packets exported */ if( length == 8 ) { - proto_tree_add_item(pdutree, hf_cflow_packets_exp64, + ti = proto_tree_add_item(pdutree, hf_cflow_packets_exp64, tvb, offset, length, FALSE); } else if( length == 4 ) { - proto_tree_add_item(pdutree, hf_cflow_packets_exp, + ti = proto_tree_add_item(pdutree, hf_cflow_packets_exp, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "PacketsExported: length %u", length); } break; case 42: /* flows exported */ if( length == 8 ) { - proto_tree_add_item(pdutree, hf_cflow_flows_exp64, + ti = proto_tree_add_item(pdutree, hf_cflow_flows_exp64, tvb, offset, length, FALSE); } else if( length == 4 ) { - proto_tree_add_item(pdutree, hf_cflow_flows_exp, + ti = proto_tree_add_item(pdutree, hf_cflow_flows_exp, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "FlowsExported: length %u", length); } break; case 44: /* IP source prefix */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_srcprefix, + ti = proto_tree_add_item(pdutree, hf_cflow_srcprefix, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "SrcPrefix: length %u", length); } break; case 45: /* IP destination prefix */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_dstprefix, + ti = proto_tree_add_item(pdutree, hf_cflow_dstprefix, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "DstPrefix: length %u", length); } break; case 46: /* top MPLS label type*/ - proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_type, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_type, tvb, offset, length, FALSE); break; case 47: /* top MPLS label PE address*/ - proto_tree_add_item(pdutree, hf_cflow_mpls_pe_addr, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_pe_addr, tvb, offset, length, FALSE); break; case 48: /* Flow Sampler ID */ - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "FlowSamplerID: %d", tvb_get_guint8(tvb, offset)); break; case 49: /* FLOW_SAMPLER_MODE */ - proto_tree_add_item(pdutree, hf_cflow_sampler_mode, + ti = proto_tree_add_item(pdutree, hf_cflow_sampler_mode, tvb, offset, length, FALSE); break; case 50: /* FLOW_SAMPLER_RANDOM_INTERVAL */ - proto_tree_add_item(pdutree, hf_cflow_sampler_random_interval, + ti = proto_tree_add_item(pdutree, hf_cflow_sampler_random_interval, tvb, offset, length, FALSE); break; case 51: /* FLOW_CLASS */ - proto_tree_add_item(pdutree, hf_cflow_flow_class, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_class, tvb, offset, length, FALSE); break; case 52: /* TTL_MINIMUM */ - proto_tree_add_item(pdutree, hf_cflow_ttl_minimum, + ti = proto_tree_add_item(pdutree, hf_cflow_ttl_minimum, tvb, offset, length, FALSE); break; case 53: /* TTL_MAXIMUM */ - proto_tree_add_item(pdutree, hf_cflow_ttl_maximum, + ti = proto_tree_add_item(pdutree, hf_cflow_ttl_maximum, tvb, offset, length, FALSE); break; case 54: /* IPV4_ID */ - proto_tree_add_item(pdutree, hf_cflow_ipv4_id, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv4_id, tvb, offset, length, FALSE); break; case 55: /* postIpClassOfService */ - proto_tree_add_item(pdutree, hf_cflow_post_tos, + ti = proto_tree_add_item(pdutree, hf_cflow_post_tos, tvb, offset, length, FALSE); break; case 56: /* sourceMacAddress */ - proto_tree_add_item(pdutree, hf_cflow_srcmac, + ti = proto_tree_add_item(pdutree, hf_cflow_srcmac, tvb, offset, length, FALSE); break; case 57: /* postDestinationMacAddress */ - proto_tree_add_item(pdutree, hf_cflow_post_dstmac, + ti = proto_tree_add_item(pdutree, hf_cflow_post_dstmac, tvb, offset, length, FALSE); break; case 58: /* vlanId */ - proto_tree_add_item(pdutree, hf_cflow_vlanid, + ti = proto_tree_add_item(pdutree, hf_cflow_vlanid, tvb, offset, length, FALSE); break; case 59: /* postVlanId */ - proto_tree_add_item(pdutree, hf_cflow_post_vlanid, + ti = proto_tree_add_item(pdutree, hf_cflow_post_vlanid, tvb, offset, length, FALSE); break; case 60: /* IP_VERSION */ - proto_tree_add_item(pdutree, hf_cflow_ip_version, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_version, tvb, offset, length, FALSE); break; case 61: /* DIRECTION */ - proto_tree_add_item(pdutree, hf_cflow_direction, + ti = proto_tree_add_item(pdutree, hf_cflow_direction, tvb, offset, length, FALSE); break; case 62: /* IPV6_NEXT_HOP */ if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_nexthop_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_nexthop_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "NextHop: length %u", length); } @@ -1969,87 +1971,87 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 63: /* BGP_IPV6_NEXT_HOP */ if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_bgpnexthop_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_bgpnexthop_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "BGPNextHop: length %u", length); } break; case 64: /* ipv6ExtensionHeaders */ - proto_tree_add_item(pdutree, hf_cflow_ipv6_exthdr, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv6_exthdr, tvb, offset, length, FALSE); break; case 70: /* MPLS label1*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 1); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 1); break; case 71: /* MPLS label2*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 2); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 2); break; case 72: /* MPLS label3*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 3); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 3); break; case 73: /* MPLS label4*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 4); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 4); break; case 74: /* MPLS label5*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 5); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 5); break; case 75: /* MPLS label6*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 6); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 6); break; case 76: /* MPLS label7*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 7); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 7); break; case 77: /* MPLS label8*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 8); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 8); break; case 78: /* MPLS label9*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 9); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 9); break; case 79: /* MPLS label10*/ - proto_tree_add_mpls_label(pdutree, tvb, offset, length, 10); + ti = proto_tree_add_mpls_label(pdutree, tvb, offset, length, 10); break; case 80: /* destinationMacAddress */ - proto_tree_add_item(pdutree, hf_cflow_dstmac, + ti = proto_tree_add_item(pdutree, hf_cflow_dstmac, tvb, offset, length, FALSE); break; case 81: /* postSourceMacAddress */ - proto_tree_add_item(pdutree, hf_cflow_post_srcmac, + ti = proto_tree_add_item(pdutree, hf_cflow_post_srcmac, tvb, offset, length, FALSE); break; case 82: /* IF_NAME */ - proto_tree_add_item(pdutree, hf_cflow_if_name, + ti = proto_tree_add_item(pdutree, hf_cflow_if_name, tvb, offset, length, FALSE); break; case 83: /* IF_DESCR */ - proto_tree_add_item(pdutree, hf_cflow_if_descr, + ti = proto_tree_add_item(pdutree, hf_cflow_if_descr, tvb, offset, length, FALSE); break; case 84: /* SAMPLER_NAME */ - proto_tree_add_item(pdutree, hf_cflow_sampler_name, + ti = proto_tree_add_item(pdutree, hf_cflow_sampler_name, tvb, offset, length, FALSE); break; case 88: /* fragmentOffset */ - proto_tree_add_item(pdutree, hf_cflow_fragment_offset, + ti = proto_tree_add_item(pdutree, hf_cflow_fragment_offset, tvb, offset, length, FALSE); break; @@ -2061,70 +2063,70 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of break; case 90: /* mplsVpnRouteDistinguisher */ - proto_tree_add_item(pdutree, hf_cflow_mpls_vpn_rd, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_vpn_rd, tvb, offset, length, FALSE); break; case 91: /* mplsTopLabelPrefixLength */ - proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_prefix_length, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_prefix_length, tvb, offset, length, FALSE); break; case 94: /* NBAR applicationDesc */ - proto_tree_add_item(pdutree, hf_cflow_nbar_appl_desc, + ti = proto_tree_add_item(pdutree, hf_cflow_nbar_appl_desc, tvb, offset, length, FALSE); break; case 95: /* NBAR applicationId */ - proto_tree_add_item(pdutree, hf_cflow_nbar_appl_id, + ti = proto_tree_add_item(pdutree, hf_cflow_nbar_appl_id, tvb, offset+2, 2, FALSE); break; case 96: /* NBAR applicationName */ - proto_tree_add_item(pdutree, hf_cflow_nbar_appl_name, + ti = proto_tree_add_item(pdutree, hf_cflow_nbar_appl_name, tvb, offset, length, FALSE); break; case 98: /* postIpDiffServCodePoint */ - proto_tree_add_item(pdutree, hf_cflow_post_ip_diff_serv_code_point, + ti = proto_tree_add_item(pdutree, hf_cflow_post_ip_diff_serv_code_point, tvb, offset, length, FALSE); break; case 99: /* multicastReplicationFactor */ - proto_tree_add_item(pdutree, hf_cflow_multicast_replication_factor, + ti = proto_tree_add_item(pdutree, hf_cflow_multicast_replication_factor, tvb, offset, length, FALSE); break; case 128: /* source AS Peer */ - proto_tree_add_item(pdutree, hf_cflow_peer_srcas, + ti = proto_tree_add_item(pdutree, hf_cflow_peer_srcas, tvb, offset, length, FALSE); break; case 129: /* dest AS Peer*/ - proto_tree_add_item(pdutree, hf_cflow_peer_dstas, + ti = proto_tree_add_item(pdutree, hf_cflow_peer_dstas, tvb, offset, length, FALSE); break; case 130: /* exporterIPv4Address */ - proto_tree_add_item(pdutree, hf_cflow_exporter_addr, + ti = proto_tree_add_item(pdutree, hf_cflow_exporter_addr, tvb, offset, length, FALSE); break; case 131: /* exporterIPv6Address */ - proto_tree_add_item(pdutree, + ti = proto_tree_add_item(pdutree, hf_cflow_exporter_addr_v6, tvb, offset, length, FALSE); break; case 132: /* droppedOctetDeltaCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_drop_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_drop_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Dropped Octets: length %u", length); } @@ -2132,13 +2134,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 133: /* droppedPacketDeltaCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_drop_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_drop_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Dropped Packets: length %u", length); } @@ -2146,111 +2148,111 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 134: /* droppedOctetTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_drop_total_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_total_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_drop_total_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_total_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Dropped Total Octets: length %u", length); } break; case 135: /* droppedPacketTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_drop_total_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_total_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_drop_total_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_drop_total_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Dropped Total Packets: length %u", length); } break; case 136: /* flowEndReason */ - proto_tree_add_item(pdutree, hf_cflow_flow_end_reason, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_end_reason, tvb, offset, length, FALSE); break; case 137: /* commonPropertiesId */ - proto_tree_add_item(pdutree, hf_cflow_common_properties_id, + ti = proto_tree_add_item(pdutree, hf_cflow_common_properties_id, tvb, offset, length, FALSE); break; case 138: /* observationPointId */ - proto_tree_add_item(pdutree, hf_cflow_observation_point_id, + ti = proto_tree_add_item(pdutree, hf_cflow_observation_point_id, tvb, offset, length, FALSE); break; case 139: /* icmpTypeCodeIPv6 */ - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_type, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_type, tvb, offset, 1, FALSE); - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_code, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_code, tvb, offset + 1, 1, FALSE); break; case 140: /* mplsTopLabelIPv6Address */ if (length == 16) { - proto_tree_add_item(pdutree, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_pe_addr_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "mplsTopLabelIPv6Addr: length %u", length); } break; case 141: /* lineCardId */ - proto_tree_add_item(pdutree, hf_cflow_scope_linecard, + ti = proto_tree_add_item(pdutree, hf_cflow_scope_linecard, tvb, offset, length, FALSE); break; case 142: /* portId */ - proto_tree_add_item(pdutree, hf_cflow_port_id, + ti = proto_tree_add_item(pdutree, hf_cflow_port_id, tvb, offset, length, FALSE); break; case 143: /* meteringProcessId */ - proto_tree_add_item(pdutree, hf_cflow_mp_id, + ti = proto_tree_add_item(pdutree, hf_cflow_mp_id, tvb, offset, length, FALSE); break; case 144: /* FLOW EXPORTER */ - proto_tree_add_item(pdutree, hf_cflow_flow_exporter, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_exporter, tvb, offset, length, FALSE); break; case 145: /* templateId */ - proto_tree_add_item(pdutree, hf_cflow_template_id, + ti = proto_tree_add_item(pdutree, hf_cflow_template_id, tvb, offset, length, FALSE); break; case 146: /* wlanChannelId */ - proto_tree_add_item(pdutree, hf_cflow_wlan_channel_id, + ti = proto_tree_add_item(pdutree, hf_cflow_wlan_channel_id, tvb, offset, length, FALSE); break; case 147: /* wlanSSID */ - proto_tree_add_item(pdutree, hf_cflow_wlan_ssid, + ti = proto_tree_add_item(pdutree, hf_cflow_wlan_ssid, tvb, offset, length, FALSE); break; case 148: /* flowId */ - proto_tree_add_item(pdutree, hf_cflow_flow_id, + ti = proto_tree_add_item(pdutree, hf_cflow_flow_id, tvb, offset, length, FALSE); break; case 149: /* observationDomainId */ - proto_tree_add_item(pdutree, hf_cflow_od_id, + ti = proto_tree_add_item(pdutree, hf_cflow_od_id, tvb, offset, length, FALSE); break; case 160: /* systemInitTimeMilliseconds */ - proto_tree_add_item(pdutree, hf_cflow_sysuptime, + ti = proto_tree_add_item(pdutree, hf_cflow_sysuptime, tvb, offset, length, FALSE); break; @@ -2258,7 +2260,7 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of msec_delta = tvb_get_ntohl(tvb, offset); ts_delta.secs = msec_delta / 1000; ts_delta.nsecs = (msec_delta % 1000) * 1000000; - proto_tree_add_time(pdutree, hf_cflow_timedelta, tvb, + ti = proto_tree_add_time(pdutree, hf_cflow_timedelta, tvb, offset, length, &ts_delta); break; @@ -2266,19 +2268,19 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of msec_delta = tvb_get_ntohl(tvb, offset); ts_delta.secs = msec_delta / 1000000; ts_delta.nsecs = (msec_delta % 1000000) * 1000000; - proto_tree_add_time(pdutree, hf_cflow_timedelta, tvb, + ti = proto_tree_add_time(pdutree, hf_cflow_timedelta, tvb, offset, length, &ts_delta); break; case 164: /* ignoredPacketTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_ignore_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_ignore_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_ignore_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_ignore_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Ignored Packets: length %u", length); } @@ -2286,13 +2288,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 165: /* ignoredOctetTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_ignore_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_ignore_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_ignore_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_ignore_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Ignored Octets: length %u", length); } @@ -2300,13 +2302,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 166: /* notSentFlowTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_notsent_flows, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_flows, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_notsent_flows64, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_flows64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Not Sent Flows: length %u", length); } @@ -2314,13 +2316,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 167: /* notSentPacketTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_notsent_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_notsent_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Not Sent Packets: length %u", length); } @@ -2328,13 +2330,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 168: /* notSentOctetTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_notsent_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_notsent_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_notsent_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Not Sent Packets: length %u", length); } @@ -2342,10 +2344,10 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 169: /* destinationIPv6Prefix */ if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_dstnet_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_dstnet_v6, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "DstPrefix: length %u", length); } @@ -2353,10 +2355,10 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 170: /* sourceIPv6Prefix */ if (length == 16) { - proto_tree_add_item(pdutree, hf_cflow_srcnet_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_srcnet_v6, tvb, offset, length, FALSE); } else if (length != 4 && length != 16) { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "SrcPrefix: length %u", length); } @@ -2364,13 +2366,13 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 171: /* postOctetTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_total_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_octets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_total_octets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_octets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Total Octets: length %u", length); } @@ -2378,32 +2380,32 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 172: /* postPacketTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_total_packets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_packets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_total_packets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_packets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Total Packets: length %u", length); } break; case 173: /* flowKeyIndicator */ - proto_tree_add_item(pdutree, hf_cflow_key, + ti = proto_tree_add_item(pdutree, hf_cflow_key, tvb, offset, length, FALSE); break; case 174: /* postMCastPacketTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_total_mulpackets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_mulpackets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_total_mulpackets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_mulpackets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Total Multicast Packets: length %u", length); } @@ -2411,756 +2413,756 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of case 175: /* postMCastOctetTotalCount */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_post_total_muloctets, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_muloctets, tvb, offset, length, FALSE); } else if (length == 8) { - proto_tree_add_item(pdutree, hf_cflow_post_total_muloctets64, + ti = proto_tree_add_item(pdutree, hf_cflow_post_total_muloctets64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Post Total Multicast Octets: length %u", length); } break; case 176: /* ICMP_IPv4_TYPE */ - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv4_type, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv4_type, tvb, offset, length, FALSE); break; case 177: /* ICMP_IPv4_CODE */ - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv4_code, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv4_code, tvb, offset, length, FALSE); break; case 178: /* ICMP_IPv6_TYPE */ - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_type, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_type, tvb, offset, length, FALSE); break; case 179: /* ICMP_IPv6_CODE */ - proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_code, + ti = proto_tree_add_item(pdutree, hf_cflow_icmp_ipv6_code, tvb, offset, length, FALSE); break; case 184: /* tcpSequenceNumber */ - proto_tree_add_item(pdutree, hf_cflow_tcp_seq_num, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_seq_num, tvb, offset, length, FALSE); break; case 185: /* tcpAcknowledgementNumber */ - proto_tree_add_item(pdutree, hf_cflow_tcp_ack_num, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_ack_num, tvb, offset, length, FALSE); break; case 186: /* TCP_WINDOWS_SIZE */ - proto_tree_add_item(pdutree, hf_cflow_tcp_window_size, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_window_size, tvb, offset, length, FALSE); break; case 187: /* tcpUrgentPointer */ - proto_tree_add_item(pdutree, hf_cflow_tcp_urg_ptr, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_urg_ptr, tvb, offset, length, FALSE); break; case 188: /* tcpHeaderLength */ - proto_tree_add_item(pdutree, hf_cflow_tcp_header_length, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_header_length, tvb, offset, length, FALSE); break; case 189: /* ipHeaderLength */ - proto_tree_add_item(pdutree, hf_cflow_ip_header_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_header_length, tvb, offset, length, FALSE); break; case 190: /* IP_TOTAL_LENGTH */ - proto_tree_add_item(pdutree, hf_cflow_ip_total_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_total_length, tvb, offset, length, FALSE); break; case 191: /* payloadLengthIPv6 */ - proto_tree_add_item(pdutree, hf_cflow_ipv6_payload_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv6_payload_length, tvb, offset, length, FALSE); break; case 192: /* IP_TTL */ - proto_tree_add_item(pdutree, hf_cflow_ip_ttl, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_ttl, tvb, offset, length, FALSE); break; case 193: /* nextHeaderIPv6 */ - proto_tree_add_item(pdutree, hf_cflow_ipv6_next_hdr, + ti = proto_tree_add_item(pdutree, hf_cflow_ipv6_next_hdr, tvb, offset, length, FALSE); break; case 194: /* IP_TOS */ - proto_tree_add_item(pdutree, hf_cflow_ip_tos, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_tos, tvb, offset, length, FALSE); break; case 195: /* IP_DSCP */ - proto_tree_add_item(pdutree, hf_cflow_ip_dscp, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_dscp, tvb, offset, length, FALSE); break; case 196: /* ipPrecedence */ - proto_tree_add_item(pdutree, hf_cflow_ip_precedence, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_precedence, tvb, offset, length, FALSE); break; case 197: /* fragmentFlags */ - proto_tree_add_item(pdutree, hf_cflow_ip_fragment_flags, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_fragment_flags, tvb, offset, length, FALSE); break; case 198: /* BYTES_SQUARED */ case 199: /* BYTES_SQUARED_PERMANENT */ if( length == 8 ) { - proto_tree_add_item(pdutree, hf_cflow_octets_squared64, + ti = proto_tree_add_item(pdutree, hf_cflow_octets_squared64, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Bytes Squared: length %u", length); } break; case 200: /* mplsTopLabelTTL */ - proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_ttl, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_ttl, tvb, offset, length, FALSE); break; case 201: /* mplsLabelStackLength */ - proto_tree_add_item(pdutree, hf_cflow_mpls_label_length, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_label_length, tvb, offset, length, FALSE); break; case 202: /* mplsLabelStackDepth */ - proto_tree_add_item(pdutree, hf_cflow_mpls_label_depth, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_label_depth, tvb, offset, length, FALSE); break; case 203: /* mplsTopLabelExp */ - proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_exp, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_top_label_exp, tvb, offset, length, FALSE); break; case 204: /* ipPayloadLength */ - proto_tree_add_item(pdutree, hf_cflow_ip_payload_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_payload_length, tvb, offset, length, FALSE); break; case 205: /* UDP_LENGTH */ - proto_tree_add_item(pdutree, hf_cflow_udp_length, + ti = proto_tree_add_item(pdutree, hf_cflow_udp_length, tvb, offset, length, FALSE); break; case 206: /* IS_MULTICAST */ - proto_tree_add_item(pdutree, hf_cflow_is_multicast, + ti = proto_tree_add_item(pdutree, hf_cflow_is_multicast, tvb, offset, length, FALSE); break; case 207: /* IP_HEADER_WORDS */ - proto_tree_add_item(pdutree, hf_cflow_ip_header_words, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_header_words, tvb, offset, length, FALSE); break; case 208: /* OPTION_MAP */ - proto_tree_add_item(pdutree, hf_cflow_option_map, + ti = proto_tree_add_item(pdutree, hf_cflow_option_map, tvb, offset, length, FALSE); break; case 209: /* tcpOptions */ - proto_tree_add_item(pdutree, hf_cflow_tcp_option_map, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_option_map, tvb, offset, length, FALSE); break; case 210: /* paddingOctets */ - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "Padding (%u byte%s)", length, plurality(length, "", "s")); break; case 211: /* collectorIPv4Address */ - proto_tree_add_item(pdutree, hf_cflow_collector_addr, + ti = proto_tree_add_item(pdutree, hf_cflow_collector_addr, tvb, offset, length, FALSE); break; case 212: /* collectorIPv6Address */ - proto_tree_add_item(pdutree, hf_cflow_collector_addr_v6, + ti = proto_tree_add_item(pdutree, hf_cflow_collector_addr_v6, tvb, offset, length, FALSE); break; case 213: /* exportInterface */ if (length == 4) { - proto_tree_add_item(pdutree, hf_cflow_export_interface, + ti = proto_tree_add_item(pdutree, hf_cflow_export_interface, tvb, offset, length, FALSE); } else { - proto_tree_add_text(pdutree, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "exportInterface: invalid size %d", length ); } break; case 214: /* exportProtocolVersion */ - proto_tree_add_item(pdutree, hf_cflow_export_protocol_version, + ti = proto_tree_add_item(pdutree, hf_cflow_export_protocol_version, tvb, offset, length, FALSE); break; case 215: /* exportTransportProtocol */ - proto_tree_add_item(pdutree, hf_cflow_export_prot, + ti = proto_tree_add_item(pdutree, hf_cflow_export_prot, tvb, offset, length, FALSE); break; case 216: /* collectorTransportPort */ - proto_tree_add_item(pdutree, hf_cflow_collector_port, + ti = proto_tree_add_item(pdutree, hf_cflow_collector_port, tvb, offset, length, FALSE); break; case 217: /* exporterTransportPort */ - proto_tree_add_item(pdutree, hf_cflow_exporter_port, + ti = proto_tree_add_item(pdutree, hf_cflow_exporter_port, tvb, offset, length, FALSE); break; case 218: /* tcpSynTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_syn, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_syn, tvb, offset, length, FALSE); break; case 219: /* tcpFinTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_fin, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_fin, tvb, offset, length, FALSE); break; case 220: /* tcpRstTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_rst, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_rst, tvb, offset, length, FALSE); break; case 221: /* tcpPshTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_psh, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_psh, tvb, offset, length, FALSE); break; case 222: /* tcpAckTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_ack, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_ack, tvb, offset, length, FALSE); break; case 223: /* tcpUrgTotalCount */ - proto_tree_add_item(pdutree, hf_cflow_total_tcp_urg, + ti = proto_tree_add_item(pdutree, hf_cflow_total_tcp_urg, tvb, offset, length, FALSE); break; case 224: /* IP_TOTAL_LENGTH */ - proto_tree_add_item(pdutree, hf_cflow_ip_total_length64, + ti = proto_tree_add_item(pdutree, hf_cflow_ip_total_length64, tvb, offset, length, FALSE); break; case 237: /* postMplsTopLabelExp */ - proto_tree_add_item(pdutree, hf_cflow_post_mpls_top_label_exp, + ti = proto_tree_add_item(pdutree, hf_cflow_post_mpls_top_label_exp, tvb, offset, length, FALSE); break; case 238: /* tcpWindowScale */ - proto_tree_add_item(pdutree, hf_cflow_tcp_window_scale, + ti = proto_tree_add_item(pdutree, hf_cflow_tcp_window_scale, tvb, offset, length, FALSE); break; case 239: /* biflowDirection */ - proto_tree_add_item(pdutree, hf_cflow_biflow_direction, + ti = proto_tree_add_item(pdutree, hf_cflow_biflow_direction, tvb, offset, length, FALSE); break; case 240: /* ethernetHeaderLength */ - proto_tree_add_item(pdutree, hf_cflow_ethernet_header_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ethernet_header_length, tvb, offset, length, FALSE); break; case 241: /* ethernetPayloadLength */ - proto_tree_add_item(pdutree, hf_cflow_ethernet_payload_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ethernet_payload_length, tvb, offset, length, FALSE); break; case 242: /* ethernetTotalLength */ - proto_tree_add_item(pdutree, hf_cflow_ethernet_total_length, + ti = proto_tree_add_item(pdutree, hf_cflow_ethernet_total_length, tvb, offset, length, FALSE); break; case 243: /* dot1qVlanId */ - proto_tree_add_item(pdutree, hf_cflow_dot1q_vlan_id, + ti = proto_tree_add_item(pdutree, hf_cflow_dot1q_vlan_id, tvb, offset, length, FALSE); break; case 244: /* dot1qPriority */ - proto_tree_add_item(pdutree, hf_cflow_dot1q_priority, + ti = proto_tree_add_item(pdutree, hf_cflow_dot1q_priority, tvb, offset, length, FALSE); break; case 245: /* dot1qCustomerVlanId */ - proto_tree_add_item(pdutree, hf_cflow_dot1q_customer_vlan_id, + ti = proto_tree_add_item(pdutree, hf_cflow_dot1q_customer_vlan_id, tvb, offset, length, FALSE); break; case 246: /* dot1qCustomerPriority */ - proto_tree_add_item(pdutree, hf_cflow_dot1q_customer_priority, + ti = proto_tree_add_item(pdutree, hf_cflow_dot1q_customer_priority, tvb, offset, length, FALSE); break; case 247: /* metroEvcId */ - proto_tree_add_item(pdutree, hf_cflow_metro_evc_id, + ti = proto_tree_add_item(pdutree, hf_cflow_metro_evc_id, tvb, offset, length, FALSE); break; case 248: /* metroEvcType */ - proto_tree_add_item(pdutree, hf_cflow_metro_evc_type, + ti = proto_tree_add_item(pdutree, hf_cflow_metro_evc_type, tvb, offset, length, FALSE); break; case 249: /* pseudoWireId */ - proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_id, + ti = proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_id, tvb, offset, length, FALSE); break; case 250: /* pseudoWireType */ - proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_type, + ti = proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_type, tvb, offset, length, FALSE); break; case 251: /* pseudoWireControlWord */ - proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_control_word, + ti = proto_tree_add_item(pdutree, hf_cflow_pseudo_wire_control_word, tvb, offset, length, FALSE); break; case 252: /* ingressPhysicalInterface */ - proto_tree_add_item(pdutree, hf_cflow_ingress_physical_interface, + ti = proto_tree_add_item(pdutree, hf_cflow_ingress_physical_interface, tvb, offset, length, FALSE); break; case 253: /* egressPhysicalInterface */ - proto_tree_add_item(pdutree, hf_cflow_egress_physical_interface, + ti = proto_tree_add_item(pdutree, hf_cflow_egress_physical_interface, tvb, offset, length, FALSE); break; case 254: /* postDot1qVlanId */ - proto_tree_add_item(pdutree, hf_cflow_post_dot1q_vlan_id, + ti = proto_tree_add_item(pdutree, hf_cflow_post_dot1q_vlan_id, tvb, offset, length, FALSE); break; case 255: /* postDot1qCustomerVlanId */ - proto_tree_add_item(pdutree, hf_cflow_post_dot1q_customer_vlan_id, + ti = proto_tree_add_item(pdutree, hf_cflow_post_dot1q_customer_vlan_id, tvb, offset, length, FALSE); break; case 256: /* ethernetType */ - proto_tree_add_item(pdutree, hf_cflow_ethernet_type, + ti = proto_tree_add_item(pdutree, hf_cflow_ethernet_type, tvb, offset, length, FALSE); break; case 257: /* postIpPrecedence */ - proto_tree_add_item(pdutree, hf_cflow_post_ip_precedence, + ti = proto_tree_add_item(pdutree, hf_cflow_post_ip_precedence, tvb, offset, length, FALSE); break; case 258: /* collectionTimeMilliseconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = tvb_get_ntohl(tvb, offset + 4); - timeitem = proto_tree_add_time(pdutree, + ti = proto_tree_add_time(pdutree, hf_cflow_collection_time_milliseconds, tvb, offset, length, &ts); break; case 259: /* exportSctpStreamId */ - proto_tree_add_item(pdutree, hf_cflow_export_sctp_stream_id, + ti = proto_tree_add_item(pdutree, hf_cflow_export_sctp_stream_id, tvb, offset, length, FALSE); break; case 260: /* maxExportSeconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = 0; - proto_tree_add_time(pdutree, hf_cflow_max_export_seconds, + ti = proto_tree_add_time(pdutree, hf_cflow_max_export_seconds, tvb, offset, length, &ts); break; case 261: /* maxFlowEndSeconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = 0; - proto_tree_add_time(pdutree, hf_cflow_max_flow_end_seconds, + ti = proto_tree_add_time(pdutree, hf_cflow_max_flow_end_seconds, tvb, offset, length, &ts); break; case 262: /* messageMD5Checksum */ - proto_tree_add_item(pdutree, hf_cflow_message_md5_checksum, + ti = proto_tree_add_item(pdutree, hf_cflow_message_md5_checksum, tvb, offset, length, FALSE); break; case 263: /* messageScope */ - proto_tree_add_item(pdutree, hf_cflow_message_scope, + ti = proto_tree_add_item(pdutree, hf_cflow_message_scope, tvb, offset, length, FALSE); break; case 264: /* minExportSeconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = 0; - proto_tree_add_time(pdutree, hf_cflow_min_export_seconds, + ti = proto_tree_add_time(pdutree, hf_cflow_min_export_seconds, tvb, offset, length, &ts); break; case 265: /* minFlowStartSeconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = 0; - proto_tree_add_time(pdutree, hf_cflow_min_flow_start_seconds, + ti = proto_tree_add_time(pdutree, hf_cflow_min_flow_start_seconds, tvb, offset, length, &ts); break; case 266: /* opaqueOctets */ - proto_tree_add_item(pdutree, hf_cflow_opaque_octets, + ti = proto_tree_add_item(pdutree, hf_cflow_opaque_octets, tvb, offset, length, FALSE); break; case 267: /* sessionScope */ - proto_tree_add_item(pdutree, hf_cflow_session_scope, + ti = proto_tree_add_item(pdutree, hf_cflow_session_scope, tvb, offset, length, FALSE); break; case 268: /* maxFlowEndMicroseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_max_flow_end_microseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_max_flow_end_microseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 269: /* maxFlowEndMilliseconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = tvb_get_ntohl(tvb, offset + 4); - proto_tree_add_time(pdutree, hf_cflow_max_flow_end_milliseconds, + ti = proto_tree_add_time(pdutree, hf_cflow_max_flow_end_milliseconds, tvb, offset, length, &ts); break; case 270: /* maxFlowEndNanoseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_max_flow_end_nanoseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_max_flow_end_nanoseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 271: /* minFlowStartMicroseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_min_flow_start_microseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_min_flow_start_microseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 272: /* minFlowStartMilliseconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = tvb_get_ntohl(tvb, offset + 4); - proto_tree_add_time(pdutree, hf_cflow_min_flow_start_milliseconds, + ti = proto_tree_add_time(pdutree, hf_cflow_min_flow_start_milliseconds, tvb, offset, length, &ts); break; case 273: /* minFlowStartNanoseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_min_flow_start_nanoseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_min_flow_start_nanoseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 274: /* collectorCertificate */ - proto_tree_add_item(pdutree, hf_cflow_collector_certificate, + ti = proto_tree_add_item(pdutree, hf_cflow_collector_certificate, tvb, offset, length, FALSE); break; case 275: /* exporterCertificate */ - proto_tree_add_item(pdutree, hf_cflow_exporter_certificate, + ti = proto_tree_add_item(pdutree, hf_cflow_exporter_certificate, tvb, offset, length, FALSE); break; case 301: /* selectionSequenceId */ - proto_tree_add_item(pdutree, hf_cflow_selection_sequence_id, + ti = proto_tree_add_item(pdutree, hf_cflow_selection_sequence_id, tvb, offset, length, FALSE); break; case 302: /* selectorId */ - proto_tree_add_item(pdutree, hf_cflow_selector_id, + ti = proto_tree_add_item(pdutree, hf_cflow_selector_id, tvb, offset, length, FALSE); break; case 303: /* informationElementId */ - proto_tree_add_item(pdutree, hf_cflow_information_element_id, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_id, tvb, offset, length, FALSE); break; case 304: /* selectorAlgorithm */ - proto_tree_add_item(pdutree, hf_cflow_selector_algorithm, + ti = proto_tree_add_item(pdutree, hf_cflow_selector_algorithm, tvb, offset, length, FALSE); break; case 305: /* samplingPacketInterval */ - proto_tree_add_item(pdutree, hf_cflow_sampling_packet_interval, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_packet_interval, tvb, offset, length, FALSE); break; case 306: /* samplingPacketSpace */ - proto_tree_add_item(pdutree, hf_cflow_sampling_packet_space, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_packet_space, tvb, offset, length, FALSE); break; case 307: /* samplingTimeInterval */ - proto_tree_add_item(pdutree, hf_cflow_sampling_time_interval, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_time_interval, tvb, offset, length, FALSE); break; case 308: /* samplingTimeSpace */ - proto_tree_add_item(pdutree, hf_cflow_sampling_time_space, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_time_space, tvb, offset, length, FALSE); break; case 309: /* samplingSize */ - proto_tree_add_item(pdutree, hf_cflow_sampling_size, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_size, tvb, offset, length, FALSE); break; case 310: /* samplingPopulation */ - proto_tree_add_item(pdutree, hf_cflow_sampling_population, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_population, tvb, offset, length, FALSE); break; case 311: /* samplingProbability */ - proto_tree_add_item(pdutree, hf_cflow_sampling_probability, + ti = proto_tree_add_item(pdutree, hf_cflow_sampling_probability, tvb, offset, length, FALSE); break; case 313: /* SECTION_HEADER */ - proto_tree_add_item(pdutree, hf_cflow_section_header, + ti = proto_tree_add_item(pdutree, hf_cflow_section_header, tvb, offset, length, FALSE); break; case 314: /* SECTION_PAYLOAD */ - proto_tree_add_item(pdutree, hf_cflow_section_payload, + ti = proto_tree_add_item(pdutree, hf_cflow_section_payload, tvb, offset, length, FALSE); break; case 316: /* mplsLabelStackSection */ - proto_tree_add_item(pdutree, hf_cflow_mpls_label_stack_section, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_label_stack_section, tvb, offset, length, FALSE); break; case 317: /* mplsPayloadPacketSection */ - proto_tree_add_item(pdutree, hf_cflow_mpls_payload_packet_section, + ti = proto_tree_add_item(pdutree, hf_cflow_mpls_payload_packet_section, tvb, offset, length, FALSE); break; case 318: /* selectorIdTotalPktsObserved */ - proto_tree_add_item(pdutree, hf_cflow_selector_id_total_pkts_observed, + ti = proto_tree_add_item(pdutree, hf_cflow_selector_id_total_pkts_observed, tvb, offset, length, FALSE); break; case 319: /* selectorIdTotalPktsSelected */ - proto_tree_add_item(pdutree, hf_cflow_selector_id_total_pkts_selected, + ti = proto_tree_add_item(pdutree, hf_cflow_selector_id_total_pkts_selected, tvb, offset, length, FALSE); break; case 320: /* absoluteError */ - proto_tree_add_item(pdutree, hf_cflow_absolute_error, + ti = proto_tree_add_item(pdutree, hf_cflow_absolute_error, tvb, offset, length, FALSE); break; case 321: /* relativeError */ - proto_tree_add_item(pdutree, hf_cflow_relative_error, + ti = proto_tree_add_item(pdutree, hf_cflow_relative_error, tvb, offset, length, FALSE); break; case 322: /* observationTimeSeconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = 0; - proto_tree_add_time(pdutree, hf_cflow_observation_time_seconds, + ti = proto_tree_add_time(pdutree, hf_cflow_observation_time_seconds, tvb, offset, length, &ts); break; case 323: /* observationTimeMilliseconds */ ts.secs = tvb_get_ntohl(tvb, offset); ts.nsecs = tvb_get_ntohl(tvb, offset + 4); - proto_tree_add_time(pdutree, hf_cflow_observation_time_milliseconds, + ti = proto_tree_add_time(pdutree, hf_cflow_observation_time_milliseconds, tvb, offset, length, &ts); break; case 324: /* observationTimeMicroseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_observation_time_microseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_observation_time_microseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 325: /* observationTimeNanoseconds */ reftime = tvb_get_ptr(tvb, offset, 8); - proto_tree_add_bytes_format_value(pdutree, hf_cflow_observation_time_nanoseconds, + ti = proto_tree_add_bytes_format_value(pdutree, hf_cflow_observation_time_nanoseconds, tvb, offset, length, reftime, "%s", ntp_fmt_ts(reftime)); break; case 326: /* digestHashValue */ - proto_tree_add_item(pdutree, hf_cflow_digest_hash_value, + ti = proto_tree_add_item(pdutree, hf_cflow_digest_hash_value, tvb, offset, length, FALSE); break; case 327: /* hashIPPayloadOffset */ - proto_tree_add_item(pdutree, hf_cflow_hash_ippayload_offset, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_ippayload_offset, tvb, offset, length, FALSE); break; case 328: /* hashIPPayloadSize */ - proto_tree_add_item(pdutree, hf_cflow_hash_ippayload_size, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_ippayload_size, tvb, offset, length, FALSE); break; case 329: /* hashOutputRangeMin */ - proto_tree_add_item(pdutree, hf_cflow_hash_output_range_min, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_output_range_min, tvb, offset, length, FALSE); break; case 330: /* hashOutputRangeMax */ - proto_tree_add_item(pdutree, hf_cflow_hash_output_range_max, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_output_range_max, tvb, offset, length, FALSE); break; case 331: /* hashSelectedRangeMin */ - proto_tree_add_item(pdutree, hf_cflow_hash_selected_range_min, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_selected_range_min, tvb, offset, length, FALSE); break; case 332: /* hashSelectedRangeMax */ - proto_tree_add_item(pdutree, hf_cflow_hash_selected_range_max, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_selected_range_max, tvb, offset, length, FALSE); break; case 333: /* hashDigestOutput */ - proto_tree_add_item(pdutree, hf_cflow_hash_digest_output, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_digest_output, tvb, offset, length, FALSE); break; case 334: /* hashInitialiserValue */ - proto_tree_add_item(pdutree, hf_cflow_hash_initialiser_value, + ti = proto_tree_add_item(pdutree, hf_cflow_hash_initialiser_value, tvb, offset, length, FALSE); break; case 335: /* selectorName */ - proto_tree_add_item(pdutree, hf_cflow_selector_name, + ti = proto_tree_add_item(pdutree, hf_cflow_selector_name, tvb, offset, length, FALSE); break; case 336: /* upperCILimit */ - proto_tree_add_item(pdutree, hf_cflow_upper_cilimit, + ti = proto_tree_add_item(pdutree, hf_cflow_upper_cilimit, tvb, offset, length, FALSE); break; case 337: /* lowerCILimit */ - proto_tree_add_item(pdutree, hf_cflow_lower_cilimit, + ti = proto_tree_add_item(pdutree, hf_cflow_lower_cilimit, tvb, offset, length, FALSE); break; case 338: /* confidenceLevel */ - proto_tree_add_item(pdutree, hf_cflow_confidence_level, + ti = proto_tree_add_item(pdutree, hf_cflow_confidence_level, tvb, offset, length, FALSE); break; case 339: /* informationElementDataType */ - proto_tree_add_item(pdutree, hf_cflow_information_element_data_type, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_data_type, tvb, offset, length, FALSE); break; case 340: /* informationElementDescription */ - proto_tree_add_item(pdutree, hf_cflow_information_element_description, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_description, tvb, offset, length, FALSE); break; case 341: /* informationElementName */ - proto_tree_add_item(pdutree, hf_cflow_information_element_name, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_name, tvb, offset, length, FALSE); break; case 342: /* informationElementRangeBegin */ - proto_tree_add_item(pdutree, hf_cflow_information_element_range_begin, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_range_begin, tvb, offset, length, FALSE); break; case 343: /* informationElementRangeEnd */ - proto_tree_add_item(pdutree, hf_cflow_information_element_range_end, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_range_end, tvb, offset, length, FALSE); break; case 344: /* informationElementSemantics */ - proto_tree_add_item(pdutree, hf_cflow_information_element_semantics, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_semantics, tvb, offset, length, FALSE); break; case 345: /* informationElementUnits */ - proto_tree_add_item(pdutree, hf_cflow_information_element_units, + ti = proto_tree_add_item(pdutree, hf_cflow_information_element_units, tvb, offset, length, FALSE); break; case 346: /* privateEnterpriseNumber */ - proto_tree_add_item(pdutree, hf_cflow_private_enterprise_number, + ti = proto_tree_add_item(pdutree, hf_cflow_private_enterprise_number, tvb, offset, length, FALSE); break; /* CACE Technologies */ case VENDOR_CACE << 16 | 0: /* caceLocalIPv4Address */ - proto_tree_add_item(pdutree, hf_pie_cace_local_ipv4_address, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_ipv4_address, tvb, offset, length, FALSE); SET_ADDRESS(&local_addr, AT_IPv4, 4, tvb_get_ptr(tvb, offset, 4)); got_flags |= GOT_LOCAL_ADDR; break; case VENDOR_CACE << 16 | 1: /* caceRemoteIPv4Address */ - proto_tree_add_item(pdutree, hf_pie_cace_remote_ipv4_address, + ti = proto_tree_add_item(pdutree, hf_pie_cace_remote_ipv4_address, tvb, offset, length, FALSE); SET_ADDRESS(&remote_addr, AT_IPv4, 4, tvb_get_ptr(tvb, offset, 4)); got_flags |= GOT_REMOTE_ADDR; break; case VENDOR_CACE << 16 | 2: /* caceLocalIPv6Address */ - proto_tree_add_item(pdutree, hf_pie_cace_local_ipv6_address, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_ipv6_address, tvb, offset, length, FALSE); SET_ADDRESS(&local_addr, AT_IPv6, 16, tvb_get_ptr(tvb, offset, 16)); got_flags |= GOT_LOCAL_ADDR; break; case VENDOR_CACE << 16 | 3: /* caceRemoteIPv6Address */ - proto_tree_add_item(pdutree, hf_pie_cace_remote_ipv6_address, + ti = proto_tree_add_item(pdutree, hf_pie_cace_remote_ipv6_address, tvb, offset, length, FALSE); SET_ADDRESS(&remote_addr, AT_IPv6, 16, tvb_get_ptr(tvb, offset, 16)); got_flags |= GOT_REMOTE_ADDR; break; case VENDOR_CACE << 16 | 4: /* caceLocalTransportPort */ - proto_tree_add_item(pdutree, hf_pie_cace_local_port, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_port, tvb, offset, length, FALSE); local_port = tvb_get_ntohs(tvb, offset); got_flags |= GOT_LOCAL_PORT; break; case VENDOR_CACE << 16 | 5: /* caceRemoteTransportPort */ - proto_tree_add_item(pdutree, hf_pie_cace_remote_port, + ti = proto_tree_add_item(pdutree, hf_pie_cace_remote_port, tvb, offset, length, FALSE); remote_port = tvb_get_ntohs(tvb, offset); got_flags |= GOT_REMOTE_PORT; break; case VENDOR_CACE << 16 | 6: /* caceLocalIPv4id */ - proto_tree_add_item(pdutree, hf_pie_cace_local_ipv4_id, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_ipv4_id, tvb, offset, length, FALSE); ipv4_id = tvb_get_ntohs(tvb, offset); got_flags |= GOT_IPv4_ID; break; case VENDOR_CACE << 16 | 7: /* caceLocalICMPid */ - proto_tree_add_item(pdutree, hf_pie_cace_local_icmp_id, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_icmp_id, tvb, offset, length, FALSE); icmp_id = tvb_get_ntohs(tvb, offset); got_flags |= GOT_ICMP_ID; break; case VENDOR_CACE << 16 | 8: /* caceLocalProcessUserId */ - proto_tree_add_item(pdutree, hf_pie_cace_local_uid, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_uid, tvb, offset, length, FALSE); uid = tvb_get_ntohl(tvb, offset); got_flags |= GOT_UID; break; case VENDOR_CACE << 16 | 9: /* caceLocalProcessId */ - proto_tree_add_item(pdutree, hf_pie_cace_local_pid, + ti = proto_tree_add_item(pdutree, hf_pie_cace_local_pid, tvb, offset, length, FALSE); pid = tvb_get_ntohl(tvb, offset); got_flags |= GOT_PID; @@ -3171,7 +3173,7 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of uname_str = tvb_format_text(tvb, offset+1, uname_len); proto_tree_add_item(pdutree, hf_pie_cace_local_username_len, tvb, offset, 1, FALSE); - proto_tree_add_string(pdutree, hf_pie_cace_local_username, + ti = proto_tree_add_string(pdutree, hf_pie_cace_local_username, tvb, offset+1, uname_len, uname_str); length = uname_len + 1; got_flags |= GOT_USERNAME; @@ -3182,7 +3184,7 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of cmd_str = tvb_format_text(tvb, offset+1, cmd_len); proto_tree_add_item(pdutree, hf_pie_cace_local_cmd_len, tvb, offset, 1, FALSE); - proto_tree_add_string(pdutree, hf_pie_cace_local_cmd, + ti = proto_tree_add_string(pdutree, hf_pie_cace_local_cmd, tvb, offset+1, cmd_len, cmd_str); length = cmd_len + 1; got_flags |= GOT_COMMAND; @@ -3190,16 +3192,15 @@ dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int of default: if ((type & 0x8000) && (pen != REVPEN)) - proto_tree_add_text(pdutree, tvb, offset, length, + ti = proto_tree_add_text(pdutree, tvb, offset, length, "(%s) Type %u ", match_strval(pen, sminmpec_values), type & 0x7fff); - - else - proto_tree_add_text(pdutree, tvb, offset, length, - "%s Type %u %s", pen == REVPEN ? "Reverse" : "", - type & 0x7fff, decode_v9_template_types(type)); break; } + if (ti && pen == REVPEN) { + proto_item_append_text(ti, " (Reverse Type %u %s)", + type & 0x7fff, decode_v9_template_types(type)); + } offset += length; } @@ -3393,7 +3394,7 @@ dissect_v9_options_template(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutr } static int -dissect_v9_template(proto_tree * pdutree, tvbuff_t * tvb, packet_info *pinfo, int offset, int length, hdrinfo_t * hdrinfo) +dissect_v9_template(proto_tree * pdutree, tvbuff_t * tvb, packet_info *pinfo, int offset, int length, hdrinfo_t * hdrinfo, guint16 flowset_id) { struct v9_template tplt; proto_tree *tplt_tree; @@ -3453,7 +3454,7 @@ dissect_v9_template(proto_tree * pdutree, tvbuff_t * tvb, packet_info *pinfo, in type = tvb_get_ntohs(tvb, offset); entry_length = tvb_get_ntohs(tvb, offset + 2); - if (type & 0x8000) { + if ((flowset_id == 2) && (type & 0x8000)) { pen = tvb_get_ntohl(tvb, offset + 4); } @@ -3464,21 +3465,23 @@ dissect_v9_template(proto_tree * pdutree, tvbuff_t * tvb, packet_info *pinfo, in tplt.entries[i].pen = pen; } - if ((type & 0x8000) && (pen != REVPEN)) { /* except reverse pen */ + if ((flowset_id == 2) && (type & 0x8000) && (pen != REVPEN)) { /* except reverse pen */ proto_tree_add_text(field_tree, tvb, offset, 2, "Type: %u", type & 0x7fff); } else { proto_tree_add_item(field_tree, - hf_cflow_template_field_type, tvb, offset, 2, FALSE); + flowset_id == 0 ? hf_cflow_template_field_type : hf_cflow_template_field_type_ipfix, + tvb, offset, 2, FALSE); } offset += 2; proto_tree_add_item(field_tree, hf_cflow_template_field_length, tvb, offset, 2, FALSE); offset += 2; - if (type & 0x8000) { /* Private Enterprise Number (IPFIX only) */ - proto_tree_add_item(field_tree, + /* Private Enterprise Number (IPFIX only) */ + if ((flowset_id == 2) && (type & 0x8000)) { + proto_tree_add_item(field_tree, hf_cflow_template_field_pen, tvb, offset, 4, FALSE); offset += 4; } @@ -4203,7 +4206,7 @@ proto_register_netflow(void) }, {&hf_cflow_sampling_algorithm, {"Sampling algorithm", "cflow.sampling_algorithm", - FT_UINT8, BASE_DEC, NULL, 0x0, + FT_UINT8, BASE_DEC, VALS(v5_sampling_mode), 0x0, NULL, HFILL} }, {&hf_cflow_flow_active_timeout, diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index 4326cbdc8f..ae373d6431 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -1216,11 +1216,11 @@ static snmp_ue_assoc_t* localize_ue( snmp_ue_assoc_t* o, const guint8* engine, g #define localized_match(a,u,ul,e,el) \ ( a->user.userName.len == ul \ && a->engine.len == el \ - && memcmp( a->user.userName.data, u, (a->user.userName.len < ul) ? a->user.userName.len : ul ) == 0 \ - && memcmp( a->engine.data, e, (a->engine.len < el) ? a->engine.len : el ) == 0 ) + && memcmp( a->user.userName.data, u, ul ) == 0 \ + && memcmp( a->engine.data, e, el ) == 0 ) #define unlocalized_match(a,u,l) \ - ( a->user.userName.len == l && memcmp( a->user.userName.data, u, a->user.userName.len < l ? a->user.userName.len : l) == 0 ) + ( a->user.userName.len == l && memcmp( a->user.userName.data, u, l) == 0 ) static snmp_ue_assoc_t* get_user_assoc(tvbuff_t* engine_tvb, tvbuff_t* user_tvb) { static snmp_ue_assoc_t* a; @@ -3054,7 +3054,8 @@ static void snmp_usm_password_to_key_sha1(const guint8 *password, } -static void process_prefs(void) {} +static void process_prefs(void) { +} static void* snmp_users_copy_cb(void* dest, const void* orig, unsigned len _U_) { const snmp_ue_assoc_t* o = orig; @@ -3085,7 +3086,7 @@ static void* snmp_users_copy_cb(void* dest, const void* orig, unsigned len _U_) d->user.privKey.data = o->user.privKey.data ? g_memdup(o->user.privKey.data,o->user.privKey.len) : NULL; d->user.privKey.len = o->user.privKey.len; - + return d; } @@ -3102,16 +3103,40 @@ static void snmp_users_free_cb(void* p) { static void snmp_users_update_cb(void* p _U_, const char** err) { snmp_ue_assoc_t* ue = p; GString* es = g_string_new(""); - + unsigned i; + *err = NULL; - if (! ue->user.userName.len) g_string_append(es,"no userName, "); + if (! ue->user.userName.len) + g_string_append_printf(es,"no userName\n",num_ueas); + for (i=0; iuser.userName.len == ue->user.userName.len + && u->engine.len == ue->engine.len ) { + + if (u->engine.len > 0 && memcmp( u->engine.data, ue->engine.data, u->engine.len ) == 0) { + if ( memcmp( u->user.userName.data, ue->user.userName.data, ue->user.userName.len ) == 0 ) { + /* XXX: make a string for the engineId */ + g_string_append_printf(es,"duplicate key (userName='%s' engineId='???')\n",ue->user.userName.data); + } + } + + if (u->engine.len == 0) { + if ( memcmp( u->user.userName.data, ue->user.userName.data, ue->user.userName.len ) == 0 ) { + g_string_append_printf(es,"duplicate key (userName='%s' engineId=NONE)\n",ue->user.userName.data); + } + } + } + } + if (es->len) { g_string_truncate(es,es->len-2); *err = ep_strdup(es->str); } - + g_string_free(es,TRUE); return; @@ -3485,7 +3510,7 @@ void proto_register_snmp(void) { "snmp.T_operation", HFILL }}, /*--- End of included file: packet-snmp-hfarr.c ---*/ -#line 2000 "packet-snmp-template.c" +#line 2025 "packet-snmp-template.c" }; /* List of subtrees */ @@ -3525,7 +3550,7 @@ void proto_register_snmp(void) { &ett_snmp_RReqPDU_U, /*--- End of included file: packet-snmp-ettarr.c ---*/ -#line 2016 "packet-snmp-template.c" +#line 2041 "packet-snmp-template.c" }; module_t *snmp_module; @@ -3621,6 +3646,7 @@ void proto_register_snmp(void) { value_sub_dissectors_table = register_dissector_table("snmp.variable_oid","SNMP Variable OID", FT_STRING, BASE_NONE); register_init_routine(renew_ue_cache); + } diff --git a/fileset.c b/fileset.c index b7cb105bb0..b7a57e27ae 100644 --- a/fileset.c +++ b/fileset.c @@ -62,8 +62,8 @@ typedef struct _fileset { - GList *entries; - const char *dirname; + GList *entries; + char *dirname; } fileset; /* this is the fileset's global data */ @@ -192,7 +192,7 @@ fileset_add_file(const char *dirname, const char *fname, gboolean current) /* Show statistics if they are valid */ if( result == 0 ) { - entry = g_malloc(sizeof(fileset_entry)); + entry = (fileset_entry *)g_malloc(sizeof(fileset_entry)); entry->fullname = g_strdup(path); entry->name = g_strdup(fname); @@ -217,10 +217,10 @@ fileset_add_file(const char *dirname, const char *fname, gboolean current) static gint fileset_sort_compare(gconstpointer a, gconstpointer b) { - const fileset_entry *entry_a = a; - const fileset_entry *entry_b = b; + const fileset_entry *entry_a = (const fileset_entry *)a; + const fileset_entry *entry_b = (const fileset_entry *)b; - return strcmp(entry_a->name, entry_b->name); + return strcmp(entry_a->name, entry_b->name); } @@ -233,7 +233,7 @@ void fileset_update_dlg(void) /* add all entires to the dialog */ le = g_list_first(set.entries); while(le) { - fileset_dlg_add_file(le->data); + fileset_dlg_add_file((fileset_entry *)le->data); le = g_list_next(le); } } @@ -306,7 +306,7 @@ fileset_get_current(void) /* add all entires to the dialog */ le = g_list_first(set.entries); while(le) { - entry = le->data; + entry = (fileset_entry *)le->data; if(entry->current) { return le; } @@ -334,7 +334,7 @@ fileset_get_next(void) return NULL; } - return le->data; + return (fileset_entry *)le->data; } @@ -355,14 +355,14 @@ fileset_get_previous(void) return NULL; } - return le->data; + return (fileset_entry *)le->data; } /* delete a single entry */ static void fileset_entry_delete(gpointer data, gpointer user_data _U_) { - fileset_entry *entry = data; + fileset_entry *entry = (fileset_entry *)data; g_free( (gpointer) entry->fullname); entry->fullname = NULL; diff --git a/fileset.h b/fileset.h index 7c8b14b87f..c6d0dd9294 100644 --- a/fileset.h +++ b/fileset.h @@ -31,12 +31,12 @@ extern "C" { typedef struct _fileset_entry { - const char *fullname; /* File name with path (g_strdup'ed) */ - const char *name; /* File name without path (g_strdup'ed) */ - time_t ctime; /* create time */ - time_t mtime; /* last modified time */ - gint64 size; /* size of file in bytes */ - gboolean current; /* is this the currently loaded file? */ + char *fullname; /* File name with path (g_strdup'ed) */ + char *name; /* File name without path (g_strdup'ed) */ + time_t ctime; /* create time */ + time_t mtime; /* last modified time */ + gint64 size; /* size of file in bytes */ + gboolean current; /* is this the currently loaded file? */ } fileset_entry; -- 2.34.1