The current implementation of AF_PACKET only uses the device name and protocol options even when a 5-tuple of Device, Protocol, Packet Type, Hardware Type, and Hardware Address are supplied. I needed socket.sendto() to support sending to a Hardware Address, so this patch supports such functionality. The length check on the hardware address is hard coded to 8 since that is the value used in the sockaddr_ll struct. I'm not that familiar with the Python internals, so s->errorhandler() may not be the best call to make for an invalid hardware address length.
Logged In: YES user_id=11375 Checked in to CVS HEAD; thanks for the patch! I think s_errorhandler is only when you're trying to report the error from a system call; I changed to raise a ValueError if the hardware address is too long. Please give the CVS version a try and let me know if it works for you.