Como capturar quadros de rede em um módulo do kernel

Eu quero capturar quadros quando eles são recebidos por um determinado NIC; extrair algumas informações deles (atualmente eu preciso capturar os endereços MAC fonte e IP de origem); salvar essas informações em alguma estrutura de dados públicos; e deixe o quadro subir em seu caminho para a pilha TCP / IP.

Eu usei o Netfilter antes, mas aparentemente ele não fornece ganchos de camada de link.
Existe alguma maneira de fazer isso?

Eu estou escrevendo isso como um módulo do kernel; executando o kernel Linux 2.6.32

questionAnswers(1)

yourAnswerToTheQuestion