+++ /dev/null
-[PATCH] fix in6_pktinfo build issue on Linux
-
-From http://roy.marples.name/projects/dhcpcd/vpatch?from=e05490e2d12d03b1&to=c32714545158ca83
-
-Give up on _BSD_SOURCE and use _GNU_SOURCE for Linux. This is requires for
-newer Linux headers as there is no easy way to get at the in6_pktinfo
-structure, so we have to fallback to the glibc variant which requires
-_GNU_SOURCE being set. This does have the advantage of no longer sprinkling
-_GNU_SOURCE around and no longer having to cast ipi.ipi_ifindex but may
-break compile on older Linux.
-
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
-
-Index: common.c
-==================================================================
---- a/common.c
-+++ b/common.c
-@@ -23,15 +23,10 @@
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
--/* Needed define to get at getline for glibc and FreeBSD */
--#ifndef _GNU_SOURCE
--# define _GNU_SOURCE
--#endif
--
- #ifdef __APPLE__
- # include <mach/mach_time.h>
- # include <mach/kern_return.h>
- #endif
-
-
-Index: configure
-==================================================================
---- a/configure
-+++ b/configure
-@@ -358,27 +358,25 @@
- echo "There is no fork"
- echo "CPPFLAGS+= -DTHERE_IS_NO_FORK" >>$CONFIG_MK
- fi
-
- case "$OS" in
--kfreebsd*)
-+freebsd*|kfreebsd*)
- echo "CPPFLAGS+= -D_GNU_SOURCE" >>$CONFIG_MK
- echo "DHCPCD_SRCS+= if-bsd.c" >>$CONFIG_MK
- ;;
- linux*)
-- echo "CPPFLAGS+= -D_BSD_SOURCE -D_XOPEN_SOURCE=700" >>$CONFIG_MK
-+ echo "CPPFLAGS+= -D_GNU_SOURCE" >>$CONFIG_MK
- # Large File Support, should be fine for 32-bit systems.
- # But if this is the case, why is it not set by default?
- echo "CPPFLAGS+= -D_FILE_OFFSET_BITS=64" >>$CONFIG_MK
- echo "CPPFLAGS+= -D_LARGEFILE_SOURCE" >>$CONFIG_MK
- echo "CPPFLAGS+= -D_LARGEFILE64_SOURCE" >>$CONFIG_MK
-- # glibc-2.20
-- echo "CPPFLAGS+= -D_DEFAULT_SOURCE" >>$CONFIG_MK
- echo "DHCPCD_SRCS+= if-linux.c" >>$CONFIG_MK
- # for RTM_NEWADDR and friends
-- echo "#include <asm/types.h> /* fix broken headers */" >>$CONFIG_H
-- echo "#include <linux/rtnetlink.h>" >>$CONFIG_H
-+ echo "#include <asm/types.h> /* fix broken headers */" >>$CONFIG_H
-+ echo "#include <linux/rtnetlink.h>" >>$CONFIG_H
- ;;
- qnx*)
- echo "CPPFLAGS+= -D__EXT" >>$CONFIG_MK
- echo "DHCPCD_SRCS+= if-bsd.c" >>$CONFIG_MK
- ;;
-@@ -592,11 +590,10 @@
- fi
-
- if [ -z "$GETLINE" ]; then
- printf "Testing for getline ... "
- cat <<EOF >_getline.c
--#define _GNU_SOURCE
- #include <stdio.h>
- int main(void) {
- char *buf = NULL;
- size_t n = 0;
- getline(&buf, &n, stdin);
-
-Index: dhcp6.c
-==================================================================
---- a/dhcp6.c
-+++ b/dhcp6.c
-@@ -1149,11 +1149,11 @@
- return -1;
- cm->cmsg_level = IPPROTO_IPV6;
- cm->cmsg_type = IPV6_PKTINFO;
- cm->cmsg_len = CMSG_LEN(sizeof(pi));
- memset(&pi, 0, sizeof(pi));
-- pi.ipi6_ifindex = CAST_IPI6_IFINDEX(ifp->index);
-+ pi.ipi6_ifindex = ifp->index;
- memcpy(CMSG_DATA(cm), &pi, sizeof(pi));
-
- if (sendmsg(ctx->dhcp_fd, &ctx->sndhdr, 0) == -1) {
- logger(ifp->ctx, LOG_ERR,
- "%s: %s: sendmsg: %m", ifp->name, __func__);
-
-Index: eloop.c
-==================================================================
---- a/eloop.c
-+++ b/eloop.c
-@@ -23,13 +23,10 @@
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
--/* Needed for ppoll(2) */
--#define _GNU_SOURCE
--
- #include <sys/time.h>
-
- #include <errno.h>
- #include <limits.h>
- #include <signal.h>
-
-Index: ipv6.h
-==================================================================
---- a/ipv6.h
-+++ b/ipv6.h
-@@ -27,18 +27,12 @@
-
- #ifndef IPV6_H
- #define IPV6_H
-
- #include <sys/uio.h>
--
- #include <netinet/in.h>
-
--#if defined(__linux__) && defined(__GLIBC__)
--# define _LINUX_IN6_H
--# include <linux/ipv6.h>
--#endif
--
- #include "config.h"
- #include "dhcpcd.h"
-
- #define ALLROUTERS "ff02::2"
-
-Index: ipv6nd.c
-==================================================================
---- a/ipv6nd.c
-+++ b/ipv6nd.c
-@@ -293,11 +293,11 @@
- return;
- cm->cmsg_level = IPPROTO_IPV6;
- cm->cmsg_type = IPV6_PKTINFO;
- cm->cmsg_len = CMSG_LEN(sizeof(pi));
- memset(&pi, 0, sizeof(pi));
-- pi.ipi6_ifindex = CAST_IPI6_IFINDEX(ifp->index);
-+ pi.ipi6_ifindex = ifp->index;
- memcpy(CMSG_DATA(cm), &pi, sizeof(pi));
-
- logger(ifp->ctx, LOG_DEBUG,
- "%s: sending Router Solicitation", ifp->name);
- if (sendmsg(ctx->nd_fd, &ctx->sndhdr, 0) == -1) {
-