pppd: fix build with 3.5+ kernel headers

Fixes http://autobuild.buildroot.net/results/8a9369fece696e012249b865708ffee533c5318a

Pppd bundles some, but not all needed kernel headers. In Linux 3.5 (and
before that 2.6.35) if_pppol2tp.h was changed, so the embedded copy was no
longer compatible.

if_pppol2tp.h has been part of the exported kernel headers since 2.6.23, so
simply drop the bundled copy and use the kernel headers instead, similar
to how it is done in Gentoo:

https://bugs.gentoo.org/show_bug.cgi?id=427684

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Peter Korsgaard 2012-09-11 08:59:56 +02:00
parent 0cf3338546
commit 94ce13a56f
2 changed files with 9 additions and 24 deletions

View File

@ -1,24 +0,0 @@
--- ppp-2.4.5/include/linux/if_pppol2tp.h 2009-11-16 22:26:07.000000000 +0000
+++ ppp-2.4.5/include/linux/if_pppol2tp.h 2010-07-16 22:35:22.000000000 +0100
@@ -32,6 +32,20 @@
__u16 d_tunnel, d_session; /* For sending outgoing packets */
};
+/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
+ * bits. So we need a different sockaddr structure.
+ */
+struct pppol2tpv3_addr {
+ pid_t pid; /* pid that owns the fd.
+ * 0 => current */
+ int fd; /* FD of UDP or IP socket to use */
+
+ struct sockaddr_in addr; /* IP address and port to send to */
+
+ __u32 s_tunnel, s_session; /* For matching incoming packets */
+ __u32 d_tunnel, d_session; /* For sending outgoing packets */
+};
+
/* Socket options:
* DEBUG - bitmask of debug message categories
* SENDSEQ - 0 => don't send packets with sequence numbers

View File

@ -23,6 +23,15 @@ ifeq ($(BR2_INET_IPV6),y)
PPPD_MAKE_OPT += HAVE_INET6=y
endif
# pppd bundles some but not all of the needed kernel headers. The embedded
# if_pppol2tp.h is unfortunately not compatible with kernel headers > 2.6.34,
# and has been part of the kernel headers since 2.6.23, so drop it
define PPPD_DROP_INTERNAL_IF_PPOL2TP_H
$(RM) $(@D)/include/linux/if_pppol2tp.h
endef
PPPD_POST_EXTRACT_HOOKS += PPPD_DROP_INTERNAL_IF_PPOL2TP_H
define PPPD_CONFIGURE_CMDS
$(SED) 's/FILTER=y/#FILTER=y/' $(PPPD_DIR)/pppd/Makefile.linux
$(SED) 's/ifneq ($$(wildcard \/usr\/include\/pcap-bpf.h),)/ifdef FILTER/' $(PPPD_DIR)/*/Makefile.linux