I needed to send raw ethernet frames in linux and found a C program from Austin Marton
However it was not possible to specify the target MAC address, so I added this feature in a gist fork:
https://gist.github.com/3765522#file_send_raw_eth.c