#c #linux #linux-kernel #netfilter #vlan
Вопрос:
Что-то плохое происходит с моим skb
, пока он проходит через сетевой стек Linux. Возможно, мне нужно проверить все зарегистрированные крючки, чтобы выяснить, есть ли проблема? Как я могу сделать это во время выполнения или при поиске по исходному коду Linux?
UPD: Я отправляю определенные пакеты с тегами vlan в свою систему. Я сбрасываю теги vlan всех входящих skb в rx_handler и в крюке Netfilter.
В rx_handler skb->vlan_tci
все в порядке, но в Netfiltr крючок skb->vlan_tci
равен нулю, поэтому я пытаюсь найти, где его можно испортить (вероятно, в другом крючке). Кстати, мой skb-это просто все входящие skb.
Комментарии:
1. Что вы подразумеваете под «моим скб» ?
2. Я отправляю пакеты с тегами vlan в свою систему. Я сбрасываю теги vlan всех входящих skb в rx_handler и в крюке netfilter, в rx_handler skb->vlan_tci в порядке, но в крюке netfiltr skb->>vlan_tci равен нулю, поэтому я пытаюсь найти, где он может быть испорчен (вероятно, в другом крюке). Итак, мой skb-это просто все входящие skb.
3. Вероятно, мне нужно место в ядре, где вызываются все крючки netfilter.
4. Какой именно метод
->rx_handler
используется?5. Немного странно, что вы видите
skb->vlan_tci
в rx_handler и не видите этого в крючках. Скорее всего, это было бы наоборот, потому что размечение vlan выполняется__netif_receive_skb_core()
, поэтомуvlan_tci
, скорее всего, будет присутствовать в крючках.