Commit 818c8135 authored by Valery Kartel's avatar Valery Kartel Committed by Natanael Copa

main/ppp: upgrade to 2.4.7, split to modules

parent 867c186c
# Maintainer: Natanael Copa <>
pkgdesc="A daemon which implements the PPP protocol for dial-up networking"
subpackages="$pkgname-dev $pkgname-doc"
subpackages="$pkgname-chat $pkgname-chat-doc:chat_doc
$pkgname-radius $pkgname-radius-doc:radius_doc
$pkgname-atm $pkgname-pppoe $pkgname-l2tp $pkgname-winbind
$pkgname-passprompt $pkgname-passwordfd $pkgname-minconn $pkgname-doc $pkgname-dev"
prepare() {
......@@ -64,45 +62,114 @@ package() {
make INSTROOT="$pkgdir" install || return 1
install -Dm644 include/net/ppp_defs.h \
"$pkgdir"/usr/include/net/ppp_defs.h || return 1
install -D -m644 "$srcdir"/options "$pkgdir"/etc/ppp/options
install -D -m755 "$srcdir"/ip-up "$pkgdir"/etc/ppp/ip-up
install -D -m755 "$srcdir"/ip-down "$pkgdir"/etc/ppp/ip-down
install -D -m755 "$srcdir"/pon "$pkgdir"/usr/bin/pon
install -D -m755 "$srcdir"/poff "$pkgdir"/usr/bin/poff
install -D -m755 "$srcdir"/plog "$pkgdir"/usr/sbin/plog
install -D -m644 etc.ppp/options "$pkgdir"/etc/ppp/options
install -D -m600 etc.ppp/pap-secrets "$pkgdir"/etc/ppp/pap-secrets
install -D -m600 etc.ppp/chap-secrets "$pkgdir"/etc/ppp/chap-secrets
install -D -m644 "$srcdir"/pon.1 "$pkgdir"/usr/share/man/man1/pon.1
mkdir -p "$pkgdir"/etc/ppp/peers
install -D -m644 scripts/pon.1 "$pkgdir"/usr/share/man/man1/pon.1
install -d "$pkgdir"/usr/share/doc/ppp
cp scripts/* "$pkgdir"/usr/share/doc/ppp/
rm "$pkgdir"/usr/share/doc/ppp/pon.1
install -d "$pkgdir"/etc/ppp/peers
atm() {
pkgdesc="pppd plugin to implement PPPoATM protocol"
_mv usr/lib/pppd/$pkgver/ 755
minconn() {
pkgdesc="pppd plugin to implement a 'minconnect' option"
_mv usr/lib/pppd/$pkgver/ 755
winbind() {
pkgdesc="WINBIND plugin for pppd"
_mv usr/lib/pppd/$pkgver/ 755
passprompt() {
pkgdesc="pppd plugin to invoke an external PAP password prompter"
_mv usr/lib/pppd/$pkgver/ 755
passwordfd() {
pkgdesc="pppd plugin let's you pass the password via a file descriptor"
_mv usr/lib/pppd/$pkgver/ 755
chat() {
pkgdesc="a program for automatic ppp session establishment"
_mv usr/sbin/chat 755
chat_doc() {
_mv usr/share/man/man8/chat.8 644 doc
l2tp() {
pkgdesc="pppd plugin to implement PPPoL2TP protocol"
_mv usr/lib/pppd/$pkgver/ 755
_mv usr/lib/pppd/$pkgver/ 755
pppoe() {
pkgdesc="pppd plugin for kernel-mode PPPoE on Linux"
_mv usr/lib/pppd/$pkgver/ 755
_mv usr/sbin/pppoe-discovery 755
radius() {
pkgdesc="RADIUS plugin for pppd"
_mv usr/lib/pppd/$pkgver/ 755
_mv usr/lib/pppd/$pkgver/ 755
_mv usr/lib/pppd/$pkgver/ 755
install -d "$subpkgdir"/etc/radiusclient
cp -r "$_builddir"/pppd/plugins/radius/etc/* "$subpkgdir"/etc/radiusclient
mv "$subpkgdir"/etc/radiusclient/ "$subpkgdir"/etc/radiusclient/radiusclient.conf
sed -i "s:@pkgsysconfdir@:/etc/radiusclient:g" "$subpkgdir"/etc/radiusclient/radiusclient.conf
sed -i "s:@sbindir@:/usr/sbin:g" "$subpkgdir"/etc/radiusclient/radiusclient.conf
radius_doc() {
_mv usr/share/man/man8/pppd-radius.8 644 doc
_mv usr/share/man/man8/pppd-radattr.8 644 doc
_mv() {
install -m $2 -D "$pkgdir"/$1 "$subpkgdir"/$1
if [ "$3" = "doc" ]; then
gzip -9 "$subpkgdir"/$1
rm "$pkgdir"/$1
md5sums="3434d2cc9327167a0723aaaa8670083b ppp-2.4.6.tar.gz
md5sums="78818f40e6d33a1d1de68a1551f6595a ppp-2.4.7.tar.gz
5a5c2d1bdca62979d9ed7a5a648e86d1 defaultroute-metric.3.patch
8d2128c74d62a2844491a24794b05a3e musl-fix-headers.patch
9185f645bb433b22a9951d9d12f79c35 options
48c024f73a80c8b69c4def22f86902cc pon
2d811f8470ccdea3b8c4505a438483e9 poff
86cdaf133f7a79fb464f02d83afc7734 plog
44cc662ba9aa61dd9add3ddd4c5ded57 pon.1
fac0c773490371ea673f4be0977a230f ip-up
a88b40b1bf91eb5cca3762b7195e4fe2 ip-down"
sha256sums="1b33181a03962c8a092c055fb9980e9722728a8d98a4bb7ec7acda17c1b1b49d ppp-2.4.6.tar.gz
c8f78e010a776d114d687b1a742ca6bb fix-paths.patch
a88b40b1bf91eb5cca3762b7195e4fe2 ip-down
fac0c773490371ea673f4be0977a230f ip-up"
sha256sums="02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30 ppp-2.4.7.tar.gz
1f69c03747ed68eaaaa8b2f0a239e57f167967fc90a6f89d802dcfe77026846f defaultroute-metric.3.patch
b136d5366e64a686a3ea24baaaeb4a37c2654c098dd7fcb263caebf9e9281956 musl-fix-headers.patch
9f473800a48bbaec41b465817ae9c4c53d6b0ce865b4298d9353b30707a39605 options
c92e0721c4f53987dd0a02fe7089d0f5a58cdb7bb9f26d1bddc28111406ce6c2 pon
ee1e1e5f164effe49bc7ffab3fbde6efbd46d186c58192913f749257026d75e2 poff
43608081ab9d6a755eb4e6fa2011f88b16b1702745d76bced6d546a7c579b39f plog
9bb35eac78898cdc75184bb70fea11fb2e2889e1e2cadf0b7bb8320d7cae0959 pon.1
7d44e21ed945434c32a385f44c690826f74c3d5ddac353deae8174692d8d1beb ip-up
84f2b44c9f4b8abdbc9cfbfffb669fa19385b80da55f9c292df115189dc62bd6 ip-down"
sha512sums="65d6967ba43cd8b4d3f63f52ff69f6fed964f748fc780dff982629668213c2cd1891671f6f4a0c1c22118a382e282fabdd2328e60a120d9b984d3c17f9355cc6 ppp-2.4.6.tar.gz
b6453eeb32a78d6748b3fc5ef9f21a7862f70f8316c3903097ad63f00497266b fix-paths.patch
84f2b44c9f4b8abdbc9cfbfffb669fa19385b80da55f9c292df115189dc62bd6 ip-down
7d44e21ed945434c32a385f44c690826f74c3d5ddac353deae8174692d8d1beb ip-up"
sha512sums="e34ce24020af6a73e7a26c83c4f73a9c83fa455b7b363794dba27bf01f70368be06bff779777843949bd77f4bc9385d6ad455ea48bf8fff4e0d73cc8fef16ae2 ppp-2.4.7.tar.gz
fccc7a6809ae4a617796ccf1d2132de8edb1cc0c71d76a95393585a5970b92be2a54da558702db355c8aea8d37b4dfffc64406129a2b3322f0b10e8f0481f685 defaultroute-metric.3.patch
2f071ea9db15e4abf1bed6cce8130dc81b710a31bfef5fa8f9370c353f845dbc47674b1551b8e040478e5156add6f98d480530206125e8bb308f0f4288d1eec6 musl-fix-headers.patch
cabcaa8d44f0da399326b7f93267d4786b32f69c6fa7a78ab451575a8cc594f2a259406166c874d88ecfc0861b8b4abdb3b653cf1cb00e2f2838ea880962f6ee options
29233c8010f511792c2dcf54ee06ede271994ef029b6b526aeeb17433233ef6b638b96346d81db55c2a6bb25fb07633328415cd3af55dadd78a32b1d45b07dd8 pon
3605ce49bad21473ef5f3ff2421e1ef7687e9267986503deca63ae3a2baa6308e8d031cb1da2f93b5b73dc292206a49c59cea17b80c129272cc975e07e3c6142 poff
f40ab2549c2e05adc018197911c4820187aa5e9920004b0b1d68ebf38688a1fcab1f79966eb73f36237ec84f056ab9e0c05e32cbfd73fdd0c368216cf54741fd plog
c5dc475940a34a2b489279f89d9b428b0e811abb6b22ef53b926784ab39e92981cd1eab79f8ff0c91de618c3bf890701fd7a8138537cdb036f8771e7ca16b5c4 pon.1
8258c95a6b6e8e94d6001b5cd3a99bd3270f29ba0f2e5050a26c8d5f1b67eead8d039e71ce86a784d45e620047b0a2bb14b258d80a9ea62084ba588a4c2e2d84 ip-up
160260bd2a788beaac395eadb38efbfd1e0e1a458fe151555acacf2c4f3a12381d644672c664f9793db6e3459a4f05a54e3ff6d407b0d37e8014b15bd0f11bcc ip-down"
8384afb992a98a7f97b484866e6aa1b1de51e901d7837f84f7ce2beba6815591450fab43957f03b65804424c4940c59640a9cd878979240a171aa77427e9c4ff fix-paths.patch
160260bd2a788beaac395eadb38efbfd1e0e1a458fe151555acacf2c4f3a12381d644672c664f9793db6e3459a4f05a54e3ff6d407b0d37e8014b15bd0f11bcc ip-down
8258c95a6b6e8e94d6001b5cd3a99bd3270f29ba0f2e5050a26c8d5f1b67eead8d039e71ce86a784d45e620047b0a2bb14b258d80a9ea62084ba588a4c2e2d84 ip-up"
--- a/pppd/plugins/pppol2tp/Makefile.linux
+++ b/pppd/plugins/pppol2tp/Makefile.linux
@@ -6,7 +6,7 @@
VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h)
--- a/pppd/plugins/radius/pathnames.h
+++ b/pppd/plugins/radius/pathnames.h
@@ -22,7 +22,7 @@
/* normally defined in the Makefile */
-#define _PATH_ETC_RADIUSCLIENT_CONF "/etc/radiusclient.conf"
+#define _PATH_ETC_RADIUSCLIENT_CONF "/etc/radiusclient/radiusclient.conf"
#endif /* PATHNAMES_H */
# /etc/ppp/options
# Originally created by Jim Knoble <>
# Modified for Debian by alvar Bray <>
# Modified for PPP Server setup by Christoph Lameter <>
# Modified for ArchLinux by Manolis Tzanidakis <>
# To quickly see what options are active in this file, use this command:
# egrep -v '#|^ *$' /etc/ppp/options
# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
# Two Servers can be remotely configured
# ms-dns
# ms-dns
# Specify which WINS Servers the incoming connection Win95 or WinNT should use
# ms-wins
# ms-wins
# Run the executable or shell command specified after pppd has
# terminated the link. This script could, for example, issue commands
# to the modem to cause it to hang up if hardware modem control signals
# were not available.
#disconnect "chat -- \d+++\d\c OK ath0 OK"
# async character map -- 32-bit hex; each bit is a character
# that needs to be escaped for pppd to receive it. 0x00000001
# represents '\x01', and 0x80000000 represents '\x1f'.
asyncmap 0
# Require the peer to authenticate itself before allowing network
# packets to be sent or received.
# Please do not disable this setting. It is expected to be standard in
# future releases of pppd. Use the call option (see manpage) to disable
# authentication for specific peers.
# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
# on the serial port.
# Use software flow control (i.e. XON/XOFF) to control the flow of data
# on the serial port.
# Specifies that certain characters should be escaped on transmission
# (regardless of whether the peer requests them to be escaped with its
# async control character map). The characters to be escaped are
# specified as a list of hex numbers separated by commas. Note that
# almost any character can be specified for the escape option, unlike
# the asyncmap option which only allows control characters to be
# specified. The characters which may not be escaped are those with hex
# values 0x20 - 0x3f or 0x5e.
#escape 11,13,ff
# Don't use the modem control lines.
# Specifies that pppd should use a UUCP-style lock on the serial device
# to ensure exclusive access to the device.
# Don't show the passwords when logging the contents of PAP packets.
# This is the default.
# When logging the contents of PAP packets, this option causes pppd to
# show the password string in the log message.
# Use the modem control lines. On Ultrix, this option implies hardware
# flow control, as for the crtscts option. (This option is not fully
# implemented.)
# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd
# will ask the peer to send packets of no more than <n> bytes. The
# minimum MRU value is 128. The default MRU value is 1500. A value of
# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
# bytes of data).
#mru 542
# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
# notation (e.g.
# Disables the default behaviour when no local IP address is specified,
# which is to determine (if possible) the local IP address from the
# hostname. With this option, the peer will have to supply the local IP
# address during IPCP negotiation (unless it specified explicitly on the
# command line or in an options file).
# Enables the "passive" option in the LCP. With this option, pppd will
# attempt to initiate a connection; if no reply is received from the
# peer, pppd will then just wait passively for a valid LCP packet from
# the peer (instead of exiting, as it does without this option).
# With this option, pppd will not transmit LCP packets to initiate a
# connection until a valid LCP packet is received from the peer (as for
# the "passive" option with old versions of pppd).
# Don't request or allow negotiation of any options for LCP and IPCP
# (use default values).
# Disable Address/Control compression negotiation (use default, i.e.
# address/control field disabled).
# Disable asyncmap negotiation (use the default asyncmap, i.e. escape
# all control characters).
# Don't fork to become a background process (otherwise pppd will do so
# if a serial device is specified).
# Fork to background once the ppp interface is up
# Disable IP address negotiation (with this option, the remote IP
# address must be specified with an option on the command line or in
# an options file).
# Disable IPCP negotiation and IP communication. This option should
# only be required if the peer is buggy and gets confused by requests
# from pppd for IPCP negotiation.
# Disable magic number negotiation. With this option, pppd cannot
# detect a looped-back line.
# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e.
# 1500).
# Disable protocol field compression negotiation (use default, i.e.
# protocol field compression disabled).
# Require the peer to authenticate itself using PAP.
# Don't agree to authenticate using PAP.
# Require the peer to authenticate itself using CHAP [Cryptographic
# Handshake Authentication Protocol] authentication.
# Don't agree to authenticate using CHAP.
# Disable negotiation of Van Jacobson style IP header compression (use
# default, i.e. no compression).
# Increase debugging level (same as -d). If this option is given, pppd
# will log the contents of all control packets sent or received in a
# readable form. The packets are logged through syslog with facility
# daemon and level debug. This information can be directed to a file by
# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If
# pppd is compiled with extra debugging enabled, it will log messages
# using facility local2 instead of daemon).
# Append the domain name <d> to the local host name for authentication
# purposes. For example, if gethostname() returns the name porsche,
# but the fully qualified domain name is porsche.Quotron.COM, you would
# use the domain option to set the domain name to Quotron.COM.
#domain <d>
# Enable debugging code in the kernel-level PPP driver. The argument n
# is a number which is the sum of the following values: 1 to enable
# general debug messages, 2 to request that the contents of received
# packets be printed, and 4 to request that the contents of transmitted
# packets be printed.
#kdebug n
# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
# requests a smaller value via MRU negotiation, pppd will request that
# the kernel networking code send data packets of no more than n bytes
# through the PPP network interface.
#mtu <n>
# Set the name of the local system for authentication purposes to <n>.
# This is a privileged option. With this option, pppd will use lines in the
# secrets files which have <n> as the second field when looking for a
# secret to use in authenticating the peer. In addition, unless overridden
# with the user option, <n> will be used as the name to send to the peer
# when authenticating the local system to the peer. (Note that pppd does
# not append the domain name to <n>.)
#name <n>
# Enforce the use of the hostname as the name of the local system for
# authentication purposes (overrides the name option).
# Set the assumed name of the remote system for authentication purposes
# to <n>.
#remotename <n>
# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.
# Use the system password database for authenticating the peer using
# PAP. Note: mgetty already provides this option. If this is specified
# then dialin from users using a script under Linux to fire up ppp wont work.
# login
# If this option is given, pppd will send an LCP echo-request frame to the
# peer every n seconds. Normally the peer should respond to the echo-request
# by sending an echo-reply. This option can be used with the
# lcp-echo-failure option to detect that the peer is no longer connected.
lcp-echo-interval 30
# If this option is given, pppd will presume the peer to be dead if n
# LCP echo-requests are sent without receiving a valid LCP echo-reply.
# If this happens, pppd will terminate the connection. Use of this
# option requires a non-zero value for the lcp-echo-interval parameter.
# This option can be used to enable pppd to terminate after the physical
# connection has been broken (e.g., the modem has hung up) in
# situations where no hardware modem control lines are available.
lcp-echo-failure 4
# Set the LCP restart interval (retransmission timeout) to <n> seconds
# (default 3).
#lcp-restart <n>
# Set the maximum number of LCP terminate-request transmissions to <n>
# (default 3).
#lcp-max-terminate <n>
# Set the maximum number of LCP configure-request transmissions to <n>
# (default 10).
#lcp-max-configure <n>
# Set the maximum number of LCP configure-NAKs returned before starting
# to send configure-Rejects instead to <n> (default 10).
#lcp-max-failure <n>
# Set the IPCP restart interval (retransmission timeout) to <n>
# seconds (default 3).
#ipcp-restart <n>
# Set the maximum number of IPCP terminate-request transmissions to <n>
# (default 3).
#ipcp-max-terminate <n>
# Set the maximum number of IPCP configure-request transmissions to <n>
# (default 10).
#ipcp-max-configure <n>
# Set the maximum number of IPCP configure-NAKs returned before starting
# to send configure-Rejects instead to <n> (default 10).
#ipcp-max-failure <n>
# Set the PAP restart interval (retransmission timeout) to <n> seconds
# (default 3).
#pap-restart <n>
# Set the maximum number of PAP authenticate-request transmissions to
# <n> (default 10).
#pap-max-authreq <n>
# Set the maximum time that pppd will wait for the peer to authenticate
# itself with PAP to <n> seconds (0 means no limit).
#pap-timeout <n>
# Set the CHAP restart interval (retransmission timeout for
# challenges) to <n> seconds (default 3).
#chap-restart <n>
# Set the maximum number of CHAP challenge transmissions to <n>
# (default 10).
# If this option is given, pppd will rechallenge the peer every <n>
# seconds.
#chap-interval <n>
# With this option, pppd will accept the peer's idea of our local IP
# address, even if the local IP address was specified in an option.
# With this option, pppd will accept the peer's idea of its (remote) IP
# address, even if the remote IP address was specified in an option.
# Disable the IPXCP and IPX protocols.
# To let pppd pass IPX packets comment this out --- you'll probably also
# want to install ipxripd, and have the Internal IPX Network option enabled
# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info.
# Exit once a connection has been made and terminated. This is the default,
# unless the `persist' or `demand' option has been specified.
# Do not exit after a connection is terminated; instead try to reopen
# the connection.
# Terminate after n consecutive failed connection attempts.
# A value of 0 means no limit. The default value is 10.
#maxfail <n>
maxfail 0
# Initiate the link only on demand, i.e. when data traffic is present.
# With this option, the remote IP address must be specified by the user on
# the command line or in an options file. Pppd will initially configure
# the interface and enable it for IP traffic without connecting to the peer.
# When traffic is available, pppd will connect to the peer and perform
# negotiation, authentication, etc. When this is completed, pppd will
# commence passing data packets (i.e., IP packets) across the link.
# Specifies that pppd should disconnect if the link is idle for <n> seconds.
# The link is idle when no data packets (i.e. IP packets) are being sent or
# received. Note: it is not advisable to use this option with the persist
# option without the demand option. If the active-filter option is given,
# data packets which are rejected by the specified activity filter also
# count as the link being idle.
#idle <n>
# Specifies how many seconds to wait before re-initiating the link after
# it terminates. This option only has any effect if the persist or demand
# option is used. The holdoff period is not applied if the link was
# terminated because it was idle.
#holdoff <n>
# Wait for up n milliseconds after the connect script finishes for a valid
# PPP packet from the peer. At the end of this time, or when a valid PPP
# packet is received from the peer, pppd will commence negotiation by
# sending its first LCP packet. The default value is 1000 (1 second).
# This wait period only applies if the connect or pty option is used.
#connect-delay <n>
# Packet filtering: for more information, see pppd(8)
# Any packets matching the filter expression will be interpreted as link
# activity, and will cause a "demand" connection to be activated, and reset
# the idle connection timer. (idle option)
# The filter expression is akin to that of tcpdump(1)
#active-filter <filter-expression>
# uncomment the line below this if you use PPPoE
#plugin /usr/lib/pppd/plugins/
# ---<End of File>---
if [ -s /var/log/ppp.log ]; then
exec tail "$@" /var/log/ppp.log
exec tail "$@" /var/log/syslog | grep ' \(pppd\|chat\)\['
# Written by John Hasler <> and based on work
# by Phil Hands <>. Distributed under the GNU GPL
if [ -x /usr/bin/kill ]; then
usage ()
cat <<!EOF!
usage: $0 [option] [provider]
-r Cause pppd to drop the line and redial.
-d Toggle the state of pppd's debug option.
-c Cause pppd to renegotiate compression.
-a Stop all pppd's. 'provider' will be ignored.
-h Print this help summary and exit.
-v Print version and exit.
none Stop pppd.
Options may not be combined.
If 'provider' is omitted pppd will be stopped or signalled if and only if
there is exactly one running unless the '-a' option was given. If
'provider' is supplied the pppd controlling the connection to that
provider will be stopped or signalled.
# Get option. If there are none replace the "?" that getopts puts in
# FLAG on error with "null".
getopts rdcavh FLAG
if [ "$?" -ne 0 ]; then
# Check for additional options. Should be none.
getopts :rdcavh DUMMY
if [ "$?" -eq 0 ]; then
echo "$0: Illegal option -- ${OPTARG}."
exit 1
case $FLAG in
"r") SIG=HUP; DONE=signalled; shift ;;
"d") SIG=USR1; DONE=signalled; shift ;;
"c") SIG=USR2; DONE=signalled; shift ;;
"a") MODE="all"; shift ;;
"v") echo "$0$Revision: 1.1 $_TrickToPrint_RCS_Revision"; exit 0 ;;
"h") usage; exit 0 ;;
"?") exit 1;
# Get the PIDs of all the pppds running. Could also get these from
# /var/run, but pppd doesn't create .pid files until ppp is up.
PIDS=`pidof pppd`
# poff is pointless if pppd isn't running.
if test -z "$PIDS"; then
echo "$0: No pppd is running. None ${DONE}."
exit 1
# Find out how many pppd's are running.
N=`echo "$PIDS" | wc -w`
# If there are no arguments we can't do anything if there is more than one
# pppd running.
if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then
echo "$0: More than one pppd running and no "-a" option and
no arguments supplied. Nothing ${DONE}."
exit 1