10 * 0 7 8 15 16 23 24 31
11 * +--------+--------+--------+--------+
12 * | Source | Destination |
14 * +--------+--------+--------+--------+
16 * | Length | Checksum |
17 * +--------+--------+--------+--------+
20 * +---------------- ...
22 * Aceptamos sólo datagramas UDP que vayan a el puerto de nuestra aplicación y
23 * cuyo tamaño sea menor a 255. El resto es descartado.
24 * El Length es tanto de la cabecera como datos, por lo tanto el tamaño mínimo
25 * es 8. El checksum no se calcula ni se verifica, ya que sabemos que la capa
26 * inferior (ethernet) tiene verificación de errores de los datos.
29 /** Puerto UDP nuestro */
30 extern uint16 udp_port_local;
32 /** Puerto UDP de destino */
33 extern uint16 udp_port_remote;
35 /** Tamaño del datagrama UDP */
36 extern byte udp_dgram_len;
38 /** Lee la cabecera del datagrama UDP.
40 * Deja en udp_port_remote el puerto de origen.
41 * Si devuelve false (0) es que hubo un error o es un datagrama no soportado,
42 * por lo que hay que descartarlo.
44 bool udp_read_dgram_header();
46 /** Escribe la cabecera del datagrama UDP.
48 * Pone como puerto destino a udp_port_remote, como origen udp_port_local y como
49 * tamaño a udp_dgram_len (en la parte baja y 0 en la parte alta).
51 void udp_write_dgram_header();