+ if (cmsg->cmsg_type == IP_TOS)
+ {
+ memcpy (&recv_qos, CMSG_DATA (cmsg),
+ sizeof (recv_qos));
+ dprintf ("TOSv4 = 0x%02"PRIx8";\n", recv_qos);
+ } else
+ if (cmsg->cmsg_type == IP_TTL)
+ {
+ memcpy (&recv_ttl, CMSG_DATA (cmsg),
+ sizeof (recv_ttl));
+ dprintf ("TTLv4 = %i;\n", recv_ttl);
+ }
+ else
+ {
+ dprintf ("Not handling option %i.\n",
+ cmsg->cmsg_type);
+ }
+ } /* }}} */
+ else if (ph->addrfamily == AF_INET6) /* {{{ */
+ {
+ if (cmsg->cmsg_level != IPPROTO_IPV6)
+ continue;
+
+ if (cmsg->cmsg_type == IPV6_TCLASS)
+ {
+ memcpy (&recv_qos, CMSG_DATA (cmsg),
+ sizeof (recv_qos));
+ dprintf ("TOSv6 = 0x%02"PRIx8";\n", recv_qos);
+ } else
+#ifdef IPV6_HOPLIMIT
+ if (cmsg->cmsg_type == IPV6_HOPLIMIT)
+ {
+ memcpy (&recv_ttl, CMSG_DATA (cmsg),
+ sizeof (recv_ttl));
+ dprintf ("TTLv6 = %i;\n", recv_ttl);
+ }
+ else
+#endif
+#ifdef IPV6_UNICAST_HOPS
+ if (cmsg->cmsg_type == IPV6_UNICAST_HOPS)
+ {
+ memcpy (&recv_ttl, CMSG_DATA (cmsg),
+ sizeof (recv_ttl));
+ dprintf ("TTLv6 = %i;\n", recv_ttl);
+ }
+ else
+#endif
+#ifdef IPV6_MULTICAST_HOPS
+ if (cmsg->cmsg_type == IPV6_MULTICAST_HOPS)
+ {
+ memcpy (&recv_ttl, CMSG_DATA (cmsg),
+ sizeof (recv_ttl));
+ dprintf ("TTLv6 = %i;\n", recv_ttl);
+ }
+ else
+#endif
+ {
+ dprintf ("Not handling option %i.\n",
+ cmsg->cmsg_type);
+ }
+ } /* }}} */
+ else
+ {
+ dprintf ("Don't know how to handle "
+ "unknown protocol %i.\n",
+ cmsg->cmsg_level);
+ }
+ } /* }}} for (cmsg) */