diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-12-09 17:41:16 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-12-09 17:41:16 +0000 |
commit | e5f48395f18dcdfe5a65a0163b750179aad64b33 (patch) | |
tree | d8be6b7a292ac5589d0206d140f5a92fb8fa7776 /epan | |
parent | 006d1c446e03af37c260693076d501b6fb5aa887 (diff) |
Move the routines tvb_skip_wsp() to tvbuff.c
svn path=/trunk/; revision=23818
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-megaco.c | 178 | ||||
-rw-r--r-- | epan/dissectors/packet-mgcp.c | 40 | ||||
-rw-r--r-- | epan/dissectors/packet-rtsp.c | 53 | ||||
-rw-r--r-- | epan/dissectors/packet-sip.c | 53 | ||||
-rw-r--r-- | epan/libwireshark.def | 2 | ||||
-rw-r--r-- | epan/tvbuff.c | 54 | ||||
-rw-r--r-- | epan/tvbuff.h | 21 |
7 files changed, 166 insertions, 235 deletions
diff --git a/epan/dissectors/packet-megaco.c b/epan/dissectors/packet-megaco.c index e8a498f098..60e9688ecd 100644 --- a/epan/dissectors/packet-megaco.c +++ b/epan/dissectors/packet-megaco.c @@ -185,8 +185,8 @@ static int bin_udp_port = 0; #endif /* Some basic utility functions that are specific to this dissector */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset); -static gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset); +static gint megaco_tvb_skip_wsp(tvbuff_t* tvb, gint offset); +static gint megaco_tvb_skip_wsp_return(tvbuff_t* tvb, gint offset); /* * The various functions that either dissect some * subpart of MEGACO. These aren't really proto dissectors but they @@ -360,7 +360,7 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) * for the "MEGACO" string or a "!".This needs to be improved when supporting * binary encodings. Bugfix add skipping of leading spaces. */ - tvb_offset = tvb_skip_wsp(tvb, tvb_offset); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset); line_start_offset = tvb_offset; /* Quick fix for MEGACO not following the RFC, hopfully not breaking any thing * Turned out to be TPKT in case of TCP, added some code to handle that. @@ -449,7 +449,7 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if ( (tvb_current_offset=tvb_find_guint8(tvb, tvb_previous_offset, tokenlen, ' ')) != -1 ) { /* SEP after mID might be spaces only */ tokenlen = tvb_current_offset-tvb_previous_offset; - tvb_next_offset = tvb_skip_wsp(tvb, tvb_current_offset); + tvb_next_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset); } /* Att this point we should point to the "\n" ending the mId element @@ -553,9 +553,9 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb_previous_offset, tokenlen, "TransactionResponseAck" ); - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_offset+1); tvb_current_offset = tvb_find_guint8(tvb, tvb_offset+1, tvb_len, '}'); - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_current_offset)-1; /* cut last RBRKT */ + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset)-1; /* cut last RBRKT */ len = tvb_current_offset - tvb_previous_offset; if (check_col(pinfo->cinfo, COL_INFO) ) @@ -580,14 +580,14 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) trx_type = GCP_TRX_PENDING; tvb_offset = tvb_find_guint8(tvb, tvb_previous_offset, tvb_len, '=')+1; - tvb_offset = tvb_skip_wsp(tvb, tvb_offset); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset); tvb_LBRKT = tvb_find_guint8(tvb, tvb_offset, tvb_len, '{'); tvb_current_offset = tvb_LBRKT; ti = proto_tree_add_text(megaco_tree, tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset, "%s",tvb_format_text(tvb, tvb_previous_offset, tvb_current_offset-tvb_previous_offset+1)); message_body_tree = proto_item_add_subtree(ti, ett_megaco_message_body); - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_current_offset-1); + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1); len = tvb_current_offset - tvb_offset; if (tree) my_proto_tree_add_string(message_body_tree, hf_megaco_transaction, tvb, @@ -620,8 +620,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) "Reply" ); tvb_offset = tvb_find_guint8(tvb, tvb_previous_offset, tvb_len, '=')+1; - tvb_offset = tvb_skip_wsp(tvb, tvb_offset); - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_LBRKT-1); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset); + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_LBRKT-1); len = tvb_current_offset - tvb_offset; if (check_col(pinfo->cinfo, COL_INFO) ) @@ -634,7 +634,7 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb_offset, len, tvb_format_text(tvb,tvb_offset,len)); /* Find if we have a errorDescriptor or actionReplyList */ - tvb_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); tempchar = tvb_get_guint8(tvb,tvb_offset); if ((tempchar == 'E')||(tempchar == 'e')){ dissect_megaco_errordescriptor(tvb, megaco_tree, tvb_len-1, tvb_offset); @@ -657,8 +657,8 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb_previous_offset, tokenlen, "Request" ); tvb_offset = tvb_find_guint8(tvb, tvb_offset, tvb_len, '=')+1; - tvb_offset = tvb_skip_wsp(tvb, tvb_offset); - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_current_offset-1); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset); + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1); len = tvb_current_offset - tvb_offset; if (check_col(pinfo->cinfo, COL_INFO) ) col_add_fstr(pinfo->cinfo, COL_INFO, "%s Request", @@ -668,7 +668,7 @@ dissect_megaco_text(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) my_proto_tree_add_string(message_body_tree, hf_megaco_transid, tvb, tvb_offset,len, tvb_format_text(tvb,tvb_offset,len)); /* Offset should be at first printarable char after { */ - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); break; default : @@ -708,7 +708,7 @@ nextcontext: tvb_previous_offset = tvb_find_guint8(tvb, tvb_current_offset, tvb_len, '=')+1; - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_previous_offset); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_previous_offset); if (tvb_current_offset >= tvb_next_offset) { proto_tree_add_text(megaco_tree, tvb, 0, 0, "[ Parse error: Invalid offset ]"); return; @@ -763,7 +763,7 @@ nextcontext: /* Find Commands */ /* If Transaction is is Request, Reply or Pending */ - tvb_command_start_offset = tvb_skip_wsp(tvb, tvb_current_offset +1); + tvb_command_start_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1); tvb_command_end_offset = tvb_command_start_offset; tvb_LBRKT = tvb_command_start_offset; @@ -828,7 +828,7 @@ nextcontext: len = tvb_previous_offset - tvb_command_start_offset; - tvb_previous_offset = tvb_skip_wsp_return(tvb, tvb_previous_offset -1); + tvb_previous_offset = megaco_tvb_skip_wsp_return(tvb, tvb_previous_offset -1); tokenlen = tvb_previous_offset - tvb_command_start_offset; @@ -838,7 +838,7 @@ nextcontext: else{ len = tvb_current_offset - tvb_command_start_offset; - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_current_offset -1); + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset -1); tokenlen = tvb_current_offset - tvb_command_start_offset; } @@ -848,7 +848,7 @@ nextcontext: else{ len = tvb_current_offset - tvb_command_start_offset; - tvb_current_offset = tvb_skip_wsp_return(tvb, tvb_current_offset -1); + tvb_current_offset = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset -1); tokenlen = tvb_current_offset - tvb_command_start_offset; } @@ -896,7 +896,7 @@ nextcontext: tvb_offset = tvb_find_guint8(tvb, tvb_command_start_offset, tvb_len, '='); - tvb_offset = tvb_skip_wsp_return(tvb, tvb_offset -1); + tvb_offset = megaco_tvb_skip_wsp_return(tvb, tvb_offset -1); tokenlen = tvb_offset - tvb_command_start_offset; tempchar = tvb_get_guint8(tvb, tvb_command_start_offset); @@ -1175,7 +1175,7 @@ nextcontext: tvb_offset = tvb_find_guint8(tvb, tvb_command_start_offset, tvb_len, '='); - tvb_offset = tvb_skip_wsp(tvb, tvb_offset+1); + tvb_offset = megaco_tvb_skip_wsp(tvb, tvb_offset+1); tokenlen = tvb_next_offset - tvb_offset; tempchar = tvb_get_guint8(tvb, tvb_offset); @@ -1285,7 +1285,7 @@ nextcontext: } RBRKT_counter = 0; LBRKT_counter = 0; - tvb_command_start_offset = tvb_skip_wsp(tvb, tvb_command_end_offset +1); + tvb_command_start_offset = megaco_tvb_skip_wsp(tvb, tvb_command_end_offset +1); tvb_LBRKT = tvb_command_start_offset; tvb_RBRKT = tvb_command_start_offset; @@ -1367,7 +1367,7 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, LBRKT_counter = 0; - tvb_LBRKT = tvb_skip_wsp(tvb, tvb_descriptors_start_offset +1); + tvb_LBRKT = megaco_tvb_skip_wsp(tvb, tvb_descriptors_start_offset +1); tvb_previous_offset = tvb_LBRKT; tvb_RBRKT = tvb_descriptors_start_offset; @@ -1402,7 +1402,7 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, tvb_current_offset = tvb_RBRKT; } - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; + tvb_RBRKT = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; } /* Descriptor includes Parameters */ @@ -1441,7 +1441,7 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, proto_tree_add_text(megaco_tree_command_line, tvb, tvb_previous_offset, tokenlen, "%s", tvb_format_text(tvb, tvb_previous_offset, tokenlen)); - tvb_previous_offset = tvb_skip_wsp(tvb, temp_offset +1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, temp_offset +1); dissect_megaco_mediadescriptor(tvb, megaco_tree_command_line, pinfo, tvb_RBRKT, tvb_previous_offset); break; case MEGACO_SIGNALS_TOKEN: @@ -1489,7 +1489,7 @@ dissect_megaco_descriptors(tvbuff_t *tvb, proto_tree *megaco_tree_command_line, if (tvb_current_offset == -1 ){ tvb_current_offset = tvb_descriptors_end_offset; } - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); tvb_LBRKT = tvb_previous_offset; tvb_RBRKT = tvb_previous_offset; @@ -1610,7 +1610,7 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li */ while ( tvb_previous_offset < tvb_last_RBRKT){ /* Start of token */ - tvb_current_offset = tvb_skip_wsp(tvb, tvb_previous_offset); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_previous_offset); /* Find token length */ for (tvb_next_offset=tvb_current_offset; tvb_next_offset < tvb_last_RBRKT; tvb_next_offset++){ @@ -1632,19 +1632,19 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li switch ( mediaParm ){ case MEGACO_LOCAL_TOKEN: - tvb_current_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); dissect_megaco_Localdescriptor(tvb,megaco_tree_command_line , pinfo, tvb_RBRKT, tvb_current_offset); tvb_current_offset = tvb_RBRKT; break; case MEGACO_REMOTE_TOKEN: - tvb_current_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); dissect_megaco_Localdescriptor(tvb,megaco_tree_command_line , pinfo, tvb_RBRKT, tvb_current_offset); tvb_current_offset = tvb_RBRKT; break; case MEGACO_LOCAL_CONTROL_TOKEN: - tvb_current_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); dissect_megaco_LocalControldescriptor(tvb,megaco_tree_command_line, pinfo , tvb_RBRKT, tvb_current_offset); tvb_current_offset = tvb_RBRKT; @@ -1653,8 +1653,8 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li megaco_mediadescriptor_tree = proto_item_add_subtree(megaco_mediadescriptor_ti, ett_megaco_mediadescriptor); equal_offset = tvb_find_guint8(tvb, tvb_previous_offset, tvb_last_RBRKT, '='); - tvb_current_offset = tvb_skip_wsp(tvb, equal_offset+1); - tvb_offset = tvb_skip_wsp_return(tvb, tvb_LBRKT-1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, equal_offset+1); + tvb_offset = megaco_tvb_skip_wsp_return(tvb, tvb_LBRKT-1); tokenlen = tvb_offset - tvb_current_offset; proto_tree_add_string(megaco_mediadescriptor_tree, hf_megaco_streamid, tvb, @@ -1662,7 +1662,7 @@ dissect_megaco_mediadescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li tvb_previous_offset = tvb_LBRKT+1; continue; case MEGACO_TERMINATION_STATE_DESC: - tvb_current_offset = tvb_skip_wsp(tvb, tvb_LBRKT+1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_LBRKT+1); dissect_megaco_TerminationStatedescriptor(tvb,megaco_tree_command_line , tvb_RBRKT, tvb_current_offset); tvb_current_offset = tvb_RBRKT; @@ -1891,8 +1891,8 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m if ( tvb_current_offset < tvb_RBRKT && tvb_current_offset != -1 ){ - tvb_current_offset = tvb_skip_wsp(tvb, tvb_current_offset +1); - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_next_offset-1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_next_offset-1); tokenlen = tvb_help_offset - tvb_current_offset; @@ -1906,7 +1906,7 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m tvb_RBRKT = tvb_next_offset+1; tvb_LBRKT = tvb_next_offset+1; - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_next_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_next_offset+1); do { @@ -1928,7 +1928,7 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m if ( tvb_LBRKT > tvb_current_offset || tvb_LBRKT == -1 ){ - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; + tvb_RBRKT = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; } /* Descriptor includes Parameters */ @@ -1954,7 +1954,7 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m requested_event_start_offset = tvb_help_offset; requested_event_end_offset = tvb_RBRKT; - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_help_offset-1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_help_offset-1); tokenlen = tvb_help_offset - tvb_previous_offset; } /* no parameters */ @@ -1967,11 +1967,11 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m if ( tvb_help_offset < tvb_RBRKT && tvb_help_offset != -1 ){ - tvb_help_offset = tvb_skip_wsp(tvb, requested_event_start_offset +1); + tvb_help_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1); tempchar = tvb_get_guint8(tvb, tvb_help_offset); - requested_event_start_offset = tvb_skip_wsp(tvb, requested_event_start_offset +1); - requested_event_end_offset = tvb_skip_wsp_return(tvb, requested_event_end_offset-1); + requested_event_start_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1); + requested_event_end_offset = megaco_tvb_skip_wsp_return(tvb, requested_event_end_offset-1); if ( tempchar == 'D' || tempchar == 'd'){ dissect_megaco_digitmapdescriptor(tvb, megaco_requestedevent_tree, requested_event_end_offset, requested_event_start_offset); @@ -1999,7 +1999,7 @@ dissect_megaco_eventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m tvb_current_offset = tvb_events_end_offset; } - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); tvb_LBRKT = tvb_previous_offset; tvb_RBRKT = tvb_previous_offset; @@ -2037,7 +2037,7 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m else tokenlen = 7; /* token must be verbose text (Signals) */ - tvb_current_offset = tvb_skip_wsp(tvb, tvb_previous_offset+tokenlen); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_previous_offset+tokenlen); if(tvb_get_guint8(tvb, tvb_current_offset)!='{') { /* {} has been omitted */ @@ -2062,7 +2062,7 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m */ tvb_current_offset = tvb_LBRKT; - tvb_next_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_next_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); if (check_col(pinfo->cinfo, COL_INFO) ) col_append_fstr(pinfo->cinfo, COL_INFO, " (Signal:%s)",tvb_format_text(tvb, tvb_current_offset,tokenlen-tvb_current_offset+tvb_previous_offset)); @@ -2094,7 +2094,7 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m if ( tvb_LBRKT > tvb_current_offset || tvb_LBRKT == -1 ){ - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; + tvb_RBRKT = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; } /* Descriptor includes Parameters */ @@ -2120,7 +2120,7 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m requested_signal_start_offset = tvb_help_offset; requested_signal_end_offset = tvb_RBRKT; - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_help_offset-1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_help_offset-1); pkg_tokenlen = tvb_help_offset - tvb_previous_offset; tokenlen = tvb_LBRKT+1 - tvb_previous_offset; } @@ -2138,8 +2138,8 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m if ( tvb_help_offset < tvb_RBRKT && tvb_help_offset != -1 ){ gchar *msg; - requested_signal_start_offset = tvb_skip_wsp(tvb, requested_signal_start_offset +1); - requested_signal_end_offset = tvb_skip_wsp_return(tvb, requested_signal_end_offset-1); + requested_signal_start_offset = megaco_tvb_skip_wsp(tvb, requested_signal_start_offset +1); + requested_signal_end_offset = megaco_tvb_skip_wsp_return(tvb, requested_signal_end_offset-1); tokenlen = requested_signal_end_offset - requested_signal_start_offset; @@ -2162,7 +2162,7 @@ dissect_megaco_signaldescriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *m tvb_current_offset = tvb_signals_end_offset; } - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); tvb_LBRKT = tvb_previous_offset; tvb_RBRKT = tvb_previous_offset; @@ -2202,7 +2202,7 @@ dissect_megaco_auditdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree, packet_in tvb_previous_offset = tvb_find_guint8(tvb, tvb_previous_offset, tvb_RBRKT, '{'); - if ( tvb_skip_wsp(tvb, tvb_previous_offset +1) != tvb_RBRKT ){ + if ( megaco_tvb_skip_wsp(tvb, tvb_previous_offset +1) != tvb_RBRKT ){ dissect_megaco_descriptors(tvb, megaco_tree, pinfo, tvb_previous_offset,tvb_RBRKT); }else{ proto_tree_add_text(megaco_tree, tvb, tvb_RBRKT, 1, @@ -2313,7 +2313,7 @@ dissect_megaco_servicechangedescriptor(tvbuff_t *tvb, proto_tree *megaco_tree, /* Start dissecting serviceChangeParm */ tvb_previous_offset = tvb_LBRKT + 1; while (more_params){ - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_previous_offset); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_previous_offset); /* Find token length */ for (tvb_offset=tvb_previous_offset; tvb_offset < tvb_RBRKT; tvb_offset++){ if (!isalpha(tvb_get_guint8(tvb, tvb_offset ))){ @@ -2326,7 +2326,7 @@ dissect_megaco_servicechangedescriptor(tvbuff_t *tvb, proto_tree *megaco_tree, tvb_offset = tvb_find_guint8(tvb, tvb_offset, tvb_RBRKT, ','); if ((tvb_offset == -1)||(tvb_offset >=tvb_RBRKT)){ more_params = FALSE; - tvb_offset = tvb_skip_wsp_return(tvb, tvb_RBRKT-1); + tvb_offset = megaco_tvb_skip_wsp_return(tvb, tvb_RBRKT-1); } tokenlen = tvb_offset - tvb_previous_offset; if (more_params == TRUE ) @@ -2458,8 +2458,8 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto if ( tvb_current_offset < tvb_RBRKT && tvb_current_offset != -1 ){ - tvb_current_offset = tvb_skip_wsp(tvb, tvb_current_offset +1); - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_next_offset-1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_next_offset-1); tokenlen = tvb_help_offset - tvb_current_offset; @@ -2473,7 +2473,7 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto tvb_RBRKT = tvb_next_offset+1; tvb_LBRKT = tvb_next_offset+1; - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_next_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_next_offset+1); do { @@ -2495,7 +2495,7 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto if ( tvb_LBRKT > tvb_current_offset || tvb_LBRKT == -1 ){ - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; + tvb_RBRKT = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; } /* Descriptor includes Parameters */ @@ -2522,7 +2522,7 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto requested_event_start_offset = tvb_help_offset; requested_event_end_offset = tvb_RBRKT; - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_help_offset-1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_help_offset-1); pkg_tokenlen = tvb_help_offset - tvb_previous_offset; tokenlen = tvb_LBRKT+1 - tvb_previous_offset; } @@ -2540,20 +2540,20 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto if ( tvb_help_offset < tvb_RBRKT && tvb_help_offset != -1 ){ - tvb_help_offset = tvb_skip_wsp(tvb, requested_event_start_offset +1); + tvb_help_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1); tempchar = tvb_get_guint8(tvb, tvb_help_offset); if ( (tempchar >= 'a')&& (tempchar <= 'z')) tempchar = tempchar - 0x20; - requested_event_start_offset = tvb_skip_wsp(tvb, requested_event_start_offset +1)-1; - requested_event_end_offset = tvb_skip_wsp_return(tvb, requested_event_end_offset-1); + requested_event_start_offset = megaco_tvb_skip_wsp(tvb, requested_event_start_offset +1)-1; + requested_event_end_offset = megaco_tvb_skip_wsp_return(tvb, requested_event_end_offset-1); tvb_help_offset = requested_event_start_offset; do { gchar *msg; - param_start_offset = tvb_skip_wsp(tvb, tvb_help_offset+1); + param_start_offset = megaco_tvb_skip_wsp(tvb, tvb_help_offset+1); tvb_help_offset = tvb_find_guint8(tvb, tvb_help_offset+1,requested_event_end_offset, ','); @@ -2561,7 +2561,7 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto tvb_help_offset = requested_event_end_offset; } - param_end_offset = tvb_skip_wsp(tvb, tvb_help_offset-1); + param_end_offset = megaco_tvb_skip_wsp(tvb, tvb_help_offset-1); tokenlen = param_end_offset - param_start_offset+1; msg=tvb_format_text(tvb,param_start_offset, tokenlen); @@ -2588,7 +2588,7 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto return; } - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); tvb_LBRKT = tvb_previous_offset; tvb_RBRKT = tvb_previous_offset; @@ -2642,8 +2642,8 @@ dissect_megaco_Packagesdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command if ( tvb_current_offset < tvb_RBRKT && tvb_current_offset != -1 ){ - tvb_current_offset = tvb_skip_wsp(tvb, tvb_current_offset +1); - tvb_help_offset = tvb_skip_wsp_return(tvb, tvb_next_offset-1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1); + tvb_help_offset = megaco_tvb_skip_wsp_return(tvb, tvb_next_offset-1); tokenlen = tvb_help_offset - tvb_current_offset; @@ -2657,7 +2657,7 @@ dissect_megaco_Packagesdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command tvb_RBRKT = tvb_next_offset+1; tvb_LBRKT = tvb_next_offset+1; - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_next_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_next_offset+1); do { @@ -2679,7 +2679,7 @@ dissect_megaco_Packagesdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command if ( tvb_LBRKT > tvb_current_offset || tvb_LBRKT == -1 ){ - tvb_RBRKT = tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; + tvb_RBRKT = megaco_tvb_skip_wsp_return(tvb, tvb_current_offset-1)-1; } /* Descriptor includes Parameters */ @@ -2711,7 +2711,7 @@ dissect_megaco_Packagesdescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command tvb_current_offset = tvb_packages_end_offset; } - tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1); + tvb_previous_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset+1); tvb_LBRKT = tvb_previous_offset; tvb_RBRKT = tvb_previous_offset; @@ -2828,7 +2828,7 @@ dissect_megaco_errordescriptor(tvbuff_t *tvb, proto_tree *megaco_tree_command_li tvb_len = 0; tvb_current_offset = tvb_find_guint8(tvb, tvb_previous_offset , tvb_RBRKT, '='); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_current_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_current_offset +1); tvb_get_nstringz0(tvb,tvb_current_offset,4,error); error_code = atoi(error); proto_tree_add_string_hidden(megaco_tree_command_line, hf_megaco_error_descriptor, tvb, @@ -2878,7 +2878,7 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi while ( tvb_offset < tvb_next_offset && tvb_offset != -1 ){ tempchar = tvb_get_guint8(tvb, tvb_current_offset); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); if ( (tempchar >= 'a')&& (tempchar <= 'z')) tempchar = tempchar - 0x20; @@ -2953,7 +2953,7 @@ dissect_megaco_TerminationStatedescriptor(tvbuff_t *tvb, proto_tree *megaco_medi } - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); tvb_offset = tvb_find_guint8(tvb, tvb_current_offset , tvb_next_offset, '='); } @@ -3112,7 +3112,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades THROW(ReportedBoundsError); /* Start search after '=' in case there is no SP*/ tvb_offset++; - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset); /* find if there are more parameters or not */ tvb_offset = tvb_find_guint8(tvb, tvb_current_offset , tvb_offset, ','); @@ -3120,7 +3120,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_offset = tvb_next_offset; } - tokenlen = tvb_skip_wsp_return(tvb,tvb_offset-1) - tvb_current_offset; + tokenlen = megaco_tvb_skip_wsp_return(tvb,tvb_offset-1) - tvb_current_offset; /* Debug Code proto_tree_add_text(megaco_LocalControl_tree, tvb, tvb_current_offset, tokenlen, "%s", tvb_format_text(tvb,tvb_current_offset,tokenlen)); @@ -3135,7 +3135,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tokenlen)); if (check_col(pinfo->cinfo, COL_INFO) ) col_append_fstr(pinfo->cinfo, COL_INFO, " (Mode:%s)",tvb_format_text(tvb, tvb_current_offset,tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_RESERVEDVALUETOKEN: /* ReservedValue */ @@ -3144,14 +3144,14 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_format_text(tvb, tvb_current_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_RESERVEDGROUPTOKEN: /* ReservedGroup */ proto_tree_add_string(megaco_mediadescriptor_tree, hf_megaco_reserve_group, tvb, tvb_current_offset, tokenlen, tvb_format_text(tvb, tvb_current_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_H324_H223CAPR: /* h324/h223capr */ @@ -3160,7 +3160,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_format_text(tvb, tvb_current_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); tokenlen = tvb_offset - tvb_help_offset; msg=tvb_format_text(tvb,tvb_help_offset, tokenlen); dissect_megaco_h324_h223caprn(tvb, pinfo, megaco_mediadescriptor_tree, tvb_help_offset, tokenlen, msg); @@ -3174,7 +3174,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_format_text(tvb, tvb_current_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); tokenlen = tvb_offset - tvb_help_offset; msg=tvb_format_text(tvb,tvb_help_offset, tokenlen); @@ -3190,7 +3190,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_format_text(tvb, tvb_current_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); tokenlen = tvb_offset - tvb_help_offset; msg=tvb_format_text(tvb,tvb_help_offset, tokenlen); @@ -3208,7 +3208,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades tvb_get_nstringz0(tvb,tvb_current_offset,3,code_str); proto_item_append_text(item,"[ %s ]", val_to_str(strtoul(code_str,NULL,16), dscp_vals,"Unknown (%u)")); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_GM_SAF: @@ -3217,7 +3217,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); proto_item_append_text(item," [Remote Source Address Filtering]"); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_GM_SAM: tokenlen = tvb_offset - tvb_help_offset; @@ -3225,7 +3225,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); proto_item_append_text(item," [Remote Source Address Mask]"); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_GM_SPF: tokenlen = tvb_offset - tvb_help_offset; @@ -3233,7 +3233,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); proto_item_append_text(item," [Remote Source Port Filtering]"); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_GM_SPR: tokenlen = tvb_offset - tvb_help_offset; @@ -3241,7 +3241,7 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); proto_item_append_text(item," [Remote Source Port Range]"); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; case MEGACO_GM_ESAS: tokenlen = tvb_offset - tvb_help_offset; @@ -3249,14 +3249,14 @@ dissect_megaco_LocalControldescriptor(tvbuff_t *tvb, proto_tree *megaco_mediades "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); proto_item_append_text(item," [Explicit Source Address Setting]"); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; default: tokenlen = tvb_offset - tvb_help_offset; proto_tree_add_text(megaco_mediadescriptor_tree, tvb, tvb_help_offset, tokenlen, "%s", tvb_format_text(tvb,tvb_help_offset, tokenlen)); - tvb_current_offset = tvb_skip_wsp(tvb, tvb_offset +1); + tvb_current_offset = megaco_tvb_skip_wsp(tvb, tvb_offset +1); break; } @@ -3539,7 +3539,7 @@ proto_register_megaco(void) /* -* tvb_skip_wsp - Returns the position in tvb of the first non-whitespace +* megaco_tvb_skip_wsp - Returns the position in tvb of the first non-whitespace * character following offset or offset + maxlength -1 whichever * is smaller. * @@ -3549,7 +3549,7 @@ proto_register_megaco(void) * * Returns: The position in tvb of the first non-whitespace */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset ){ +static gint megaco_tvb_skip_wsp(tvbuff_t* tvb, gint offset ){ gint counter = offset; gint end,tvb_len; guint8 tempchar; @@ -3561,7 +3561,7 @@ static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset ){ tempchar == '\t' || tempchar == '\n' || tempchar == '\r'); counter++); return (counter); } -static gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset){ +static gint megaco_tvb_skip_wsp_return(tvbuff_t* tvb, gint offset){ gint counter = offset; gint end; guint8 tempchar; diff --git a/epan/dissectors/packet-mgcp.c b/epan/dissectors/packet-mgcp.c index 6a21fd211f..2c02d0a1e2 100644 --- a/epan/dissectors/packet-mgcp.c +++ b/epan/dissectors/packet-mgcp.c @@ -293,7 +293,6 @@ static void mgcp_raw_text_add(tvbuff_t *tvb, proto_tree *tree); * Some functions which should be moved to a library * as I think that people may find them of general usefulness. */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength); static gint tvb_find_null_line(tvbuff_t* tvb, gint offset, gint len, gint* next_offset); static gint tvb_find_dot_line(tvbuff_t* tvb, gint offset, gint len, gint* next_offset); static gboolean is_rfc2234_alpha(guint8 c); @@ -2128,45 +2127,6 @@ dissect_mgcp_localconnectionoptions(proto_tree *parent_tree, tvbuff_t *tvb, gint /* - * tvb_skip_wsp - Returns the position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - * - * Parameters: - * tvb - The tvbuff in which we are skipping whitespace. - * offset - The offset in tvb from which we begin trying to skip whitespace. - * maxlength - The maximum distance from offset that we may try to skip - * whitespace. - * - * Returns: The position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength) -{ - gint counter = offset; - gint end = offset + maxlength,tvb_len; - guint8 tempchar; - - /* Get the length remaining */ - tvb_len = tvb_length(tvb); - end = offset + maxlength; - if (end >= tvb_len) - { - end = tvb_len; - } - - /* Skip past spaces and tabs until run out or meet something else */ - for (counter = offset; - counter < end && - ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || - tempchar == '\t'); - counter++); - - return (counter); -} - -/* * tvb_find_null_line - Returns the length from offset to the first null * line found (a null line is a line that begins * with a CR or LF. The offset to the first character diff --git a/epan/dissectors/packet-rtsp.c b/epan/dissectors/packet-rtsp.c index bbb90d833d..cc5ea41e87 100644 --- a/epan/dissectors/packet-rtsp.c +++ b/epan/dissectors/packet-rtsp.c @@ -103,59 +103,6 @@ static guint tcp_port = 0; static guint tcp_alternate_port = 0; /* - * Copied from the mgcp dissector. (This function should be moved to /epan ) - * tvb_skip_wsp - Returns the position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - * - * Parameters: - * tvb - The tvbuff in which we are skipping whitespace. - * offset - The offset in tvb from which we begin trying to skip whitespace. - * maxlength - The maximum distance from offset that we may try to skip - * whitespace. - * - * Returns: The position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength) -{ - gint counter = offset; - gint end = offset + maxlength,tvb_len; - guint8 tempchar; - - /* Get the length remaining */ - tvb_len = tvb_length(tvb); - end = offset + maxlength; - if (end >= tvb_len) - { - end = tvb_len; - } - - /* Skip past spaces, tabs, CRs and LFs until run out or meet something else */ - for (counter = offset; - counter < end && - ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || - tempchar == '\t' || tempchar == '\r' || tempchar == '\n'); - counter++); - - return (counter); -} - -static gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset){ - gint counter = offset; - gint end; - guint8 tempchar; - end = 0; - - for(counter = offset; counter > end && - ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || - tempchar == '\t' || tempchar == '\n' || tempchar == '\r'); counter--); - counter++; - return (counter); -} - -/* * Takes an array of bytes, assumed to contain a null-terminated * string, as an argument, and returns the length of the string - * i.e., the size of the array, minus 1 for the null terminator. diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 0b7d0f67fe..8875a69a9c 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -694,59 +694,6 @@ sip_init_protocol(void) sip_hash = g_hash_table_new(sip_hash_func, sip_equal); } -/* - * Copied from the mgcp dissector. (This function should be moved to /epan ) - * tvb_skip_wsp - Returns the position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - * - * Parameters: - * tvb - The tvbuff in which we are skipping whitespace. - * offset - The offset in tvb from which we begin trying to skip whitespace. - * maxlength - The maximum distance from offset that we may try to skip - * whitespace. - * - * Returns: The position in tvb of the first non-whitespace - * character following offset or offset + maxlength -1 whichever - * is smaller. - */ -static gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength) -{ - gint counter = offset; - gint end = offset + maxlength,tvb_len; - guint8 tempchar; - - /* Get the length remaining */ - tvb_len = tvb_length(tvb); - end = offset + maxlength; - if (end >= tvb_len) - { - end = tvb_len; - } - - /* Skip past spaces, tabs, CRs and LFs until run out or meet something else */ - for (counter = offset; - counter < end && - ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || - tempchar == '\t' || tempchar == '\r' || tempchar == '\n'); - counter++); - - return (counter); -} - -static gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset){ - gint counter = offset; - gint end; - guint8 tempchar; - end = 0; - - for(counter = offset; counter > end && - ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || - tempchar == '\t' || tempchar == '\n' || tempchar == '\r'); counter--); - counter++; - return (counter); -} - /* Structure to collect info about a sip uri */ typedef struct _uri_offset_info { diff --git a/epan/libwireshark.def b/epan/libwireshark.def index 366698ab3c..878e3a8092 100644 --- a/epan/libwireshark.def +++ b/epan/libwireshark.def @@ -901,6 +901,8 @@ tvb_reported_length_remaining tvb_set_child_real_data_tvbuff tvb_set_free_cb tvb_set_reported_length +tvb_skip_wsp +tvb_skip_wsp_return tvb_strncaseeql tvb_strneql tvb_strnlen diff --git a/epan/tvbuff.c b/epan/tvbuff.c index a7a315684a..70a97a8bb0 100644 --- a/epan/tvbuff.c +++ b/epan/tvbuff.c @@ -2556,6 +2556,60 @@ tvb_find_line_end_unquoted(tvbuff_t *tvb, gint offset, int len, } /* + * Copied from the mgcp dissector. (This function should be moved to /epan ) + * tvb_skip_wsp - Returns the position in tvb of the first non-whitespace + * character following offset or offset + maxlength -1 whichever + * is smaller. + * + * Parameters: + * tvb - The tvbuff in which we are skipping whitespace. + * offset - The offset in tvb from which we begin trying to skip whitespace. + * maxlength - The maximum distance from offset that we may try to skip + * whitespace. + * + * Returns: The position in tvb of the first non-whitespace + * character following offset or offset + maxlength -1 whichever + * is smaller. + */ +gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength) +{ + gint counter = offset; + gint end = offset + maxlength,tvb_len; + guint8 tempchar; + + /* Get the length remaining */ + tvb_len = tvb_length(tvb); + end = offset + maxlength; + if (end >= tvb_len) + { + end = tvb_len; + } + + /* Skip past spaces, tabs, CRs and LFs until run out or meet something else */ + for (counter = offset; + counter < end && + ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || + tempchar == '\t' || tempchar == '\r' || tempchar == '\n'); + counter++); + + return (counter); +} + +gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset){ + gint counter = offset; + gint end; + guint8 tempchar; + end = 0; + + for(counter = offset; counter > end && + ((tempchar = tvb_get_guint8(tvb,counter)) == ' ' || + tempchar == '\t' || tempchar == '\n' || tempchar == '\r'); counter--); + counter++; + return (counter); +} + + +/* * Format a bunch of data from a tvbuff as bytes, returning a pointer * to the string with the formatted data, with "punct" as a byte * separator. diff --git a/epan/tvbuff.h b/epan/tvbuff.h index b8f7e62206..df4da31c85 100644 --- a/epan/tvbuff.h +++ b/epan/tvbuff.h @@ -557,6 +557,27 @@ extern gint tvb_find_line_end_unquoted(tvbuff_t *tvb, gint offset, int len, gint *next_offset); /** + * Copied from the mgcp dissector. (This function should be moved to /epan ) + * tvb_skip_wsp - Returns the position in tvb of the first non-whitespace + * character following offset or offset + maxlength -1 whichever + * is smaller. + * + * Parameters: + * tvb - The tvbuff in which we are skipping whitespace. + * offset - The offset in tvb from which we begin trying to skip whitespace. + * maxlength - The maximum distance from offset that we may try to skip + * whitespace. + * + * Returns: The position in tvb of the first non-whitespace + * character following offset or offset + maxlength -1 whichever + * is smaller. + */ + +extern gint tvb_skip_wsp(tvbuff_t* tvb, gint offset, gint maxlength); + +extern gint tvb_skip_wsp_return(tvbuff_t* tvb, gint offset); + +/** * Call strncmp after checking if enough chars left, returning 0 if * it returns 0 (meaning "equal") and -1 otherwise, otherwise return -1. */ |