diff options
Diffstat (limited to 'plugins/epan/mate/mate_runtime.c')
-rw-r--r-- | plugins/epan/mate/mate_runtime.c | 169 |
1 files changed, 87 insertions, 82 deletions
diff --git a/plugins/epan/mate/mate_runtime.c b/plugins/epan/mate/mate_runtime.c index 8cda791a..0227dd45 100644 --- a/plugins/epan/mate/mate_runtime.c +++ b/plugins/epan/mate/mate_runtime.c @@ -19,8 +19,8 @@ typedef struct _mate_range mate_range; struct _mate_range { tvbuff_t *ds_tvb; - guint start; - guint end; + unsigned start; + unsigned end; }; @@ -32,12 +32,12 @@ typedef struct _tmp_pdu_data { typedef struct _gogkey { - gchar* key; + char* key; mate_cfg_gop* cfg; } gogkey; -static mate_runtime_data* rd = NULL; +static mate_runtime_data* rd; static int zero = 5; @@ -45,19 +45,19 @@ static int* dbg = &zero; static int* dbg_pdu = &zero; static int* dbg_gop = &zero; static int* dbg_gog = &zero; -static FILE* dbg_facility = NULL; +static FILE* dbg_facility; -static gboolean destroy_mate_pdus(gpointer k _U_, gpointer v, gpointer p _U_) { +static gboolean destroy_mate_pdus(void *k _U_, void *v, void *p _U_) { mate_pdu* pdu = (mate_pdu*) v; - if (pdu->avpl) delete_avpl(pdu->avpl,TRUE); + if (pdu->avpl) delete_avpl(pdu->avpl,true); g_slice_free(mate_max_size, (mate_max_size *)pdu); return TRUE; } -static gboolean destroy_mate_gops(gpointer k _U_, gpointer v, gpointer p _U_) { +static gboolean destroy_mate_gops(void *k _U_, void *v, void *p _U_) { mate_gop* gop = (mate_gop*) v; - if (gop->avpl) delete_avpl(gop->avpl,TRUE); + if (gop->avpl) delete_avpl(gop->avpl,true); if (gop->gop_key) { if (g_hash_table_lookup(gop->cfg->gop_index,gop->gop_key) == gop) { @@ -75,14 +75,14 @@ static gboolean destroy_mate_gops(gpointer k _U_, gpointer v, gpointer p _U_) { static void gog_remove_keys (mate_gog* gog); -static gboolean destroy_mate_gogs(gpointer k _U_, gpointer v, gpointer p _U_) { +static gboolean destroy_mate_gogs(void *k _U_, void *v, void *p _U_) { mate_gog* gog = (mate_gog*) v; - if (gog->avpl) delete_avpl(gog->avpl,TRUE); + if (gog->avpl) delete_avpl(gog->avpl,true); if (gog->gog_keys) { gog_remove_keys(gog); - g_ptr_array_free(gog->gog_keys, TRUE); + g_ptr_array_free(gog->gog_keys, true); } g_slice_free(mate_max_size,(mate_max_size*)gog); @@ -90,18 +90,18 @@ static gboolean destroy_mate_gogs(gpointer k _U_, gpointer v, gpointer p _U_) { return TRUE; } -static gboolean return_true(gpointer k _U_, gpointer v _U_, gpointer p _U_) { +static gboolean return_true(void *k _U_, void *v _U_, void *p _U_) { return TRUE; } -static void destroy_pdus_in_cfg(gpointer k _U_, gpointer v, gpointer p _U_) { +static void destroy_pdus_in_cfg(void *k _U_, void *v, void *p _U_) { mate_cfg_pdu* c = (mate_cfg_pdu *)v; g_hash_table_foreach_remove(c->items,destroy_mate_pdus,NULL); c->last_id = 0; } -static void destroy_gops_in_cfg(gpointer k _U_, gpointer v, gpointer p _U_) { +static void destroy_gops_in_cfg(void *k _U_, void *v, void *p _U_) { mate_cfg_gop* c = (mate_cfg_gop *)v; g_hash_table_foreach_remove(c->gop_index,return_true,NULL); @@ -116,7 +116,7 @@ static void destroy_gops_in_cfg(gpointer k _U_, gpointer v, gpointer p _U_) { c->last_id = 0; } -static void destroy_gogs_in_cfg(gpointer k _U_, gpointer v, gpointer p _U_) { +static void destroy_gogs_in_cfg(void *k _U_, void *v, void *p _U_) { mate_cfg_gog* c = (mate_cfg_gog *)v; g_hash_table_foreach_remove(c->items,destroy_mate_gogs,NULL); c->last_id = 0; @@ -160,7 +160,7 @@ void initialize_mate_runtime(mate_config* mc) { } -static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, gchar* key) { +static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, char* key) { mate_gop* gop = (mate_gop*)g_slice_new(mate_max_size); gop->id = ++(cfg->last_id); @@ -175,9 +175,9 @@ static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, gchar* key) { gop->gog = NULL; gop->next = NULL; - gop->expiration = cfg->expiration > 0.0 ? cfg->expiration + rd->now : (float) -1.0 ; - gop->idle_expiration = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : (float) -1.0 ; - gop->time_to_die = cfg->lifetime > 0.0 ? cfg->lifetime + rd->now : (float) -1.0 ; + gop->expiration = cfg->expiration > 0.0 ? cfg->expiration + rd->now : -1.0 ; + gop->idle_expiration = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : -1.0 ; + gop->time_to_die = cfg->lifetime > 0.0 ? cfg->lifetime + rd->now : -1.0 ; gop->time_to_timeout = 0.0f; gop->last_time = gop->start_time = rd->now; @@ -189,11 +189,11 @@ static mate_gop* new_gop(mate_cfg_gop* cfg, mate_pdu* pdu, gchar* key) { gop->pdus = pdu; gop->last_pdu = pdu; - gop->released = FALSE; + gop->released = false; pdu->gop = gop; pdu->next = NULL; - pdu->is_start = TRUE; + pdu->is_start = true; pdu->time_in_gop = 0.0f; g_hash_table_insert(cfg->gop_index,gop->gop_key,gop); @@ -257,7 +257,7 @@ static mate_gog* new_gog(mate_cfg_gog* cfg, mate_gop* gop) { static void apply_transforms(GPtrArray* transforms, AVPL* avpl) { AVPL_Transf* transform = NULL; - guint i; + unsigned i; for (i = 0; i < transforms->len; i++) { transform = (AVPL_Transf *)g_ptr_array_index(transforms,i); @@ -268,11 +268,11 @@ static void apply_transforms(GPtrArray* transforms, AVPL* avpl) { /* applies the extras for which type to what avpl */ static void apply_extras(AVPL* from, AVPL* to, AVPL* extras) { - AVPL* our_extras = new_avpl_loose_match("",from, extras, FALSE) ; + AVPL* our_extras = new_avpl_loose_match("",from, extras, false) ; if (our_extras) { - merge_avpl(to,our_extras,TRUE); - delete_avpl(our_extras,FALSE); + merge_avpl(to,our_extras,true); + delete_avpl(our_extras,false); } } @@ -324,12 +324,12 @@ static void reanalyze_gop(mate_config* mc, mate_gop* gop) { while (( curr_gogkey = get_next_avpl(gog_keys,&cookie) )) { gop_cfg = (mate_cfg_gop *)g_hash_table_lookup(mc->gopcfgs,curr_gogkey->name); - if (( gogkey_match = new_avpl_pairs_match(gop_cfg->name, gog->avpl, curr_gogkey, TRUE, FALSE) )) { + if (( gogkey_match = new_avpl_pairs_match(gop_cfg->name, gog->avpl, curr_gogkey, true, false) )) { gog_key = g_new(gogkey, 1); gog_key->key = avpl_to_str(gogkey_match); - delete_avpl(gogkey_match,FALSE); + delete_avpl(gogkey_match,false); gog_key->cfg = gop_cfg; @@ -356,10 +356,10 @@ static void reanalyze_gop(mate_config* mc, mate_gop* gop) { } if (gog->num_of_released_gops == gog->num_of_counting_gops) { - gog->released = TRUE; + gog->released = true; gog->expiration = gog->cfg->expiration + rd->now; } else { - gog->released = FALSE; + gog->released = false; } } @@ -370,7 +370,7 @@ static void analyze_gop(mate_config* mc, mate_gop* gop) { void* cookie = NULL; AVPL* gogkey_match = NULL; mate_gog* gog = NULL; - gchar* key = NULL; + char* key = NULL; if ( ! gop->gog ) { /* no gog, let's either find one or create it if due */ @@ -388,14 +388,14 @@ static void analyze_gop(mate_config* mc, mate_gop* gop) { dbg_print (dbg_gog,1,dbg_facility,"analyze_gop: got gog_keys: %s",gog_keys->name) ; while (( curr_gogkey = get_next_avpl(gog_keys,&cookie) )) { - if (( gogkey_match = new_avpl_pairs_match(gop->cfg->name, gop->avpl, curr_gogkey, TRUE, TRUE) )) { + if (( gogkey_match = new_avpl_pairs_match(gop->cfg->name, gop->avpl, curr_gogkey, true, true) )) { key = avpl_to_str(gogkey_match); dbg_print (dbg_gog,1,dbg_facility,"analyze_gop: got gogkey_match: %s",key); if (( gog = (mate_gog *)g_hash_table_lookup(gop->cfg->gog_index,key) )) { - dbg_print (dbg_gog,1,dbg_facility,"analyze_gop: got already a matching gog"); + dbg_print (dbg_gog,1,dbg_facility,"analyze_gop: got already a matching gog: %s:%d",gog->cfg->name,gog->id); if (gog->num_of_counting_gops == gog->num_of_released_gops && gog->expiration < rd->now) { dbg_print (dbg_gog,1,dbg_facility,"analyze_gop: this is a new gog, not the old one, let's create it"); @@ -440,7 +440,7 @@ static void analyze_gop(mate_config* mc, mate_gop* gop) { g_free(key); key = NULL; - if (gogkey_match) delete_avpl(gogkey_match,TRUE); + if (gogkey_match) delete_avpl(gogkey_match,true); reanalyze_gop(mc, gop); } @@ -455,8 +455,8 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { */ mate_cfg_gop* cfg = NULL; mate_gop* gop = NULL; - gchar* gop_key; - gchar* orig_gop_key = NULL; + char* gop_key; + char* orig_gop_key = NULL; AVPL* candidate_start = NULL; AVPL* candidate_stop = NULL; AVPL* is_start = NULL; @@ -466,17 +466,17 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { AVPL* curr_gogkey = NULL; void* cookie = NULL; AVPL* gogkey_match = NULL; - gchar* gogkey_str = NULL; + char* gogkey_str = NULL; dbg_print (dbg_gop,1,dbg_facility,"analyze_pdu: %s",pdu->cfg->name); if (! (cfg = (mate_cfg_gop *)g_hash_table_lookup(mc->gops_by_pduname,pdu->cfg->name)) ) return; - if ((gopkey_match = new_avpl_pairs_match("gop_key_match", pdu->avpl, cfg->key, TRUE, TRUE))) { + if ((gopkey_match = new_avpl_pairs_match("gop_key_match", pdu->avpl, cfg->key, true, true))) { gop_key = avpl_to_str(gopkey_match); - g_hash_table_lookup_extended(cfg->gop_index,(gconstpointer)gop_key,(gpointer *)&orig_gop_key,(gpointer *)&gop); + g_hash_table_lookup_extended(cfg->gop_index,(const void *)gop_key,(void * *)&orig_gop_key,(void * *)&gop); if ( gop ) { g_free(gop_key); @@ -486,7 +486,7 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { ( ( gop->cfg->lifetime > 0.0 && gop->time_to_die >= rd->now) || ( gop->cfg->idle_timeout > 0.0 && gop->time_to_timeout >= rd->now) ) ) { dbg_print (dbg_gop,4,dbg_facility,"analyze_pdu: expiring released gop"); - gop->released = TRUE; + gop->released = true; if (gop->gog && gop->cfg->start) gop->gog->num_of_released_gops++; } @@ -501,8 +501,8 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { dbg_print (dbg_gop,2,dbg_facility,"analyze_pdu: got candidate start"); - if (( is_start = new_avpl_pairs_match("", pdu->avpl, candidate_start, TRUE, FALSE) )) { - delete_avpl(is_start,FALSE); + if (( is_start = new_avpl_pairs_match("", pdu->avpl, candidate_start, true, false) )) { + delete_avpl(is_start,false); if ( gop->released ) { dbg_print (dbg_gop,3,dbg_facility,"analyze_pdu: start on released gop, let's create a new gop"); @@ -523,7 +523,7 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { pdu->next = NULL; pdu->time_in_gop = rd->now - gop->start_time; - if (gop->released) pdu->after_release = TRUE; + if (gop->released) pdu->after_release = true; } else { @@ -540,17 +540,17 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { if (gog_keys) { while (( curr_gogkey = get_next_avpl(gog_keys,&cookie) )) { - if (( gogkey_match = new_avpl_pairs_match(cfg->name, gopkey_match, curr_gogkey, TRUE, FALSE) )) { + if (( gogkey_match = new_avpl_pairs_match(cfg->name, gopkey_match, curr_gogkey, true, false) )) { gogkey_str = avpl_to_str(gogkey_match); if (g_hash_table_lookup(cfg->gog_index,gogkey_str)) { gop = new_gop(cfg,pdu,gop_key); g_hash_table_insert(cfg->gop_index,gop_key,gop); - delete_avpl(gogkey_match,FALSE); + delete_avpl(gogkey_match,false); g_free(gogkey_str); break; } else { - delete_avpl(gogkey_match,FALSE); + delete_avpl(gogkey_match,false); g_free(gogkey_str); } } @@ -558,21 +558,21 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { if ( ! gop ) { g_free(gop_key); - delete_avpl(gopkey_match,TRUE); + delete_avpl(gopkey_match,true); return; } } else { g_free(gop_key); - delete_avpl(gopkey_match,TRUE); + delete_avpl(gopkey_match,true); return; } } else { candidate_start = cfg->start; - if (( is_start = new_avpl_pairs_match("", pdu->avpl, candidate_start, TRUE, FALSE) )) { - delete_avpl(is_start,FALSE); + if (( is_start = new_avpl_pairs_match("", pdu->avpl, candidate_start, true, false) )) { + delete_avpl(is_start,false); gop = new_gop(cfg,pdu,gop_key); } else { g_free(gop_key); @@ -590,12 +590,12 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { pdu->time_in_gop = rd->now - gop->start_time; gop->num_of_pdus++; - gop->time_to_timeout = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : (float) -1.0 ; + gop->time_to_timeout = cfg->idle_timeout > 0.0 ? cfg->idle_timeout + rd->now : -1.0 ; dbg_print (dbg_gop,4,dbg_facility,"analyze_pdu: merge with key"); - merge_avpl(gop->avpl,gopkey_match,TRUE); - delete_avpl(gopkey_match,TRUE); + merge_avpl(gop->avpl,gopkey_match,true); + delete_avpl(gopkey_match,true); dbg_print (dbg_gop,4,dbg_facility,"analyze_pdu: apply extras"); @@ -607,22 +607,22 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { candidate_stop = cfg->stop; if (candidate_stop) { - is_stop = new_avpl_pairs_match("", pdu->avpl, candidate_stop, TRUE, FALSE); + is_stop = new_avpl_pairs_match("", pdu->avpl, candidate_stop, true, false); } else { is_stop = new_avpl(""); } if(is_stop) { dbg_print (dbg_gop,1,dbg_facility,"analyze_pdu: is a `stop"); - delete_avpl(is_stop,FALSE); + delete_avpl(is_stop,false); if (! gop->released) { - gop->released = TRUE; + gop->released = true; gop->release_time = pdu->rel_time; if (gop->gog && gop->cfg->start) gop->gog->num_of_released_gops++; } - pdu->is_stop = TRUE; + pdu->is_stop = true; } } @@ -645,6 +645,7 @@ static void analyze_pdu(mate_config* mc, mate_pdu* pdu) { } static proto_node * +// NOLINTNEXTLINE(misc-no-recursion) proto_tree_find_node_from_finfo(proto_tree *tree, field_info *finfo) { proto_node *pnode = tree; @@ -659,6 +660,7 @@ proto_tree_find_node_from_finfo(proto_tree *tree, field_info *finfo) while (child != NULL) { current = child; child = current->next; + // We recurse here, but we're limited by tree depth checks in epan if ((pnode = proto_tree_find_node_from_finfo((proto_tree *)current, finfo))) { return pnode; } @@ -712,15 +714,15 @@ add_avp(const char *name, field_info *fi, const field_info *ancestor_fi, tmp_pdu return all_same_ds; } -static void get_pdu_fields(gpointer k, gpointer v, gpointer p) { +static void get_pdu_fields(void *k, void *v, void *p) { int hfid = *((int*) k); - gchar* name = (gchar*) v; + char* name = (char*) v; tmp_pdu_data* data = (tmp_pdu_data*) p; GPtrArray* fis; field_info* fi; - guint i; - guint start; - guint end; + unsigned i; + unsigned start; + unsigned end; tvbuff_t *ds_tvb; fis = proto_get_finfo_ptr_array(data->tree, hfid); @@ -761,19 +763,19 @@ static void get_pdu_fields(gpointer k, gpointer v, gpointer p) { } } -static mate_pdu* new_pdu(mate_cfg_pdu* cfg, guint32 framenum, field_info* proto, proto_tree* tree) { +static mate_pdu* new_pdu(mate_cfg_pdu* cfg, uint32_t framenum, field_info* proto, proto_tree* tree) { mate_pdu* pdu = (mate_pdu*)g_slice_new(mate_max_size); field_info* cfi; GPtrArray* ptrs; mate_range* range; mate_range* proto_range; tmp_pdu_data data; - guint i,j; - gint min_dist; + unsigned i,j; + int min_dist; field_info* range_fi; - gint32 last_start; - gint32 first_end; - gint32 curr_end; + int32_t last_start; + int32_t first_end; + int32_t curr_end; int hfid; dbg_print (dbg_pdu,1,dbg_facility,"new_pdu: type=%s framenum=%i",cfg->name,framenum); @@ -791,10 +793,10 @@ static mate_pdu* new_pdu(mate_cfg_pdu* cfg, guint32 framenum, field_info* proto, pdu->next = NULL; pdu->time_in_gop = -1.0f; - pdu->first = FALSE; - pdu->is_start = FALSE; - pdu->is_stop = FALSE; - pdu->after_release = FALSE; + pdu->first = false; + pdu->is_start = false; + pdu->is_stop = false; + pdu->after_release = false; data.ranges = g_ptr_array_new_with_free_func(g_free); data.pdu = pdu; @@ -811,7 +813,7 @@ static mate_pdu* new_pdu(mate_cfg_pdu* cfg, guint32 framenum, field_info* proto, last_start = proto_range->start; - /* we move forward in the tranport */ + /* we move forward in the transport */ for (i = cfg->transport_ranges->len; i--; ) { hfid = *((int*)g_ptr_array_index(cfg->transport_ranges,i)); ptrs = proto_get_finfo_ptr_array(tree, hfid); @@ -886,7 +888,7 @@ static mate_pdu* new_pdu(mate_cfg_pdu* cfg, guint32 framenum, field_info* proto, apply_transforms(pdu->cfg->transforms,pdu->avpl); - g_ptr_array_free(data.ranges,TRUE); + g_ptr_array_free(data.ranges,true); return pdu; } @@ -896,18 +898,21 @@ extern void mate_analyze_frame(mate_config *mc, packet_info *pinfo, proto_tree* mate_cfg_pdu* cfg; GPtrArray* protos; field_info* proto; - guint i,j; + unsigned i,j; AVPL* criterium_match; mate_pdu* pdu = NULL; mate_pdu* last = NULL; - rd->now = (float) nstime_to_sec(&pinfo->rel_ts); + rd->now = nstime_to_sec(&pinfo->rel_ts); if ( proto_tracking_interesting_fields(tree) && rd->highest_analyzed_frame < pinfo->num ) { for ( i = 0; i < mc->pducfglist->len; i++ ) { + if (i == 0) { + dbg_print (dbg_pdu,4,dbg_facility,"\nmate_analyze_frame: frame: %i",pinfo->num); + } cfg = (mate_cfg_pdu *)g_ptr_array_index(mc->pducfglist,i); dbg_print (dbg_pdu,4,dbg_facility,"mate_analyze_frame: trying to extract: %s",cfg->name); @@ -924,16 +929,16 @@ extern void mate_analyze_frame(mate_config *mc, packet_info *pinfo, proto_tree* pdu = new_pdu(cfg, pinfo->num, proto, tree); if (cfg->criterium) { - criterium_match = new_avpl_from_match(cfg->criterium_match_mode,"",pdu->avpl,cfg->criterium,FALSE); + criterium_match = new_avpl_from_match(cfg->criterium_match_mode,"",pdu->avpl,cfg->criterium,false); if (criterium_match) { - delete_avpl(criterium_match,FALSE); + delete_avpl(criterium_match,false); } if ( (criterium_match && cfg->criterium_accept_mode == REJECT_MODE ) || ( ! criterium_match && cfg->criterium_accept_mode == ACCEPT_MODE )) { - delete_avpl(pdu->avpl,TRUE); + delete_avpl(pdu->avpl,true); g_slice_free(mate_max_size,(mate_max_size*)pdu); pdu = NULL; @@ -944,14 +949,14 @@ extern void mate_analyze_frame(mate_config *mc, packet_info *pinfo, proto_tree* analyze_pdu(mc, pdu); if ( ! pdu->gop && cfg->drop_unassigned) { - delete_avpl(pdu->avpl,TRUE); + delete_avpl(pdu->avpl,true); g_slice_free(mate_max_size,(mate_max_size*)pdu); pdu = NULL; continue; } if ( cfg->discard ) { - delete_avpl(pdu->avpl,TRUE); + delete_avpl(pdu->avpl,true); pdu->avpl = NULL; } @@ -973,7 +978,7 @@ extern void mate_analyze_frame(mate_config *mc, packet_info *pinfo, proto_tree* } } -extern mate_pdu* mate_get_pdus(guint32 framenum) { +extern mate_pdu* mate_get_pdus(uint32_t framenum) { if (rd) { return (mate_pdu*) g_hash_table_lookup(rd->frames,GUINT_TO_POINTER(framenum)); |