I've found some issues with UDP:
In uip.h:
//NC: Changed to include netmask in comparison, necessary for detecting
broadcasts
#define uip_ipaddr_cmp(addr1, addr2) ( (((u16_t *)addr1)[0] |uip_netmask[0])
== (((u16_t *)addr2)[0] | ip_netmask[0] ) && \
(((u16_t *)addr1)[1] | uip_netmask[1]) == (((u16_t *)addr2)[1] |
uip_netmask[1]))
In uip.c I changed the comparison for incoming UDP packets (it is a bit of a
hack):
if ( (uip_udp_conn->lport != 0 &&
UDPBUF->destport == uip_udp_conn->rport) &&
(
uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
uip_ipaddr_cmp(BUF->srcipaddr, all_zeroes_addr) ||
uip_ipaddr_cmp(BUF->srcipaddr, all_ones_addr) ||
uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr)
))
Nico Coesel
--
DEA
ing. N. Coesel
Kweekgrasstraat 18
1313BX Almere
tel: +31 36 5343888
e-mail: nco...@dealogic.nl