--- /usr/src/usr.sbin/wake/wake.c 2012-01-02 22:25:54.000000000 -0500 +++ wake.c 2012-09-18 08:23:32.000000000 -0400 @@ -160,8 +160,18 @@ ssize_t len; int i; - (void)memset(pkt.hdr.ether_dhost, 0xff, sizeof(pkt.hdr.ether_dhost)); - pkt.hdr.ether_type = htons(0); + /* Be useful */ + printf("Sending magic packet to "); + for(i = 0; i < ETHER_ADDR_LEN - 1; i++) + printf("%.2X:", addr->octet[i]); + printf("%.2X\n", addr->octet[ETHER_ADDR_LEN-1]); + + /* The packet MUST be sent to the target MAC address */ + memcpy(pkt.hdr.ether_dhost, addr, ETHER_ADDR_LEN); + + /* EtherType 0x0842 is at least semi-recognizable for WOL */ + pkt.hdr.ether_type = htons(0x0842); + (void)memset(pkt.data, 0xff, SYNC_LEN); for (p = pkt.data + SYNC_LEN, i = 0; i < DESTADDR_COUNT; p += ETHER_ADDR_LEN, i++)