diff --git a/.github/workflows/solaris.yaml b/.github/workflows/solaris.yaml index 32ef909..1017813 100644 --- a/.github/workflows/solaris.yaml +++ b/.github/workflows/solaris.yaml @@ -12,6 +12,6 @@ jobs: with: run: | pkg update - pkg install gcc - ./configure + pkg install gcc automake autoconf libtool + ./autogen.sh CFLAGS="-Wno-deprecated-declarations" make diff --git a/.github/workflows/ubuntu.yaml b/.github/workflows/ubuntu.yaml new file mode 100644 index 0000000..8117d51 --- /dev/null +++ b/.github/workflows/ubuntu.yaml @@ -0,0 +1,24 @@ +name: Build and Test +on: [push, pull_request] + +jobs: + build_and_test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: install required packages + run: sudo DEBIAN_FRONTEND=noninteractive apt-get -y -qq install build-essential autoconf automake pkg-config libtool m4 autoconf-archive libssl-dev libatm1-dev libpcap-dev + + - name: configure + run: ./autogen.sh --enable-multilink --enable-ipxcp + + - name: build + run: make V=1 CFLAGS="-O2 -g -Wno-unused-result" + + - name: check + run: make check + + - name: distcheck + run: make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-multilink --enable-ipxcp" diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..ff1a48f --- /dev/null +++ b/AUTHORS @@ -0,0 +1,7 @@ +The pppd Project +https://github.com/ppp-project/ppp + +Primary Author of this package: +Linux Paul Mackerras +Solaris James Carlson + diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..b3846c7 --- /dev/null +++ b/COPYING @@ -0,0 +1,7 @@ +Copyrights: +*********** + +All of the code can be freely used and redistributed. The individual +source files each have their own copyright and permission notice. +Pppd, pppstats and pppdump are under BSD-style notices. Some of the +pppd plugins are GPL'd. Chat is public domain. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..f9fadce --- /dev/null +++ b/ChangeLog @@ -0,0 +1,4 @@ +2021-07-11 Eivind Naess + + Introduction of Autotools to pppd project + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..508c92b --- /dev/null +++ b/Makefile.am @@ -0,0 +1,77 @@ +ACLOCAL_AMFLAGS="-Im4" + +SUBDIRS = chat contrib pppd pppstats pppdump + +if WITH_PLUGINS +SUBDIRS += pppd/plugins +endif + +DIST_SUBDIRS = $(SUBDIRS) common include modules scripts + +# +# *HACK* +# This is to work around the kernel module for PPP on Sun Solaris +if SUNOS +all-am: + (cd solaris ; make -f Makefile) + +clean-generic: + (cd solaris ; make -f Makefile clean) + +install-am: + (cd solaris ; make -f Makefile install) +endif + +sampledir = $(sysconfdir)/@PACKAGE@ + +sample_DATA = \ + etc.ppp/options \ + etc.ppp/chap-secrets \ + etc.ppp/pap-secrets \ + etc.ppp/eaptls-server \ + etc.ppp/eaptls-client \ + etc.ppp/openssl.cnf + +EXTRA_README = \ + Changes-2.3 \ + FAQ \ + README \ + README.cbcp \ + README.eap-srp \ + README.eap-tls \ + README.linux \ + README.MPPE \ + README.MSCHAP80 \ + README.MSCHAP81 \ + README.pppoe \ + README.pppol2tp \ + README.pwfd \ + README.sol2 \ + PLUGINS \ + SETUP \ + Submitting-patches.md + +EXTRA_SOLARIS = \ + solaris/Makedefs \ + solaris/Makedefs.gcc \ + solaris/Makedefs.sol2 \ + solaris/Makefile.sol2 \ + solaris/Makefile.sol2-64 \ + solaris/Makefile.sol2-64x \ + solaris/Makefile.sol2gcc \ + solaris/Makefile.sol2gcc-64 \ + solaris/Makefile.sol2gcc-64x \ + solaris/Makefile.top \ + solaris/ppp_ahdlc.c \ + solaris/ppp_ahdlc_mod.c \ + solaris/ppp.c \ + solaris/ppp_comp.c \ + solaris/ppp_comp_mod.c \ + solaris/ppp.conf \ + solaris/ppp_mod.c \ + solaris/ppp_mod.h + +EXTRA_DIST= \ + $(sample_DATA) \ + $(EXTRA_README) \ + $(EXTRA_SOLARIS) diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..9d6c7fb --- /dev/null +++ b/NEWS @@ -0,0 +1,278 @@ +What's new in ppp-2.4.9. +************************ + +* Support for new EAP (Extensible Authentication Protocol) methods: + - Support for EAP-TLS, from Jan Just Keijser and others + - Support for EAP-MSCHAPv2, from Eivind Næss, Thomas Omerzu, Tijs + Van Buggenhout and others + +* New pppd options: + - chap-timeout + - chapms-strip-domain + - replacedefaultroute + - noreplacedefaultroute + - ipv6cp-accept-remote + - lcp-echo-adaptive + - ip-up-script + - ip-down-script + - ca + - capath + - cert + - key + - crl-dir + - crl + - max-tls-version + - need-peer-eap + +* Fixes for CVE-2020-8597 and CVE-2015-3310. + +* libpcap is now required when compiling on Linux (previously, if + libpcap was not present, pppd would be compiled without packet + filtering support). + +* The rp-pppoe plugin has been renamed to pppoe, to distinguish it + from the upstream rp-pppoe code. Its options have changed names, + but the old names are kept as aliases. + +* The configure script now supports cross-compilation. + +* Many bug fixes and cleanups. + + +What was new in ppp-2.4.8. +************************** + +* New pppd options have been added: + - ifname, to set the name for the PPP interface device + - defaultroute-metric, to set the metric for the default route + - defaultroute6, to add an IPv6 default route (with nodefaultroute6 + to prevent adding an IPv6 default route) + - up_sdnotify, to have pppd notify systemd when the link is up. + +* The rp-pppoe plugin has new options: + - host-uniq, to set the Host-Uniq value to send + - pppoe-padi-timeout, to set the timeout for discovery packets + - pppoe-padi-attempts, to set the number of discovery attempts. + +* Added the CLASS attribute in radius packets. + +* Sundry bug fixes. + +* Fixed warnings and issues found by static analysis. + +* Added Submitting-patches.md. + + +What was new in ppp-2.4.7. +************************** + +* Fixed a potential security issue in parsing option files (CVE-2014-3158). + +* There is a new "stop-bits" option, which takes an argument of 1 or 2, + indicating the number of stop bits to use for async serial ports. + +* Various bug fixes. + + +What was new in ppp-2.4.6. +************************** + +* Man page updates. + +* Several bug fixes. + +* Options files can now set and unset environment variables for + scripts. + +* The timeout for chat scripts can now be taken from an environment + variable. + +* There is a new option, master_detach, which allows pppd to detach + from the controlling terminal when it is the multilink bundle master + but its own link has terminated, even if the nodetach option has + been given. + + +What was new in ppp-2.4.5. +************************** + +* Under Linux, pppd can now operate in a mode where it doesn't request + the peer's IP address, as some peers refuse to supply an IP address. + Since Linux supports device routes as well as gateway routes, it's + possible to have no remote IP address assigned to the ppp interface + and still route traffic over it. + +* Pppd now works better with 3G modems that do strange things such as + sending IPCP Configure-Naks with the same values over and over again. + +* The PPP over L2TP plugin is included, which works with the pppol2tp + PPP channel code in the Linux kernel. This allows pppd to be used + to set up tunnels using the Layer 2 Tunneling Protocol. + +* A new 'enable-session' option has been added, which enables session + accounting via PAM or wtwp/wtmpx, as appropriate. See the pppd man + page for details. + +* Several bugs have been fixed. + + +What was new in ppp-2.4.4. +************************** + +* Pppd will now run /etc/ppp/ip-pre-up, if it exists, after creating + the ppp interface and configuring its IP addresses but before + bringing it up. This can be used, for example, for adding firewall + rules for the interface. + +* Lots of bugs fixed, particularly in the area of demand-dialled and + persistent connections. + +* The rp-pppoe plugin now accepts any interface name (that isn't an + existing pppd option name) without putting "nic-" on the front of + it, not just eth*, nas*, tap* and br*. + + +What was new in ppp-2.4.3. +************************** + +* The configure script now accepts --prefix and --sysconfdir options. + These default to /usr/local and /etc. If you want pppd put in + /usr/sbin as before, use ./configure --prefix=/usr. + +* Doing `make install' no longer puts example configuration files in + /etc/ppp. Use `make install-etcppp' if you want that. + +* The code has been updated to work with version 0.8.3 of libpcap. + Unfortunately the libpcap maintainers removed support for the + "inbound" and "outbound" keywords on PPP links, meaning that if you + link pppd with libpcap-0.8.3, you can't use those keywords in the + active-filter and pass-filter expressions. The support has been + reinstated in the CVS version and should be in future libpcap + releases. If you need the in/outbound keywords, use a later release + than 0.8.3, or get the CVS version from http://www.tcpdump.org. + +* There is a new option, child-timeout, which sets the length of time + that pppd will wait for child processes (such as the command + specified with the pty option) to exit before exiting itself. It + defaults to 5 seconds. After the timeout, pppd will send a SIGTERM + to any remaining child processes and exit. A value of 0 means no + timeout. + +* Various bugs have been fixed, including some CBCP packet parsing + bugs that could lead to the peer being able to crash pppd if CBCP + support is enabled. + +* Various fixes and enhancements to the radius and rp-pppoe plugins + have been added. + +* There is a new winbind plugin, from Andrew Bartlet of the Samba + team, which provides the ability to authenticate the peer against an + NT domain controller using MS-CHAP or MS-CHAPV2. + +* There is a new pppoatm plugin, by various authors, sent in by David + Woodhouse. + +* The multilink code has been substantially reworked. The first pppd + for a bundle still controls the ppp interface, but it doesn't exit + until all the links in the bundle have terminated. If the first + pppd is signalled to exit, it signals all the other pppds + controlling links in the bundle. + +* The TDB code has been updated to the latest version. This should + eliminate the problem that some people have seen where the database + file (/var/run/pppd.tdb) keeps on growing. Unfortunately, however, + the new code uses an incompatible database format. For this reason, + pppd now uses /var/run/pppd2.tdb as the database filename. + + +What was new in ppp-2.4.2. +************************** + +* The CHAP code has been rewritten. Pppd now has support for MS-CHAP + V1 and V2 authentication, both as server and client. The new CHAP + code is cleaner than the old code and avoids some copyright problems + that existed in the old code. + +* MPPE (Microsoft Point-to-Point Encryption) support has been added, + although the current implementation shouldn't be considered + completely secure. (There is no assurance that the current code + won't ever transmit an unencrypted packet.) + +* James Carlson's implementation of the Extensible Authentication + Protocol (EAP) has been added. + +* Support for the Encryption Control Protocol (ECP) has been added. + +* Some new plug-ins have been included: + - A plug-in for kernel-mode PPPoE (PPP over Ethernet) + - A plug-in for supplying the PAP password over a pipe from another + process + - A plug-in for authenticating using a Radius server. + +* Updates and bug-fixes for the Solaris port. + +* The CBCP (Call Back Control Protocol) code has been updated. There + are new options `remotenumber' and `allow-number'. + +* Extra hooks for plugins to use have been added. + +* There is now a `maxoctets' option, which causes pppd to terminate + the link once the number of bytes passed on the link exceeds a given + value. + +* There are now options to control whether pppd can use the IPCP + IP-Address and IP-Addresses options: `ipcp-no-address' and + `ipcp-no-addresses'. + +* Fixed several bugs, including potential buffer overflows in chat. + + +What was new in ppp-2.4.1. +************************** + +* Pppd can now print out the set of options that are in effect. The + new `dump' option causes pppd to print out the option values after + option parsing is complete. The `dryrun' option causes pppd to + print the options and then exit. + +* The option parsing code has been fixed so that options in the + per-tty options file are parsed correctly, and don't override values + from the command line in most cases. + +* The plugin option now looks in /usr/lib/pppd/ (for + example, /usr/lib/pppd/2.4.1b1) for shared objects for plugins if + there is no slash in the plugin name. + +* When loading a plugin, pppd will now check the version of pppd for + which the plugin was compiled, and refuse to load it if it is + different to pppd's version string. To enable this, the plugin + source needs to #include "pppd.h" and have a line saying: + char pppd_version[] = VERSION; + +* There is a bug in zlib, discovered by James Carlson, which can cause + kernel memory corruption if Deflate is used with the lowest setting, + 8. As a workaround pppd will now insist on using at least 9. + +* Pppd should compile on Solaris and SunOS again. + +* Pppd should now set the MTU correctly on demand-dialled interfaces. + + +What was new in ppp-2.4.0. +************************** + +* Multilink: this package now allows you to combine multiple serial + links into one logical link or `bundle', for increased bandwidth and + reduced latency. This is currently only supported under the + 2.4.x and later Linux kernels. + +* All the pppd processes running on a system now write information + into a common database. I used the `tdb' code from samba for this. + +* New hooks have been added. + +For a list of the changes made during the 2.3 series releases of this +package, see the Changes-2.3 file. + + + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..e27d631 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. +REQUIRED_AUTOMAKE_VERSION=1.9 +PKG_NAME=pppd + +(test -f $srcdir/configure.ac \ + && test -f $srcdir/pppd/main.c) || { + echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" + echo " top-level $PKG_NAME directory" + exit 1 + } + +(cd $srcdir; + autoreconf --install --symlink && + autoreconf && + ./configure --enable-maintainer-mode $@ +) + diff --git a/chat/Makefile.am b/chat/Makefile.am new file mode 100644 index 0000000..58af42e --- /dev/null +++ b/chat/Makefile.am @@ -0,0 +1,9 @@ + +sbin_PROGRAMS = chat +man8_MANS = chat.8 + +chat_SOURCES = chat.c +chat_CFLAGS = -DTERMIOS -DSIGTYPE=void -UNO_SLEEP -DFNDELAY=O_NDELAY + +EXTRA_DIST = \ + $(man8_MANS) diff --git a/common/Makefile.am b/common/Makefile.am new file mode 100644 index 0000000..27169d5 --- /dev/null +++ b/common/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_ZLIB = \ + zlib.c \ + zlib.h + +EXTRA_DIST = \ + $(EXTRA_ZLIB) diff --git a/configure b/configure index d854679..1e6e794 100755 --- a/configure +++ b/configure @@ -158,7 +158,7 @@ if [ -d "$ksrc" ]; then if [ ${HAVE_INCDIR_PARAM:-0} -ne 1 ] ; then INCDIR='${prefix}'/include fi - mkmkf $ksrc/pppd.pc.in pppd/pppd.pc + mkmkf pppd/pppd.pc.in pppd/pppd.pc fi else echo "Unable to locate kernel source $ksrc" diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..649a357 --- /dev/null +++ b/configure.ac @@ -0,0 +1,408 @@ +AC_PREREQ([2.69]) +AC_INIT([ppp], + [2.4.10], + [https://github.com/ppp-project/ppp]) + +m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE([enable]) + +AC_LANG(C) +AC_CONFIG_SRCDIR([pppd/main.c]) +AC_CONFIG_HEADERS([pppd/config.h pppd/pppdconf.h]) + +# Checks for programs. +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_INSTALL +AC_PROG_LIBTOOL +AC_PROG_LN_S + +PKG_PROG_PKG_CONFIG + +AC_CANONICAL_HOST +build_linux=no +build_sunos=no + +case "${host_os}" in + linux*) + build_linux=yes + ;; + solaris2*) + build_sunos=yes + ;; + *) + AC_MSG_ERROR(["OS ${host_os} not supported"]) + ;; +esac + +AM_CONDITIONAL([LINUX], [test "${build_linux}" = "yes" ]) +AM_CONDITIONAL([SUNOS], [test "${build_sunos}" = "yes" ]) +AM_COND_IF([SUNOS], + CFLAGS="$CFLAGS -DSOL2 -DSRV4") + +# +# Checks for header files, these will set the HAVE_[FILE]_H macros in config.h +AC_HEADER_STDBOOL +AC_CHECK_HEADERS([ \ + asm/types.h \ + crypt.h \ + paths.h \ + shadow.h \ + sys/dlpi.h \ + sys/ioctl.h \ + sys/socket.h \ + sys/time.h \ + sys/uio.h \ + time.h \ + unistd.h \ + utmp.h]) + +# +# Check for linux specific headers, required by pppoe, or pppol2tp +AM_COND_IF([LINUX], [ + AC_CHECK_HEADERS([ \ + net/bpf.h \ + net/if.h \ + net/if_types.h \ + net/if_arp.h \ + linux/if.h \ + linux/if_ether.h \ + linux/if_packet.h \ + netinet/if_ether.h \ + netpacket/packet.h])]) + +AC_CHECK_SIZEOF(unsigned int) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(unsigned short) + +# Checks for library functions. +AC_CHECK_FUNCS([ \ + mmap \ + logwtmp \ + strerror]) + +# +# If libc doesn't provide logwtmp, check if libutil provides logwtmp(), and if so link to it. +AS_IF([test "x${ac_cv_func_logwtmp}" != "xyes"], [ + AC_CHECK_LIB([util], [logwtmp], [ + AC_DEFINE(HAVE_LOGWTMP, 1, ["System provides the logwtmp() function"]) + AC_SUBST([UTIL_LIBS], ["-lutil"]) + ]) +]) + +# +# Check if libcrypt have crypt() function +AC_CHECK_LIB([crypt], [crypt], + AC_SUBST([CRYPT_LIBS], ["-lcrypt"])) + +# +# Should pppd link with -lsystemd (Linux only) +AC_ARG_ENABLE([systemd], + AS_HELP_STRING([--enable-systemd], [Enable support for systemd notification])) +AM_CONDITIONAL(WITH_SYSTEMD, test "x${enable_systemd}" = "xyes") +AM_COND_IF([WITH_SYSTEMD], + AC_DEFINE([SYSTEMD], 1, [Enable support for systemd notifications])) + +# +# Enable Callback Protocol Support, disabled by default +AC_ARG_ENABLE([cbcp], + AS_HELP_STRING([--enable-cbcp], [Enable Callback Protocol])) +AM_CONDITIONAL(WITH_CBCP, test "x${enable_cbcp}" = "xyes") +AM_COND_IF([WITH_CBCP], + AC_DEFINE([CBCP_SUPPORT], 1, [Have Callback Protocol support])) + +# +# Disable support for IPX control protocol +AC_ARG_ENABLE([ipxcp], + AS_HELP_STRING([--enable-ipxcp], [Enable IPX Control Protocol support])) +AM_CONDITIONAL(WITH_IPXCP, test "x${enable_ipxcp}" = "xyes") +AM_COND_IF(WITH_IPXCP, + AC_DEFINE([IPX_CHANGE], 1, ["Have IPX Control Protocol"])) +AS_IF([test "x${build_sunos}" = "xyes" && test "x${enable_ipxcp}" = "xyes"], + [AC_MSG_ERROR([IPXCP is not supported on SunOS, disable using --disable-ipxcp])]) + +# +# Disable support for limiting session duration by maximum octets +AC_ARG_ENABLE([maxoctets], + AS_HELP_STRING([--disable-maxoctets], [Disable support for limiting session by maximum octets])) +AS_IF([test "x$enable_maxoctets" != "xno"], + AC_DEFINE([MAXOCTETS], 1, ["Limit sessions by maximum number of octets"])) + +# +# Disable Microsoft extensions will remove CHAP and MPPE support +AC_ARG_ENABLE([microsoft-extensions], + AS_HELP_STRING([--disable-microsoft-extensions], [Disable Microsoft CHAP / MPPE extensions])) + +AM_CONDITIONAL(WITH_CHAPMS, test "x${enable_microsoft_extensions}" != "xno") +AM_COND_IF([WITH_CHAPMS], + AC_DEFINE([CHAPMS], 1, ["Have Microsoft CHAP support"])) + +AM_CONDITIONAL(WITH_MPPE, test "x${enable_microsoft_extensions}" != "xno") +AM_COND_IF([WITH_MPPE], + AC_DEFINE([MPPE], 1, ["Have Microsoft MPPE support"])) + +# +# Enable Microsoft LAN Manager support, depends on Microsoft Extensions +AC_ARG_ENABLE([mslanman], + AS_HELP_STRING([--enable-mslanman], [Enable Microsoft LAN Manager support])) +AS_IF([test "x${enable_mslanman}" = "xyes" && test "x${enable_microsoft_extensions}" != "xno"], + AC_DEFINE([MSLANMAN], 1, ["Have Microsoft LAN Manager support"])) + +# +# Disable IPv6 support +AC_ARG_ENABLE([ipv6-support], + AS_HELP_STRING([--disable-ipv6-support], [Disable IPv6 support])) +AM_CONDITIONAL(WITH_INET6, test "x${enable_ipv6_support}" != "xno") +AM_COND_IF([WITH_INET6], + AC_DEFINE(INET6, 1, ["Have IPv6 support"])) + +# +# Disable Multilink support +AC_ARG_ENABLE([multilink], + AS_HELP_STRING([--enable-multilink], [Enable multilink support])) +AM_CONDITIONAL(WITH_MULTILINK, test "x${enable_multilink}" = "xyes") +AM_COND_IF([WITH_MULTILINK], + AC_DEFINE([HAVE_MULTILINK], 1, ["Have multilink support"])) +AS_IF([test "x${build_sunos}" = "xyes" && test "x${enable_multilink}" = "xyes"], + [AC_MSG_ERROR([Multilink is not supported on SunOS])]) + +# +# Multilink require Trivial Database Support +AM_CONDITIONAL(WITH_TDB, test "x${enable_multilink}" = "xyes") +AM_COND_IF([WITH_TDB], + AC_DEFINE([USE_TDB], 1, ["Include TDB support"])) + +# +# Enable support for loadable plugins +AC_ARG_ENABLE([plugins], + AS_HELP_STRING([--disable-plugins], [Disable support for loadable plugins])) +AS_IF([test "x$enable_plugins" != "xno"], + AC_DEFINE([PLUGIN], 1, ["Have support for loadable plugins"])) +AM_CONDITIONAL(WITH_PLUGINS, test "${enable_plugins}" != "no") + +# +# Disable EAP-TLS support +AC_ARG_ENABLE([eaptls], + AS_HELP_STRING([--disable-eaptls], [Disable EAP-TLS authentication support])) +AS_IF([test "x$enable_eaptls" != "xno"], + AC_DEFINE([USE_EAPTLS], 1, ["Have EAP-TLS authentication support"])) +AM_CONDITIONAL(WITH_EAPTLS, test "${enable_eaptls}" != "no") + +# +# Disable OpenSSL engine support +AC_ARG_ENABLE([openssl-engine], + AS_HELP_STRING([--disable-openssl-engine], [Disable OpenSSL engine support])) +AS_IF([test "x$enable_openssl_engine" != "xno"], [], + AC_DEFINE([OPENSSL_NO_ENGINE], 1, ["OpenSSL engine support"])) + +# +# Specify runtime directory +AC_ARG_ENABLE([plugin-dir], + AC_HELP_STRING([--with-plugin-dir=DIR], [Specify the plugin directory for pppd])) +AS_IF([test -n "$with_plugin_dir"], + [PPPD_PLUGIN_DIR="$with_plugin_dir"], + [PPPD_PLUGIN_DIR="${libdir}/pppd/$VERSION"]) +AC_SUBST(PPPD_PLUGIN_DIR, "$PPPD_PLUGIN_DIR", [The pppd plugin directory]) + +# +# Specify runtime directory +AC_ARG_ENABLE([runtime-dir], + AC_HELP_STRING([--with-runtime-dir=DIR], [Specify the runtime directory for pppd])) +AS_IF([test -n "$with_runtime_dir"], + [PPPD_RUNTIME_DIR="$with_runtime_dir"], + [PPPD_RUNTIME_DIR="${localstatedir}/run/pppd"]) +AC_SUBST(PPPD_RUNTIME_DIR) + +# +# Specify runtime directory +AC_ARG_ENABLE([logfile-dir], + AC_HELP_STRING([--with-logfile-dir=DIR], [Specify the log directory for pppd])) +AS_IF([test -n "$with_logfile_dir"], + [PPPD_LOGFILE_DIR="$with_logfile_dir"], + [PPPD_LOGFILE_DIR="${localstatedir}/log/pppd"]) +AC_SUBST(PPPD_LOGFILE_DIR) + +# +# Check for OpenSSL +AX_CHECK_OPENSSL +AM_CONDITIONAL(WITH_OPENSSL, test "${with_openssl}" != "no") + +# +# Check if OpenSSL has compiled in support for various ciphers +AS_IF([test "${with_openssl}" != "no" ], [ + AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD4], [md4]) + AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD5], [md5]) + AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_DES], [des]) + AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_SHA], [sha]) +], [ + AS_IF([test "x$enable_eaptls" != "xno"], + [AC_MSG_ERROR([OpenSSL not found, and if this is your intention then run configure --disable-eaptls])]) +]) + +AM_CONDITIONAL([OPENSSL_HAVE_MD4], test "x${ac_cv_openssl_md4}" != "xno") +AM_COND_IF([OPENSSL_HAVE_MD4],, + AC_DEFINE([USE_MD4], 1, [Use included md4 included with pppd])) + +AM_CONDITIONAL([OPENSSL_HAVE_MD5], test "x${ac_cv_openssl_md5}" != "xno") +AM_COND_IF([OPENSSL_HAVE_MD5],, + AC_DEFINE([USE_MD5], 1, [Use included md5 included with pppd])) + +AM_CONDITIONAL([OPENSSL_HAVE_SHA], test "x${ac_cv_openssl_sha}" != "xno") +AM_COND_IF([OPENSSL_HAVE_SHA],, + AC_DEFINE([USE_SHA], 1, [Use included sha included with pppd])) + +AM_CONDITIONAL([OPENSSL_HAVE_DES], test "x${ac_cv_openssl_des}" != "xno") +AM_COND_IF([OPENSSL_HAVE_DES],, + AC_DEFINE([USE_CRYPT], 1, [Use included des included with pppd])) + +# +# If OpenSSL doesn't support DES, then use the one from libcrypt (glibc dropped support for this in 2.27). +AS_IF([test "${ac_cv_openssl_des}" = "no" ], [ + AC_CHECK_LIB([crypt], [encrypt], + [LIBS="$LIBS -lcrypt"], + [AC_MSG_ERROR([OpenSSL not found or does not support DES, and libcrypt also doesn't support encrypt])] + ) +]) + +# +# With libsrp support +AX_CHECK_SRP + +# +# With libatm support +AX_CHECK_ATM + +# +# With libpam support +AX_CHECK_PAM(AC_DEFINE([USE_PAM], 1, ["Support for Pluggable Authentication Modules"])) +AM_CONDITIONAL(WITH_PAM, test "x${with_pam}" = "xyes") + +# +# With libpcap support, activate pppd on network activity +AX_CHECK_PCAP( + [AC_DEFINE([PPP_FILTER], 1, ["Have packet activity filter support"])]) +# AS_IF([test "x${build_sunos}" = "xyes" && test "x${with_pcap}" != "xno"], +# [AC_MSG_ERROR([Filter is not supported on SunOS])]) + +# +# Some contributions require GTK/GLIB +AC_ARG_WITH([gtk], AS_HELP_STRING([--with-gtk], [Build contributions with the GTK+ interface])) +if test "x${with_gtk}" = "xyes"; then + PKG_CHECK_MODULES([GTK], [gtk+-2.0]) + PKG_CHECK_MODULES([GLIB], [glib-2.0]) +fi +AM_CONDITIONAL([WITH_GTK], test "x${with_gtk}" = "xyes") + + +AC_CONFIG_FILES([ + Makefile + chat/Makefile + contrib/Makefile + contrib/pppgetpass/Makefile + common/Makefile + include/Makefile + modules/Makefile + pppd/Makefile + pppd/pppd.pc + pppd/plugins/Makefile + pppd/plugins/pppoe/Makefile + pppd/plugins/pppoatm/Makefile + pppd/plugins/pppol2tp/Makefile + pppd/plugins/radius/Makefile + pppdump/Makefile + pppstats/Makefile + scripts/Makefile + ]) +AC_OUTPUT + + +AS_IF([test "x${build_sunos}" = "xyes" ], [[ + echo "Setting up SunOS kernel module(s)" + mkmkf() { + rm -f $2 + if [ -f $1 ]; then + echo " $2 <= $1" + sed -e "s,@DESTDIR@,$prefix,g" \ + -e "s,@SYSCONF@,$sysconfdir,g" \ + -e "s,@CC@,$CC,g" \ + -e "s|@CFLAGS@|$CFLAGS|g" $1 > $2 + fi + } + + release=`uname -r` + karch=`/usr/bin/isainfo -k` + makext="sol2" + archvariant= + + case "$karch" in + amd64) + archvariant='-64x' + ;; + sparcv9) + archvariant='-64' + ;; + *) + ;; + esac + + usegcc=$CC + if [ -x /opt/SUNWspro/bin/cc -a "$usegcc" != gcc ] && + /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then + if [ "$archvariant" = "-64x" ]; then + ( cd /tmp; echo "int x;" > ppp$$.c + /opt/SUNWspro/bin/cc -c -errwarn -xchip=opteron -m64 ppp$$.c >/dev/null 2>&1 || ( + echo "WorkShop C is unable to make 64 bit modules, and your $karch system needs" + echo "them. Consider upgrading cc on this machine." + rm -f ppp$$.c + exit 1 + ) || exit 1 + rm -f ppp$$.c ppp$$.o + ) || exit 1 + fi + elif gcc --version >/dev/null 2>&1; then + archvariant=gcc$archvariant + compiletype=.gcc + if [ "$archvariant" = "gcc-64" -o"$archvariant" = "gcc-64x" ]; then + ( cd /tmp; touch ppp$$.c + gcc -c -m64 ppp$$.c >/dev/null 2>&1 || ( + echo "gcc is unable to make 64 bit modules, and your $karch system needs them." + echo "Consider upgrading gcc on this machine, or switching to Sun WorkShop." + rm -f ppp$$.c + exit 1 + ) || exit 1 + rm -f ppp$$.c ppp$$.o + ) || exit 1 + fi + else + echo "C compiler not found; hoping for the best." + fi + + mkmkf solaris/Makedefs$compiletype Makedefs.com + mkmkf solaris/Makefile.sol2$archvariant solaris/Makefile +]]) + +echo " +$PACKAGE_NAME version $PACKAGE_VERSION + Prefix...............: $prefix + Runtime Dir..........: $PPPD_RUNTIME_DIR + Logfile Dir..........: $PPPD_LOGFILE_DIR + Plugin Dir...........: $PPPD_PLUGIN_DIR + With OpenSSL.........: ${with_openssl:-yes} + With libatm..........: ${with_atm:-no} + With libpam..........: ${with_pam:-no} + With libpcap.........: ${with_pcap:-no} + With libsrp..........: ${with_srp:-no} + C Compiler...........: $CC $CFLAGS + Linker...............: $LD $LDFLAGS $LIBS + +Features enabled + Microsoft Extensions.: ${enable_microsoft_extensions:-yes} + Multilink............: ${enable_multilink:-no} + Plugins..............: ${enable_plugins:-yes} + CBCP.................: ${enable_cbcp:-no} + IPXCP................: ${enable_ipxcp:-no} + EAP-TLS..............: ${enable_eaptls:-yes} +" diff --git a/contrib/Makefile.am b/contrib/Makefile.am new file mode 100644 index 0000000..fb9a390 --- /dev/null +++ b/contrib/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = pppgetpass diff --git a/contrib/pppgetpass/Makefile.am b/contrib/pppgetpass/Makefile.am new file mode 100644 index 0000000..7466396 --- /dev/null +++ b/contrib/pppgetpass/Makefile.am @@ -0,0 +1,18 @@ +noinst_PROGRAMS = pppgetpass.vt +man8_MANS = pppgetpass.8 + +pppgetpass_vt_SOURCES = pppgetpass.vt.c +pppgetpass_vt_CFLAGS = -Wno-unused-result + +if WITH_GTK +noinst_PROGRAMS += pppgetpass.gtk + +pppgetpass_gtk_SOURCES = pppgetpass.gtk.c +pppgetpass_gtk_CFLAGS = -Wno-deprecated-declarations -Wno-discarded-qualifiers +pppgetpass_gtk_CFLAGS += @GLIB_CFLAGS@ @GTK_CFLAGS@ +pppgetpass_gtk_LDADD = @GLIB_LIBS@ @GTK_LIBS@ +endif + +EXTRA_DIST = \ + pppgetpass.sh \ + $(man8_MANS) diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..2a576c1 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,13 @@ +EXTRA_HEADERS = \ + linux/if_ppp.h \ + linux/ppp-comp.h \ + linux/ppp_defs.h \ + net/if_ppp.h \ + net/ppp-comp.h \ + net/ppp_defs.h \ + net/pppio.h \ + net/slcompress.h \ + net/vjcompress.h + +EXTRA_DIST = \ + $(EXTRA_HEADERS) diff --git a/linux/pppd.pc.in b/linux/pppd.pc.in deleted file mode 100644 index bb44595..0000000 --- a/linux/pppd.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@DESTDIR@ -exec_prefix=@DESTDIR@ -libdir=@LIBDIR@ -includedir=@INCDIR@ -version=@VERSION@ -plugindir=@LIBDIR@/pppd/${version} - -Name: pppd -Description: Point-to-Point Protocol (PPP) daemon -Version: @VERSION@ -Cflags: -I${includedir} diff --git a/m4/ax_check_atm.m4 b/m4/ax_check_atm.m4 new file mode 100644 index 0000000..004fe9f --- /dev/null +++ b/m4/ax_check_atm.m4 @@ -0,0 +1,93 @@ +# SYNOPSIS +# +# AX_CHECK_ATM([action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Look for libatm in a number of default locations, or in a provided location +# (via --with-atm=). Sets +# ATM_CFLAGS +# ATM_LDFLAGS +# ATM_LIBS +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# LICENSE +# +# Copyright (c) 2021 Eivind Naess +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_CHECK_ATM], [ + AC_ARG_WITH([atm], + [AS_HELP_STRING([--with-atm=DIR], + [With libatm support, see http://linux-atm.sourceforge.net])], + [ + case "$withval" in + "" | y | ye | yes) + atmdirs="/usr/local /usr/lib /usr" + ;; + n | no) + with_atm="no" + ;; + *) + atmdirs="$withval" + ;; + esac + ]) + + if [ test "x${with_atm}" != "xno" ] ; then + ATM_LIBS="-latm" + for atmdir in $atmdirs; do + AC_MSG_CHECKING([for atm.h in $atmdir]) + if test -f "$atmdir/include/atm.h"; then + ATM_CFLAGS="-I$atmdir/include" + ATM_LDFLAGS="-L$atmdir/lib" + AC_MSG_RESULT([yes]) + break + else + AC_MSG_RESULT([no]) + fi + done + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([if compiling and linking against libatm works]) + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS $ATM_LDFLAGS" + LIBS="$ATM_LIBS $LIBS" + CPPFLAGS="$ATM_CFLAGS $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + #include ], + [text2atm(NULL,NULL,0,0);])], + [ + AC_MSG_RESULT([yes]) + with_atm=yes + $1 + ], [ + AC_MSG_RESULT([no]) + with_atm="" + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([ATM_CFLAGS]) + AC_SUBST([ATM_LIBS]) + AC_SUBST([ATM_LDFLAGS]) + fi + AM_CONDITIONAL(WITH_LIBATM, test -n "${with_atm}") +]) + diff --git a/m4/ax_check_openssl.m4 b/m4/ax_check_openssl.m4 new file mode 100644 index 0000000..8ae39ca --- /dev/null +++ b/m4/ax_check_openssl.m4 @@ -0,0 +1,119 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_openssl.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_OPENSSL([action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Look for OpenSSL in a number of default spots, or in a user-selected +# spot (via --with-openssl). Sets +# +# OPENSSL_INCLUDES to the include directives required +# OPENSSL_LIBS to the -l directives required +# OPENSSL_LDFLAGS to the -L or -R flags required +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# This macro sets OPENSSL_INCLUDES such that source files should use the +# openssl/ directory in include directives: +# +# #include +# +# LICENSE +# +# Copyright (c) 2009,2010 Zmanda Inc. +# Copyright (c) 2009,2010 Dustin J. Mitchell +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 9 + +AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL]) +AC_DEFUN([AX_CHECK_OPENSSL], [ + found=false + AC_ARG_WITH([openssl], + [AS_HELP_STRING([--with-openssl=DIR], + [With openssl support, see http://www.openssl.org])], + [ + case "$withval" in + "" | y | ye | yes ) + ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" + ;; + n | no ) + ;; + *) ssldirs="$withval" + ;; + esac + ], [ + ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" + ]) + + AS_IF([test "${with_openssl}" != "no"], [ + OPENSSL_INCLUDES= + for ssldir in $ssldirs; do + AC_MSG_CHECKING([for openssl/ssl.h in $ssldir]) + AS_IF([ test -f "$ssldir/include/openssl/ssl.h" ], [ + OPENSSL_INCLUDES="-I$ssldir/include" + OPENSSL_LDFLAGS="-L$ssldir/lib" + OPENSSL_LIBS="-lssl -lcrypto" + found=true + AC_MSG_RESULT([yes]) + break + ], [ + AC_MSG_RESULT([no]) + ]) + done]) + + AS_IF([test "${with_openssl}" != "no" && test ! ${found}], [ + # if pkg-config is installed and openssl has installed a .pc file, + # then use that information and don't search ssldirs + AC_PATH_PROG([PKG_CONFIG], [pkg-config]) + if test x"$PKG_CONFIG" != x""; then + OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` + if test $? = 0; then + OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` + OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` + found=true + fi + fi + ]) + + AS_IF([test "${with_openssl}" != "no" && test ${found}], [ + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([whether compiling and linking against OpenSSL works]) + echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ + "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&AS_MESSAGE_LOG_FD + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + LIBS="$OPENSSL_LIBS $LIBS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], [SSL_new(NULL)])], + [ + AC_MSG_RESULT([yes]) + $1 + ], [ + AC_MSG_RESULT([no]) + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([OPENSSL_INCLUDES]) + AC_SUBST([OPENSSL_LIBS]) + AC_SUBST([OPENSSL_LDFLAGS]) + ], [ $2 ]) +]) diff --git a/m4/ax_check_openssl_func.m4 b/m4/ax_check_openssl_func.m4 new file mode 100644 index 0000000..d269af8 --- /dev/null +++ b/m4/ax_check_openssl_func.m4 @@ -0,0 +1,44 @@ +# SYNOPSIS +# +# AX_CHECK_OPENSSL_DEFINE([DEFINE], [VAR][, action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Check if OpenSSL has a define set in it's features provided, i.e. OPENSSL_NO_MD4. +# If so, the var argument ac_cv_openssl_[VAR] is set to yes, and action-is-found is +# run, else action-if-not-found is executed. +# +# This module require AX_CHECK_OPENSSL +# +# LICENSE +# +# Copyright (c) 2021 Eivind Naess +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_CHECK_OPENSSL_DEFINE], [ + AC_REQUIRE([AX_CHECK_OPENSSL]) + AC_MSG_CHECKING([for $2 support in openssl]) + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" + AC_PREPROC_IFELSE([ + AC_LANG_PROGRAM( + [[@%:@include ]], + [[#ifdef $1 + #error "No support for $1" + #endif]])], + AC_MSG_RESULT([yes]) + [ac_cv_openssl_$2=yes] + $3, + AC_MSG_RESULT([no]) + [ac_cv_openssl_$2=no] + $4 + ) + CPPFLAGS="$save_CPPFLAGS" +]) + diff --git a/m4/ax_check_pam.m4 b/m4/ax_check_pam.m4 new file mode 100644 index 0000000..edb30e3 --- /dev/null +++ b/m4/ax_check_pam.m4 @@ -0,0 +1,93 @@ +# SYNOPSIS +# +# AX_CHECK_PAM([action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Look for libpam in a number of default locations, or in a provided location +# (via --with-pam=). Sets +# PAM_CFLAGS +# PAM_LDFLAGS +# PAM_LIBS +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# LICENSE +# +# Copyright (c) 2021 Eivind Naess +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_CHECK_PAM], [ + AC_ARG_WITH([pam], + [AS_HELP_STRING([--with-pam=DIR], + [With libpam support, see ftp.redhat.com:/pub/pam])], + [ + case "$withval" in + "" | y | ye | yes) + pamdirs="/usr/local /usr/lib /usr" + ;; + n | no) + with_pam="no" + ;; + *) + pamdirs="$withval" + ;; + esac + ]) + + if [ test "x${with_pam}" != "xno" ] ; then + PAM_LIBS="-lpam" + for pamdir in $pamdirs; do + AC_MSG_CHECKING([for pam_appl.h in $pamdir]) + if test -f "$pamdir/include/security/pam_appl.h"; then + PAM_CFLAGS="-I$pamdir/include" + PAM_LDFLAGS="-L$pamdir/lib" + AC_MSG_RESULT([yes]) + break + else + AC_MSG_RESULT([no]) + fi + done + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([if compiling and linking against libpam works]) + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$LDFLAGS $PAM_LDFLAGS" + LIBS="$PAM_LIBS $LIBS" + CPPFLAGS="$PAM_CFLAGS $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + #include ], + [pam_authenticate(NULL, 0);])], + [ + AC_MSG_RESULT([yes]) + with_pam=yes + $1 + ], [ + AC_MSG_RESULT([no]) + with_pam="" + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([PAM_CFLAGS]) + AC_SUBST([PAM_LIBS]) + AC_SUBST([PAM_LDFLAGS]) + fi + AM_CONDITIONAL(WITH_LIBPAM, test -n "${with_pam}") +]) + diff --git a/m4/ax_check_pcap.m4 b/m4/ax_check_pcap.m4 new file mode 100644 index 0000000..155f6df --- /dev/null +++ b/m4/ax_check_pcap.m4 @@ -0,0 +1,93 @@ +# SYNOPSIS +# +# AX_CHECK_PCAP([action-if-found[, action-if-not-found]] +# +# DESCRIPTION +# +# Look for libpcap in a number of default locations, or in a provided location +# (via --with-pcap=). Sets +# PCAP_CFLAGS +# PCAP_LDFLAGS +# PCAP_LIBS +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# LICENSE +# +# Copyright (c) 2021 Eivind Naess +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_CHECK_PCAP], [ + AC_ARG_WITH([pcap], + [AS_HELP_STRING([--with-pcap=DIR], + [With libpcap support, see https://www.tcpdump.org])], + [ + case "$withval" in + "" | y | ye | yes) + pcapdirs="/usr/local /usr/lib /usr" + ;; + n | no) + with_pcap="no" + ;; + *) + pcapdirs="$withval" + ;; + esac + ]) + + if [ test "${with_pcap}" != "no" ] ; then + PCAP_LIBS="-lpcap" + for pcapdir in $pcapdirs; do + AC_MSG_CHECKING([for pcap.h in $pcapdir]) + if test -f "$pcapdir/include/pcap.h"; then + PCAP_CFLAGS="-I$pcapdir/include" + PCAP_LDFLAGS="-L$pcapdir/lib" + AC_MSG_RESULT([yes]) + break + else + AC_MSG_RESULT([no]) + fi + done + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([if compiling and linking against libpcap works]) + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$PCAP_LDFLAGS $LDFLAGS" + LIBS="$PCAP_LIBS $LIBS" + CPPFLAGS="$PCAP_CFLAGS $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [@%:@include ], + [pcap_create(0,0);])], + [ + AC_MSG_RESULT([yes]) + with_pcap=yes + $1 + ], [ + AC_MSG_RESULT([no]) + with_pcap="" + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([PCAP_CFLAGS]) + AC_SUBST([PCAP_LIBS]) + AC_SUBST([PCAP_LDFLAGS]) + fi + + AM_CONDITIONAL(WITH_PCAP, test -n "${with_pcap}") +]) + diff --git a/m4/ax_check_srp.m4 b/m4/ax_check_srp.m4 new file mode 100644 index 0000000..631341d --- /dev/null +++ b/m4/ax_check_srp.m4 @@ -0,0 +1,94 @@ +# SYNOPSIS +# +# AX_CHECK_SRP([action-if-found[, action-if-not-found]]) +# +# DESCRIPTION +# +# Look for libsrp in a number of default locations, or in a provided location +# (via --with-srp=). Sets +# SRP_CFLAGS +# SRP_LDFLAGS +# SRP_LIBS +# +# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately +# +# LICENSE +# +# Copyright (c) 2021 Eivind Naess +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + +AC_DEFUN([AX_CHECK_SRP], [ + AC_ARG_WITH([srp], + [AS_HELP_STRING([--with-srp=DIR], + [With libsrp support, see http://srp.stanford.edu])], + [ + case "$withval" in + "" | y | ye | yes) + srpdirs="/usr/local /usr/lib /usr" + ;; + n | no) + with_srp="no" + ;; + *) + srpdirs="$withval" + ;; + esac + ]) + + if [ test "x${with_srp}" != "xno" ] ; then + SRP_LIBS="-lsrp" + for srpdir in $srpdirs; do + AC_MSG_CHECKING([for srp.h in $srpdir]) + if test -f "$srpdir/include/srp.h"; then + SRP_CFLAGS="-I$srpdir/include" + SRP_LDFLAGS="-L$srpdir/lib" + AC_MSG_RESULT([yes]) + break + else + AC_MSG_RESULT([no]) + fi + done + + # try the preprocessor and linker with our new flags, + # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS + + AC_MSG_CHECKING([if compiling and linking against libsrp works]) + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + LDFLAGS="$SRP_LDFLAGS $OPENSSL_LDFLAGS $LDFLAGS" + LIBS="$SRP_LIBS $OPENSSL_LIBS $LIBS" + CPPFLAGS="$SRP_CFLAGS $OPENSSL_INCLUDES $CPPFLAGS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + #include ], + [SRP_use_engine(NULL);])], + [ + AC_MSG_RESULT([yes]) + with_srp=yes + $1 + ], [ + AC_MSG_RESULT([no]) + with_srp="" + $2 + ]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + + AC_SUBST([SRP_CFLAGS]) + AC_SUBST([SRP_LIBS]) + AC_SUBST([SRP_LDFLAGS]) + fi + + AM_CONDITIONAL(WITH_SRP, test -n "${with_srp}") +]) + diff --git a/m4/pkg.m4 b/m4/pkg.m4 new file mode 100644 index 0000000..13a8890 --- /dev/null +++ b/m4/pkg.m4 @@ -0,0 +1,275 @@ +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR diff --git a/modules/Makefile.am b/modules/Makefile.am new file mode 100644 index 0000000..ddd53bc --- /dev/null +++ b/modules/Makefile.am @@ -0,0 +1,12 @@ +EXTRA_MODULE = \ + bsd-comp.c \ + deflate.c \ + if_ppp.c \ + ppp_ahdlc.c \ + ppp.c \ + ppp_comp.c \ + ppp_mod.h \ + vjcompress.c + +EXTRA_DIST = \ + $(EXTRA_MODULE) diff --git a/pppd/Makefile.am b/pppd/Makefile.am new file mode 100644 index 0000000..fc70b0e --- /dev/null +++ b/pppd/Makefile.am @@ -0,0 +1,165 @@ +sbin_PROGRAMS = pppd +man8_MANS = pppd.8 srp-entry.8 +if WITH_SRP +sbin_PROGRAMS += srp-entry +endif + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = pppd.pc + +pppd_includedir = $(includedir)/pppd +pppd_include_HEADERS = \ + cbcp.h \ + ccp.h \ + chap-md5.h \ + chap_ms.h \ + chap-new.h \ + eap.h \ + eap-tls.h \ + ecp.h \ + eui64.h \ + fsm.h \ + ipcp.h \ + ipv6cp.h \ + ipxcp.h \ + lcp.h \ + magic.h \ + md4.h \ + md5.h \ + mppe.h \ + pppdconf.h \ + patchlevel.h \ + pathnames.h \ + pppcrypt.h \ + pppd.h \ + session.h \ + sha1.h \ + spinlock.h \ + tdb.h \ + upap.h + +pppd_SOURCES = \ + auth.c \ + ccp.c \ + chap-md5.c \ + chap-new.c \ + demand.c \ + eap.c \ + ecp.c \ + fsm.c \ + ipcp.c \ + lcp.c \ + magic.c \ + main.c \ + options.c \ + session.c \ + tty.c \ + upap.c \ + utils.c + +pppd_CFLAGS = -I${top_srcdir}/include -DPPPD_RUNTIME_DIR='"@PPPD_RUNTIME_DIR@"' -DPPPD_LOGFILE_DIR='"@PPPD_LOGFILE_DIR@"' +pppd_LDFLAGS = +pppd_LIBS = + +if LINUX +pppd_SOURCES += sys-linux.c +pppd_LIBS += @CRYPT_LIBS@ @UTIL_LIBS@ +endif + +if SUNOS +pppd_SOURCES += sys-solaris.c +pppd_LIBS += -lsocket -lnsl +endif + +if WITH_CHAPMS +pppd_SOURCES += chap_ms.c +pppd_SOURCES += pppcrypt.c +else +if WITH_SRP +pppd_SOURCES += pppcrypt.c +endif +endif + +if WITH_CBCP +pppd_SOURCES += cbcp.c +endif + +if WITH_IPXCP +pppd_SOURCES += ipxcp.c +endif + +if WITH_MPPE +pppd_SOURCES += mppe.c +endif + +if WITH_PCAP +pppd_CFLAGS += @PCAP_CFLAGS@ +pppd_LDFLAGS += @PCAP_LDFLAGS@ +pppd_LIBS += @PCAP_LIBS@ +endif + +if WITH_PLUGINS +pppd_CFLAGS += -DPPPD_PLUGIN_DIR='"@PPPD_PLUGIN_DIR@"' +pppd_LIBS += -ldl +if LINUX +pppd_LDFLAGS += -Wl,-E +endif +endif + +if WITH_MULTILINK +pppd_SOURCES += multilink.c +endif + +if WITH_TDB +pppd_SOURCES += tdb.c spinlock.c +endif + +if WITH_INET6 +pppd_SOURCES += ipv6cp.c eui64.c +endif + +if WITH_PAM +pppd_LIBS += -lpam -ldl +endif + +if WITH_EAPTLS +pppd_SOURCES += eap-tls.c +endif + +if !WITH_OPENSSL +pppd_SOURCES += md5.c md4.c sha1.c +else +pppd_CFLAGS += @OPENSSL_INCLUDES@ +pppd_LDFLAGS += @OPENSSL_LDFLAGS@ +pppd_LIBS += @OPENSSL_LIBS@ +if !OPENSSL_HAVE_SHA +pppd_SOURCES += sha1.c +endif +if !OPENSSL_HAVE_MD4 +pppd_SOURCES += md4.c +endif +if !OPENSSL_HAVE_MD5 +pppd_SOURCES += md5.c +endif +endif + +if WITH_SYSTEMD +pppd_LIBS += -lsystemd +endif + +if WITH_SRP +srp_entry_SOURCES = srp-entry.c +srp_entry_CFLAGS = @OPENSSL_INCLUDES@ @SRP_CFLAGS@ +srp_entry_LDADD = @SRP_LIBS@ @OPENSSL_LIBS@ +srp_entry_LDFLAGS = @OPENSSL_LDFLAGS@ @SRP_LDFLAGS@ + +pppd_CFLAGS += @SRP_CFLAGS@ +pppd_LDFLAGS += @SRP_LDFLAGS@ +pppd_LIBS += @SRP_LIBS@ +endif + +pppd_LDADD = $(pppd_LIBS) + +EXTRA_DIST = \ + $(man8_MANS) \ + ppp.pam diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux index 852945e..f5e5848 100644 --- a/pppd/Makefile.linux +++ b/pppd/Makefile.linux @@ -145,7 +145,7 @@ PPPDOBJS += eap-tls.o endif ifdef HAS_SHADOW -CFLAGS += -DHAS_SHADOW +CFLAGS += -DHAVE_SHADOW_H #LIBS += -lshadow $(LIBS) endif @@ -156,7 +156,7 @@ LIBS += -lcrypt endif ifdef USE_LIBUTIL -CFLAGS += -DHAVE_LOGWTMP=1 +CFLAGS += -DHAVE_UTMP_H=1 LIBS += -lutil endif diff --git a/pppd/Makefile.sol2 b/pppd/Makefile.sol2 index 3a8681c..db2b99c 100644 --- a/pppd/Makefile.sol2 +++ b/pppd/Makefile.sol2 @@ -13,7 +13,7 @@ OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o eap.o md5.o \ chap-md5.o session.o # Solaris uses shadow passwords -CFLAGS += -DHAS_SHADOW +CFLAGS += -DHAVE_SHADOW_H # # Comment the following out to disable plugins diff --git a/pppd/auth.c b/pppd/auth.c index 0a49f53..013561a 100644 --- a/pppd/auth.c +++ b/pppd/auth.c @@ -70,6 +70,10 @@ #define RCSID "$Id: auth.c,v 1.117 2008/07/01 12:27:56 paulus Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -93,7 +97,7 @@ #include -#ifdef HAS_SHADOW +#ifdef HAVE_SHADOW_H #include #ifndef PW_PPP #define PW_PPP PW_LOGIN @@ -101,6 +105,10 @@ #endif #include +#ifdef HAVE_CRYPT_H +#include +#endif + #ifdef SYSTEMD #include #endif @@ -266,8 +274,6 @@ bool need_peer_eap = 0; /* Require peer to authenticate us */ static char *uafname; /* name of most recent +ua file */ -extern char *crypt (const char *, const char *); - /* Prototypes for procedures local to this file. */ static void network_phase (int); @@ -1517,8 +1523,10 @@ check_passwd(int unit, if (secret[0] != 0 && !login_secret) { /* password given in pap-secrets - must match */ if (cryptpap || strcmp(passwd, secret) != 0) { +#ifdef HAVE_CRYPT_H char *cbuf = crypt(passwd, secret); if (!cbuf || strcmp(cbuf, secret) != 0) +#endif ret = UPAP_AUTHNAK; } } diff --git a/pppd/cbcp.c b/pppd/cbcp.c index e356633..87bf9c0 100644 --- a/pppd/cbcp.c +++ b/pppd/cbcp.c @@ -32,6 +32,9 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include #include diff --git a/pppd/cbcp.h b/pppd/cbcp.h index c2ab3f6..c74b5f8 100644 --- a/pppd/cbcp.h +++ b/pppd/cbcp.h @@ -1,6 +1,8 @@ #ifndef CBCP_H #define CBCP_H +#include "pppdconf.h" + typedef struct cbcp_state { int us_unit; /* Interface unit number */ u_char us_id; /* Current id */ diff --git a/pppd/ccp.c b/pppd/ccp.c index 387b571..644a9d1 100644 --- a/pppd/ccp.c +++ b/pppd/ccp.c @@ -28,6 +28,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #define RCSID "$Id: ccp.c,v 1.50 2005/06/26 19:34:41 carlsonj Exp $" #include diff --git a/pppd/ccp.h b/pppd/ccp.h index 76446db..35961b9 100644 --- a/pppd/ccp.h +++ b/pppd/ccp.h @@ -29,6 +29,7 @@ * * $Id: ccp.h,v 1.12 2004/11/04 10:02:26 paulus Exp $ */ +#include "pppdconf.h" typedef struct ccp_options { bool bsd_compress; /* do BSD Compress? */ diff --git a/pppd/chap-md5.c b/pppd/chap-md5.c index 77dd4ec..000f880 100644 --- a/pppd/chap-md5.c +++ b/pppd/chap-md5.c @@ -30,6 +30,10 @@ #define RCSID "$Id: chap-md5.c,v 1.4 2004/11/09 22:39:25 paulus Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include "pppd.h" diff --git a/pppd/chap-md5.h b/pppd/chap-md5.h index 30d0658..4dbbfd1 100644 --- a/pppd/chap-md5.h +++ b/pppd/chap-md5.h @@ -27,5 +27,6 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" extern void chap_md5_init(void); diff --git a/pppd/chap-new.c b/pppd/chap-new.c index 10e4507..ab4302b 100644 --- a/pppd/chap-new.c +++ b/pppd/chap-new.c @@ -30,6 +30,10 @@ #define RCSID "$Id: chap-new.c,v 1.9 2007/06/19 02:08:35 carlsonj Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include "pppd.h" diff --git a/pppd/chap-new.h b/pppd/chap-new.h index e5330da..b4b0ee2 100644 --- a/pppd/chap-new.h +++ b/pppd/chap-new.h @@ -28,6 +28,8 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" + /* * CHAP packets begin with a standard header with code, id, len (2 bytes). */ diff --git a/pppd/chap_ms.c b/pppd/chap_ms.c index d315ab4..52d4890 100644 --- a/pppd/chap_ms.c +++ b/pppd/chap_ms.c @@ -76,6 +76,10 @@ #define RCSID "$Id: chap_ms.c,v 1.38 2007/12/01 20:10:51 carlsonj Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #ifdef CHAPMS #include diff --git a/pppd/chap_ms.h b/pppd/chap_ms.h index 4e6a621..c1c5ed8 100644 --- a/pppd/chap_ms.h +++ b/pppd/chap_ms.h @@ -30,6 +30,8 @@ * $Id: chap_ms.h,v 1.13 2004/11/15 22:13:26 paulus Exp $ */ +#include "pppdconf.h" + #ifndef __CHAPMS_INCLUDE__ #define MD4_SIGNATURE_SIZE 16 /* 16 bytes in a MD4 message digest */ diff --git a/pppd/demand.c b/pppd/demand.c index 289c9f8..0943e8a 100644 --- a/pppd/demand.c +++ b/pppd/demand.c @@ -30,6 +30,10 @@ #define RCSID "$Id: demand.c,v 1.20 2005/08/25 12:14:18 paulus Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/eap-tls.c b/pppd/eap-tls.c index b130821..265f6d5 100644 --- a/pppd/eap-tls.c +++ b/pppd/eap-tls.c @@ -29,6 +29,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -37,7 +41,9 @@ #include #include +#ifndef OPENSSL_NO_ENGINE #include +#endif #include #include #include diff --git a/pppd/eap-tls.h b/pppd/eap-tls.h index b19a905..d0c80b6 100644 --- a/pppd/eap-tls.h +++ b/pppd/eap-tls.h @@ -30,6 +30,8 @@ * */ +#include "pppdconf.h" + #ifndef __EAP_TLS_H__ #define __EAP_TLS_H__ diff --git a/pppd/eap.c b/pppd/eap.c index 342d91f..9773ae2 100644 --- a/pppd/eap.c +++ b/pppd/eap.c @@ -48,6 +48,10 @@ * Implemented EAP-TLS authentication */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -65,6 +69,9 @@ #include "eap.h" #ifdef USE_SRP +#ifdef HAVE_TIME_H +#include +#endif #include #include #include @@ -552,7 +559,7 @@ eap_figure_next_state(eap_state *esp, int status) tpw.pebuf.name = esp->es_server.ea_peer; tpw.pebuf.password.len = t_fromb64((char *)tpw.pwbuf, cp); - tpw.pebuf.password.data = tpw.pwbuf; + tpw.pebuf.password.data = (char*) tpw.pwbuf; tpw.pebuf.salt.len = t_fromb64((char *)tpw.saltbuf, cp2); tpw.pebuf.salt.data = tpw.saltbuf; @@ -2253,8 +2260,6 @@ eap_response(eap_state *esp, u_char *inp, int id, int len) struct t_num A; SHA1_CTX ctxt; u_char dig[SHA_DIGESTSIZE]; - SHA1_CTX ctxt; - u_char dig[SHA_DIGESTSIZE]; #endif /* USE_SRP */ #ifdef USE_EAPTLS @@ -3021,6 +3026,7 @@ eap_printpkt(u_char *inp, int inlen, break; #endif /* USE_EAPTLS */ +#ifdef USE_SRP case EAPT_SRP: if (len < 3) goto truncated; @@ -3108,6 +3114,7 @@ eap_printpkt(u_char *inp, int inlen, break; } break; +#endif /* USE_SRP */ } break; @@ -3233,6 +3240,7 @@ eap_printpkt(u_char *inp, int inlen, break; #endif /* CHAPMS */ +#ifdef USE_SRP case EAPT_SRP: if (len < 1) goto truncated; @@ -3277,6 +3285,7 @@ eap_printpkt(u_char *inp, int inlen, break; } break; +#endif /* USE_SRP */ } break; diff --git a/pppd/eap.h b/pppd/eap.h index 046eb1c..956b2ea 100644 --- a/pppd/eap.h +++ b/pppd/eap.h @@ -20,6 +20,8 @@ * $Id: eap.h,v 1.2 2003/06/11 23:56:26 paulus Exp $ */ +#include "pppdconf.h" + #ifndef PPP_EAP_H #define PPP_EAP_H diff --git a/pppd/ecp.c b/pppd/ecp.c index 1ecd7be..9570f38 100644 --- a/pppd/ecp.c +++ b/pppd/ecp.c @@ -57,6 +57,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include "pppd.h" diff --git a/pppd/ecp.h b/pppd/ecp.h index df6e3ca..162dace 100644 --- a/pppd/ecp.h +++ b/pppd/ecp.h @@ -30,6 +30,7 @@ * * $Id: ecp.h,v 1.2 2003/01/10 07:12:36 fcusack Exp $ */ +#include "pppdconf.h" typedef struct ecp_options { bool required; /* Is ECP required? */ diff --git a/pppd/eui64.c b/pppd/eui64.c index 98caf94..7978c06 100644 --- a/pppd/eui64.c +++ b/pppd/eui64.c @@ -34,6 +34,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "pppd.h" diff --git a/pppd/eui64.h b/pppd/eui64.h index c48d689..aa83e1a 100644 --- a/pppd/eui64.h +++ b/pppd/eui64.h @@ -34,6 +34,8 @@ * */ +#include "pppdconf.h" + #ifndef __EUI64_H__ #define __EUI64_H__ diff --git a/pppd/fsm.c b/pppd/fsm.c index 96d20e8..17cb76f 100644 --- a/pppd/fsm.c +++ b/pppd/fsm.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* * TODO: * Randomize fsm id on link/init. diff --git a/pppd/fsm.h b/pppd/fsm.h index 75a36d5..d23725c 100644 --- a/pppd/fsm.h +++ b/pppd/fsm.h @@ -42,6 +42,8 @@ * $Id: fsm.h,v 1.10 2004/11/13 02:28:15 paulus Exp $ */ +#include "pppdconf.h" + /* * Packet header = Code, id, length. */ diff --git a/pppd/ipcp.c b/pppd/ipcp.c index d17dbd2..6bcdf74 100644 --- a/pppd/ipcp.c +++ b/pppd/ipcp.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* * TODO: */ diff --git a/pppd/ipcp.h b/pppd/ipcp.h index 9c4f68d..52d2b22 100644 --- a/pppd/ipcp.h +++ b/pppd/ipcp.h @@ -39,6 +39,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" /* * Options. diff --git a/pppd/ipv6cp.c b/pppd/ipv6cp.c index ef03e10..8ab440a 100644 --- a/pppd/ipv6cp.c +++ b/pppd/ipv6cp.c @@ -146,6 +146,10 @@ * since SVR4 && (SNI || __USLC__) didn't work properly) */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/ipv6cp.h b/pppd/ipv6cp.h index 19bc013..5e1db6b 100644 --- a/pppd/ipv6cp.h +++ b/pppd/ipv6cp.h @@ -33,6 +33,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ +#include "pppdconf.h" /* Original version, based on RFC2023 : diff --git a/pppd/ipxcp.c b/pppd/ipxcp.c index d39b14c..000608d 100644 --- a/pppd/ipxcp.c +++ b/pppd/ipxcp.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #ifdef IPX_CHANGE /* diff --git a/pppd/ipxcp.h b/pppd/ipxcp.h index 8a69232..6112e75 100644 --- a/pppd/ipxcp.h +++ b/pppd/ipxcp.h @@ -39,6 +39,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" /* * Options. diff --git a/pppd/lcp.c b/pppd/lcp.c index ac5d5ce..8a18e95 100644 --- a/pppd/lcp.c +++ b/pppd/lcp.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/lcp.h b/pppd/lcp.h index 984f868..768442d 100644 --- a/pppd/lcp.h +++ b/pppd/lcp.h @@ -39,6 +39,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" /* * Options. diff --git a/pppd/magic.c b/pppd/magic.c index 8e08e47..6a5a7eb 100644 --- a/pppd/magic.c +++ b/pppd/magic.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/magic.h b/pppd/magic.h index d6094db..b864b7b 100644 --- a/pppd/magic.h +++ b/pppd/magic.h @@ -39,6 +39,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" void magic_init (void); /* Initialize the magic number generator */ u_int32_t magic (void); /* Returns the next magic number */ diff --git a/pppd/main.c b/pppd/main.c index 87a5d29..db0aa97 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -66,6 +66,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/md4.c b/pppd/md4.c index 42a9b2e..88f3413 100644 --- a/pppd/md4.c +++ b/pppd/md4.c @@ -30,6 +30,9 @@ /* Implementation notes: ** This implementation assumes that ints are 32-bit quantities. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #define TRUE 1 #define FALSE 0 diff --git a/pppd/md4.h b/pppd/md4.h index b6fc3f5..d67daeb 100644 --- a/pppd/md4.h +++ b/pppd/md4.h @@ -7,6 +7,16 @@ ** (C) 1990 RSA Data Security, Inc. ** ** ******************************************************************** */ +#include "pppdconf.h" + +#ifndef __MD4_INCLUDE__ +#define __MD4_INCLUDE__ +#ifndef USE_MD4 +#include +#define MD4Init MD4_Init +#define MD4Update MD4_Update +#define MD4Final MD4_Final +#else /* MDstruct is the data structure for a message digest computation. */ @@ -53,3 +63,5 @@ extern void MD4Final(unsigned char *, MD4_CTX *); /* ** End of md4.h ****************************(cut)***********************************/ +#endif /* USE_MD4 */ +#endif /* __MD4_INCLUDE__ */ diff --git a/pppd/md5.c b/pppd/md5.c index f7988e6..9fb3397 100644 --- a/pppd/md5.c +++ b/pppd/md5.c @@ -33,6 +33,10 @@ *********************************************************************** */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include "md5.h" diff --git a/pppd/md5.h b/pppd/md5.h index 71e8b00..662eb41 100644 --- a/pppd/md5.h +++ b/pppd/md5.h @@ -36,8 +36,13 @@ ** documentation and/or software. ** *********************************************************************** */ +#include "pppdconf.h" #ifndef __MD5_INCLUDE__ +#define __MD5_INCLUDE__ +#ifndef USE_MD5 +#include +#else /* typedef a 32-bit type */ #ifdef _LP64 @@ -61,5 +66,5 @@ void MD5_Init (MD5_CTX *mdContext); void MD5_Update (MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen); void MD5_Final (unsigned char hash[], MD5_CTX *mdContext); -#define __MD5_INCLUDE__ +#endif /* USE_MD5 */ #endif /* __MD5_INCLUDE__ */ diff --git a/pppd/mppe.c b/pppd/mppe.c index 4f3d131..d2ba0eb 100644 --- a/pppd/mppe.c +++ b/pppd/mppe.c @@ -29,8 +29,13 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include + #include "pppd.h" #include "fsm.h" #include "md4.h" diff --git a/pppd/mppe.h b/pppd/mppe.h index 98a89d3..2684a7f 100644 --- a/pppd/mppe.h +++ b/pppd/mppe.h @@ -32,6 +32,8 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" + #ifndef __MPPE_H__ #define __MPPE_H__ diff --git a/pppd/multilink.c b/pppd/multilink.c index ddd848c..6f17cf8 100644 --- a/pppd/multilink.c +++ b/pppd/multilink.c @@ -27,6 +27,11 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/options.c b/pppd/options.c index f8d6c00..0c76a6b 100644 --- a/pppd/options.c +++ b/pppd/options.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/patchlevel.h b/pppd/patchlevel.h index 30df079..1ecdb82 100644 --- a/pppd/patchlevel.h +++ b/pppd/patchlevel.h @@ -1,2 +1 @@ -#define VERSION "2.4.9" #define DATE "5 January 2021" diff --git a/pppd/pathnames.h b/pppd/pathnames.h index 524d608..e68d91a 100644 --- a/pppd/pathnames.h +++ b/pppd/pathnames.h @@ -1,17 +1,36 @@ /* * define path names */ +#include "pppdconf.h" #ifdef HAVE_PATHS_H #include - -#else /* HAVE_PATHS_H */ -#ifndef _PATH_VARRUN -#define _PATH_VARRUN "/etc/ppp/" -#endif -#define _PATH_DEVNULL "/dev/null" #endif /* HAVE_PATHS_H */ +#ifndef _PATH_DEVNULL +#define _PATH_DEVNULL "/dev/null" +#endif + +#ifdef PPPD_RUNTIME_DIR +#undef _PATH_VARRUN +#define _PATH_VARRUN PPPD_RUNTIME_DIR "/" +#endif + +#ifdef PPPD_LOGFILE_DIR +#undef _PATH_VARLOG +#define _PATH_VARLOG PPPD_LOGFILE_DIR +#endif + +#ifdef PPPD_PLUGIN_DIR +#define _PATH_PLUGIN PPPD_PLUGIN_DIR +#else +#ifdef __STDC__ +#define _PATH_PLUGIN DESTDIR "/lib/pppd/" VERSION +#else /* __STDC__ */ +#define _PATH_PLUGIN "/usr/lib/pppd" +#endif /* __STDC__ */ +#endif /* PPPD_PLUGIN_DIR */ + #ifndef _ROOT_PATH #define _ROOT_PATH #endif @@ -33,7 +52,7 @@ #define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up" #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down" #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options." -#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors" +#define _PATH_CONNERRS _ROOT_PATH _PATH_VARLOG "/connect-errors" #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/" #define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf" @@ -53,18 +72,6 @@ #ifdef __STDC__ #define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN "pppd2.tdb" #else /* __STDC__ */ -#ifdef HAVE_PATHS_H -#define _PATH_PPPDB "/var/run/pppd2.tdb" -#else -#define _PATH_PPPDB "/etc/ppp/pppd2.tdb" -#endif +#define _PATH_PPPDB _PPP_VARRUN "pppd2.tdb" #endif /* __STDC__ */ -#ifdef PLUGIN -#ifdef __STDC__ -#define _PATH_PLUGIN DESTDIR "/lib/pppd/" VERSION -#else /* __STDC__ */ -#define _PATH_PLUGIN "/usr/lib/pppd" -#endif /* __STDC__ */ - -#endif /* PLUGIN */ diff --git a/pppd/plugins/Makefile.am b/pppd/plugins/Makefile.am new file mode 100644 index 0000000..b08d4a2 --- /dev/null +++ b/pppd/plugins/Makefile.am @@ -0,0 +1,25 @@ +pppd_plugin_LTLIBRARIES = minconn.la passprompt.la passwordfd.la winbind.la +pppd_plugindir = $(PPPD_PLUGIN_DIR) + +PLUGIN_CFLAGS = -I${top_srcdir}/include -I${top_srcdir}/pppd +PLUGIN_LDFLAGS = -module -avoid-version + +minconn_la_CFLAGS = $(PLUGIN_CFLAGS) +minconn_la_LDFLAGS = $(PLUGIN_LDFLAGS) +minconn_la_SOURCES = minconn.c + +passprompt_la_CFLAGS = $(PLUGIN_CFLAGS) +passprompt_la_LDFLAGS = $(PLUGIN_LDFLAGS) +passprompt_la_SOURCES = passprompt.c + +passwordfd_la_CFLAGS = $(PLUGIN_CFLAGS) +passwordfd_la_LDFLAGS = $(PLUGIN_LDFLAGS) +passwordfd_la_SOURCES = passwordfd.c + +winbind_la_CFLAGS = $(PLUGIN_CFLAGS) +winbind_la_LDFLAGS = $(PLUGIN_LDFLAGS) +winbind_la_SOURCES = winbind.c + +if !SUNOS +SUBDIRS = pppoe pppoatm pppol2tp radius +endif diff --git a/pppd/plugins/minconn.c b/pppd/plugins/minconn.c index c12216a..40855ee 100644 --- a/pppd/plugins/minconn.c +++ b/pppd/plugins/minconn.c @@ -32,6 +32,10 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include "pppd.h" diff --git a/pppd/plugins/passprompt.c b/pppd/plugins/passprompt.c index ab9f390..dae3268 100644 --- a/pppd/plugins/passprompt.c +++ b/pppd/plugins/passprompt.c @@ -8,6 +8,11 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/plugins/passwordfd.c b/pppd/plugins/passwordfd.c index c3f9793..84fd72e 100644 --- a/pppd/plugins/passwordfd.c +++ b/pppd/plugins/passwordfd.c @@ -7,6 +7,10 @@ * with pap- and chap-secrets files. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/plugins/pppoatm/Makefile.am b/pppd/plugins/pppoatm/Makefile.am new file mode 100644 index 0000000..a13baea --- /dev/null +++ b/pppd/plugins/pppoatm/Makefile.am @@ -0,0 +1,18 @@ +pppd_plugin_LTLIBRARIES = pppoatm.la +pppd_plugindir = $(PPPD_PLUGIN_DIR) + +noinst_HEADERS = \ + atm.h \ + atmres.h \ + atmsap.h + +pppoatm_la_CFLAGS = -I${top_srcdir}/include -I${top_srcdir}/pppd +pppoatm_la_LDFLAGS = -module -avoid-version +pppoatm_la_SOURCES = pppoatm.c + +if WITH_LIBATM +pppoatm_la_LIBADD = -latm +else +pppoatm_la_SOURCES += text2qos.c text2atm.c misc.c ans.c +pppoatm_la_LIBADD = -lresolv +endif diff --git a/pppd/plugins/pppoatm/pppoatm.c b/pppd/plugins/pppoatm/pppoatm.c index 5a3ecd6..dc82508 100644 --- a/pppd/plugins/pppoatm/pppoatm.c +++ b/pppd/plugins/pppoatm/pppoatm.c @@ -13,6 +13,10 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/pppd/plugins/pppoe/Makefile.am b/pppd/plugins/pppoe/Makefile.am new file mode 100644 index 0000000..d0c89c5 --- /dev/null +++ b/pppd/plugins/pppoe/Makefile.am @@ -0,0 +1,25 @@ +pppd_plugin_LTLIBRARIES = pppoe.la +pppd_plugindir = $(PPPD_PLUGIN_DIR) +sbin_PROGRAMS = pppoe-discovery +man8_MANS = pppoe-discovery.8 + +noinst_HEADERS = \ + pppoe.h + +pppoe_la_CFLAGS = -I${top_srcdir} -I${top_srcdir}/include +pppoe_la_LDFLAGS = -module -avoid-version +pppoe_la_SOURCES = plugin.c discovery.c if.c common.c + +pppoe_discovery_CFLAGS = -I${top_srcdir} -I${top_srcdir}/include +pppoe_discovery_SOURCES = pppoe-discovery.c debug.c + +EXTRA_DIST = \ + $(man8_MANS) + +install-exec-hook: + (mkdir -p $(DESTDIR)/$(pppd_plugindir); \ + cd $(DESTDIR)$(pppd_plugindir); \ + $(LN_S) -f pppoe.so rp-pppoe.so) + +uninstall-hook: + (cd $(DESTDIR)$(pppd_plugindir); rm -f rp-pppoe.so) diff --git a/pppd/plugins/pppoe/common.c b/pppd/plugins/pppoe/common.c index 9ea7fd6..6382821 100644 --- a/pppd/plugins/pppoe/common.c +++ b/pppd/plugins/pppoe/common.c @@ -16,6 +16,10 @@ static char const RCSID[] = "$Id: common.c,v 1.3 2008/06/09 08:34:23 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #define _GNU_SOURCE 1 #include "pppoe.h" #include "pppd/pppd.h" diff --git a/pppd/plugins/pppoe/config.h b/pppd/plugins/pppoe/config.h deleted file mode 100644 index a708859..0000000 --- a/pppd/plugins/pppoe/config.h +++ /dev/null @@ -1,129 +0,0 @@ -/* config.h. Generated automatically by configure. */ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define to empty if the keyword does not work. */ -/* #undef const */ - -/* Define if you have that is POSIX.1 compatible. */ -#define HAVE_SYS_WAIT_H 1 - -/* Define to `int' if doesn't define. */ -/* #undef pid_t */ - -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define if the setvbuf function takes the buffering type as its second - argument and the buffer pointer as the third, as on System V - before release 3. */ -/* #undef SETVBUF_REVERSED */ - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* Define if your declares struct tm. */ -/* #undef TM_IN_SYS_TIME */ - -#define HAVE_STRUCT_SOCKADDR_LL 1 - -/* The number of bytes in a unsigned int. */ -#define SIZEOF_UNSIGNED_INT 4 - -/* The number of bytes in a unsigned long. */ -#define SIZEOF_UNSIGNED_LONG 4 - -/* The number of bytes in a unsigned short. */ -#define SIZEOF_UNSIGNED_SHORT 2 - -/* Define if you have the select function. */ -#define HAVE_SELECT 1 - -/* Define if you have the socket function. */ -#define HAVE_SOCKET 1 - -/* Define if you have the strerror function. */ -#define HAVE_STRERROR 1 - -/* Define if you have the strtol function. */ -#define HAVE_STRTOL 1 - -/* Define if you have the header file. */ -#define HAVE_ASM_TYPES_H 1 - -/* Define if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define if you have the header file. */ -#define HAVE_GETOPT_H 1 - -/* Define if you have the header file. */ -#define HAVE_LINUX_IF_ETHER_H 1 - -/* Define if you have kernel-mode PPPoE in Linux file. */ -#define HAVE_LINUX_KERNEL_PPPOE 1 - -/* Define if you have the header file. */ -#define HAVE_LINUX_IF_PACKET_H 1 - -/* Define if you have the header file. */ -#define HAVE_LINUX_IF_PPPOX_H 1 - -/* Define if you have the header file. */ -#define HAVE_NET_BPF_H 1 - -/* Define if you have the header file. */ -#define HAVE_NET_IF_ARP_H 1 - -/* Define if you have the header file. */ -#define HAVE_NET_ETHERNET_H 1 - -/* Define if you have the header file. */ -#define HAVE_NET_IF_H 1 - -/* Define if you have the header file. */ -#define HAVE_LINUX_IF_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_NET_IF_DL_H */ - -/* Define if you have the header file. */ -/* #undef HAVE_NET_IF_ETHER_H */ - -/* Define if you have the header file. */ -/* #undef HAVE_NET_IF_TYPES_H */ - -/* Define if you have the header file. */ -#define HAVE_NETINET_IF_ETHER_H 1 - -/* Define if you have the header file. */ -#define HAVE_NETPACKET_PACKET_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_SYS_DLPI_H */ - -/* Define if you have the header file. */ -#define HAVE_SYS_IOCTL_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_SOCKET_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_UIO_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYSLOG_H 1 - -/* Define if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define if you have the N_HDLC line discipline in linux/termios.h */ -#define HAVE_N_HDLC 1 diff --git a/pppd/plugins/pppoe/debug.c b/pppd/plugins/pppoe/debug.c index a6e6981..3478b5f 100644 --- a/pppd/plugins/pppoe/debug.c +++ b/pppd/plugins/pppoe/debug.c @@ -16,6 +16,10 @@ static char const RCSID[] = "$Id: debug.c,v 1.2 2008/06/09 08:34:23 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #include "pppoe.h" #include #include diff --git a/pppd/plugins/pppoe/discovery.c b/pppd/plugins/pppoe/discovery.c index 23089df..bd281bd 100644 --- a/pppd/plugins/pppoe/discovery.c +++ b/pppd/plugins/pppoe/discovery.c @@ -11,6 +11,10 @@ static char const RCSID[] = "$Id: discovery.c,v 1.6 2008/06/15 04:35:50 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #define _GNU_SOURCE 1 #include "pppoe.h" #include "pppd/pppd.h" diff --git a/pppd/plugins/pppoe/if.c b/pppd/plugins/pppoe/if.c index 225dd56..3dfea8c 100644 --- a/pppd/plugins/pppoe/if.c +++ b/pppd/plugins/pppoe/if.c @@ -16,6 +16,10 @@ static char const RCSID[] = "$Id: if.c,v 1.2 2008/06/09 08:34:23 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #define _GNU_SOURCE 1 #include "pppoe.h" #include "pppd/pppd.h" diff --git a/pppd/plugins/pppoe/plugin.c b/pppd/plugins/pppoe/plugin.c index de9b816..8bcd1f8 100644 --- a/pppd/plugins/pppoe/plugin.c +++ b/pppd/plugins/pppoe/plugin.c @@ -25,6 +25,10 @@ static char const RCSID[] = "$Id: plugin.c,v 1.17 2008/06/15 04:35:50 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #define _GNU_SOURCE 1 #include "pppoe.h" diff --git a/pppd/plugins/pppoe/pppoe-discovery.c b/pppd/plugins/pppoe/pppoe-discovery.c index e41d286..96d6333 100644 --- a/pppd/plugins/pppoe/pppoe-discovery.c +++ b/pppd/plugins/pppoe/pppoe-discovery.c @@ -9,6 +9,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/pppd/plugins/pppoe/pppoe.h b/pppd/plugins/pppoe/pppoe.h index 4e19720..5d96f0c 100644 --- a/pppd/plugins/pppoe/pppoe.h +++ b/pppd/plugins/pppoe/pppoe.h @@ -13,8 +13,6 @@ * ***********************************************************************/ -#include "config.h" - #include /* For FILE */ #include /* For pid_t */ #include diff --git a/pppd/plugins/pppol2tp/Makefile.am b/pppd/plugins/pppol2tp/Makefile.am new file mode 100644 index 0000000..3422e4e --- /dev/null +++ b/pppd/plugins/pppol2tp/Makefile.am @@ -0,0 +1,13 @@ +pppd_plugin_LTLIBRARIES = pppol2tp.la openl2tp.la +pppd_plugindir = $(PPPD_PLUGIN_DIR) + +noinst_HEADERS = \ + l2tp_event.h + +pppol2tp_la_CFLAGS = -I${top_srcdir}/include -I${top_srcdir}/pppd +pppol2tp_la_LDFLAGS = -module -avoid-version +pppol2tp_la_SOURCES = pppol2tp.c + +openl2tp_la_CFLAGS = -I${top_srcdir}/include -I${top_srcdir}/pppd +openl2tp_la_LDFLAGS = -module -avoid-version +openl2tp_la_SOURCES = openl2tp.c diff --git a/pppd/plugins/pppol2tp/openl2tp.c b/pppd/plugins/pppol2tp/openl2tp.c index 85ff0b5..0f9db6d 100644 --- a/pppd/plugins/pppol2tp/openl2tp.c +++ b/pppd/plugins/pppol2tp/openl2tp.c @@ -19,6 +19,10 @@ /* pppd plugin for interfacing to openl2tpd */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/pppd/plugins/pppol2tp/pppol2tp.c b/pppd/plugins/pppol2tp/pppol2tp.c index 1be0ad2..94b2f1f 100644 --- a/pppd/plugins/pppol2tp/pppol2tp.c +++ b/pppd/plugins/pppol2tp/pppol2tp.c @@ -20,6 +20,10 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include diff --git a/pppd/plugins/radius/Makefile.am b/pppd/plugins/radius/Makefile.am new file mode 100644 index 0000000..5655ad5 --- /dev/null +++ b/pppd/plugins/radius/Makefile.am @@ -0,0 +1,65 @@ +pppd_plugin_LTLIBRARIES = radius.la radattr.la radrealms.la +pppd_plugindir = $(PPPD_PLUGIN_DIR) + +noinst_LTLIBRARIES = libradiusclient.la +man8_MANS = pppd-radius.8 pppd-radattr.8 +noinst_HEADERS = \ + includes.h \ + options.h \ + pathnames.h \ + radiusclient.h + +EXTRA_FILES = \ + COPYRIGHT + +EXTRA_ETC = \ + etc/dictionary \ + etc/dictionary.ascend \ + etc/dictionary.compat \ + etc/dictionary.merit \ + etc/dictionary.microsoft \ + etc/issue \ + etc/port-id-map \ + etc/radiusclient.conf \ + etc/radiusclient.conf.in \ + etc/realms \ + etc/servers + +RADIUS_CFLAGS = -I${top_srcdir}/include -I${top_srcdir}/pppd -DRC_LOG_FACILITY=LOG_DAEMON +RADIUS_LDFLAGS = -module -avoid-version @LDFLAGS@ + +radius_la_CFLAGS = $(RADIUS_CFLAGS) +radius_la_LDFLAGS = $(RADIUS_LDFLAGS) +radius_la_SOURCES = radius.c +radius_la_LIBADD = libradiusclient.la +if WITH_OPENSSL +radius_la_LIBADD += @OPENSSL_LIBS@ +endif + +radattr_la_CFLAGS = $(RADIUS_CFLAGS) +radattr_la_LDFLAGS = $(RADIUS_LDFLAGS) +radattr_la_SOURCES = radattr.c + +radrealms_la_CFLAGS = $(RADIUS_CFLAGS) +radrealms_la_LDFLAGS = $(RADIUS_LDFLAGS) +radrealms_la_SOURCES = radrealms.c + +libradiusclient_la_SOURCES = \ + avpair.c buildreq.c config.c dict.c ip_util.c \ + clientid.c sendserver.c lock.c util.c +libradiusclient_la_CFLAGS = $(RADIUS_CFLAGS) + +if !WITH_OPENSSL +libradiusclient_la_SOURCES += md5.c +else +if OPENSSL_HAVE_MD5 +libradiusclient_la_SOURCES += md5.c +else +libradiusclient_la_CFLAGS += @OPENSSL_INCLUDES@ +endif +endif + +EXTRA_DIST = \ + $(man8_MANS) \ + $(EXTRA_FILES) \ + $(EXTRA_ETC) diff --git a/pppd/plugins/radius/radattr.c b/pppd/plugins/radius/radattr.c index 1fe7daa..1dee313 100644 --- a/pppd/plugins/radius/radattr.c +++ b/pppd/plugins/radius/radattr.c @@ -17,6 +17,10 @@ static char const RCSID[] = "$Id: radattr.c,v 1.2 2004/10/28 00:24:40 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #include "pppd.h" #include "radiusclient.h" #include diff --git a/pppd/plugins/radius/radius.c b/pppd/plugins/radius/radius.c index cf4c0f2..6ddd853 100644 --- a/pppd/plugins/radius/radius.c +++ b/pppd/plugins/radius/radius.c @@ -26,6 +26,10 @@ static char const RCSID[] = "$Id: radius.c,v 1.32 2008/05/26 09:18:08 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #include "pppd.h" #include "chap-new.h" #ifdef CHAPMS diff --git a/pppd/plugins/radius/radrealms.c b/pppd/plugins/radius/radrealms.c index cd006fd..a3b9a51 100644 --- a/pppd/plugins/radius/radrealms.c +++ b/pppd/plugins/radius/radrealms.c @@ -17,6 +17,10 @@ static char const RCSID[] = "$Id: radrealms.c,v 1.2 2004/11/14 07:26:26 paulus Exp $"; +#ifdef HAVE_CONFIG_H +#include +#endif + #include "pppd.h" #include "radiusclient.h" #include diff --git a/pppd/plugins/winbind.c b/pppd/plugins/winbind.c index 67c72f6..8c98e2a 100644 --- a/pppd/plugins/winbind.c +++ b/pppd/plugins/winbind.c @@ -34,6 +34,10 @@ * ***********************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "pppd.h" #include "chap-new.h" #include "chap_ms.h" @@ -581,7 +585,9 @@ winbind_chap_verify(char *user, char *ourname, int id, nt_response, nt_response_size, session_key, &error_string) == AUTHENTICATED) { +#ifdef MPPE mppe_set_chapv1(challenge, session_key); +#endif slprintf(message, message_space, "Access granted"); return AUTHENTICATED; @@ -626,8 +632,10 @@ winbind_chap_verify(char *user, char *ourname, int id, &response[MS_CHAP2_NTRESP], &response[MS_CHAP2_PEER_CHALLENGE], challenge, user, saresponse); +#ifdef MPPE mppe_set_chapv2(session_key, &response[MS_CHAP2_NTRESP], MS_CHAP2_AUTHENTICATOR); +#endif if (response[MS_CHAP2_FLAGS]) { slprintf(message, message_space, "S=%s", saresponse); } else { diff --git a/pppd/pppcrypt.c b/pppd/pppcrypt.c index 193f8fd..a954d62 100644 --- a/pppd/pppcrypt.c +++ b/pppd/pppcrypt.c @@ -30,7 +30,12 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include + #include "pppd.h" #include "pppcrypt.h" diff --git a/pppd/pppcrypt.h b/pppd/pppcrypt.h index 0f71bb3..79676ca 100644 --- a/pppd/pppcrypt.h +++ b/pppd/pppcrypt.h @@ -29,6 +29,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" #ifndef PPPCRYPT_H #define PPPCRYPT_H diff --git a/pppd/pppd.h b/pppd/pppd.h index 6a19091..465c1bf 100644 --- a/pppd/pppd.h +++ b/pppd/pppd.h @@ -42,6 +42,8 @@ * $Id: pppd.h,v 1.96 2008/06/23 11:47:18 paulus Exp $ */ +#include "pppdconf.h" + /* * TODO: */ diff --git a/pppd/pppd.pc.in b/pppd/pppd.pc.in new file mode 100644 index 0000000..20ef104 --- /dev/null +++ b/pppd/pppd.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +plugindir=@PPPD_PLUGIN_DIR@ + +Name: pppd +Description: Point-to-Point Protocol (PPP) daemon +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} diff --git a/pppd/pppdconf.h.in b/pppd/pppdconf.h.in new file mode 100644 index 0000000..a1eea0e --- /dev/null +++ b/pppd/pppdconf.h.in @@ -0,0 +1,61 @@ +/* + * This file is generated by configure and sets the features enabled + * in pppd when configured. + */ + +/* "Have Microsoft CHAP support" */ +#undef CHAPMS + +/* "Have Microsoft MPPE support" */ +#undef MPPE + +/* "Have multilink support" */ +#undef HAVE_MULTILINK + +/* "Have IPX Control Protocol" */ +#undef IPX_CHANGE + +/* "Have packet activity filter support" */ +#undef PPP_FILTER + +/* "Have support for loadable plugins" */ +#undef PLUGIN + +/* "Limit sessions by maximum number of octets" */ +#undef MAXOCTETS + +/* Have Microsoft Callback Protocol support */ +#undef CBCP_SUPPORT + +/* "Include Trivial Database support" */ +#undef USE_TDB + +/* "Have IPv6 support" */ +#undef INET6 + +/* "Support for Pluggable Authentication Modules" */ +#undef USE_PAM + +/* "Have EAP-SRP authentication support" */ +#undef USE_SRP + +/* "Have EAP-TLS authentication support" */ +#undef USE_EAPTLS + +/* "Have PEAP authentication support" */ +#undef USE_PEAP + +/* Use included des included with pppd */ +#undef USE_CRYPT + +/* Use included md4 included with pppd */ +#undef USE_MD4 + +/* Use included md5 included with pppd */ +#undef USE_MD5 + +/* Use included sha included with pppd */ +#undef USE_SHA + +/* Version number of package */ +#undef VERSION diff --git a/pppd/session.c b/pppd/session.c index 2f1c83e..3d1fb6d 100644 --- a/pppd/session.c +++ b/pppd/session.c @@ -68,14 +68,23 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include #include + +#ifdef HAVE_CRYPT_H #include -#ifdef HAS_SHADOW +#endif + +#ifdef HAVE_SHADOW_H #include #endif + #include #include #include @@ -171,11 +180,11 @@ session_start(const int flags, const char *user, const char *passwd, const char #else /* #ifdef USE_PAM */ struct passwd *pw; char *cbuf; -#ifdef HAS_SHADOW +#ifdef HAVE_SHADOW_H struct spwd *spwd; struct spwd *getspnam(); long now = 0; -#endif /* #ifdef HAS_SHADOW */ +#endif /* #ifdef HAVE_SHADOW_H */ #endif /* #ifdef USE_PAM */ SET_MSG(msg, SUCCESS_MSG); @@ -305,7 +314,7 @@ session_start(const int flags, const char *user, const char *passwd, const char if (pw == NULL) return SESSION_FAILED; -#ifdef HAS_SHADOW +#ifdef HAVE_SHADOW_H spwd = getspnam(user); endspent(); @@ -336,15 +345,17 @@ session_start(const int flags, const char *user, const char *passwd, const char /* We have a valid shadow entry, keep the password */ pw->pw_passwd = spwd->sp_pwdp; -#endif /* #ifdef HAS_SHADOW */ +#endif /* #ifdef HAVE_SHADOW_H */ /* * If no passwd, don't let them login if we're authenticating. */ if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2) return SESSION_FAILED; +#ifdef HAVE_CRYPT_H cbuf = crypt(passwd, pw->pw_passwd); if (!cbuf || strcmp(cbuf, pw->pw_passwd) != 0) +#endif return SESSION_FAILED; } diff --git a/pppd/session.h b/pppd/session.h index bee8c41..0047db6 100644 --- a/pppd/session.h +++ b/pppd/session.h @@ -27,6 +27,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "pppdconf.h" #ifndef __SESSION_H #define __SESSION_H diff --git a/pppd/sha1.c b/pppd/sha1.c index 4e51cee..efb37be 100644 --- a/pppd/sha1.c +++ b/pppd/sha1.c @@ -14,6 +14,10 @@ * 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* #define SHA1HANDSOFF * Copies data before messing with it. */ #include diff --git a/pppd/sha1.h b/pppd/sha1.h index 83f64df..e7e5573 100644 --- a/pppd/sha1.h +++ b/pppd/sha1.h @@ -1,12 +1,17 @@ /* sha1.h */ -/* If OpenSSL is in use, then use that version of SHA-1 */ -#ifdef OPENSSL -#include -#define __SHA1_INCLUDE_ -#endif +#include "pppdconf.h" #ifndef __SHA1_INCLUDE_ +#define __SHA1_INCLUDE_ + +#ifndef USE_SHA +#include + +#define SHA1_CTX SHA_CTX +#define SHA1_SIGNATURE_SIZE SHA_DIGEST_LENGTH + +#else #ifndef SHA1_SIGNATURE_SIZE #ifdef SHA_DIGESTSIZE @@ -26,6 +31,5 @@ extern void SHA1_Init(SHA1_CTX *); extern void SHA1_Update(SHA1_CTX *, const unsigned char *, unsigned int); extern void SHA1_Final(unsigned char[SHA1_SIGNATURE_SIZE], SHA1_CTX *); -#define __SHA1_INCLUDE_ +#endif /* USE_SHA */ #endif /* __SHA1_INCLUDE_ */ - diff --git a/pppd/spinlock.c b/pppd/spinlock.c index 4df7e47..56abae4 100644 --- a/pppd/spinlock.c +++ b/pppd/spinlock.c @@ -23,6 +23,11 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/spinlock.h b/pppd/spinlock.h index 967fe37..38e7bcc 100644 --- a/pppd/spinlock.h +++ b/pppd/spinlock.h @@ -1,10 +1,8 @@ +#include "pppdconf.h" + #ifndef __SPINLOCK_H__ #define __SPINLOCK_H__ -#ifdef HAVE_CONFIG_H -#include -#endif - #include "tdb.h" #ifdef USE_SPINLOCKS diff --git a/pppd/srp-entry.c b/pppd/srp-entry.c index 8c0e297..d59c1d3 100644 --- a/pppd/srp-entry.c +++ b/pppd/srp-entry.c @@ -29,6 +29,10 @@ * The default modulus/generator can be requested as index 0. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c index 2ede95f..8d6eee9 100644 --- a/pppd/sys-linux.c +++ b/pppd/sys-linux.c @@ -69,6 +69,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -85,7 +89,9 @@ #include #include #include +#ifdef HAVE_UTMP_H #include +#endif #include #include #include diff --git a/pppd/sys-solaris.c b/pppd/sys-solaris.c index 58ad21a..a0b1e3a 100644 --- a/pppd/sys-solaris.c +++ b/pppd/sys-solaris.c @@ -85,6 +85,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -127,6 +131,10 @@ #include #endif +#ifdef PPP_FILTER +#include +#endif + #include "pppd.h" #include "fsm.h" #include "lcp.h" @@ -1636,7 +1644,7 @@ get_ppp_stats(int u, struct pppd_stats *stats) return 1; } -#if 0 +#ifdef PPP_FILTER /* * set_filters - transfer the pass and active filters to the kernel. */ diff --git a/pppd/tdb.c b/pppd/tdb.c index bdc5828..8a563f8 100644 --- a/pppd/tdb.c +++ b/pppd/tdb.c @@ -46,6 +46,10 @@ * right time. Probably too hard -- the process just doesn't know. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/tdb.h b/pppd/tdb.h index 153b6e9..418bd8d 100644 --- a/pppd/tdb.h +++ b/pppd/tdb.h @@ -1,3 +1,5 @@ +#include "pppdconf.h" + #ifndef __TDB_H__ #define __TDB_H__ diff --git a/pppd/tty.c b/pppd/tty.c index 852cee7..41328fb 100644 --- a/pppd/tty.c +++ b/pppd/tty.c @@ -68,6 +68,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppd/upap.c b/pppd/upap.c index 0ae0288..1fcff09 100644 --- a/pppd/upap.c +++ b/pppd/upap.c @@ -40,6 +40,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* * TODO: */ diff --git a/pppd/upap.h b/pppd/upap.h index 99b007f..709cd62 100644 --- a/pppd/upap.h +++ b/pppd/upap.h @@ -1,3 +1,5 @@ +#include "pppdconf.h" + /* * upap.h - User/Password Authentication Protocol definitions. * diff --git a/pppd/utils.c b/pppd/utils.c index f81c8cf..d66df1f 100644 --- a/pppd/utils.c +++ b/pppd/utils.c @@ -28,6 +28,10 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include diff --git a/pppdump/Makefile.am b/pppdump/Makefile.am new file mode 100644 index 0000000..cab9d8a --- /dev/null +++ b/pppdump/Makefile.am @@ -0,0 +1,12 @@ +sbin_PROGRAMS = pppdump +man8_MANS = pppdump.8 + +pppdump_SOURCES = pppdump.c bsd-comp.c deflate.c zlib.c +pppdump_CFLAGS = -I${top_srcdir}/include/net + +noinst_HEADERS = \ + ppp-comp.h \ + zlib.h + +EXTRA_DIST = \ + $(man8_MANS) diff --git a/pppstats/Makefile.am b/pppstats/Makefile.am new file mode 100644 index 0000000..560ed68 --- /dev/null +++ b/pppstats/Makefile.am @@ -0,0 +1,16 @@ +sbin_PROGRAMS = pppstats +man8_MANS = pppstats.8 + +pppstats_SOURCES = pppstats.c +pppstats_CFLAGS = + +if LINUX +pppstats_CFLAGS += -I${top_srcdir}/include +endif + +if SUNOS +pppstats_CFLAGS += -DSTREAMS +endif + +EXTRA_DIST = \ + $(man8_MANS) diff --git a/pppstats/pppstats.c b/pppstats/pppstats.c index 92ebc2a..cbea00b 100644 --- a/pppstats/pppstats.c +++ b/pppstats/pppstats.c @@ -235,7 +235,7 @@ strioctl(int fd, int cmd, char *ptr, int ilen, int olen) static void get_ppp_stats(struct ppp_stats *curp) { - if (strioctl(s, PPPIO_GETSTAT, curp, 0, sizeof(*curp)) < 0) { + if (strioctl(s, PPPIO_GETSTAT, (char*) curp, 0, sizeof(*curp)) < 0) { fprintf(stderr, "%s: ", progname); if (errno == EINVAL) fprintf(stderr, "kernel support missing\n"); @@ -248,7 +248,7 @@ get_ppp_stats(struct ppp_stats *curp) static void get_ppp_cstats(struct ppp_comp_stats *csp) { - if (strioctl(s, PPPIO_GETCSTAT, csp, 0, sizeof(*csp)) < 0) { + if (strioctl(s, PPPIO_GETCSTAT, (char*) csp, 0, sizeof(*csp)) < 0) { fprintf(stderr, "%s: ", progname); if (errno == ENOTTY) { fprintf(stderr, "no kernel compression support\n"); @@ -539,7 +539,7 @@ main(int argc, char *argv[]) perror(dev); exit(1); } - if (strioctl(s, PPPIO_ATTACH, &unit, sizeof(int), 0) < 0) { + if (strioctl(s, PPPIO_ATTACH, (char*) &unit, sizeof(int), 0) < 0) { fprintf(stderr, "%s: ppp%d is not available\n", progname, unit); exit(1); } diff --git a/scripts/Makefile.am b/scripts/Makefile.am new file mode 100644 index 0000000..0fadd48 --- /dev/null +++ b/scripts/Makefile.am @@ -0,0 +1,32 @@ +EXTRA_CHATCHAT = \ + chatchat/chatchat.c \ + chatchat/README + +EXTRA_SCRIPTS = \ + autopppd \ + callback \ + chatchat \ + ip-down.local.add \ + ip-up.local.add \ + ipv6-down.sample \ + ipv6-up.sample \ + options-rsh-loc \ + options-rsh-rem \ + options-ssh-loc \ + options-ssh-rem \ + plog \ + poff \ + pon \ + pon.1 \ + ppp-off \ + ppp-on \ + ppp-on-dialer \ + ppp-on-rsh \ + ppp-on-ssh \ + README \ + redialer \ + secure-card + +EXTRA_DIST= \ + $(EXTRA_CHATCHAT) \ + $(EXTRA_SCRIPTS)