[br-KernelNewbies] Compartilhamento de memória entre o kernelland e o userland
Fabrício Barros Cabral
fxcabral em yahoo.com.br
Quarta Maio 30 12:19:35 BRT 2007
Olá todos!
Estou desenvolvendo uma aplicação (estou usando kernel 2.6.21) da qual
necessita *interceptar* os pacotes do kernel do linux para uma
aplicação, com o máximo de desempenho possível, rodando em nível de
usuário. Basicamente, preciso de uma área de memória (ring buffer) para
armazenar os pacotes que entram pelas interfaces. Gostaria então de
saber, como fazer isso. Pelo que eu li até agora, acredito que vá
precisar utilizar o mmap() para isto. Além disso, acredito que possa
interceptar os pacotes no netfilter (no subsistema de bridge) ou possa
capturar diretamente da interface de rede.
Agradeço qualquer comentário, dica, truque, macete, opinião, etc. :)
[]'s
--fx
P.S. Antes que alguém sugira: não queria utilizar a libnetfilter-queue,
pois a mesma utiliza sockets (PF_NETLINK) e eu acredito que uma outra
abordagem (no caso o compartilhamento de memória) daria um desempenho
melhor.
Mais detalhes sobre a lista de discussão Kernelnewbies