--- tftpd/recvfrom.c.orig	2014-04-20 08:55:44.000000000 -0400
+++ tftpd/recvfrom.c	2014-04-20 09:00:20.000000000 -0400
@@ -17,6 +17,12 @@
  *
  */
 
+#if defined(__APPLE__)
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070
+#define __APPLE_USE_RFC_3542 1
+#endif
+#endif
+
 #include "config.h"             /* Must be included first! */
 #include "common/tftpsubs.h"
 #include "recvfrom.h"
@@ -220,16 +226,18 @@
                            sizeof(struct in6_addr));
 #endif
 
-#ifdef HAVE_STRUCT_IN6_PKTINFO
                 if (cmptr->cmsg_level == IPPROTO_IPV6 &&
+#if defined(HAVE_STRUCT_IN6_PKTINFO) && defined(IPV6_RECVPKTINFO) /* Some older Darwin platforms require the latter */
                     (cmptr->cmsg_type == IPV6_RECVPKTINFO ||
-                     cmptr->cmsg_type == IPV6_PKTINFO)) {
+#else
+                    (
+#endif
+                    cmptr->cmsg_type == IPV6_PKTINFO)) {
                     memcpy(&pktinfo6, CMSG_DATA(cmptr),
                            sizeof(struct in6_pktinfo));
                     memcpy(&myaddr->s6.sin6_addr, &pktinfo6.ipi6_addr,
                            sizeof(struct in6_addr));
                 }
-#endif
             }
 #endif
         }