[br-KernelNewbies] Compartilhamento de memória entre o kernelland e o userland
Beraldo Leal
beraldo em unp.br
Quarta Maio 30 13:25:47 BRT 2007
Olá Frabicio, para isso, se entendi direito, creio que vc vá precisar registrar uma função para
uma hook no framework netfilter.
O netfilter irá passar pra sua função a estrutura sk_buf, definida em linux/sk_buff.h e sua função
precisa retornar para o netfilter, algo definido em linux/netfilter.h que pode ser
/NF_DROP(0),
NF_ACCEPT(1),
NF_STOLEN(2),
NF_QUEUE(3)/e/
NF_REPEAT(4).
/
Procure por nf_register_hook.
Fabrício Barros Cabral wrote:
> 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.
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies em listas.cipsga.org.br
> http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/kernelnewbies
>
--
Atenciosamente,
Beraldo Leal
Setor de Redes e Internet
Universidade Potiguar
beraldo em unp.br - (+5584) 3215-1236
Mais detalhes sobre a lista de discussão Kernelnewbies