Определите правильный контейнер для отправки skb_buff через NetLink

В настоящее время я использую несколько контейнеров, используя lxc, и каждый из них привязан к физическому интерфейсу; скажем, eth1-c1, eth2-c2, eth3-c3, где ethX - физический интерфейс, а cX - контейнеры;

В каждом контейнере выполняется приложение пользовательского пространства, которое регистрируется в ядре Linux с помощью NetLink; Теперь, когда какой-то пакет попадает в интерфейс, скажем, eth2, мне нужно отправить этот пакет через NetLink в приложение пользовательского пространства, работающее в c2, потому что eth2 теперь привязан к c2.

Если eth4 привязан к c3, то пакет, полученный ядром по eth4, должен отправить пакет через netlink в приложение пространства пользователя, работающее на c3.

Как мы можем достичь этого? Я знаю, что skb_buff содержит имя разработчика (skb_buff->dev->name), которое поможет мне получить имя интерфейса (скажем, eth2 или eth3), но как перенаправить его на зарегистрированное пользовательское приложение, работающее в контейнере, поскольку у меня нет других подробностей от пользовательское приложение, отличное от номера pid.

0 ответов

Другие вопросы по тегам