Hi, I've tested also, for the qos and network graphs. No problem. One annotation: why are the legends 'incoming traffic in bytes per second' ( new '... bits per second' )? The associated text is 'incoming traffic' ( obviously in both versions ). Can't we change this key just to 'incoming traffic'? This is true for 'outgoing traffic...', 'incoming overhead...', ... I didn't search where this texts are used in the project. Regards, Bernhard Am 24.05.2021 um 18:18 schrieb Matthias Fischer: > Hi, > > thanks for the corrected patch - now I could apply it. > > I made a quick test => please see attachments. > > Seems to work as expected. > > However I cannot test VPN connections, sorry. > > Best, > Matthias > > On 24.05.2021 16:04, nateos2g(a)fastmail.com wrote: >> From: Nate Oaks <nateos2g(a)fastmail.com> >> >> For proper display of network measurements, Bps (bytes) should be >> converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, >> etc.), bits are for network bandwidth or throughput (NICs, switches, >> routers, WiFi adapters, etc.). >> >> Networks transfer data as single bits at a time. It’s both more accurate >> and more intuitive to measure network speed in bits per second that a >> network connection is transmitting, not the amount of data units, or >> bytes, it transmits. Notice all network devices are marketed, measure >> and diplay in bits per second. >> >> I simply used RRD CDEF to multiply by 8. >> >> NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are >> not supported". >> Specifically in updateqosgraph, CDEF does not like a number as a >> variable name. ie. "204" from $classline[1]. >> >> Requires update of the language cache files: >> perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" >> or: update-lang-cache >> >> Found one other asking for this: >> https://community.ipfire.org/t/ipfire-bandwidth-usage/1203 >> >> Signed-off-by: Nate Oaks <nateos2g(a)fastmail.com> >> --- >> config/cfgroot/graphs.pl | 202 +++++++++++++++++++++------------------ >> langs/en/cgi-bin/en.pl | 13 +-- >> 2 files changed, 117 insertions(+), 98 deletions(-) >> >> diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl >> index 441d4c483a46..c83ae67bbfc1 100644 >> --- a/config/cfgroot/graphs.pl >> +++ b/config/cfgroot/graphs.pl >> @@ -545,28 +545,30 @@ sub updateifgraph { >> "-1".$period, >> "-r", >> "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >> - "-v ".$Lang::tr{'bytes per second'}, >> + "-v ".$Lang::tr{'bits per second'}, >> "--color=SHADEA".$color{"color19"}, >> "--color=SHADEB".$color{"color19"}, >> "--color=BACK".$color{"color21"}, >> "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:rx:AVERAGE", >> "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:tx:AVERAGE", >> - "CDEF:outgoingn=outgoing,-1,*", >> + "CDEF:outgoingb=outgoing,8,*", >> + "CDEF:outgoingn=outgoingb,-1,*", >> + "CDEF:incomingb=incoming,8,*", >> "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >> - "AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), >> - "GPRINT:incoming:MAX:%8.1lf %sBps", >> - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", >> - "GPRINT:incoming:MIN:%8.1lf %sBps", >> - "GPRINT:incoming:LAST:%8.1lf %sBps\\j", >> - "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), >> - "GPRINT:outgoing:MAX:%8.1lf %sBps", >> - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", >> - "GPRINT:outgoing:MIN:%8.1lf %sBps", >> - "GPRINT:outgoing:LAST:%8.1lf %sBps\\j", >> + "AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}), >> + "GPRINT:incomingb:MAX:%8.1lf %sbps", >> + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:incomingb:MIN:%8.1lf %sbps", >> + "GPRINT:incomingb:LAST:%8.1lf %sbps\\j", >> + "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}), >> + "GPRINT:outgoingb:MAX:%8.1lf %sbps", >> + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:outgoingb:MIN:%8.1lf %sbps", >> + "GPRINT:outgoingb:LAST:%8.1lf %sbps\\j", >> ); >> $ERROR = RRDs::error; >> return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; >> @@ -582,28 +584,30 @@ sub updatevpngraph { >> "-1".$period, >> "-r", >> "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >> - "-v ".$Lang::tr{'bytes per second'}, >> + "-v ".$Lang::tr{'bits per second'}, >> "--color=SHADEA".$color{"color19"}, >> "--color=SHADEB".$color{"color19"}, >> "--color=BACK".$color{"color21"}, >> "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", >> "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE", >> - "CDEF:outgoingn=outgoing,-1,*", >> + "CDEF:outgoingb=outgoing,8,*", >> + "CDEF:outgoingn=outgoingb,-1,*", >> + "CDEF:incomingb=incoming,8,*", >> "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >> - "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), >> - "GPRINT:incoming:MAX:%8.1lf %sBps", >> - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", >> - "GPRINT:incoming:MIN:%8.1lf %sBps", >> - "GPRINT:incoming:LAST:%8.1lf %sBps\\j", >> - "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), >> - "GPRINT:outgoing:MAX:%8.1lf %sBps", >> - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", >> - "GPRINT:outgoing:MIN:%8.1lf %sBps", >> - "GPRINT:outgoing:LAST:%8.1lf %sBps\\j", >> + "AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}), >> + "GPRINT:incomingb:MAX:%8.1lf %sbps", >> + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:incomingb:MIN:%8.1lf %sbps", >> + "GPRINT:incomingb:LAST:%8.1lf %sbps\\j", >> + "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}), >> + "GPRINT:outgoingb:MAX:%8.1lf %sbps", >> + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:outgoingb:MIN:%8.1lf %sbps", >> + "GPRINT:outgoingb:LAST:%8.1lf %sbps\\j", >> ); >> $ERROR = RRDs::error; >> return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; >> @@ -619,7 +623,7 @@ sub updatevpnn2ngraph { >> "-1".$period, >> "-r", >> "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >> - "-v ".$Lang::tr{'bytes per second'}, >> + "-v ".$Lang::tr{'bits per second'}, >> "--color=SHADEA".$color{"color19"}, >> "--color=SHADEB".$color{"color19"}, >> "--color=BACK".$color{"color21"}, >> @@ -629,44 +633,50 @@ sub updatevpnn2ngraph { >> "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", >> "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", >> "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE", >> - "CDEF:outgoingn=outgoing,-1,*", >> - "CDEF:overhead_outn=overhead_out,-1,*", >> - "CDEF:compression_outn=compression_out,-1,*", >> + "CDEF:outgoingb=outgoing,8,*", >> + "CDEF:outgoingn=outgoingb,-1,*", >> + "CDEF:incomingb=incoming,8,*", >> + "CDEF:overhead_outb=overhead_out,8,*", >> + "CDEF:overhead_outn=overhead_outb,-1,*", >> + "CDEF:overhead_inb=overhead_in,8,*", >> + "CDEF:compression_outb=compression_out,8,*", >> + "CDEF:compression_outn=compression_outb,-1,*", >> + "CDEF:compression_inb=compression_in,8,*", >> "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >> - "AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bytes per second'}), >> - "GPRINT:incoming:MAX:%8.1lf %sBps", >> - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", >> - "GPRINT:incoming:MIN:%8.1lf %sBps", >> - "GPRINT:incoming:LAST:%8.1lf %sBps\\j", >> - "STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bytes per second'}), >> - "GPRINT:overhead_in:MAX:%8.1lf %sBps", >> - "GPRINT:overhead_in:AVERAGE:%8.1lf %sBps", >> - "GPRINT:overhead_in:MIN:%8.1lf %sBps", >> - "GPRINT:overhead_in:LAST:%8.1lf %sBps\\j", >> - "LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bytes per second'}), >> - "GPRINT:compression_in:MAX:%8.1lf %sBps", >> - "GPRINT:compression_in:AVERAGE:%8.1lf %sBps", >> - "GPRINT:compression_in:MIN:%8.1lf %sBps", >> - "GPRINT:compression_in:LAST:%8.1lf %sBps\\j", >> - "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bytes per second'}), >> - "GPRINT:outgoing:MAX:%8.1lf %sBps", >> - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", >> - "GPRINT:outgoing:MIN:%8.1lf %sBps", >> - "GPRINT:outgoing:LAST:%8.1lf %sBps\\j", >> - "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bytes per second'}), >> - "GPRINT:overhead_out:MAX:%8.1lf %sBps", >> - "GPRINT:overhead_out:AVERAGE:%8.1lf %sBps", >> - "GPRINT:overhead_out:MIN:%8.1lf %sBps", >> - "GPRINT:overhead_out:LAST:%8.1lf %sBps\\j", >> - "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bytes per second'}), >> - "GPRINT:compression_out:MAX:%8.1lf %sBps", >> - "GPRINT:compression_out:AVERAGE:%8.1lf %sBps", >> - "GPRINT:compression_out:MIN:%8.1lf %sBps", >> - "GPRINT:compression_out:LAST:%8.1lf %sBps\\j", >> + "AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bits per second'}), >> + "GPRINT:incomingb:MAX:%8.1lf %sbps", >> + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:incomingb:MIN:%8.1lf %sbps", >> + "GPRINT:incomingb:LAST:%8.1lf %sbps\\j", >> + "STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bits per second'}), >> + "GPRINT:overhead_inb:MAX:%8.1lf %sbps", >> + "GPRINT:overhead_inb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:overhead_inb:MIN:%8.1lf %sbps", >> + "GPRINT:overhead_inb:bLAST:%8.1lf %sbps\\j", >> + "LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bits per second'}), >> + "GPRINT:compression_inb:MAX:%8.1lf %sbps", >> + "GPRINT:compression_inb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:compression_inb:MIN:%8.1lf %sbps", >> + "GPRINT:compression_inb:LAST:%8.1lf %sbps\\j", >> + "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bits per second'}), >> + "GPRINT:outgoingb:MAX:%8.1lf %sbps", >> + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:outgoingb:MIN:%8.1lf %sbps", >> + "GPRINT:outgoingb:LAST:%8.1lf %sbps\\j", >> + "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bits per second'}), >> + "GPRINT:overhead_outb:MAX:%8.1lf %sbps", >> + "GPRINT:overhead_outb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:overhead_outb:MIN:%8.1lf %sbps", >> + "GPRINT:overhead_outb:LAST:%8.1lf %sbps\\j", >> + "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bits per second'}), >> + "GPRINT:compression_outb:MAX:%8.1lf %sbps", >> + "GPRINT:compression_outb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:compression_outb:MIN:%8.1lf %sbps", >> + "GPRINT:compression_outb:LAST:%8.1lf %sbps\\j", >> ); >> $ERROR = RRDs::error; >> return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; >> @@ -683,7 +693,7 @@ sub updatefwhitsgraph { >> "-1".$period, >> "-r", >> "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"}, >> - "-v ".$Lang::tr{'bytes per second'}, >> + "-v ".$Lang::tr{'bits per second'}, >> "--color=SHADEA".$color{"color19"}, >> "--color=SHADEB".$color{"color19"}, >> "--color=BACK".$color{"color21"}, >> @@ -692,36 +702,41 @@ sub updatefwhitsgraph { >> "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", >> "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", >> "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE", >> + "CDEF:outputb=output,8,*", >> + "CDEF:inputb=input,8,*", >> + "CDEF:forwardb=forward,8,*", >> + "CDEF:newnotsynb=newnotsyn,8,*", >> + "CDEF:portscanb=portscan,8,*", >> "COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), >> "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}), >> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >> - "AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), >> - "GPRINT:output:MAX:%8.1lf %sBps", >> - "GPRINT:output:AVERAGE:%8.1lf %sBps", >> - "GPRINT:output:MIN:%8.1lf %sBps", >> - "GPRINT:output:LAST:%8.1lf %sBps\\j", >> - "STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), >> - "GPRINT:forward:MAX:%8.1lf %sBps", >> - "GPRINT:forward:AVERAGE:%8.1lf %sBps", >> - "GPRINT:forward:MIN:%8.1lf %sBps", >> - "GPRINT:forward:LAST:%8.1lf %sBps\\j", >> - "STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), >> - "GPRINT:input:MAX:%8.1lf %sBps", >> - "GPRINT:input:AVERAGE:%8.1lf %sBps", >> - "GPRINT:input:MIN:%8.1lf %sBps", >> - "GPRINT:input:LAST:%8.1lf %sBps\\j", >> - "STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), >> - "GPRINT:newnotsyn:MAX:%8.1lf %sBps", >> - "GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps", >> - "GPRINT:newnotsyn:MIN:%8.1lf %sBps", >> - "GPRINT:newnotsyn:LAST:%8.1lf %sBps\\j", >> - "STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), >> - "GPRINT:portscan:MAX:%8.1lf %sBps", >> - "GPRINT:portscan:AVERAGE:%8.1lf %sBps", >> - "GPRINT:portscan:MIN:%8.1lf %sBps", >> - "GPRINT:portscan:LAST:%8.1lf %sBps\\j", >> + "AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), >> + "GPRINT:outputb:MAX:%8.1lf %sbps", >> + "GPRINT:outputb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:outputb:MIN:%8.1lf %sbps", >> + "GPRINT:outputb:LAST:%8.1lf %sbps\\j", >> + "STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), >> + "GPRINT:forwardb:MAX:%8.1lf %sbps", >> + "GPRINT:forwardb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:forwardb:MIN:%8.1lf %sbps", >> + "GPRINT:forwardb:LAST:%8.1lf %sbps\\j", >> + "STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), >> + "GPRINT:inputb:MAX:%8.1lf %sbps", >> + "GPRINT:inputb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:inputb:MIN:%8.1lf %sbps", >> + "GPRINT:inputb:LAST:%8.1lf %sbps\\j", >> + "STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), >> + "GPRINT:newnotsynb:MAX:%8.1lf %sbps", >> + "GPRINT:newnotsynb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:newnotsynb:MIN:%8.1lf %sbps", >> + "GPRINT:newnotsynb:LAST:%8.1lf %sbps\\j", >> + "STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), >> + "GPRINT:portscanb:MAX:%8.1lf %sbps", >> + "GPRINT:portscanb:AVERAGE:%8.1lf %sbps", >> + "GPRINT:portscanb:MIN:%8.1lf %sbps", >> + "GPRINT:portscanb:LAST:%8.1lf %sbps\\j", >> ); >> $ERROR = RRDs::error; >> return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR; >> @@ -1012,7 +1027,7 @@ sub updateqosgraph { >> "-1".$period, >> "-r", >> "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >> - "-v ".$Lang::tr{'bytes per second'}, >> + "-v ".$Lang::tr{'bits per second'}, >> "--color=SHADEA".$color{"color19"}, >> "--color=SHADEB".$color{"color19"}, >> "--color=BACK".$color{"color21"}, >> @@ -1039,21 +1054,24 @@ sub updateqosgraph { >> } >> >> if ( $classline[0] eq $qossettings{'DEV'} ){ >> - push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); >> + # Found: ERROR: rpn expressions without DEF or CDEF variables are not supported >> + # CDEF does not like a number as a variable name. ie. "204" from $classline[1] >> + push(@command, "DEF:$classline[1]bit=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); >> + push(@command, "CDEF:$classline[8]=$classline[1]bit,8,*"); >> >> # get color to be used for this graph >> my $graphColor = $colorMap{$colorKey}; >> >> if ($count eq "1") { >> - push(@command, "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); >> + push(@command, "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); >> } else { >> - push(@command, "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); >> + push(@command, "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); >> } >> >> - push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps" >> - , "GPRINT:$classline[1]:AVERAGE:%8.1lf %sBps" >> - , "GPRINT:$classline[1]:MIN:%8.1lf %sBps" >> - , "GPRINT:$classline[1]:LAST:%8.1lf %sBps\\j"); >> + push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps" >> + , "GPRINT:$classline[8]:AVERAGE:%8.1lf %sbps" >> + , "GPRINT:$classline[8]:MIN:%8.1lf %sbps" >> + , "GPRINT:$classline[8]:LAST:%8.1lf %sbps\\j"); >> $count++; >> } >> } >> diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl >> index dc1fd8d67b30..b0097074beb0 100644 >> --- a/langs/en/cgi-bin/en.pl >> +++ b/langs/en/cgi-bin/en.pl >> @@ -515,6 +515,7 @@ >> 'broken pipe' => 'Broken pipe', >> 'buffered memory' => 'Buffered Memory', >> 'buffers' => 'buffers', >> +'bits per second' => 'Bits per Second', >> 'bytes per second' => 'Bytes per Second', >> 'bytes received' => 'Bytes Received', >> 'bytes sent' => 'Bytes Sent', >> @@ -1431,10 +1432,10 @@ >> 'inactive' => 'inactive', >> 'include logfiles' => 'Include logfiles', >> 'incoming' => 'incoming', >> -'incoming compression in bytes per second' => 'Incoming Compression', >> +'incoming compression in bits per second' => 'Incoming Compression', >> 'incoming firewall access' => 'Incoming Firewall Access', >> -'incoming overhead in bytes per second' => 'Incoming Overhead', >> -'incoming traffic in bytes per second' => 'Incoming Traffic', >> +'incoming overhead in bits per second' => 'Incoming Overhead', >> +'incoming traffic in bits per second' => 'Incoming Traffic', >> 'incorrect password' => 'Incorrect password', >> 'info' => 'Info', >> 'init string' => 'Init:', >> @@ -1907,7 +1908,7 @@ >> 'our donors' => 'Our donors', >> 'out' => 'Out', >> 'outgoing' => 'outgoing', >> -'outgoing compression in bytes per second' => 'Outgoing compression', >> +'outgoing compression in bits per second' => 'Outgoing compression', >> 'outgoing firewall' => 'Outgoing Firewall', >> 'outgoing firewall access' => 'Outgoing Firewall Access', >> 'outgoing firewall add ip group' => 'Add IP Address Group', >> @@ -1930,8 +1931,8 @@ >> 'outgoing firewall reset' => 'Reset all', >> 'outgoing firewall view group' => 'View group', >> 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', >> -'outgoing overhead in bytes per second' => 'Outgoing Overhead', >> -'outgoing traffic in bytes per second' => 'Outgoing Traffic', >> +'outgoing overhead in bits per second' => 'Outgoing Overhead', >> +'outgoing traffic in bits per second' => 'Outgoing Traffic', >> 'override mtu' => 'Override default MTU', >> 'ovpn' => 'OpenVPN', >> 'ovpn add conf' => 'Additional configuration', >> >