]> git.llucax.com Git - z.facultad/66.09/etherled.git/commitdiff
Correcciones mínimas.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 18 Nov 2005 18:37:59 +0000 (18:37 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 18 Nov 2005 18:37:59 +0000 (18:37 +0000)
src/c/ip.c
src/c/udp.h

index b9f5fb48dd6b9b7749e8ccba13ff0228759ef818..3f07cb2084680d2ba133ecc75c4394465fed0c69 100644 (file)
@@ -3,16 +3,18 @@
 /** protocolos soportados */
 enum { ICMP = 0x01, UDP = 0x11 };
 
 /** protocolos soportados */
 enum { ICMP = 0x01, UDP = 0x11 };
 
-extern byte ip_addr_local[IP_ADDR_SIZE];
+byte ip_addr_local[IP_ADDR_SIZE];
 
 
-extern byte ip_addr_remote[IP_ADDR_SIZE];
+byte ip_addr_remote[IP_ADDR_SIZE];
 
 byte ip_packet_len;
 
 bool ip_proto_icmp;
 
 
 byte ip_packet_len;
 
 bool ip_proto_icmp;
 
+/* para calcular checksum */
 uint16 checksum;
 
 uint16 checksum;
 
+/* agrega un word al checksum calculado */
 static void sum(uint16 w)
 {
        checksum += w;
 static void sum(uint16 w)
 {
        checksum += w;
index 5e2d7278f474e8b12cae78d53e267beb4c904081..9530a1303ef7487a6cc063190dc2f07861a96a87 100644 (file)
@@ -7,6 +7,7 @@
 /** @file
  * Datagrama UDP.
  *
 /** @file
  * Datagrama UDP.
  *
+ * <pre>
  *  0      7 8     15 16    23 24    31  
  * +--------+--------+--------+--------+ 
  * |     Source      |   Destination   | 
  *  0      7 8     15 16    23 24    31  
  * +--------+--------+--------+--------+ 
  * |     Source      |   Destination   | 
  * |                                     
  * |          data octets ...            
  * +---------------- ...                 
  * |                                     
  * |          data octets ...            
  * +---------------- ...                 
+ * </pre>
  *
  * Aceptamos sólo datagramas UDP que vayan a el puerto de nuestra aplicación y
  * cuyo tamaño sea menor a 255. El resto es descartado.
  * El Length es tanto de la cabecera como datos, por lo tanto el tamaño mínimo
  *
  * Aceptamos sólo datagramas UDP que vayan a el puerto de nuestra aplicación y
  * cuyo tamaño sea menor a 255. El resto es descartado.
  * El Length es tanto de la cabecera como datos, por lo tanto el tamaño mínimo
- * es 8. El checksum no se calcula ni se verifica, ya que sabemos que la capa
- * inferior (ethernet) tiene verificación de errores de los datos.
+ * es 8.
+ *
+ * El checksum se calcula utilizando algunos datos de la capa inferior e incluye
+ * a los datos. Entonces es calculado sobre el siguiente paquete 'virtual':
+ *
+ * <pre>
+ *  0      7 8     15 16    23 24    31  
+ * +--------+--------+--------+--------+
+ * |         ip source address         |
+ * +--------+--------+--------+--------+
+ * |      ip destination address       |
+ * +--------+--------+--------+--------+
+ * |  zero  |protocol|   UDP length    |
+ * +--------+--------+--------+--------+
+ * |     Source      |   Destination   | 
+ * |      Port       |      Port       | 
+ * +--------+--------+--------+--------+ 
+ * |                 |                 | 
+ * |     Length      |    Checksum     | 
+ * +--------+--------+--------+--------+ 
+ * |                                     
+ * |          data octets ...            
+ * +---------------- ...                 
+ * </pre>
  */
 
 /** Puerto UDP nuestro */
  */
 
 /** Puerto UDP nuestro */