Определите правильный контейнер для отправки 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.