Yes I am forwarding the packet to the specific (unicast) address of the computer (192.168.0.4 - I'm not using DHCP), and I've not tested it beyond a sleep time of about 3 hours.
You are right, there is a good chance that after a day or two that IP/MAC will be cleared from the ARP cache and after that WOL will stop working. The router will then have to send out an ARP to get the MAC address but the computer won't respond since it is asleep.
I don't want to leave my computer off for a few days to test this.
However I just connected to my router and listed the arp cache, and next to the entry for my computer's IP it has PERM! This means that the router must have added a static entry for it (I didn't do it) and therefore even after a few days WOL should still work (as long as the router does not reboot)! The entries for other computers don't have PERM next to them. That's interesting.
(Note I'm now using f/w 1.03 B11 (Oct 2012) from the
tds.dlink.com.tw site.)
There is another approach that works (at least until the router is rebooted) but it requires telnet into the router. I did test this and it works. What I did was telnet in, then I added a static ARP entry (permanent until the router is rebooted) for an IP address not in use (192.168.0.254) giving it the broadcast MAC address ff:ff:ff:ff:ff:ff as follows:
# arp -i br0 -s 192.168.0.254 FF:FF:FF:FF:FF:FF
Then I added a VS rule to redirect WOL packets to this fake IP, which results in a broadcast.
It worked (but it did not survive a router reboot).