Use autoconf/automake to configure and make ppp

This change brings in autoconf/automake scripts to configure the ppp project. Current change doesn't eliminate the previous build system, but the new script autogen.sh will overwrite configure, and generate the basic Makefile.in and Makefile files.

Features can now be enabled by command line:

  * Microsoft Extensions,
    - MSCHAP
    - MPPE
    - MS LAN Manager support
  * IPXCP protocol
  * CBCP protocol
  * PAM support
  * EAP-TLS support
  * EAP-SRP support
  * Max session lifetime by byte count
  * Plugins
  * Packet activity filter support
  * Multilink
  * IPv6 support

Control linkage with
  * OpenSSL (-lssl -lcrypto)
  * systemd (-lsystemd)
  * libatm (-latm)
  * libsrp (-lsrp)
  * pam (-lpam)

Also, the configure script is made sensitive to features of OpenSSL. Like the presence or absence of DES, SHA, MD4 and MD5 crypto support. In the cases where either of these are missing, the support will be directly compiled into pppd and plugins.

In addition, package maintainers can now control the installation paths with standard --prefix=, or --localstatedir=, or --sysconfdir= to configure. On top of that, they can now control the following directories:
  * runtime directory w/--with-runtime-dir
  * logfile directory w/--with-logfile-dir
  * plugin directory w/--with-plugin-dir

In the case where automake isn't the right solution, namely: SunOS kernel module build, the original Makefile infrastructure is preserved and reused.

Care was taken to only cosmetically touchup the source files in this change. This means:
  * Insert HAVE_CONFIG_H and include config.h in all .c files.
  * Change HAS_SHADOW to HAVE_SHADOW_H
  * Change HAVE_LOGWTMP to HAVE_UTMP_H
  * Introduce HAVE_CRYPT_H into the source code where appropriate
  * Added ifdef MPPE where appropriate
  * USE_SRP required a few changes as it didn't compile
  * Touchup some compile warning in pppstats directory on SunOS

Introduced a new pppdconf.h file that exports the appropriate defines to a module that wants to provide a module that pppd can dynamically load. This will define/undef features like MPPE, CHAPMS such that the project doesn't have to guess what features pppd is compiled with.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
This commit is contained in:
Eivind Næss 2021-06-24 16:07:26 -07:00
parent 9c7ba0d42d
commit 2883dd0710
117 changed files with 2480 additions and 196 deletions

View File

@ -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

24
.github/workflows/ubuntu.yaml vendored Normal file
View File

@ -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"

7
AUTHORS Normal file
View File

@ -0,0 +1,7 @@
The pppd Project
https://github.com/ppp-project/ppp
Primary Author of this package:
Linux Paul Mackerras <paulus@samba.org>
Solaris James Carlson <carlson@workingcode.com>

7
COPYING Normal file
View File

@ -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.

4
ChangeLog Normal file
View File

@ -0,0 +1,4 @@
2021-07-11 Eivind Naess <eivnaes@yahoo.com>
Introduction of Autotools to pppd project

77
Makefile.am Normal file
View File

@ -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)

278
NEWS Normal file
View File

@ -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/<pppd-version> (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.

21
autogen.sh Executable file
View File

@ -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 $@
)

9
chat/Makefile.am Normal file
View File

@ -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)

6
common/Makefile.am Normal file
View File

@ -0,0 +1,6 @@
EXTRA_ZLIB = \
zlib.c \
zlib.h
EXTRA_DIST = \
$(EXTRA_ZLIB)

2
configure vendored
View File

@ -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"

408
configure.ac Normal file
View File

@ -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}
"

1
contrib/Makefile.am Normal file
View File

@ -0,0 +1 @@
SUBDIRS = pppgetpass

View File

@ -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)

13
include/Makefile.am Normal file
View File

@ -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)

View File

@ -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}

93
m4/ax_check_atm.m4 Normal file
View File

@ -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 <eivnaes@yahoo.com>
#
# 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 <atm.h>
#include <stddef.h>],
[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}")
])

119
m4/ax_check_openssl.m4 Normal file
View File

@ -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 <openssl/hmac.h>
#
# LICENSE
#
# Copyright (c) 2009,2010 Zmanda Inc. <http://www.zmanda.com/>
# Copyright (c) 2009,2010 Dustin J. Mitchell <dustin@zmanda.com>
#
# 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 <openssl/ssl.h>], [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 ])
])

View File

@ -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 <eivnaes@yahoo.com>
#
# 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 <openssl/opensslconf.h>]],
[[#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"
])

93
m4/ax_check_pam.m4 Normal file
View File

@ -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 <eivnaes@yahoo.com>
#
# 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 <security/pam_appl.h>
#include <stddef.h>],
[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}")
])

