У меня есть приложение, связанное с eth0, отправив пакеты UDP на порт A до 255.255.255.255. В то же время у меня есть UDP-сервер, связанный с eth0, 0.0.0.0 и портом A.Фильтрация петли UDP на Linux в C
Что я хочу сделать, так это убедиться, что сервер не получит сообщения, сгенерированные приложением (обрабатывается исключительно в программное обеспечение ядра), но он будет получать сообщения, созданные другими хостами в сети.
Я не могу изменить полезную нагрузку UDP-пакетов и не добавлять к ней никаких заголовков.
Я уже реализовал решение, использующее RTNETLINK для извлечения всех IP-адресов машины, на которой я сижу (и фильтр, основанный на адресе из recvfrom()), но мне интересно, может ли быть более простой и чистое решение.
EDIT: Я думал о чем-то вроде пометки skb - тег исчез бы после выхода из физического интерфейса, но не был бы, если бы он просто был направлен в программное обеспечение.
Любые идеи?
Похоже, в Linux все еще невозможно: http://www.mail-archive.com/[email protected]/msg196866.html – Pawel