Поскольку файервол и шейпер очень сильно зависят как от используемой ОС так и от конкретных задач, которые они должны выполнять, разработать нечто универсальное, устраивающее абсолютно всех просто невозможно. Предлагаю использовать для разработки ОС- и предметно-ориентированных файервол/шейперов систему плагинов.
Предлагаю следующий интерфейс между скриптом linkupdown и плагином:
В вызов скрипта linkupdown добавить параметр Plugin=<имя>, где имя - полный путь к плагину. В случае вызова с таким параметром linkupdown в цикле разбора классов трафика должен вызывать плагин <имя>, передавая ему в качестве параметров следующую строку (в терминах скрипта linkupdown):
$ACTION $INTERFACE $CLIENT_IP $fw_num_in $speed_in $fw_num_out $speed_out @nets_arr
Все действия по настройке/активации файервола/шейпера в этом случае возлагаются на плагин.
Может интерфейс можно сделать и по-лучше, но мне что-то ничего другого пока в башку не лезет... предлагайте