Ethereal-dev: Re: [Ethereal-dev] Re: [Ethereal-cvs] rev 13456: /trunk/gtk/: voip_calls.c
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Alejandro Vaquero <alejandrovaquero@xxxxxxxxx>
Date: Sun, 20 Feb 2005 22:46:29 -0700
LEGO wrote: It shouldn't be pointer to a boolean, I changed it.I fixed few things that broke the compilation on unices (at least on FreeBSD, Solaris and MacOSX the typedef boolean does not exist). Other than that I removed few warnings about uninitialized variables, I added g_assert(v != NULL) before dereferencing the now NULL initialized values. last tghe member hasDigitMap of struct _mgcp_info_t is a pointer to a boolean and was used non dereferenced, I dereferenced it. I also fixed a change in H225calls_packet that broke it.Alejandro, you should have a look at those changes, and check if I did broke something On Monday 21 February 2005 02:36:57 -0000 (GMT), lego@xxxxxxxxxxxx <lego@xxxxxxxxxxxx> wrote:User: lego Date: 2005/02/20 08:36 PM Log: fix few things: - boolean does not exists in *nix change them to g_boolean - removed some warnings about uninitialized variables - mgcp_info->hasDigitMap is a pointer to a boolean, dereference it Directory: /trunk/gtk/ Changes Path Action +23 -16 voip_calls.c Modified http://anonsvn.ethereal.com/viewcvs/viewcvs.py?rev=13456&view=rev _______________________________________________ Ethereal-cvs mailing list Ethereal-cvs@xxxxxxxxxxxx http://www.ethereal.com/mailman/listinfo/ethereal-cvs_______________________________________________ Ethereal-dev mailing list Ethereal-dev@xxxxxxxxxxxx http://www.ethereal.com/mailman/listinfo/ethereal-dev |
Index: gtk/voip_calls.c =================================================================== --- gtk/voip_calls.c (revision 13457) +++ gtk/voip_calls.c (working copy) @@ -1122,162 +1122,158 @@ strinfo->npackets = 0; tapinfo->strinfo_list = g_list_append(tapinfo->strinfo_list, strinfo); - } else { + } + /* let's analyze the call state */ + g_memmove(&(tmp_src), pinfo->src.data, 4); + g_memmove(&(tmp_dst), pinfo->dst.data, 4); - /* let's analyze the call state */ + strinfo->stop_sec=pinfo->fd->rel_secs; + strinfo->stop_usec=pinfo->fd->rel_usecs; + strinfo->last_frame_num=pinfo->fd->num; + ++(strinfo->npackets); + /* increment the packets counter of all calls */ + ++(tapinfo->npackets); - g_memmove(&(tmp_src), pinfo->src.data, 4); - g_memmove(&(tmp_dst), pinfo->dst.data, 4); - - strinfo->stop_sec=pinfo->fd->rel_secs; - strinfo->stop_usec=pinfo->fd->rel_usecs; - strinfo->last_frame_num=pinfo->fd->num; - ++(strinfo->npackets); - /* increment the packets counter of all calls */ - ++(tapinfo->npackets); - - /* XXX: it is supposed to be initialized isn't it? */ - g_assert(tmp_h323info != NULL); + /* XXX: it is supposed to be initialized isn't it? */ + g_assert(tmp_h323info != NULL); - /* change the status */ - if (pi->msg_type == H225_CS){ - if (tmp_h323info->q931_crv == -1) { - tmp_h323info->q931_crv = q931_crv; - } else if (tmp_h323info->q931_crv != q931_crv) { - tmp_h323info->q931_crv2 = q931_crv; - } + /* change the status */ + if (pi->msg_type == H225_CS){ + if (tmp_h323info->q931_crv == -1) { + tmp_h323info->q931_crv = q931_crv; + } else if (tmp_h323info->q931_crv != q931_crv) { + tmp_h323info->q931_crv2 = q931_crv; + } - if (pi->is_h245 == TRUE){ - add_h245_Address(tmp_h323info, pi->h245_address, pi->h245_port); - } + if (pi->is_h245 == TRUE){ + add_h245_Address(tmp_h323info, pi->h245_address, pi->h245_port); + } - if (pi->cs_type != H225_RELEASE_COMPLET) tmp_h323info->is_h245Tunneling = pi->is_h245Tunneling; + if (pi->cs_type != H225_RELEASE_COMPLET) tmp_h323info->is_h245Tunneling = pi->is_h245Tunneling; - frame_label = g_strdup(pi->frame_label); + frame_label = g_strdup(pi->frame_label); - switch(pi->cs_type){ - case H225_SETUP: - tmp_h323info->is_faststart_Setup = pi->is_faststart; - /* set te calling and called number from the Q931 packet */ - if (q931_frame_num == pinfo->fd->num){ - if (q931_calling_number != NULL){ - g_free(strinfo->from_identity); - strinfo->from_identity=g_strdup(q931_calling_number); - } - if (q931_called_number != NULL){ - g_free(strinfo->to_identity); - strinfo->to_identity=g_strdup(q931_called_number); - } + switch(pi->cs_type){ + case H225_SETUP: + tmp_h323info->is_faststart_Setup = pi->is_faststart; + /* set te calling and called number from the Q931 packet */ + if (q931_frame_num == pinfo->fd->num){ + if (q931_calling_number != NULL){ + g_free(strinfo->from_identity); + strinfo->from_identity=g_strdup(q931_calling_number); } - /* check if there is an LRQ/LCF that match this Setup */ - /* TODO: we are just checking the DialedNumer in LRQ/LCF agains the Setup - we should also check if the h225 signaling IP and port match the destination - Setup ip and port */ - list = g_list_first(tapinfo->strinfo_list); - foo= g_list_length(list); - while (list) - { - tmp_listinfo=list->data; - if (tmp_listinfo->protocol == VOIP_H323){ - tmp2_h323info = tmp_listinfo->prot_info; + if (q931_called_number != NULL){ + g_free(strinfo->to_identity); + strinfo->to_identity=g_strdup(q931_called_number); + } + } + /* check if there is an LRQ/LCF that match this Setup */ + /* TODO: we are just checking the DialedNumer in LRQ/LCF agains the Setup + we should also check if the h225 signaling IP and port match the destination + Setup ip and port */ + list = g_list_first(tapinfo->strinfo_list); + foo= g_list_length(list); + while (list) + { + tmp_listinfo=list->data; + if (tmp_listinfo->protocol == VOIP_H323){ + tmp2_h323info = tmp_listinfo->prot_info; - /* check if there called number match a LRQ/LCF */ - if ( (strcmp(strinfo->to_identity, tmp_listinfo->to_identity)==0) - && (memcmp(tmp2_h323info->guid, guid_allzero, GUID_LEN) == 0) ){ - /* change the call graph to the LRQ/LCF to belong to this call */ - strinfo->npackets += change_call_num_graph(tapinfo, tmp_listinfo->call_num, strinfo->call_num); + /* check if there called number match a LRQ/LCF */ + if ( (strcmp(strinfo->to_identity, tmp_listinfo->to_identity)==0) + && (memcmp(tmp2_h323info->guid, guid_allzero, GUID_LEN) == 0) ){ + /* change the call graph to the LRQ/LCF to belong to this call */ + strinfo->npackets += change_call_num_graph(tapinfo, tmp_listinfo->call_num, strinfo->call_num); - /* remove this LRQ/LCF call entry because we have found the Setup that match them */ - g_free(tmp_listinfo->from_identity); - g_free(tmp_listinfo->to_identity); - g_free(tmp2_h323info->guid); - g_list_free(tmp2_h323info->h245_list); - tmp2_h323info->h245_list = NULL; - g_free(tmp_listinfo->prot_info); - tapinfo->strinfo_list = g_list_remove(tapinfo->strinfo_list, tmp_listinfo); - break; - } + /* remove this LRQ/LCF call entry because we have found the Setup that match them */ + g_free(tmp_listinfo->from_identity); + g_free(tmp_listinfo->to_identity); + g_free(tmp2_h323info->guid); + g_list_free(tmp2_h323info->h245_list); + tmp2_h323info->h245_list = NULL; + g_free(tmp_listinfo->prot_info); + tapinfo->strinfo_list = g_list_remove(tapinfo->strinfo_list, tmp_listinfo); + break; } - list = g_list_next (list); } - foo= g_list_length(list); - /* Set the Setup address if it was not set */ - if (tmp_h323info->h225SetupAddr == 0) g_memmove(&(tmp_h323info->h225SetupAddr), pinfo->src.data,4); - strinfo->call_state=VOIP_CALL_SETUP; - comment = g_strdup_printf("H225 From: %s To:%s TunnH245:%s FS:%s", strinfo->from_identity, strinfo->to_identity, (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), - (pi->is_faststart==TRUE?"on":"off")); - break; - case H225_CONNECT: - strinfo->call_state=VOIP_IN_CALL; - if (pi->is_faststart == TRUE) tmp_h323info->is_faststart_Proc = TRUE; - comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), - (pi->is_faststart==TRUE?"on":"off")); - break; - case H225_RELEASE_COMPLET: - g_memmove(&(tmp_src), pinfo->src.data, 4); - if (strinfo->call_state==VOIP_CALL_SETUP){ - if (tmp_h323info->h225SetupAddr == tmp_src){ /* forward direction */ - strinfo->call_state=VOIP_CANCELLED; - } - else{ /* reverse */ - strinfo->call_state=VOIP_REJECTED; - tapinfo->rejected_calls++; - } + list = g_list_next (list); + } + foo= g_list_length(list); + /* Set the Setup address if it was not set */ + if (tmp_h323info->h225SetupAddr == 0) g_memmove(&(tmp_h323info->h225SetupAddr), pinfo->src.data,4); + strinfo->call_state=VOIP_CALL_SETUP; + comment = g_strdup_printf("H225 From: %s To:%s TunnH245:%s FS:%s", strinfo->from_identity, strinfo->to_identity, (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), + (pi->is_faststart==TRUE?"on":"off")); + break; + case H225_CONNECT: + strinfo->call_state=VOIP_IN_CALL; + if (pi->is_faststart == TRUE) tmp_h323info->is_faststart_Proc = TRUE; + comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), + (pi->is_faststart==TRUE?"on":"off")); + break; + case H225_RELEASE_COMPLET: + g_memmove(&(tmp_src), pinfo->src.data, 4); + if (strinfo->call_state==VOIP_CALL_SETUP){ + if (tmp_h323info->h225SetupAddr == tmp_src){ /* forward direction */ + strinfo->call_state=VOIP_CANCELLED; } - else if (strinfo->call_state == VOIP_IN_CALL){ - strinfo->call_state = VOIP_COMPLETED; - tapinfo->completed_calls++; + else{ /* reverse */ + strinfo->call_state=VOIP_REJECTED; + tapinfo->rejected_calls++; } - /* get the Q931 Release cause code */ - if (q931_frame_num == pinfo->fd->num && - q931_cause_value != 0xFF){ - comment = g_strdup_printf("H225 Q931 Rel Cause (%i):%s", q931_cause_value, val_to_str(q931_cause_value, q931_cause_code_vals, "<unknown>")); - } else { /* Cause not set */ - comment = g_strdup("H225 No Q931 Rel Cause"); - } - break; - case H225_PROGRESS: - case H225_ALERTING: - case H225_CALL_PROCEDING: - if (pi->is_faststart == TRUE) tmp_h323info->is_faststart_Proc = TRUE; - comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), - (pi->is_faststart==TRUE?"on":"off")); - break; - default: - comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), - (pi->is_faststart==TRUE?"on":"off")); - } - } else if (pi->msg_type == H225_RAS){ - switch(pi->msg_tag){ - case 18: /* LRQ */ - if (!pi->is_duplicate){ - g_free(strinfo->to_identity); - strinfo->to_identity=g_strdup(pi->dialedDigits); - tmp_h323info->requestSeqNum = pi->requestSeqNum; - } - case 19: /* LCF */ - if (strlen(pi->dialedDigits)) - comment = g_strdup_printf("H225 RAS dialedDigits: %s", pi->dialedDigits); - else - comment = g_strdup("H225 RAS"); - break; - default: - comment = g_strdup("H225 RAS"); + else if (strinfo->call_state == VOIP_IN_CALL){ + strinfo->call_state = VOIP_COMPLETED; + tapinfo->completed_calls++; } - frame_label = g_strdup_printf("%s", val_to_str(pi->msg_tag, RasMessage_vals, "<unknown>")); - } else { - frame_label = g_strdup("H225: Unknown"); - comment = g_strdup(""); + /* get the Q931 Release cause code */ + if (q931_frame_num == pinfo->fd->num && + q931_cause_value != 0xFF){ + comment = g_strdup_printf("H225 Q931 Rel Cause (%i):%s", q931_cause_value, val_to_str(q931_cause_value, q931_cause_code_vals, "<unknown>")); + } else { /* Cause not set */ + comment = g_strdup("H225 No Q931 Rel Cause"); + } + break; + case H225_PROGRESS: + case H225_ALERTING: + case H225_CALL_PROCEDING: + if (pi->is_faststart == TRUE) tmp_h323info->is_faststart_Proc = TRUE; + comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), + (pi->is_faststart==TRUE?"on":"off")); + break; + default: + comment = g_strdup_printf("H225 TunnH245:%s FS:%s", (tmp_h323info->is_h245Tunneling==TRUE?"on":"off"), + (pi->is_faststart==TRUE?"on":"off")); } + } else if (pi->msg_type == H225_RAS){ + switch(pi->msg_tag){ + case 18: /* LRQ */ + if (!pi->is_duplicate){ + g_free(strinfo->to_identity); + strinfo->to_identity=g_strdup(pi->dialedDigits); + tmp_h323info->requestSeqNum = pi->requestSeqNum; + } + case 19: /* LCF */ + if (strlen(pi->dialedDigits)) + comment = g_strdup_printf("H225 RAS dialedDigits: %s", pi->dialedDigits); + else + comment = g_strdup("H225 RAS"); + break; + default: + comment = g_strdup("H225 RAS"); + } + frame_label = g_strdup_printf("%s", val_to_str(pi->msg_tag, RasMessage_vals, "<unknown>")); + } else { + frame_label = g_strdup("H225: Unknown"); + comment = g_strdup(""); + } - /* add to graph analysis */ - if (!append_to_frame_graph(tapinfo, pinfo->fd->num, pi->frame_label, comment)) /* if the frame number exists in graph, append to it*/ - add_to_graph(tapinfo, pinfo, frame_label, comment, strinfo->call_num); /* if not exist, add to the graph */ + /* add to graph analysis */ + if (!append_to_frame_graph(tapinfo, pinfo->fd->num, pi->frame_label, comment)) /* if the frame number exists in graph, append to it*/ + add_to_graph(tapinfo, pinfo, frame_label, comment, strinfo->call_num); /* if not exist, add to the graph */ - g_free(frame_label); - g_free(comment); - } + g_free(frame_label); + g_free(comment); return 1; /* refresh output */ } @@ -1784,9 +1780,9 @@ } if (pi->signalReq != NULL) - frame_label = g_strdup_printf("%s%sSigReq:%s",pi->code, (*(pi->hasDigitMap) == TRUE)?" DigitMap ":"", pi->signalReq); + frame_label = g_strdup_printf("%s%sSigReq:%s",pi->code, (pi->hasDigitMap == TRUE)?" DigitMap ":"", pi->signalReq); else - frame_label = g_strdup_printf("%s%s",pi->code, (*(pi->hasDigitMap) == TRUE)?" DigitMap ":""); + frame_label = g_strdup_printf("%s%s",pi->code, (pi->hasDigitMap == TRUE)?" DigitMap ":""); /* use the CallerID info to fill the "From" for the call */ if (!tmp_mgcpinfo->fromEndpoint) mgcpCallerID(pi->signalReq, &(strinfo->from_identity)); Index: plugins/mgcp/packet-mgcp.h =================================================================== --- plugins/mgcp/packet-mgcp.h (revision 13457) +++ plugins/mgcp/packet-mgcp.h (working copy) @@ -45,7 +45,7 @@ gchar *observedEvents; guint32 rspcode; gchar *signalReq; - gboolean *hasDigitMap; + gboolean hasDigitMap; } mgcp_info_t; /* Item of request list */
- References:
- Prev by Date: Re: [Ethereal-dev] Voip Calls analysis and Graph analysis
- Next by Date: [Ethereal-dev] Regarding DECnet/OSI protocol + function description
- Previous by thread: [Ethereal-dev] Re: [Ethereal-cvs] rev 13456: /trunk/gtk/: voip_calls.c
- Next by thread: [Ethereal-dev] Regarding DECnet/OSI protocol + function description
- Index(es):