Remove <linux/if_ppp.h> and <net/if_ppp.h> headers The if_ppp.h headers are redundant; all the relevant definitions are now in ppp_defs.h, ppp-ioctl.h for Linux (which comes from the kernel headers via the C library) and pppio.h for Solaris. Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
For Linux, use the Linux / Glibc based defines instead of included headers This is to ensure compatibility with the OS you are compiling against and that headers are maintained in upstream projects. - Moved PPP_EAP and PPP_ECP into respective header files in lieu of not currently existing in the linux/ppp_defs.h - Unchained the top-level ${topsrc_dir}/include, this folder is included for prosterity and may continue to exist on github, but in the future eliminated from distribution - Bogus upstream file in glibc for <net/if_ppp.h>, its content should be replaced with a simple include to <linux/ppp-ioctl.h>. The lack of an appropriate ifreq structure with ppp_stats or ppp_comp_stats, implementet that inline (and tested). - Updated instances where PPP_FCS() macro would expand the fcstab, while PPP_GOODFCS and PPP_INITFCS is provided in <linux/ppp_defs.h>, the latter is tied to a lookup table. It's used in two places, so add the PPP_FCS macro where applicable. Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
Use autoconf/automake to configure and make ppp This change brings in autoconf/automake scripts to configure the ppp project. Current change doesn't eliminate the previous build system, but the new script autogen.sh will overwrite configure, and generate the basic Makefile.in and Makefile files. Features can now be enabled by command line: * Microsoft Extensions, - MSCHAP - MPPE - MS LAN Manager support * IPXCP protocol * CBCP protocol * PAM support * EAP-TLS support * EAP-SRP support * Max session lifetime by byte count * Plugins * Packet activity filter support * Multilink * IPv6 support Control linkage with * OpenSSL (-lssl -lcrypto) * systemd (-lsystemd) * libatm (-latm) * libsrp (-lsrp) * pam (-lpam) Also, the configure script is made sensitive to features of OpenSSL. Like the presence or absence of DES, SHA, MD4 and MD5 crypto support. In the cases where either of these are missing, the support will be directly compiled into pppd and plugins. In addition, package maintainers can now control the installation paths with standard --prefix=, or --localstatedir=, or --sysconfdir= to configure. On top of that, they can now control the following directories: * runtime directory w/--with-runtime-dir * logfile directory w/--with-logfile-dir * plugin directory w/--with-plugin-dir In the case where automake isn't the right solution, namely: SunOS kernel module build, the original Makefile infrastructure is preserved and reused. Care was taken to only cosmetically touchup the source files in this change. This means: * Insert HAVE_CONFIG_H and include config.h in all .c files. * Change HAS_SHADOW to HAVE_SHADOW_H * Change HAVE_LOGWTMP to HAVE_UTMP_H * Introduce HAVE_CRYPT_H into the source code where appropriate * Added ifdef MPPE where appropriate * USE_SRP required a few changes as it didn't compile * Touchup some compile warning in pppstats directory on SunOS Introduced a new pppdconf.h file that exports the appropriate defines to a module that wants to provide a module that pppd can dynamically load. This will define/undef features like MPPE, CHAPMS such that the project doesn't have to guess what features pppd is compiled with. Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
Add pkgconfig support to PPP project (#270) This adds pppd.pc into $(INSTROOT)/$(LIBDIR)/pkgconfig. On some distributions this would be /lib/pkgconfig, or /usr/lib/pkgconfig, but other distributions may consider specifying --libdir=/usr/lib/x86_x64-linux-gnu/ and the pkgconfig directory would be under that. Allowing --libdir to be specified at configure time fixes #223, providing pkgconfig support fixes #19 and allows third party packages pickup the plugin directory. Manually cherry picking parts of two commits by @lkundrak from: https://github.com/NetworkManager/ppp/tree/lr/pkgconfig Mainly, the difference between the original commit is not to replace DESTDIR with "prefix". Leave DESTDIR alone, and add needed pkgconfig (pppd.pc.in) as a part of the linux distribution (previously in pppd/plugin directory). This fixes GitHub issues: #19 #47 and #223 Signed-off-by: Eivind Naess <eivnaes@yahoo.com>
Add cross-compilation support on Linux This adds three new command-line options to the configure script: --cross_compile=<prefix> (default "") --cc=<compiler> (default cc) --cflags=<compile flags> (default -g -O2 -pipe) These get propagated to the Makefiles in the subdirectories. The cross-compile prefix is prepended to the CC value, so for example if you do "./configure --cross_compile=powerpc64le-linux-" then everything gets compiled and linked using powerpc64le-linux-cc. Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Convert to ANSI C This gets rid of the __P and __V macros that were used so that the code was in theory compilable by a K&R C compiler, and converts the function definitions to ANSI C style. In fact there were already quite a few function definitions in the ANSI C style, so it would not have been compilable by a K&R C compiler in fact. The Solaris and BSD kernel code modules have had __P removed but the function definitions have not been converted. There are some other minor changes here to remove warnings. Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Honor LDFLAGS This makes the makefiles include $(LDFLAGS) as a parameter when linking executables. Distros use this as a way of applying linker flags across all the executables they build. [paulus@ozlabs.org - supplied the patch description] Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
pppd: allow use of arbitrary interface names This is a modified version of a patch from openSUSE that enables PPP interfaces to be called arbitrary names, rather than simply pppX where X is the unit number. The modifications from the stock openSUSE patch are: - refresh patch on top of 018_ip-up_option.diff - fix a printf format-string vulnerability in pppd/main.c:set_ifunit() - clarify the pppd.8 manpage additions - patch pppstats/pppstats.c to query renamed interfaces without complaint Origin: SUSE Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=458646 Forwarded: no Reviewed-by: Chris Boot <bootc@debian.org> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Remove files that don't go into releases This mainly removes files specific to platforms that we no longer support, and removes a few other outdated files. Signed-off-by: Paul Mackerras <paulus@samba.org>
Add $(INSTDIR) to installation paths in Linux makefiles. Patch from Robert Vogelgesang. This patch re-introduces the possibility for package maintainers to install into a different filesystem tree. This is done by adding $(INSTROOT) at various places; the package maintainers can then issue a make install INSTROOT=/some/where/else when they package pppd for their distribution. In previous versions of the ppp package this was possible using the variable DESTDIR, but this variable is now used for a different purpose and cannot be changed via additional parameters of the make command.