more gmemchunk -> se_alloc() improvements

svn path=/trunk/; revision=15312
This commit is contained in:
Ronnie Sahlberg 2005-08-12 10:50:55 +00:00
parent e9e87bb4a6
commit 234f09c663
3 changed files with 11 additions and 61 deletions

View File

@ -63,6 +63,7 @@
#include <epan/conversation.h>
#include <epan/prefs.h>
#include <epan/emem.h>
/* Version is the first 2 bits of the first octet*/
@ -354,9 +355,6 @@ static void add_roundtrip_delay_info(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint frame, guint delay);
/* Memory chunk for storing conversation and per-packet info */
static GMemChunk *rtcp_conversations = NULL;
/* Set up an RTCP conversation using the info given */
void rtcp_add_address( packet_info *pinfo,
address *addr, int port,
@ -408,7 +406,7 @@ void rtcp_add_address( packet_info *pinfo,
*/
if ( ! p_conv_data ) {
/* Create conversation data */
p_conv_data = g_mem_chunk_alloc(rtcp_conversations);
p_conv_data = se_alloc(sizeof(struct _rtcp_conversation_info));
if (!p_conv_data)
{
return;
@ -426,19 +424,6 @@ void rtcp_add_address( packet_info *pinfo,
p_conv_data->setup_frame_number = setup_frame_number;
}
static void rtcp_init( void )
{
/* (Re)allocate mem chunk for conversations */
if (rtcp_conversations)
{
g_mem_chunk_destroy(rtcp_conversations);
}
rtcp_conversations = g_mem_chunk_new("rtcp_conversations",
sizeof(struct _rtcp_conversation_info),
20 * sizeof(struct _rtcp_conversation_info),
G_ALLOC_ONLY);
}
static gboolean
dissect_rtcp_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
@ -1363,7 +1348,7 @@ void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (p_conv_data)
{
/* Save this conversation info into packet info */
p_conv_packet_data = g_mem_chunk_alloc(rtcp_conversations);
p_conv_packet_data = se_alloc(sizeof(struct _rtcp_conversation_info));
if (!p_conv_packet_data)
{
return;
@ -1457,7 +1442,7 @@ static void remember_outgoing_sr(packet_info *pinfo, long lsr)
if (!p_conv_data)
{
/* Allocate memory for data */
p_conv_data = g_mem_chunk_alloc(rtcp_conversations);
p_conv_data = se_alloc(sizeof(struct _rtcp_conversation_info));
if (!p_conv_data)
{
/* Give up if couldn't allocate space for memory */
@ -1484,7 +1469,7 @@ static void remember_outgoing_sr(packet_info *pinfo, long lsr)
/* Will use/create packet info */
if (!p_packet_data)
{
p_packet_data = g_mem_chunk_alloc(rtcp_conversations);
p_packet_data = se_alloc(sizeof(struct _rtcp_conversation_info));
if (!p_packet_data)
{
/* Give up if allocation fails */
@ -1560,7 +1545,7 @@ static void calculate_roundtrip_delay(tvbuff_t *tvb, packet_info *pinfo,
if (!p_packet_data)
{
/* Create packet info if it doesn't exist */
p_packet_data = g_mem_chunk_alloc(rtcp_conversations);
p_packet_data = se_alloc(sizeof(struct _rtcp_conversation_info));
if (!p_packet_data)
{
/* Give up if allocation fails */
@ -2994,7 +2979,6 @@ proto_register_rtcp(void)
MIN_ROUNDTRIP_TO_REPORT_DEFAULT, &global_rtcp_show_roundtrip_calculation_minimum);
register_init_routine( &rtcp_init );
}
void

View File

@ -67,6 +67,7 @@
#include <epan/tap.h>
#include <epan/prefs.h>
#include <epan/emem.h>
static dissector_handle_t rtp_handle;
static dissector_handle_t stun_handle;
@ -134,9 +135,6 @@ static gboolean global_rtp_show_setup_info = TRUE;
/* Try heuristic RTP decode */
static gboolean global_rtp_heur = FALSE;
/* Memory chunk for storing conversation and per-packet info */
static GMemChunk *rtp_conversations = NULL;
/*
* Fields in the first octet of the RTP header.
*/
@ -303,7 +301,7 @@ void rtp_add_address(packet_info *pinfo,
*/
if ( ! p_conv_data ) {
/* Create conversation data */
p_conv_data = g_mem_chunk_alloc(rtp_conversations);
p_conv_data = se_alloc(sizeof(struct _rtp_conversation_info));
p_conv_data->rtp_dyn_payload = NULL;
conversation_add_proto_data(p_conv, proto_rtp, p_conv_data);
@ -321,19 +319,6 @@ void rtp_add_address(packet_info *pinfo,
p_conv_data->rtp_dyn_payload = rtp_dyn_payload;
}
static void rtp_init( void )
{
/* (Re)allocate mem chunk for conversations */
if (rtp_conversations)
{
g_mem_chunk_destroy(rtp_conversations);
}
rtp_conversations = g_mem_chunk_new("rtp_conversations",
sizeof(struct _rtp_conversation_info),
20 * sizeof(struct _rtp_conversation_info),
G_ALLOC_ONLY);
}
static gboolean
dissect_rtp_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
{
@ -777,7 +762,7 @@ static void get_conv_info(packet_info *pinfo, struct _rtp_info *rtp_info)
if (p_conv_data) {
/* Save this conversation info into packet info */
p_conv_packet_data = g_mem_chunk_alloc(rtp_conversations);
p_conv_packet_data = se_alloc(sizeof(struct _rtp_conversation_info));
strcpy(p_conv_packet_data->method, p_conv_data->method);
p_conv_packet_data->frame_number = p_conv_data->frame_number;
p_conv_packet_data->rtp_dyn_payload = p_conv_data->rtp_dyn_payload;
@ -1104,7 +1089,6 @@ proto_register_rtp(void)
"If an RTP version 0 packet is encountered, it can be treated as an invalid packet or a STUN packet",
&global_rtp_version0_type,
rtp_version0_types, FALSE);
register_init_routine( &rtp_init );
}
void

View File

@ -46,6 +46,7 @@
#include <epan/conversation.h>
#include <epan/strutil.h>
#include "packet-e164.h"
#include <epan/emem.h>
static int proto_rtsp = -1;
@ -71,9 +72,6 @@ static dissector_handle_t rdt_handle;
void proto_reg_handoff_rtsp(void);
static GMemChunk *rtsp_vals = NULL;
#define rtsp_hash_init_count 20
/*
* desegmentation of RTSP headers
* (when we are over TCP or another protocol providing the desegmentation API)
@ -447,7 +445,7 @@ rtsp_create_conversation(packet_info *pinfo, const guchar *line_begin,
}
data = conversation_get_proto_data(conv, proto_rtsp);
if (!data) {
data = g_mem_chunk_alloc(rtsp_vals);
data = se_alloc(sizeof(rtsp_conversation_data_t));
conversation_add_proto_data(conv, proto_rtsp, data);
}
@ -1200,21 +1198,6 @@ dissect_rtsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
static void
rtsp_init(void)
{
/* Routine to initialize rtsp protocol before each capture or filter pass. */
/* Release any memory if needed. Then setup the memory chunks. */
if (rtsp_vals)
g_mem_chunk_destroy(rtsp_vals);
rtsp_vals = g_mem_chunk_new("rtsp_vals",
sizeof(rtsp_conversation_data_t),
rtsp_hash_init_count * sizeof(rtsp_conversation_data_t),
G_ALLOC_AND_FREE);
}
void
proto_register_rtsp(void)
{
@ -1289,7 +1272,6 @@ proto_register_rtsp(void)
"of a request spanning multiple TCP segments",
&rtsp_desegment_body);
register_init_routine(rtsp_init); /* register re-init routine */
}
void