93
m4/ax_check_pcap.m4 Normal file
View File

@ -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 <eivnaes@yahoo.com>
#
# 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.h>],
[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}")
])

94
m4/ax_check_srp.m4 Normal file
View File

@ -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 <eivnaes@yahoo.com>
#
# 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 <srp.h>
#include <stddef.h>],
[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}")
])

275
m4/pkg.m4 Normal file
View File

@ -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 <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
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 <http://pkg-config.freedesktop.org/>.])[]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

12
modules/Makefile.am Normal file
View File

@ -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)

165
pppd/Makefile.am Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <stdio.h>
#include <stddef.h>
#include <stdlib.h>
@ -93,7 +97,7 @@
#include <arpa/inet.h>
#ifdef HAS_SHADOW
#ifdef HAVE_SHADOW_H
#include <shadow.h>
#ifndef PW_PPP
#define PW_PPP PW_LOGIN
@ -101,6 +105,10 @@
#endif
#include <time.h>
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
#ifdef SYSTEMD
#include <systemd/sd-daemon.h>
#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;
}
}

View File

@ -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 <stdio.h>
#include <string.h>

View File

@ -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 */

View File

@ -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 <stdlib.h>

View File

@ -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? */

View File

@ -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 <stdlib.h>
#include <string.h>
#include "pppd.h"

View File

@ -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);

View File

@ -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 <stdlib.h>
#include <string.h>
#include "pppd.h"

View File

@ -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).
*/

View File

@ -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 <stdio.h>

View File

@ -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 */

View File

@ -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 <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@ -29,6 +29,10 @@
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include <strings.h>
#include <unistd.h>
@ -37,7 +41,9 @@
#include <fcntl.h>
#include <openssl/conf.h>
#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
#endif
#include <openssl/hmac.h>
#include <openssl/err.h>
#include <openssl/ui.h>

View File

@ -30,6 +30,8 @@
*
*/
#include "pppdconf.h"
#ifndef __EAP_TLS_H__
#define __EAP_TLS_H__

View File

@ -48,6 +48,10 @@
* Implemented EAP-TLS authentication
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -65,6 +69,9 @@
#include "eap.h"
#ifdef USE_SRP
#ifdef HAVE_TIME_H
#include <time.h>
#endif
#include <t_pwd.h>
#include <t_server.h>
#include <t_client.h>
@ -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;

View File

@ -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

View File

@ -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 <string.h>
#include "pppd.h"

View File

@ -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? */

View File

@ -34,6 +34,10 @@
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "pppd.h"

View File

@ -34,6 +34,8 @@
*
*/
#include "pppdconf.h"
#ifndef __EUI64_H__
#define __EUI64_H__

View File

@ -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.

View File

@ -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.
*/

View File

@ -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:
*/

View File

@ -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.

View File

@ -146,6 +146,10 @@
* since SVR4 && (SNI || __USLC__) didn't work properly)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@ -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 :

View File

@ -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
/*

View File

@ -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.

View File

@ -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 <stdio.h>
#include <string.h>
#include <stdlib.h>

View File

@ -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.

View File

@ -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 <stdio.h>
#include <stdlib.h>
#include <unistd.h>

View File

@ -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 */

View File

@ -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 <stdio.h>
#include <ctype.h>
#include <stdlib.h>

View File

@ -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

View File

@ -7,6 +7,16 @@
** (C) 1990 RSA Data Security, Inc. **
** ********************************************************************
*/
#include "pppdconf.h"
#ifndef __MD4_INCLUDE__
#define __MD4_INCLUDE__
#ifndef USE_MD4
#include <openssl/md4.h>
#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__ */

View File

@ -33,6 +33,10 @@
***********************************************************************
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include "md5.h"

View File

@ -36,8 +36,13 @@
** documentation and/or software. **
***********************************************************************
*/
#include "pppdconf.h"
#ifndef __MD5_INCLUDE__
#define __MD5_INCLUDE__
#ifndef USE_MD5
#include <openssl/md5.h>
#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__ */

View File

@ -29,8 +29,13 @@
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include "pppd.h"
#include "fsm.h"
#include "md4.h"

View File

@ -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__

View File

@ -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 <string.h>
#include <ctype.h>
#include <stdlib.h>

View File

@ -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 <ctype.h>
#include <stdarg.h>
#include <stdio.h>

View File

@ -1,2 +1 @@
#define VERSION "2.4.9"
#define DATE "5 January 2021"

View File

@ -1,17 +1,36 @@
/*
* define path names
*/
#include "pppdconf.h"
#ifdef HAVE_PATHS_H
#include <paths.h>
#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 */

25
pppd/plugins/Makefile.am Normal file
View File

@ -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

View File

@ -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 <stddef.h>
#include <time.h>
#include "pppd.h"

