aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2010-07-13 16:25:34 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2010-07-13 16:25:34 +0000
commitdb478debbd1fef6bd0c44f29a7e8743eeb3439ca (patch)
treee5997694112096ba75bd310b4fdec04bc01beba8
parent08fb59e7735c4c96820e6cc16c48891a79733f4c (diff)
Allocate tap structs rather than using one static struct.
svn path=/trunk/; revision=33503
-rw-r--r--epan/dissectors/packet-mac-lte.c33
-rw-r--r--epan/dissectors/packet-rlc-lte.c31
2 files changed, 30 insertions, 34 deletions
diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c
index a33c67059f..b6c0ef3b08 100644
--- a/epan/dissectors/packet-mac-lte.c
+++ b/epan/dissectors/packet-mac-lte.c
@@ -2807,9 +2807,8 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint offset = 0;
struct mac_lte_info *p_mac_lte_info = NULL;
- /* Zero out tap */
- static mac_lte_tap_info tap_info;
- memset(&tap_info, 0, sizeof(mac_lte_tap_info));
+ /* Allocate and zero tap struct */
+ mac_lte_tap_info *tap_info = ep_alloc0(sizeof(mac_lte_tap_info));
/* Set protocol name */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MAC-LTE");
@@ -3029,17 +3028,17 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
show_extra_phy_parameters(pinfo, tvb, mac_lte_tree, p_mac_lte_info);
/* Set context-info parts of tap struct */
- tap_info.rnti = p_mac_lte_info->rnti;
- tap_info.ueid = p_mac_lte_info->ueid;
- tap_info.rntiType = p_mac_lte_info->rntiType;
- tap_info.isPredefinedData = p_mac_lte_info->isPredefinedData;
- tap_info.isPHYRetx = (p_mac_lte_info->reTxCount >= 1);
- tap_info.crcStatusValid = p_mac_lte_info->crcStatusValid;
- tap_info.crcStatus = p_mac_lte_info->detailed_phy_info.dl_info.crc_status;
- tap_info.direction = p_mac_lte_info->direction;
+ tap_info->rnti = p_mac_lte_info->rnti;
+ tap_info->ueid = p_mac_lte_info->ueid;
+ tap_info->rntiType = p_mac_lte_info->rntiType;
+ tap_info->isPredefinedData = p_mac_lte_info->isPredefinedData;
+ tap_info->isPHYRetx = (p_mac_lte_info->reTxCount >= 1);
+ tap_info->crcStatusValid = p_mac_lte_info->crcStatusValid;
+ tap_info->crcStatus = p_mac_lte_info->detailed_phy_info.dl_info.crc_status;
+ tap_info->direction = p_mac_lte_info->direction;
/* Also set total number of bytes (won't be used for UL/DL-SCH) */
- tap_info.single_number_of_bytes = tvb_length_remaining(tvb, offset);
+ tap_info->single_number_of_bytes = tvb_length_remaining(tvb, offset);
/* If we know its predefined data, don't try to decode any further */
if (p_mac_lte_info->isPredefinedData) {
@@ -3050,7 +3049,7 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Queue tap info */
if (!pinfo->in_error_pkt) {
- tap_queue_packet(mac_lte_tap, pinfo, &tap_info);
+ tap_queue_packet(mac_lte_tap, pinfo, tap_info);
}
return;
@@ -3066,7 +3065,7 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Queue tap info.
TODO: unfortunately DL retx detection won't get done if we return here... */
if (!pinfo->in_error_pkt) {
- tap_queue_packet(mac_lte_tap, pinfo, &tap_info);
+ tap_queue_packet(mac_lte_tap, pinfo, tap_info);
}
return;
@@ -3085,14 +3084,14 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case RA_RNTI:
/* RAR PDU */
- dissect_rar(tvb, pinfo, mac_lte_tree, pdu_ti, offset, p_mac_lte_info, &tap_info);
+ dissect_rar(tvb, pinfo, mac_lte_tree, pdu_ti, offset, p_mac_lte_info, tap_info);
break;
case C_RNTI:
case SPS_RNTI:
/* Can be UL-SCH or DL-SCH */
dissect_ulsch_or_dlsch(tvb, pinfo, mac_lte_tree, pdu_ti, offset,
- p_mac_lte_info->direction, p_mac_lte_info, &tap_info,
+ p_mac_lte_info->direction, p_mac_lte_info, tap_info,
retx_ti, context_tree);
break;
@@ -3112,7 +3111,7 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* Queue tap info */
- tap_queue_packet(mac_lte_tap, pinfo, &tap_info);
+ tap_queue_packet(mac_lte_tap, pinfo, tap_info);
}
diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c
index c270b654bd..a15ca35ecc 100644
--- a/epan/dissectors/packet-rlc-lte.c
+++ b/epan/dissectors/packet-rlc-lte.c
@@ -1881,9 +1881,8 @@ void dissect_rlc_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint offset = 0;
struct rlc_lte_info *p_rlc_lte_info = NULL;
- /* Zero out tap */
- static rlc_lte_tap_info tap_info;
- memset(&tap_info, 0, sizeof(rlc_lte_tap_info));
+ /* Allocate and Zero tap struct */
+ rlc_lte_tap_info *tap_info = ep_alloc0(sizeof(rlc_lte_tap_info));
/* Set protocol name */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RLC-LTE");
@@ -1989,15 +1988,15 @@ void dissect_rlc_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* Set context-info parts of tap struct */
- tap_info.rlcMode = p_rlc_lte_info->rlcMode;
- tap_info.direction = p_rlc_lte_info->direction;
- tap_info.priority = p_rlc_lte_info->priority;
- tap_info.ueid = p_rlc_lte_info->ueid;
- tap_info.channelType = p_rlc_lte_info->channelType;
- tap_info.channelId = p_rlc_lte_info->channelId;
- tap_info.pduLength = p_rlc_lte_info->pduLength;
- tap_info.UMSequenceNumberLength = p_rlc_lte_info->UMSequenceNumberLength;
- tap_info.loggedInMACFrame = (p_get_proto_data(pinfo->fd, proto_mac_lte) != NULL);
+ tap_info->rlcMode = p_rlc_lte_info->rlcMode;
+ tap_info->direction = p_rlc_lte_info->direction;
+ tap_info->priority = p_rlc_lte_info->priority;
+ tap_info->ueid = p_rlc_lte_info->ueid;
+ tap_info->channelType = p_rlc_lte_info->channelType;
+ tap_info->channelId = p_rlc_lte_info->channelId;
+ tap_info->pduLength = p_rlc_lte_info->pduLength;
+ tap_info->UMSequenceNumberLength = p_rlc_lte_info->UMSequenceNumberLength;
+ tap_info->loggedInMACFrame = (p_get_proto_data(pinfo->fd, proto_mac_lte) != NULL);
/* Reset this count */
s_number_of_extensions = 0;
@@ -2011,12 +2010,12 @@ void dissect_rlc_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case RLC_UM_MODE:
dissect_rlc_lte_um(tvb, pinfo, rlc_lte_tree, offset, p_rlc_lte_info, top_ti,
- &tap_info);
+ tap_info);
break;
case RLC_AM_MODE:
dissect_rlc_lte_am(tvb, pinfo, rlc_lte_tree, offset, p_rlc_lte_info, top_ti,
- &tap_info);
+ tap_info);
break;
case RLC_PREDEF:
@@ -2034,9 +2033,7 @@ void dissect_rlc_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* Queue tap info */
- if (!pinfo->in_error_pkt) {
- tap_queue_packet(rlc_lte_tap, pinfo, &tap_info);
- }
+ tap_queue_packet(rlc_lte_tap, pinfo, tap_info);
}