diff --git a/tcpip.cpp b/tcpip.cpp index ef326cd..4ab40af 100755 --- a/tcpip.cpp +++ b/tcpip.cpp @@ -314,7 +314,8 @@ byte EtherCard::ntpProcessAnswer (uint32_t *time,byte dstport_l) { void EtherCard::udpPrepare (word sport, byte *dip, word dport) { setMACandIPs(gwmacaddr, dip); // see http://tldp.org/HOWTO/Multicast-HOWTO-2.html - if ((dip[0] & 0xF0) == 0xE0) // multicast address + // multicast or broadcast address, https://github.com/jcw/ethercard/issues/59 + if ((dip[0] & 0xF0) == 0xE0 || *((long*) dip) == 0xFFFFFFFF) EtherCard::copyMac(gPB + ETH_DST_MAC, allOnes); gPB[ETH_TYPE_H_P] = ETHTYPE_IP_H_V; gPB[ETH_TYPE_L_P] = ETHTYPE_IP_L_V;