+ /* reseteamos checksum */
+ checksum = 0;
+ /* el UDP tiene un checksum que incluye parte de la cabecera IP */
+ /* ip de origen */
+ udp_checksum_sum(WORD(ip_addr_remote[0], ip_addr_remote[1]));
+ udp_checksum_sum(WORD(ip_addr_remote[2], ip_addr_remote[3]));
+ /* ip de destino */
+ udp_checksum_sum(WORD(ip_addr_local[0], ip_addr_local[1]));
+ udp_checksum_sum(WORD(ip_addr_local[2], ip_addr_local[3]));
+ /* protocolo expresado en 16 bits (0x11 es UDP) */
+ udp_checksum_sum(0x11);
+ /* tamaño del paquete UDP (sin las cabeceras que son 20 bytes) */
+ udp_checksum_sum(ip_packet_len - 20);
+ /* de ahora en más todos los datos del checksum corresponden a UDP */