- tcp_len=$(echo $frame_info | cut -d\| -f12)
- frm_len=$(wc -c $tmpdir/block.$frame | awk '{ print $1 }')
- cut_len=$((frm_len-2*tcp_len))
- cat $tmpdir/block.$frame | cut -c${cut_len}- > $RESULTS_DIR/$frame.hex
+ frm_len=$(echo $frame_info | cut -d\| -f14)
+ tcp_len=$(echo $frame_info | cut -d\| -f15)
+ dia_len=$(echo $frame_info | cut -d\| -f16)
+ protocol=$(echo $frame_info | cut -d\| -f17)
+
+ # TCP and SCTP supported:
+ transport=$(echo $protocol | grep -ow tcp)
+ [ -z "$transport" ] && transport=$(echo $protocol | grep -ow sctp)
+ # in case of segmented SCTP frames, protocol won't be sctp ...:
+ if [ -s "$tmpdir/extra_frames_num" -a -z "$transport" ]
+ then
+ grep -qw ^${frame} $tmpdir/extra_frames_num
+ if [ $? -eq 0 ]
+ then
+ transport=sctp
+ frame_info=$(grep "^${frame}|" $tmpdir/all_frames)
+ fi
+ fi
+
+ case $transport in
+ sctp)
+ chunk_length=$(echo $frame_info | cut -d\| -f19)
+ dia_partial_len=$((chunk_length-16))
+ if [ "$dia_len" != "$dia_partial_len" ]
+ then
+ #echo "Segmented SCTP frame $frame; taking partial diameter length = $dia_partial_len"
+ dia_len=$dia_partial_len
+ fi
+ cut_len=$((2*dia_len))
+ cat $tmpdir/block.$frame | rev | cut -c-${cut_len} | rev > $RESULTS_DIR/$frame.hex
+ ;;
+
+ tcp)
+ cut_len=$((2*(frm_len-tcp_len) + 1))
+ cat $tmpdir/block.$frame | cut -c${cut_len}- > $RESULTS_DIR/$frame.hex
+ cp $tmpdir/block.$frame /tmp/block
+ segments=$(echo $frame_info | cut -d\| -f18)
+ segmentsGroups="$segmentsGroups $segments"
+ ;;
+
+ *) _exit "Only TCP and SCTP transports supported !!"
+ ;;
+ esac
+ ##########################################################################################
+