]> git.llucax.com Git - z.facultad/66.09/etherled.git/blobdiff - src/udp.h
Mejora el manejo de tamaños de paquetes IP y UDP, para que sea más simple su
[z.facultad/66.09/etherled.git] / src / udp.h
index e9092f73039282939dade71589c2ab1d7c8176d6..b178e9f9ea5ff57b1e7b6609f3d2354eebc13b19 100644 (file)
--- a/src/udp.h
+++ b/src/udp.h
  * </pre>
  */
 
+/** Tamaño de la cabecera UDP */
+#define UDP_HEADER_SIZE 8
+
 /** Puerto UDP nuestro */
 extern uint16 udp_port_local;
 
 /** Puerto UDP de destino */
 extern uint16 udp_port_remote;
 
-/** Tamaño del datagrama UDP */
+/** Tamaño del payload del datagrama UDP (no soportamos más de 255) */
 extern byte udp_dgram_len;
 
 /** Lee la cabecera del datagrama UDP.
@@ -69,8 +72,10 @@ extern byte udp_dgram_len;
  */
 bool udp_read_dgram_header();
 
-/** Recibe un word del payload UDP chequeando el checksum. */
-uint16 udp_read_word();
+/** Recibe un word del payload UDP chequeando el checksum.
+ * @precond Hay que llamar antes a netdev_read_start()
+ */
+byte udp_read_byte();
 
 /* Indica si el checksum calculado está ok */
 bool udp_checksum_ok();
@@ -82,10 +87,14 @@ bool udp_checksum_ok();
  */
 void udp_write_dgram_header();
 
-/** Escribe un word al payload UDP chequeando el checksum. */
-void udp_write_word(uint16 w);
+/** Escribe un word al payload UDP chequeando el checksum.
+ * @precond Hay que llamar antes a netdev_write_start()
+ */
+void udp_write_byte(byte b);
 
-/* Escribe el checksum calculado al frame a enviar */
-void udp_write_checksum();
+/* Escribe el checksum calculado al frame a enviar
+ * @param offset Offset a partir de donde están las cabeceras UDP.
+ */
+void udp_write_checksum(byte offset);
 
 #endif /* _UDP_H_ */