diff -Naur dsc-200706121022.orig/presenter/perllib/DSC/extractor/config.pm dsc-200706121022/presenter/perllib/DSC/extractor/config.pm --- dsc-200706121022.orig/presenter/perllib/DSC/extractor/config.pm 2007-05-15 21:39:54.000000000 +0200 +++ dsc-200706121022/presenter/perllib/DSC/extractor/config.pm 2007-12-18 16:20:13.565777000 +0100 @@ -230,6 +230,34 @@ }, }, + client_addr_ipv4_vs_rcode => { + ndim => 2, + type1 => 'Rcode', + type2 => 'ClientAddr', + outputs => { + client_addr_ipv4_vs_rcode_accum => { + data_munger => \&main::swap_dimensions, + data_reader => \&DSC::extractor::read_data3, + data_merger => \&main::merge_accum2d, + data_writer => \&DSC::extractor::write_data3, + }, + }, + }, + + client_addr_ipv6_vs_rcode => { + ndim => 2, + type1 => 'Rcode', + type2 => 'ClientAddr', + outputs => { + client_addr_ipv6_vs_rcode_accum => { + data_munger => \&main::swap_dimensions, + data_reader => \&DSC::extractor::read_data3, + data_merger => \&main::merge_accum2d, + data_writer => \&DSC::extractor::write_data3, + }, + }, + }, + direction_vs_ipproto => { ndim => 2, type1 => 'Direction', @@ -331,6 +359,28 @@ }, }, + dns_ip_version_vs_qtype => { + ndim => 2, + type1 => 'IPVersion', + type2 => 'Qtype', + outputs => { + dns_ip_version => { + keys2 => [ qw(1 2 5 6 12 15 28 33 38 255 else) ], + data_munger => \&main::munge_elsify, + data_reader => \&DSC::extractor::read_data4, + data_merger => \&main::merge_trace, + data_writer => \&DSC::extractor::write_data4, + }, + dns_ip_version_vs_qtype => { + keys2 => [ qw(1 2 5 6 12 15 28 33 38 255 else) ], + data_munger => \&main::munge_elsify, + data_reader => \&DSC::extractor::read_data3, + data_merger => \&main::merge_accum2d, + data_writer => \&DSC::extractor::write_data3, + #data_trimer => \&main::trim_accum2d, + }, + }, + }, ); 1; diff -Naur dsc-200706121022.orig/presenter/perllib/DSC/grapher/plot.pm dsc-200706121022/presenter/perllib/DSC/grapher/plot.pm --- dsc-200706121022.orig/presenter/perllib/DSC/grapher/plot.pm 2007-05-15 22:34:33.000000000 +0200 +++ dsc-200706121022/presenter/perllib/DSC/grapher/plot.pm 2007-12-18 16:32:13.551684000 +0100 @@ -455,6 +455,44 @@ } }, + dns_ip_version => { + dataset => 'dns_ip_version_vs_qtype', + plot_type => 'trace', + keys => [qw(IPv4 IPv6 else)], + names => [qw(IPv4 IPv6 Other)], + colors => [qw(red brightgreen purple)], + data_reader => \&DSC::extractor::read_data4, + data_summer => \&DSC::grapher::data_summer_2d, + yaxes => { + rate => { + label => 'Queries Rate (q/s)', + divideflag => 1, + default => 1, + }, + percent => { + label => 'Percent of Queries', + divideflag => 0, + default => 0, + }, + }, + plottitle => 'IP Version Carrying DNS Queries', + map_legend => 1, + munge_func => \&DSC::grapher::munge_sum_2d_to_1d, + }, + + dns_ip_version_vs_qtype => { + plot_type => 'accum2d', + divideflag => 0, + keys => $qtype_keys, + names => $qtype_names, + colors => $qtype_colors, + data_reader => \&DSC::extractor::read_data3, + data_summer => \&DSC::grapher::data_summer_1d, + yaxes => $std_accum_yaxes, + plottitle => 'Query Types by IP version', + map_legend => 1, + }, + transport_vs_qtype => { dataset => 'transport_vs_qtype', plot_type => 'trace', @@ -664,6 +702,34 @@ munge_func => \&DSC::grapher::munge_anonymize_ip, }, + client_addr_ipv4_vs_rcode_accum => { + dataset => 'client_addr_ipv4_vs_rcode', + plot_type => 'accum2d', + yaxes => $std_accum_yaxes, + keys => [ qw(0 1 2 3 4 5) ], + names => [ qw(NOERROR FORMERR SERVFAIL NXDOMAIN NOTIMPL REFUSED) ], + colors => [ qw(brightgreen red purple blue orange magenta ) ], + data_reader => \&DSC::extractor::read_data3, + data_summer => \&DSC::grapher::data_summer_1d, + plottitle => 'Rcodes and Addrs IPv4', + map_legend => 1, + munge_func => \&DSC::grapher::munge_anonymize_ip, + }, + + client_addr_ipv6_vs_rcode_accum => { + dataset => 'client_addr_ipv6_vs_rcode', + plot_type => 'accum2d', + yaxes => $std_accum_yaxes, + keys => [ qw(0 1 2 3 4 5) ], + names => [ qw(NOERROR FORMERR SERVFAIL NXDOMAIN NOTIMPL REFUSED) ], + colors => [ qw(brightgreen red purple blue orange magenta ) ], + data_reader => \&DSC::extractor::read_data3, + data_summer => \&DSC::grapher::data_summer_1d, + plottitle => 'Rcodes and Addrs IPv6', + map_legend => 1, + munge_func => \&DSC::grapher::munge_anonymize_ip, + }, + ipv6_rsn_abusers_accum => { dataset => 'ipv6_rsn_abusers', plot_type => 'accum1d', diff -Naur dsc-200706121022.orig/presenter/perllib/DSC/grapher.pm dsc-200706121022/presenter/perllib/DSC/grapher.pm --- dsc-200706121022.orig/presenter/perllib/DSC/grapher.pm 2007-05-15 22:31:53.000000000 +0200 +++ dsc-200706121022/presenter/perllib/DSC/grapher.pm 2007-12-18 16:12:09.630859000 +0100 @@ -1239,6 +1239,10 @@ push(@items, sublist_item() . navbar_item('plot','qtype_vs_numeric_tld', 'numeric')); } push(@items, navbar_item('plot','client_addr_vs_rcode_accum','Rcodes by Client Address')); + if ($pn =~ /client_addr_vs_rcode_accum|client_addr_ipv6_vs_rcode_accum|client_addr_ipv4_vs_rcode_accum/) { + push(@items, sublist_item() . navbar_item('plot','client_addr_ipv4_vs_rcode_accum','IPv4')); + push(@items, sublist_item() . navbar_item('plot','client_addr_ipv6_vs_rcode_accum','IPv6')); + } push(@items, navbar_item('plot','certain_qnames_vs_qtype','Popular Names')); push(@items, navbar_item('plot','ipv6_rsn_abusers_accum','IPv6 root abusers')); push(@items, navbar_item('plot','opcode','Opcodes')); @@ -1250,6 +1254,10 @@ push(@items, sublist_item() . navbar_item('plot','edns_version', 'EDNS version')); } push(@items, navbar_item('plot','chaos_types_and_names','CHAOS')); + push(@items, navbar_item('plot','dns_ip_version','IP Version')); + if ($pn =~ /dns_ip_version|dns_ip_version_vs_qtype/) { + push(@items, sublist_item() . navbar_item('plot', 'dns_ip_version_vs_qtype', 'Query Types')); + } push(@items, navbar_item('plot','transport_vs_qtype','DNS Transport')); push(@items, navbar_item('plot','direction_vs_ipproto','IP Protocols')); push(@items, navbar_item('plot','qtype_vs_qnamelen','Qname Length'));