View File

@ -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 <errno.h>
#include <unistd.h>
#include <sys/wait.h>

View File

@ -7,6 +7,10 @@
* with pap- and chap-secrets files.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <errno.h>
#include <string.h>

View File

@ -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

View File

@ -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 <config.h>
#endif
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

View File

@ -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)

View File

@ -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 <config.h>
#endif
#define _GNU_SOURCE 1
#include "pppoe.h"
#include "pppd/pppd.h"

View File

@ -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 <sys/wait.h> that is POSIX.1 compatible. */
#define HAVE_SYS_WAIT_H 1
/* Define to `int' if <sys/types.h> 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 <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Define if your <sys/time.h> 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 <asm/types.h> header file. */
#define HAVE_ASM_TYPES_H 1
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define if you have the <getopt.h> header file. */
#define HAVE_GETOPT_H 1
/* Define if you have the <linux/if_ether.h> 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 <linux/if_packet.h> header file. */
#define HAVE_LINUX_IF_PACKET_H 1
/* Define if you have the <linux/if_pppox.h> header file. */
#define HAVE_LINUX_IF_PPPOX_H 1
/* Define if you have the <net/bpf.h> header file. */
#define HAVE_NET_BPF_H 1
/* Define if you have the <net/if_arp.h> header file. */
#define HAVE_NET_IF_ARP_H 1
/* Define if you have the <net/ethernet.h> header file. */
#define HAVE_NET_ETHERNET_H 1
/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H 1
/* Define if you have the <linux/if.h> header file. */
#define HAVE_LINUX_IF_H 1
/* Define if you have the <net/if_dl.h> header file. */
/* #undef HAVE_NET_IF_DL_H */
/* Define if you have the <net/if_ether.h> header file. */
/* #undef HAVE_NET_IF_ETHER_H */
/* Define if you have the <net/if_types.h> header file. */
/* #undef HAVE_NET_IF_TYPES_H */
/* Define if you have the <netinet/if_ether.h> header file. */
#define HAVE_NETINET_IF_ETHER_H 1
/* Define if you have the <netpacket/packet.h> header file. */
#define HAVE_NETPACKET_PACKET_H 1
/* Define if you have the <sys/dlpi.h> header file. */
/* #undef HAVE_SYS_DLPI_H */
/* Define if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H 1
/* Define if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
/* Define if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
/* Define if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define if you have the <sys/uio.h> header file. */
#define HAVE_SYS_UIO_H 1
/* Define if you have the <syslog.h> header file. */
#define HAVE_SYSLOG_H 1
/* Define if you have the <unistd.h> 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

View File

@ -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 <config.h>
#endif
#include "pppoe.h"
#include <sys/time.h>
#include <time.h>

View File

@ -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 <config.h>
#endif
#define _GNU_SOURCE 1
#include "pppoe.h"
#include "pppd/pppd.h"

View File

@ -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 <config.h>
#endif
#define _GNU_SOURCE 1
#include "pppoe.h"
#include "pppd/pppd.h"

View File

@ -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 <config.h>
#endif
#define _GNU_SOURCE 1
#include "pppoe.h"

View File

@ -9,6 +9,10 @@
*
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>

View File

@ -13,8 +13,6 @@
*
***********************************************************************/
#include "config.h"
#include <stdio.h> /* For FILE */
#include <sys/types.h> /* For pid_t */
#include <ctype.h>

View File

@ -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

View File

@ -19,6 +19,10 @@
/* pppd plugin for interfacing to openl2tpd */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

View File

@ -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 <config.h>
#endif
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

View File

@ -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)

View File

@ -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 <config.h>
#endif
#include "pppd.h"
#include "radiusclient.h"
#include <stdio.h>

View File

@ -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 <config.h>
#endif
#include "pppd.h"
#include "chap-new.h"
#ifdef CHAPMS

View File

@ -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 <config.h>
#endif
#include "pppd.h"
#include "radiusclient.h"
#include <stdio.h>

View File

@ -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 {

View File

@ -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 <errno.h>
#include "pppd.h"
#include "pppcrypt.h"

View File

@ -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

View File

@ -42,6 +42,8 @@
* $Id: pppd.h,v 1.96 2008/06/23 11:47:18 paulus Exp $
*/
#include "pppdconf.h"
/*
* TODO:
*/

10
pppd/pppd.pc.in Normal file
View File

@ -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}

61
pppd/pppdconf.h.in Normal file
View File

@ -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

View File

@ -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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pwd.h>
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#ifdef HAS_SHADOW
#endif
#ifdef HAVE_SHADOW_H
#include <shadow.h>
#endif
#include <time.h>
#include <utmp.h>
#include <fcntl.h>
@ -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;
}

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More