1 // vim: set et sw=4 sts=4 :
12 // Apagamos todos los leds
15 // Inicializamos dispositivo de red
19 while(1); // Si falla init nos quedamos bobos
23 ip_addr_local[0] = 10;
24 ip_addr_local[1] = 10;
25 ip_addr_local[2] = 10;
26 ip_addr_local[3] = 100;
28 // Inicializo puerto UDP
29 udp_port_local = 9000;
33 uint16 len = netdev_recv_start();
35 if (!len) // no recibimos nada
36 goto drop; // Tiramos el paquete
41 // Parseamos cabecera ethernet
42 if (!eth_read_frame_header()) // No es un buen header
43 goto drop; // Tiramos el paquete
46 // Vemos que protocolo transporta
49 case ETH_ARP: // FIXME, implementar ARP!
50 goto drop; // Tiramos el paquete
54 // Parseamos cabecera IP
55 if (!ip_read_packet_header()) // No es un buen header
56 goto drop; // Tiramos el paquete
59 // Vemos que protocolo transporta
62 case IP_ICMP: // FIXME, implementar ICMP!
63 goto drop; // Tiramos el paquete
67 // Parseamos cabecera UDP
68 if (!udp_read_dgram_header()) // No es un buen header
69 goto drop; // Tiramos el paquete
71 printb(udp_dgram_len, 0x40);
73 // Nuestro protocolo, por ahora un simple echo!
74 for (len = 8; len < udp_dgram_len; len += 2) // 8 por la cabecera UDP
76 print(netdev_recv_word());