libexec/racct.pl
Код: Выделить всё
if ($nas->{NAS_TYPE} eq 'mpd5' && $RAD->{MPD_INPUT_OCTETS}) {
foreach my $line (@{ $RAD->{MPD_OUTPUT_OCTETS} }) {
my($class, $byte)=split(/:/, $line);
$class = ($class == 0) ? '' : $class + 1;
$RAD->{'INBYTE'. $class } = $byte;
}
foreach my $line (@{ $RAD->{MPD_INPUT_OCTETS} }) {
my($class, $byte)=split(/:/, $line);
$class = ($class == 0) ? '' : $class + 1;
$RAD->{'OUTBYTE' . $class} = $byte;
}
}
2. Уже писал, что есть вопрос при $CONF->{mpd_filters}, ! $CONF->{ng_car} и нулевой скорости в ТП для основного направления мы имеем шейп следующего вида:
Код: Выделить всё
Sending Access-Request of id 66 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Framed-Protocol = PPP
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=66, length=404
Session-Timeout = 613148
Framed-IP-Address = 172.16.0.45
mpd-filter = "1#1=match dst net 172.16.0.0/24"
mpd-filter = "2#1=match src net 172.16.0.0/24"
mpd-filter = "1#2=match dst net 10.100.0.0/30"
mpd-filter = "2#2=match src net 10.100.0.0/30"
Framed-IP-Netmask = 255.255.255.255
mpd-limit = "in#1#1=flt1 pass"
mpd-limit = "out#1#1=flt2 pass"
mpd-limit = "out#2#0=all shape 0 4000"
mpd-limit = "in#2#0=all shape 0 4000"
Код: Выделить всё
mpd-limit = "out#2#0=all shape 0 4000"
mpd-limit = "in#2#0=all shape 0 4000"
Код: Выделить всё
*** Auth.pm.ORIG Sun Jan 24 21:53:01 2010
--- Auth.pm Sun Jan 24 22:46:12 2010
***************
*** 533,542 ****
if ($class_id == 0 && $line->[1] && $line->[1] =~ /0.0.0.0/) {
if (! $CONF->{ng_car}) {
! push @{$RAD_PAIRS->{'mpd-limit'} }, "out#$self->{TOTAL}#0=all shape ". ($line->[2] * 1024)." 4000";
! push @{$RAD_PAIRS->{'mpd-limit'} }, "in#$self->{TOTAL}#0=all shape ". ($line->[3] * 1024) ." 4000";
! }
!
next ;
}
elsif($line->[1]) {
--- 533,549 ----
if ($class_id == 0 && $line->[1] && $line->[1] =~ /0.0.0.0/) {
if (! $CONF->{ng_car}) {
! if ( $line->[2] == 0 ) {
! push @{$RAD_PAIRS->{'mpd-limit'} }, "out#$self->{TOTAL}#0=all pass";
! } else {
! push @{$RAD_PAIRS->{'mpd-limit'} }, "out#$self->{TOTAL}#0=all shape ". ($line->[2] * 1024)." 4000";
! }
! if ( $line->[3] == 0 ) {
! push @{$RAD_PAIRS->{'mpd-limit'} }, "in#$self->{TOTAL}#0=all pass";
! } else {
! push @{$RAD_PAIRS->{'mpd-limit'} }, "in#$self->{TOTAL}#0=all shape ". ($line->[3] * 1024) ." 4000";
! }
! }
next ;
}
elsif($line->[1]) {