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 />

• Datos (payload)<br />

• Longitud de los datos (payload_s)<br />

El parámetro buf es un puntero al buffer donde se almacena el mensaje ARP <strong>una</strong> vez construido.<br />

13.- int insert_ipo(struct ipoption *opt, u_char opt_len, u_char *buf);<br />

Inserta opciones en un datagrama IP ya creado. El parámetro opt es un puntero a un estructura<br />

especial ipoption. El parámetro len indica el tamaño de la lista de opciones. El parámetro buf es<br />

un puntero al buffer que contiene el datagrama IP al que se le añaden las opciones. Si al añadir<br />

las opciones, el tamaño total del datagrama excede de 65535 bytes, que es el tamaño máximo de<br />

un datagrama IP, la función retorna con un valor de -1 indicando el error.<br />

struct ipoption<br />

{<br />

struct in_addr ipopt_dst;<br />

char ipopt_list [MAX_IPOPTLEN];<br />

} ;<br />

14.- int insert_tcpo(struct tcpoption *opt, u_char opt_len, u_char *buf);<br />

Inserta opciones en un segmento TCP ya creado. El parámetro opt es un puntero a <strong>una</strong> estructura<br />

tcpoption donde se indican las opciones. La longitud de la lista de opciones se indica por opt_len.<br />

El parámetro buf es un puntero al buffer que contiene el segmento TCP ya creado.<br />

struct tcpoption<br />

{<br />

u_char tcpopt_list[MAX_IPOPTLEN];<br />

};<br />

15.- int write_ip(mt SOCk, const U_Char "'pak, mt len);<br />

Envía un datagrama IP a la red. El parámetro sock hace referencia al socket a través del cual se<br />

envia el datagrama. Este socket ha sido creado con anterioridad mediante la función<br />

open_raw_sock(). El parámetro pak es un puntero al datagrama que se envia. Este datagrama ha<br />

sido creado con la función build_ip(). El tamaño total del datagrama se indica con el parámetro<br />

len.<br />

La función devuelve el total de bytes escritos.<br />

16.- int write_link_layer(struct link_int *1, const u_char *device, const u_char *buf, int len);<br />

Envía <strong>una</strong> trama de nivel de enlace a la red. El primer parámetro es un puntero a <strong>una</strong> estructura<br />

link_int que se debe haber obtenido con anterioridad mediante la función open_link_interface(). El<br />

parámetro device es el nombre del dispositivo de red por el cual se envia la trama, la cual se<br />

indica mediante el parámetro buf que es un puntero al buffer que contiene la trama a enviar. El<br />

tamaño total de la trama se indica con el parámetro len.<br />

La función devuelve el total de byte s escritos o un valor de -1 en caso de error.<br />

17.- void do_checksum(u_char *buf, int protocol, int len);<br />

Realiza el cálculo del campo de checksum que aparece en las cabeceras de segmentos TCP y<br />

paquetes UDP.<br />

119

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

Saved successfully!

Ooh no, something went wrong!