>Слово "интерфейс" здесь отсутствует.Вы полагаете, мне стоило перечислить _все_ критерии, которые могут быть использованы в этой самой логике, не ограничиваясь одним примером? Боюсь, это была бы работа на полчаса как минимум.
>Что касается новой версии вашего предложения - в OpenBSD можно указать таблицу маршрутизации для конкретного сокета (опция SO_RTABLE для setsockopt(2)). Но это уже требует изменения кода программы - равно как, впрочем, и в случае любой другой "логики".
Пингвины используют более универсальную логику: у них есть возможность тегировать пакеты для конкретного сокета (опция SO_MARK), и на основании этих тегов обрабатывать пакеты в дальнейшем (сюда входит маршрутизация, шейпинг, фильтрация, нат, модификация заголовков и т.д.)
Кстати, инновационный пингвиний systemd позволяет использовать тегированные сокеты без модификации кода приложения (один из немногих проектов, использующих самые вкусные возможности POSIX IPC).
>Если я вас понял неправильно, пожалуйста, поясните, о чём вы вообще говорите, какой конкретно момент вам кажется спорным.
Мне кажется, механизм прямой привязки rtable к сокету несколько дубов. Возможно, достаточно было бы обеспечить поддержку тегирования трафика на сокетах, чтобы потом средствами pf выполнять дальнейшую обработку?