Why redefine DNS_NAME_INITABSOLUTE and DNS_NAME_INITNONABSOLUTE in so many places? Is there a reason not to put them in name.h? Aside from that, seems fine.