aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-t38.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-t38.c')
-rw-r--r--epan/dissectors/packet-t38.c176
1 files changed, 89 insertions, 87 deletions
diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c
index 1a95e554bc..1a0239e064 100644
--- a/epan/dissectors/packet-t38.c
+++ b/epan/dissectors/packet-t38.c
@@ -1233,7 +1233,7 @@ dissect_t30_hdlc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree
/* T38 Routines */
static int
-dissect_t38_NULL(tvbuff_t *tvb _U_, int offset, packet_info *pinfo _U_, proto_tree *tree _U_)
+dissect_t38_NULL(tvbuff_t *tvb _U_, int offset, asn_ctx_t *actx _U_, proto_tree *tree _U_)
{
return offset;
}
@@ -1316,14 +1316,14 @@ const value_string t30_indicator_vals[] = {
};
static int
-dissect_t38_t30_indicator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_t30_indicator(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_choice(tvb, offset, pinfo,
+ offset=dissect_per_choice(tvb, offset, actx,
tree, hf_t38_t30_indicator, ett_t38_t30_indicator,
t30_indicator_choice, &T30ind_value);
- if (check_col(pinfo->cinfo, COL_INFO) && primary_part){
- col_append_fstr(pinfo->cinfo, COL_INFO, " t30ind: %s",
+ if (check_col(actx->pinfo->cinfo, COL_INFO) && primary_part){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " t30ind: %s",
val_to_str(T30ind_value,t30_indicator_vals,"<unknown>"));
}
@@ -1388,14 +1388,14 @@ const value_string t30_data_vals[] = {
};
static int
-dissect_t38_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_data(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_choice(tvb, offset, pinfo,
+ offset=dissect_per_choice(tvb, offset, actx,
tree, hf_t38_data, ett_t38_data,
data_choice, &Data_value);
- if (check_col(pinfo->cinfo, COL_INFO) && primary_part){
- col_append_fstr(pinfo->cinfo, COL_INFO, " data:%s:",
+ if (check_col(actx->pinfo->cinfo, COL_INFO) && primary_part){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " data:%s:",
val_to_str(Data_value,t30_data_vals,"<unknown>"));
}
@@ -1421,8 +1421,8 @@ static const value_string Type_of_msg_vals[] = {
{ 0, NULL}
};
static int
-dissect_t38_Type_of_msg(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
- offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+dissect_t38_Type_of_msg(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_t38_Type_of_msg, Type_of_msg_choice,
&Type_of_msg_value);
@@ -1433,8 +1433,8 @@ dissect_t38_Type_of_msg(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto
return offset;
}
-static int dissect_type_of_msg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
- return dissect_t38_Type_of_msg(tvb, offset, pinfo, tree, hf_t38_Type_of_msg);
+static int dissect_type_of_msg(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree) {
+ return dissect_t38_Type_of_msg(tvb, offset, actx, tree, hf_t38_Type_of_msg);
}
static const per_choice_t Data_Field_field_type_PreCorrigendum_choice[] = {
@@ -1606,21 +1606,21 @@ force_reassmeble_seq(tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 id,
}
static int
-dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
if(use_pre_corrigendum_asn1_specification){
- offset=dissect_per_choice(tvb, offset, pinfo,
+ offset=dissect_per_choice(tvb, offset, actx,
tree, hf_t38_Data_Field_field_type, ett_t38_Data_Field_field_type,
Data_Field_field_type_PreCorrigendum_choice, &Data_Field_field_type_value);
}
else{
- offset=dissect_per_choice(tvb, offset, pinfo,
+ offset=dissect_per_choice(tvb, offset, actx,
tree, hf_t38_Data_Field_field_type, ett_t38_Data_Field_field_type,
Data_Field_field_type_choice, &Data_Field_field_type_value);
}
- if (check_col(pinfo->cinfo, COL_INFO) && primary_part){
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+ if (check_col(actx->pinfo->cinfo, COL_INFO) && primary_part){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s",
val_to_str(Data_Field_field_type_value,Data_Field_field_type_vals,"<unknown>"));
}
@@ -1632,13 +1632,13 @@ dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, packet_info *pinfo,
if (Data_Field_field_type_value == 2 || Data_Field_field_type_value == 4 || Data_Field_field_type_value == 7) {/* hdlc-fcs-OK or hdlc-fcs-OK-sig-end or t4-non-ecm-sig-end*/
fragment_data *frag_msg = NULL;
tvbuff_t* new_tvb = NULL;
- gboolean save_fragmented = pinfo->fragmented;
+ gboolean save_fragmented = actx->pinfo->fragmented;
- pinfo->fragmented = TRUE;
+ actx->pinfo->fragmented = TRUE;
/* if reass_start_seqnum=-1 it means we have received the end of the fragmente, without received any fragment data */
if (p_t38_packet_conv_info->reass_start_seqnum != -1) {
- frag_msg = fragment_add_seq(tvb, offset, pinfo,
+ frag_msg = fragment_add_seq(tvb, offset, actx->pinfo,
p_t38_packet_conv_info->reass_ID, /* ID for fragments belonging together */
data_fragment_table, /* list of message fragments */
seq_number + Data_Field_item_num - (guint32)p_t38_packet_conv_info->reass_start_seqnum, /* fragment sequence number */
@@ -1652,13 +1652,13 @@ dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, packet_info *pinfo,
* and get some stat, like packet lost and burst number of packet lost
*/
if (!frag_msg) {
- force_reassmeble_seq(tvb, offset, pinfo,
+ force_reassmeble_seq(tvb, offset, actx->pinfo,
p_t38_packet_conv_info->reass_ID, /* ID for fragments belonging together */
data_fragment_table, /* list of message fragments */
seq_number + Data_Field_item_num - (guint32)p_t38_packet_conv_info->reass_start_seqnum); /* fragment sequence number */
} else {
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_str(pinfo->cinfo, COL_INFO, " (t4-data Reassembled: No packet lost)");
+ if (check_col(actx->pinfo->cinfo, COL_INFO))
+ col_append_str(actx->pinfo->cinfo, COL_INFO, " (t4-data Reassembled: No packet lost)");
g_snprintf(t38_info->desc_comment, MAX_T38_DESC, "No packet lost");
}
@@ -1670,33 +1670,33 @@ dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, packet_info *pinfo,
g_snprintf(t38_info->desc_comment, MAX_T38_DESC, "No packet lost");
}
- new_tvb = process_reassembled_data(tvb, offset, pinfo,
+ new_tvb = process_reassembled_data(tvb, offset, actx->pinfo,
"Reassembled Message", frag_msg, &data_frag_items, NULL, tree);
/* Now reset fragmentation information in pinfo */
- pinfo->fragmented = save_fragmented;
+ actx->pinfo->fragmented = save_fragmented;
t38_info->time_first_t4_data = p_t38_packet_conv_info->time_first_t4_data;
t38_info->frame_num_first_t4_data = p_t38_packet_conv_info->reass_ID; /* The reass_ID is the Frame number of the first t4 fragment */
} else {
- new_tvb = process_reassembled_data(tvb, offset, pinfo,
+ new_tvb = process_reassembled_data(tvb, offset, actx->pinfo,
"Reassembled Message", frag_msg, &data_frag_items, NULL, tree);
/* Now reset fragmentation information in pinfo */
- pinfo->fragmented = save_fragmented;
+ actx->pinfo->fragmented = save_fragmented;
- if (new_tvb) dissect_t30_hdlc(new_tvb, 0, pinfo, tree);
+ if (new_tvb) dissect_t30_hdlc(new_tvb, 0, actx->pinfo, tree);
}
} else {
if(tree){
proto_tree_add_text(tree, tvb, offset, tvb_reported_length_remaining(tvb, offset),
"[RECEIVED END OF FRAGMENT W/OUT ANY FRAGMENT DATA]");
}
- if (check_col(pinfo->cinfo, COL_INFO)){
- col_append_fstr(pinfo->cinfo, COL_INFO, " [Malformed?]");
+ if (check_col(actx->pinfo->cinfo, COL_INFO)){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [Malformed?]");
}
- pinfo->fragmented = save_fragmented;
+ actx->pinfo->fragmented = save_fragmented;
}
}
@@ -1711,23 +1711,23 @@ dissect_t38_Data_Field_field_type(tvbuff_t *tvb, int offset, packet_info *pinfo,
}
static int
-dissect_t38_Data_Field_field_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_Data_Field_field_data(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
tvbuff_t *value_tvb = NULL;
guint32 value_len;
- offset=dissect_per_octet_string(tvb, offset, pinfo,
+ offset=dissect_per_octet_string(tvb, offset, actx,
tree, hf_t38_Data_Field_field_data, 1, 65535,
&value_tvb);
value_len = tvb_length(value_tvb);
- if (check_col(pinfo->cinfo, COL_INFO) && primary_part){
+ if (check_col(actx->pinfo->cinfo, COL_INFO) && primary_part){
if(value_len < 8){
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s]",
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "[%s]",
tvb_bytes_to_str(value_tvb,0,value_len));
}
else {
- col_append_fstr(pinfo->cinfo, COL_INFO, "[%s...]",
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "[%s...]",
tvb_bytes_to_str(value_tvb,0,7));
}
}
@@ -1742,43 +1742,43 @@ dissect_t38_Data_Field_field_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* HDLC Data or t4-non-ecm-data */
if (Data_Field_field_type_value == 0 || Data_Field_field_type_value == 6) { /* 0=HDLC Data or 6=t4-non-ecm-data*/
- gboolean save_fragmented = pinfo->fragmented;
+ gboolean save_fragmented = actx->pinfo->fragmented;
- pinfo->fragmented = TRUE;
+ actx->pinfo->fragmented = TRUE;
/* if we have not reassembled this packet and it is the first fragment, reset the reassemble ID and the start seq number*/
if (p_t38_packet_conv && p_t38_conv && (p_t38_packet_conv_info->reass_ID == 0)) {
/* we use the first fragment's frame_number as fragment ID because the protocol doesn't provide it */
- p_t38_conv_info->reass_ID = pinfo->fd->num;
+ p_t38_conv_info->reass_ID = actx->pinfo->fd->num;
p_t38_conv_info->reass_start_seqnum = seq_number;
- p_t38_conv_info->time_first_t4_data = nstime_to_sec(&pinfo->fd->rel_ts);
+ p_t38_conv_info->time_first_t4_data = nstime_to_sec(&actx->pinfo->fd->rel_ts);
p_t38_packet_conv_info->reass_ID = p_t38_conv_info->reass_ID;
p_t38_packet_conv_info->reass_start_seqnum = p_t38_conv_info->reass_start_seqnum;
p_t38_packet_conv_info->time_first_t4_data = p_t38_conv_info->time_first_t4_data;
}
- frag_msg = fragment_add_seq(value_tvb, 0, pinfo,
+ frag_msg = fragment_add_seq(value_tvb, 0, actx->pinfo,
p_t38_packet_conv_info->reass_ID, /* ID for fragments belonging together */
data_fragment_table, /* list of message fragments */
seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum, /* fragment sequence number */
value_len, /* fragment length */
TRUE); /* More fragments */
- new_tvb = process_reassembled_data(tvb, offset, pinfo,
+ new_tvb = process_reassembled_data(tvb, offset, actx->pinfo,
"Reassembled Message", frag_msg, &data_frag_items, NULL, tree);
if (!frag_msg) { /* Not last packet of reassembled */
if (Data_Field_field_type_value == 0) {
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO," (HDLC fragment %u)", seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum);
+ if (check_col(actx->pinfo->cinfo, COL_INFO))
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO," (HDLC fragment %u)", seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum);
} else {
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_fstr(pinfo->cinfo, COL_INFO," (t4-data fragment %u)", seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum);
+ if (check_col(actx->pinfo->cinfo, COL_INFO))
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO," (t4-data fragment %u)", seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum);
}
}
/* Now reset fragmentation information in pinfo */
- pinfo->fragmented = save_fragmented;
+ actx->pinfo->fragmented = save_fragmented;
}
}
@@ -1794,9 +1794,9 @@ static const per_sequence_t Data_Field_item_sequence[] = {
};
static int
-dissect_t38_Data_Field_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_Data_Field_item(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_sequence(tvb, offset, pinfo,
+ offset=dissect_per_sequence(tvb, offset, actx,
tree, hf_t38_Data_Field_item, ett_t38_Data_Field_item,
Data_Field_item_sequence);
@@ -1810,14 +1810,14 @@ static const per_sequence_t t38_Data_Field_sequence_of[1] = {
};
static int
-dissect_t38_Data_Field(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
- offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
+dissect_t38_Data_Field(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
ett_t38_Data_Field, t38_Data_Field_sequence_of);
return offset;
}
-static int dissect_data_field(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
- return dissect_t38_Data_Field(tvb, offset, pinfo, tree, hf_t38_Data_Field);
+static int dissect_data_field(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree) {
+ return dissect_t38_Data_Field(tvb, offset, actx, tree, hf_t38_Data_Field);
}
static const per_sequence_t IFPPacket_sequence[] = {
@@ -1827,45 +1827,45 @@ static const per_sequence_t IFPPacket_sequence[] = {
};
static int
-dissect_t38_IFPPacket(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_IFPPacket(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_sequence(tvb, offset, pinfo,
+ offset=dissect_per_sequence(tvb, offset, actx,
tree, hf_t38_IFPPacket, ett_t38_IFPPacket,
IFPPacket_sequence);
return offset;
}
static int
-dissect_t38_seq_number(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_seq_number(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_constrained_integer(tvb, offset, pinfo,
+ offset=dissect_per_constrained_integer(tvb, offset, actx,
tree, hf_t38_seq_number, 0, 65535,
- &seq_number, NULL, FALSE);
+ &seq_number, FALSE);
/* info for tap */
if (primary_part)
t38_info->seq_num = seq_number;
- if (check_col(pinfo->cinfo, COL_INFO)){
- col_append_fstr(pinfo->cinfo, COL_INFO, "Seq=%05u ",seq_number);
+ if (check_col(actx->pinfo->cinfo, COL_INFO)){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "Seq=%05u ",seq_number);
}
return offset;
}
static int
-dissect_t38_primary_ifp_packet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_primary_ifp_packet(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
guint32 length;
primary_part = TRUE;
- offset=dissect_per_length_determinant(tvb, offset, pinfo,
+ offset=dissect_per_length_determinant(tvb, offset, actx,
tree, hf_t38_primary_ifp_packet_length, &length);
- offset=dissect_t38_IFPPacket(tvb, offset, pinfo, tree);
+ offset=dissect_t38_IFPPacket(tvb, offset, actx, tree);
/* if is a valid t38 packet, add to tap */
- if (p_t38_packet_conv && (!pinfo->in_error_pkt) && ((gint32) seq_number != p_t38_packet_conv_info->last_seqnum))
- tap_queue_packet(t38_tap, pinfo, t38_info);
+ if (p_t38_packet_conv && (!actx->pinfo->in_error_pkt) && ((gint32) seq_number != p_t38_packet_conv_info->last_seqnum))
+ tap_queue_packet(t38_tap, actx->pinfo, t38_info);
if (p_t38_conv) p_t38_conv_info->last_seqnum = (gint32) seq_number;
@@ -1873,13 +1873,13 @@ dissect_t38_primary_ifp_packet(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
}
static int
-dissect_t38_secondary_ifp_packets_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_secondary_ifp_packets_item(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
guint32 length;
- offset=dissect_per_length_determinant(tvb, offset, pinfo,
+ offset=dissect_per_length_determinant(tvb, offset, actx,
tree, hf_t38_secondary_ifp_packets_item_length, &length);
- offset=dissect_t38_IFPPacket(tvb, offset, pinfo, tree);
+ offset=dissect_t38_IFPPacket(tvb, offset, actx, tree);
return offset;
}
@@ -1888,7 +1888,7 @@ static const per_sequence_t SEQUENCE_OF_t38_secondary_ifp_packets_sequence_of[1]
};
static int
-dissect_t38_secondary_ifp_packets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_secondary_ifp_packets(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
/* When the field-data is not present, we MUST offset 1 byte*/
if((Data_Field_field_type_value != 0) &&
@@ -1898,25 +1898,23 @@ dissect_t38_secondary_ifp_packets(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset=offset+8;
}
- offset=dissect_per_sequence_of(tvb, offset, pinfo,
+ offset=dissect_per_sequence_of(tvb, offset, actx,
tree, hf_t38_secondary_ifp_packets, ett_t38_secondary_ifp_packets,
SEQUENCE_OF_t38_secondary_ifp_packets_sequence_of);
return offset;
}
static int
-dissect_t38_fec_npackets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_fec_npackets(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_integer(tvb, offset, pinfo,
- tree, hf_t38_fec_npackets,
- NULL, NULL);
+ offset=dissect_per_integer(tvb, offset, actx, tree, hf_t38_fec_npackets, NULL);
return offset;
}
static int
-dissect_t38_fec_data_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_fec_data_item(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_octet_string(tvb, offset, pinfo,
+ offset=dissect_per_octet_string(tvb, offset, actx,
tree, hf_t38_fec_data_item, NO_BOUND, NO_BOUND,
NULL);
return offset;
@@ -1925,9 +1923,9 @@ static const per_sequence_t T_t38_fec_data_sequence_of[1] = {
{ "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_t38_fec_data_item },
};
static int
-dissect_t38_fec_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_fec_data(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_sequence_of(tvb, offset, pinfo,
+ offset=dissect_per_sequence_of(tvb, offset, actx,
tree, hf_t38_fec_data, ett_t38_fec_data,
T_t38_fec_data_sequence_of);
return offset;
@@ -1942,9 +1940,9 @@ static const per_sequence_t fec_info_sequence[] = {
};
static int
-dissect_t38_fec_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_fec_info(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
- offset=dissect_per_sequence(tvb, offset, pinfo,
+ offset=dissect_per_sequence(tvb, offset, actx,
tree, hf_t38_fec_info, ett_t38_fec_info,
fec_info_sequence);
return offset;
@@ -1965,11 +1963,11 @@ static const value_string error_recovery_vals[] = {
};
static int
-dissect_t38_error_recovery(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_error_recovery(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
primary_part = FALSE;
- offset=dissect_per_choice(tvb, offset, pinfo,
+ offset=dissect_per_choice(tvb, offset, actx,
tree, hf_t38_error_recovery, ett_t38_error_recovery,
error_recovery_choice, NULL);
@@ -1989,12 +1987,12 @@ static const per_sequence_t UDPTLPacket_sequence[] = {
};
static int
-dissect_t38_UDPTLPacket(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+dissect_t38_UDPTLPacket(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree)
{
/* Initialize to something else than data type */
Data_Field_field_type_value = 1;
- offset=dissect_per_sequence(tvb, offset, pinfo,
+ offset=dissect_per_sequence(tvb, offset, actx,
tree, hf_t38_UDPTLPacket, ett_t38_UDPTLPacket,
UDPTLPacket_sequence);
return offset;
@@ -2109,6 +2107,7 @@ dissect_t38_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *it;
proto_tree *tr;
guint32 offset=0;
+ asn_ctx_t asn_ctx;
/*
* XXX - heuristic to check for misidentified packets.
@@ -2148,7 +2147,8 @@ dissect_t38_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_append_fstr(pinfo->cinfo, COL_INFO, "UDP: UDPTLPacket ");
}
- offset=dissect_t38_UDPTLPacket(tvb, offset, pinfo, tr);
+ asn_ctx_init(&asn_ctx, ASN_ENC_PER, TRUE, pinfo);
+ offset=dissect_t38_UDPTLPacket(tvb, offset, &asn_ctx, tr);
if (offset&0x07){
offset=(offset&0xfffffff8)+8;
@@ -2171,6 +2171,7 @@ dissect_t38_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *tr;
guint32 offset=0;
guint16 ifp_packet_number=1;
+ asn_ctx_t asn_ctx;
if (check_col(pinfo->cinfo, COL_PROTOCOL)){
col_set_str(pinfo->cinfo, COL_PROTOCOL, "T.38");
@@ -2201,7 +2202,8 @@ dissect_t38_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while(tvb_length_remaining(tvb,offset>>3)>0)
{
- offset=dissect_t38_IFPPacket(tvb, offset, pinfo, tr);
+ asn_ctx_init(&asn_ctx, ASN_ENC_PER, TRUE, pinfo);
+ offset=dissect_t38_IFPPacket(tvb, offset, &asn_ctx, tr);
ifp_packet_number++;
if(offset&0x07){