Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > [kernel] netif_receive_skb не появляется на мосту


Автор: null56 6.7.2011, 11:02
Всем привет

Задача: перехватить skb_buff, поправить его немного (ВКЛЮЧАЯ СЕТЕВОЙ ИНТЕРФЕЙС ethN) и отправить netif_receive_skb. Все работает корректно, но когда появляется bridge объединяющий интерфейсы, на самом мосту, при изменении интерфейса явно, пакет не появляется. что еще нужно сделать, кроме как присвоить новый девайс пакету, чтобы он попал на бридж?
Цитата

boff_skb->dev = НОВЫЙ ДЕВВАЙС


надеюсь вопрос понятен
заранее благодарен за помощь

Автор: null56 6.7.2011, 11:27
вообще подозрение на
Код

/*
 * Return NULL if skb is handled
 * note: already called with rcu_read_lock
 */
struct sk_buff *br_handle_frame(struct sk_buff *skb)

http://lxr.linux.no/linux+*/net/bridge/br_input.c#L138
может быть ее дернуть

Автор: null56 7.7.2011, 11:17
подсказали мне, но вот не ясно, конечное ли это решение
в исходниках бриджа есть функция, где пакет поднимается вышележащим протоколам
http://lxr.linux.no/#linux+v2.6.39/net/bridge/br_input.c#L28
вот http://lxr.linux.no/#linux+v2.6.39/net/bridge/br_input.c#L40 видно, что задается устройство бриджа
я поступил несколько иначе, а посылаю(netif_receive_skb) один пакет с устройством своего сетевого интерфейса, и копию с интерфейсом физическим
вроде работает, но это временное решение

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)