You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Blz, agora conhecemos o segundo argumento de nossa função de hoking,<br />
vamos ver o que mais vem da toca do coelho ;)<br />
O terceiro argumento const struct net_device *in é o dispositivo do qual<br />
nós chegamos, enquanto const struct net_device *out, é o dispositivo de<br />
saída(no caso de NF_IP_LOCAL_OUT ou NF_IP_POST_ROUTING).<br />
Esta struct esta declarada em ~/linux/netdevice.h, temos um campo<br />
muito interessante que nos pode ser útil que indica o nome da interface<br />
sua declaração é:<br />
char name[IFNAMSIZ];<br />
O último argumento da função de hoking é o:<br />
int (*okfn)(struct sk_buff *)<br />
Não mexeremos com esta função, mas para não deixar algo nebuloso vou<br />
tentar explicar para que serve esta função, dei uma pesquisada na net e<br />
descobri que as hoks do netfilter pode descançar(sleep), em momentos<br />
como por exemplo o pacote é passado para o espaço do usuário, neste<br />
caso, não seria muito inteligente manter o processo trancado, ou rodando<br />
esperando a hok retornar, então as funções de tratamento do netfilter<br />
foram divididas em duas, a segunda parte do tratamento, ocorre quando<br />
o pacote retorna do espaço do usuário, esta parte é a okfn :), teve uma<br />
thread lista do netfilter explicando isto, muito melhor do que eu posso<br />
explicar(o próprio rusty que explica hehehehe):<br />
http://lists.netfilter.org/pipermail/netfilter/2<strong>000</strong>-January/003173.html<br />
De qualquer forma isto não é importante dentro deste documento, ja que<br />
não utilizaremos nada relativo a esta função :).<br />
Como vc pode ver esta função retorna um inteiro, este retorno decide o<br />
que vai ser feito com o pacote. Seria no iptables o -j, ou o que a hok fará<br />
com o pacote. Vamos dar uma olhada no que nossa função pode<br />
retornar:<br />
Estas definições estão em ~/linux/netfilter.h :<br />
#define NF_DROP 0<br />
#define NF_ACCEPT 1<br />
#define NF_STOLEN 2<br />
#define NF_QUEUE 3<br />
#define NF_REPEAT 4<br />
NF_DROP: óbvio faz com que o pacote seja descartado.<br />
NF_ACCEPT: Nem um pouco menos óbvio retornando NF_ACCEPT<br />
fazemos com que nosso pacote seja aceito.<br />
NF_STOLEN: Bom este não é tão óbvio hehehe NF_STOLEN faz com que o<br />
115