+ if length($opt{'use_cdrtypenum'})
+ && $cdr->cdrtypenum ne $opt{'use_cdrtypenum'}; #ne otherwise 0 matches ''
+
+ return "cdrtypenum == $opt{'ignore_cdrtypenum'}"
+ if length($opt{'ignore_cdrtypenum'})
+ && $cdr->cdrtypenum eq $opt{'ignore_cdrtypenum'}; #eq otherwise 0 matches ''
+
+ return "dcontext IN ( $opt{'skip_dcontext'} )"
+ if $opt{'skip_dcontext'} =~ /\S/
+ && grep { $cdr->dcontext eq $_ } split(/\s*,\s*/, $opt{'skip_dcontext'});
+
+ my $len_prefix = length($opt{'skip_dstchannel_prefix'});
+ return "dstchannel starts with $opt{'skip_dstchannel_prefix'}"
+ if $len_prefix
+ && substr($cdr->dstchannel,0,$len_prefix) eq $opt{'skip_dstchannel_prefix'};
+
+ my $dst_length = $opt{'skip_dst_length_less'};
+ return "destination less than $dst_length digits"
+ if $dst_length && length($cdr->dst) < $dst_length
+ && ! ( $opt{'noskip_dst_length_accountcode_tollfree'}
+ && $cdr->is_tollfree('accountcode')
+ );
+
+ return "lastapp is $opt{'skip_lastapp'}"
+ if length($opt{'skip_lastapp'}) && $cdr->lastapp eq $opt{'skip_lastapp'};
+
+ my $src_length = $opt{'skip_src_length_more'};
+ if ( $src_length ) {
+
+ if ( $opt{'noskip_src_length_accountcode_tollfree'} ) {
+
+ if ( $cdr->is_tollfree('accountcode') ) {
+ return "source less than or equal to $src_length digits"
+ if length($cdr->src) <= $src_length;
+ } else {
+ return "source more than $src_length digits"
+ if length($cdr->src) > $src_length;
+ }
+
+ } else {
+ return "source more than $src_length digits"
+ if length($cdr->src) > $src_length;
+ }
+
+ }
+
+ return "max_callers <= $opt{skip_max_callers}"
+ if length($opt{'skip_max_callers'})
+ and length($cdr->max_callers)
+ and $cdr->max_callers <= $opt{'skip_max_callers'};