diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2010-07-13 16:25:34 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2010-07-13 16:25:34 +0000 |
commit | db478debbd1fef6bd0c44f29a7e8743eeb3439ca (patch) | |
tree | e5997694112096ba75bd310b4fdec04bc01beba8 | |
parent | 08fb59e7735c4c96820e6cc16c48891a79733f4c (diff) |
Allocate tap structs rather than using one static struct.
svn path=/trunk/; revision=33503
-rw-r--r-- | epan/dissectors/packet-mac-lte.c | 33 | ||||
-rw-r--r-- | epan/dissectors/packet-rlc-lte.c | 31 |
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); } |