Cómo capturar marcos de red en un módulo del kernel

Quiero capturar marcos cuando son recibidos por un determinado NIC; extraiga algo de información de ellos (actualmente necesito capturar la MAC de origen y las direcciones IP de origen); Guarda esta información en alguna estructura de datos pública; y deje que el marco suba en su camino hacia la pila TCP / IP.

He usado Netfilter antes, pero aparentemente no proporciona enlaces de capa de enlace.
¿Hay alguna manera de que pueda hacer esto?

Estoy escribiendo esto como un Módulo de Kernel; ejecutando kernel de Linux 2.6.32

Respuestas a la pregunta(1)

Su respuesta a la pregunta