Just tell me why on earth `libicmp/icmp.h' was ever written in the form it exists today. It differs from <netinet/ip_icmp.h> in more than forty macros alone. Backwards is really the nicest thing I can express about that construct. I have just begun the process of adapting our source files to fit the official header file <netinet/ip_icmp.h>, thus abondoning `libicmp/icmp.h'.
ip_icmp.h isn't a standardised header though. I'm not sure about rewriting ping/etc to use this over icmp.h; I also like the implementation. It is far cleaner than using ip_icmp.h, and it is a library that we have control over. Let anyone against this speak up now, or for ever rest silent. Presently this task is conducted on OpenSolaris and four different BSD variants as normative Unices. The only system that we consider normative is GNU. :-)