universidad autónoma metropolitana unidad azcapotzalco una ...
universidad autónoma metropolitana unidad azcapotzalco una ...
universidad autónoma metropolitana unidad azcapotzalco una ...
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