Возможно ли в bird менять metric по условию в filter? filter metric { metric = 10; # Setting the default metric accept; } protocol kernel { ipv4 { import filter metric; }; scan time 15; } если метрику указать в протоколе работает, но во через фильтре не удается, ошибка синтаксиса, может есть другой метод или другая что поддерживает. Заранее спасибо.

13 Авг в 19:52
95 +2
0
Ответы
1

В Bird изменения метрики в фильтре действительно являются ограниченным функционалом, и вы не можете напрямую задавать значение метрики через фильтр в вашем конфигурационном файле.

Попробуйте использовать конструкцию, которая назначает значение метрики при импорте маршрутов. Пример использования фильтра для назначения метрики может выглядеть следующим образом:

filter set_metric {
if net [192.0.2.0/24]net ~ [192.0.2.0/24]net [192.0.2.0/24] then {
metric = 20; # Задаем метрику для определенной подсети
} else {
metric = 10; # Задаем метрику по умолчанию
}
accept;
}
protocol kernel {
ipv4 {
import filter set_metric;
};
scan time 15;
}

В данном примере мы создаем фильтр set_metric, который проверяет сеть и устанавливает метрику в зависимости от условия. Таким образом, вы можете менять метрику по условиям, используя if в фильтре.

Это даст вам возможность более гибко управлять метрикой маршрутов, импортируемых в протоколе kernel.

13 Авг в 19:52
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир