www.ethereal.com has a lot of information on packet decoding.
It also has (I believe) the struct definitions for ARP packets (look under the randpkt section, they detail exactly how to create random packets that conform to whatever struct you pass them).
Sounds like an interesting project, though.