Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
...<br />
/* Network layer header */<br />
union<br />
{<br />
struct iphdr *iph;<br />
struct ipv6hdr *ipv6h;<br />
struct arphdr *arph;<br />
struct ipxhdr *ipxh;<br />
unsigned char *raw;<br />
} nh;<br />
/* Link layer header */<br />
union<br />
{<br />
struct ethhdr *ethernet;<br />
unsigned char *raw;<br />
} mac;<br />
Bom esta estrutura esta bem comentada neste pedaço o que nos ajuda<br />
bastante a compreendê-la, mas vamos em frente que quem anda pra trás<br />
é caranguejo e traveco!<br />
Vamos ver alguns pedaços interessantes para nossas experiencias com<br />
esta estrutura:<br />
Estes ponteiros são utilizados para nos referenciar dentro da lista<br />
encadeada, e apontam para a lista encadeada a qual pertencemos ( *list),<br />
não vamos mexer com eles nesta nossa primeira jornada :).<br />
struct sk_buff * next; /* Next buffer in list<br />
*/<br />
struct sk_buff * prev; /* Previous buffer in list<br />
*/<br />
struct sk_buff_head * list; /* List we are on<br />
No níel do kernel, os sockets são estruturas sock, aqui temos um<br />
ponteiro para o socket ao qual pertencemos, ou neste caso a struct sock<br />
que nos recebeu.<br />
struct sock *sk; /* Socket we are owned by<br />
*/<br />
Bem legal para quem quiser trabalhar com controles de tempo, temos<br />
aqui o timestamp em que fomos recebidos<br />
struct timeval stamp; /* Time we arrived<br />
Aqui temos outra estrutura muito importante e que é muito útil, abrindo<br />
várias opções para podermos explorar nosso maravilhoso mundo do<br />
networking dentro do kernel, a struct *dev, que será observada mais pra<br />
frente, por enquanto é interessante saber que ela representa um<br />
113