Ну естественно, несколько IP на одну очередь будут делить одну полосу пропускания. С другой стороны, я не хочу сейчас включать эту возможность, т.к. она ломает некоторые команды (show, list, операции с базой), и их под это дело нужно будет полностью переписывать. К тому же, не стоит провоцировать внедрение этой неоптимальной политики QoS.
Подскажите, как включить эту возможность? Работа с базой не нужна, после трех дней изучения понял, что моих навыков в PERL не хватает для правки :( Хотелось бы указывать несколько IP на класс, в качестве идентификатора использовать первый IP либо строку (логин), что предпочтительнее. Например вызывать
sc add 192.168.1.12 1024
sc add 192.168.1.30 1024 192.168.1.12
sc add 192.168.1.31 1024 192.168.1.12
либо
sc add 192.168.1.12 1024 login_1
sc add 192.168.1.30 1024 login_1
sc add 192.168.1.31 1024 login_1
Дополнение: все-таки удалось запустить, сделал небольшой патч, реализующий первый предложенный мной вариант:
--- sc.save 2010-03-15 15:11:46.000000000 +0300
+++ sc 2010-03-15 15:38:49.000000000 +0300
@@ -82,7 +82,7 @@
# database handler (optional)
'dbhandler' => \&cmd_dbadd,
# arguments (optional)
- 'arg' => '<ip> <rate>',
+ 'arg' => '<ip> <rate> <parent_ip>',
# command description
'desc' => 'add rules',
# check root privileges before execution (optional)
@@ -1465,12 +1465,18 @@
sub cmd_add
{
- my ($ip, $rate) = @_;
+ my ($ip, $rate, $parent_ip) = @_;
+ my $cid;
arg_check(\&is_ip, $ip, 'IP');
$rate = arg_check(\&is_rate, $rate, 'rate');
- my $cid = ip_classid($ip);
- return $rul_add->($ip, $cid, $rate);
+ if($parent_ip){
+ $parent_ip = arg_check(\&is_ip, $parent_ip, 'parent_ip');
+ $cid = ip_classid($parent_ip);
+ } else {
+ $cid = ip_classid($ip);
+ }
+ return $rul_add->($ip, $cid, $rate, $parent_ip);
}
sub cmd_del