06.01.2015 Views

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

APÉNDICE A. CODIGO FUENTE DE LA HERRAMIENTA DE GESTION DE REDES VIRTUALES<br />

• p es un descriptor obtenido mediante pcap_open_live() o pcap_open_offline().<br />

• cnt indica el número máximo de paquetes que se procesan antes de que la función<br />

retorne. Un valor de -1 procesa todos los paquetes recibidos en un buffer. Un valor de O<br />

procesa todos los paquetes hasta que ocurre un error o expira el timeout de lectura<br />

establecido.<br />

• callback hace referencia a <strong>una</strong> rutina que es llamada para analizar el paquete recibido.<br />

Esta rutina tiene la siguiente signatura:<br />

void callback(u_char *ud, pcap-pkthdr *pkthdr, u_char *pd)<br />

• ud hace referencia a datos de usuario que son pasados desde pcap _dispatch() a través<br />

del parámetro user de esta función.<br />

• pkthdr es <strong>una</strong> cabecera adicional incorporada por la biblioteca, precede a los datos y<br />

cabeceras propios de los protocolos de red. Su formato es el siguiente:<br />

struct pcap_pkthdr {<br />

struct timeval ts; /* time stamp */<br />

bpf_u_int32 caplen; /* length of portion present */<br />

bpf_u_int32 len; /* length this packet (off wire) */<br />

} ;<br />

• pd es un puntero a través del cual están accesibles los datos del paquete capturado.<br />

• user es un puntero a datos de usuario.<br />

28.- Función pcap _loop()<br />

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)<br />

La función pcap_loop() es similar a pcap_dispatch(), esta función procesa tantos paquetes como<br />

se indiquen en el parámetro cnt, o retorna antes, en caso de ocurrir algún error, pero nunca<br />

retorna por causa del timeout de lectura. Un valor negativo en el parámetro cnt provoca un bucle<br />

infinito, procesando todos los paquetes recibidos y parando únicamente en caso de error. El resto<br />

de parámetros tienen el mismo significado que en la función pcap_dispatch().<br />

29.- Función pcap _dump()<br />

voidpcap_dump(u_char *user, struct pcap-pkthdr *h, u_char *sp)<br />

Vuelca un paquete a un archivo abierto previamente con la función pcap_dump_open(). Los<br />

parámetros de esta función son los mismos que los de la rutina de callback indicada<br />

enpcap_dispatch() y pcap_loop().<br />

30.- Función pcap _compile()<br />

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask);<br />

La función pcap_compile() toma <strong>una</strong> cadena de texto y la interpreta para crear un filtro sobre el<br />

cual basarse a la hora de elegir qué paquetes toma para su análisis.<br />

La cadena de texto se indica en el parámetro str. Esta cadena de texto se interpreta creando un<br />

filtro que se guarda en la estructura indicada por el parámetro fp. El filtro almacenado en fp puede<br />

optimizarse o no, dependiendo del valor del parámetro optimize. Por último el parámetro netmask<br />

toma la máscara de red asociada al dispositivo de captura, este dato puede obtenerse mediante<br />

la función pcap _lookupnet( ).<br />

Las estructuras relativas al filtro compilado presentes en son las siguientes:<br />

126

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!