just looked at the code, i was wondering about the reason for not choosing construct library (http://en.wikipedia.org/wiki/Construct_(python_library)) for parsing packets ?
edit : fwiw, i have used it for writing a rfc-3315 (and a few extensions) compliant dhcpv6 client, and it made the entire experience great fun.