I want to drop the linux-atm package.
drop the dependency on linux-atm-devel from ppp. ppp will still build with some ATM support using its local copy of linux-atm. Not sure if this is useful. OBS-URL: https://build.opensuse.org/package/show/network/ppp?expand=0&rev=84
This commit is contained in:
commit
9266bc7cfc
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
18
chap-secrets.template
Normal file
18
chap-secrets.template
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Secrets for authentication using CHAP
|
||||||
|
# client server secret IP addresses
|
||||||
|
|
||||||
|
# OUTBOUND CONNECTIONS
|
||||||
|
# Here you should add your PPP Login and PPP password to connect to your
|
||||||
|
# provider via pap. The * means that the entry(login and passoword may be
|
||||||
|
# used for ANY host you connect to.
|
||||||
|
# Thus you do not have to worry about the foreign machine name. Just
|
||||||
|
# replace password with your password.
|
||||||
|
#hostname * password
|
||||||
|
|
||||||
|
# PREDIFINED CONNECTIONS
|
||||||
|
# These are user and password entries for publically accessible call-by-call
|
||||||
|
# Internet providers in Germany. If they confict with your config, remove them.
|
||||||
|
# READ_IN_CALLBYCALL_SECRETS
|
||||||
|
|
||||||
|
# INBOUND CONNECTIONS
|
||||||
|
#client hostname <password> 192.168.1.1
|
14
filters
Normal file
14
filters
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# These filter rules should prevent unwanted internet services to
|
||||||
|
# keep your connections up by ignoring their connection requests
|
||||||
|
# and your 'go way' responses.
|
||||||
|
#
|
||||||
|
# This file should be included by the line 'file /etc/ppp/filters' in
|
||||||
|
# /etc/ppp/options.
|
||||||
|
#
|
||||||
|
# Note: This has nothing to do with firewall rules. It only affects
|
||||||
|
# the idle time calculation of the kernel/pppd.
|
||||||
|
#
|
||||||
|
|
||||||
|
active-filter 'outbound and not icmp[0] == 3 and not tcp[13] & 4 != 0'
|
||||||
|
|
18
modem-peers
Normal file
18
modem-peers
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
460800
|
||||||
|
defaultroute
|
||||||
|
usepeerdns
|
||||||
|
crtscts
|
||||||
|
lock
|
||||||
|
noauth
|
||||||
|
local
|
||||||
|
persist
|
||||||
|
modem
|
||||||
|
nopcomp
|
||||||
|
novjccomp
|
||||||
|
nobsdcomp
|
||||||
|
nodeflate
|
||||||
|
noaccomp
|
||||||
|
ipcp-accept-local
|
||||||
|
ipcp-accept-remote
|
||||||
|
noipdefault
|
||||||
|
connect "/usr/sbin/chat -t10 -f /etc/ppp/chatscripts/modem.chat"
|
19
modem.chat
Normal file
19
modem.chat
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
ABORT 'BUSY'
|
||||||
|
ABORT 'NO CARRIER'
|
||||||
|
ABORT 'VOICE'
|
||||||
|
ABORT 'NO DIALTONE'
|
||||||
|
ABORT 'NO DIAL TONE'
|
||||||
|
ABORT 'NO ANSWER'
|
||||||
|
ABORT 'DELAYED'
|
||||||
|
REPORT CONNECT
|
||||||
|
TIMEOUT 5
|
||||||
|
'' 'ATQ0'
|
||||||
|
'OK-AT-OK' 'ATZ'
|
||||||
|
TIMEOUT 3
|
||||||
|
'OK-AT-OK' 'ATI'
|
||||||
|
'OK' 'ATZ'
|
||||||
|
'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'
|
||||||
|
'OK' 'AT\^SYSCFG=2,2,3fffffff,0,1'
|
||||||
|
'OK-AT-OK' 'AT+CGDCONT=1,"IP","internet.mts.ru"'
|
||||||
|
'OK' 'ATDT*99#'
|
||||||
|
CONNECT
|
1
modem.rules
Normal file
1
modem.rules
Normal file
@ -0,0 +1 @@
|
|||||||
|
KERNEL=="ttyACM[0-9]*", TAG+="systemd", ENV{SYSTEMD_WANTS}="modem@%n.service"
|
12
modem@.service
Normal file
12
modem@.service
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Modem /dev/ttyACM%i
|
||||||
|
BindsTo=dev-ttyACM%i.device
|
||||||
|
After=dev-ttyACM%i.device
|
||||||
|
Before=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Group=dialout
|
||||||
|
ExecStart=/usr/sbin/pppd call modem /dev/ttyACM%i
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
198
options
Normal file
198
options
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
# /etc/ppp/options
|
||||||
|
#
|
||||||
|
# Not every option is listed here, see man pppd for more details. This file
|
||||||
|
# is read by the pppd, it is an error when it is not present.
|
||||||
|
#
|
||||||
|
# Use the following command to see the active options:
|
||||||
|
# grep -v ^# /etc/ppp/options | grep -v ^$
|
||||||
|
#
|
||||||
|
|
||||||
|
# The name of this server. Often, the FQDN is used here.
|
||||||
|
#name <host>
|
||||||
|
|
||||||
|
# Enforce the use of the hostname as the name of the local system for
|
||||||
|
# authentication purposes (overrides the name option).
|
||||||
|
#usehostname
|
||||||
|
|
||||||
|
# If no local IP address is given, pppd will use the first IP address
|
||||||
|
# that belongs to the local hostname. If "noipdefault" is given, this
|
||||||
|
# is disabled and the peer will have to supply an IP address.
|
||||||
|
noipdefault
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#ipcp-accept-local
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
#ipcp-accept-remote
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
# If mgetty is running, it will reset the modem anyway. So there is no need
|
||||||
|
# to do it here.
|
||||||
|
#disconnect "chat -- \d+++\d\c OK ath0 OK"
|
||||||
|
|
||||||
|
# Increase debugging level (same as -d). The debug output is written
|
||||||
|
# to syslog LOG_LOCAL2.
|
||||||
|
#debug
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# noauth means do not require the peer to authenticate itself, this must
|
||||||
|
# be set if you want to use pppd to connect to the internet. In this case
|
||||||
|
# *you* must authenicate yourself to the peer(internet provider), so do
|
||||||
|
# not disable this setting unless you are the dial-in server which where
|
||||||
|
# the peer has to autenticate to.
|
||||||
|
noauth
|
||||||
|
|
||||||
|
# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
|
||||||
|
# on the serial port.
|
||||||
|
crtscts
|
||||||
|
|
||||||
|
# Specifies that pppd should use a UUCP-style lock on the serial device
|
||||||
|
# to ensure exclusive access to the device.
|
||||||
|
lock
|
||||||
|
|
||||||
|
# Use the modem control lines.(is default)
|
||||||
|
modem
|
||||||
|
# The opposite: local
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# Don't use the modem control lines. With this option, pppd will ignore the
|
||||||
|
# state of the CD (Carrier Detect) signal from the modem and will not change
|
||||||
|
# the state of the DTR (Data Terminal Ready) signal.
|
||||||
|
#
|
||||||
|
# You need to disable modem and enable local if you want to connect to anoter
|
||||||
|
# system without using a modem:
|
||||||
|
#local
|
||||||
|
|
||||||
|
# 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'.
|
||||||
|
# To allow pppd to work over a rlogin/telnet connection, ou should escape
|
||||||
|
# XON (^Q), XOFF (^S) and ^]: (The peer should use "escape ff".)
|
||||||
|
#asyncmap 200a0000
|
||||||
|
asyncmap 0
|
||||||
|
|
||||||
|
# needed for some ISDN Terminaladaters, namely ELSA, those seem to have
|
||||||
|
# problems with asyncmap negotiation, so you can turn off this procedure
|
||||||
|
# in case your ISDN box has trouble with it, by enabling this option.
|
||||||
|
# You have to disable the asyncmap <x> option to be sure to have it
|
||||||
|
# active. If you use wvdial, set the ISDN parameter in /etc/wvdial.conf
|
||||||
|
# instead.
|
||||||
|
#default-asyncmap
|
||||||
|
|
||||||
|
# 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). The value 1492 is for DSL connections (PPP Default -
|
||||||
|
# PPPoE Header: 1500 - 8 = 1492)
|
||||||
|
# mru 1492
|
||||||
|
|
||||||
|
# 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. The value 1492 is for DSL connections
|
||||||
|
# (PPP Default - PPPoE Header: 1500 - 8 = 1492)
|
||||||
|
# mtu 1492
|
||||||
|
|
||||||
|
# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
|
||||||
|
# notation (e.g. 255.255.255.0).
|
||||||
|
#netmask 255.255.255.0
|
||||||
|
|
||||||
|
# Don't fork to become a background process (otherwise pppd will do so
|
||||||
|
# if a serial device is specified).
|
||||||
|
nodetach
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Send up to 60 LCP configure-request during negotiation. With a value
|
||||||
|
# of 2 for lcp-restart below, this might take up to 2 minutes.
|
||||||
|
lcp-max-configure 60
|
||||||
|
|
||||||
|
# Resend unanswered LCP requests after 2 seconds.
|
||||||
|
lcp-restart 2
|
||||||
|
|
||||||
|
# Specifies that pppd should disconnect if the link is idle for n seconds.
|
||||||
|
idle 600
|
||||||
|
|
||||||
|
# Specifies the maximal number of attempts to connect to the server. This
|
||||||
|
# is useful for dial on demand. Default value is 10.
|
||||||
|
#maxfail 3
|
||||||
|
|
||||||
|
# Disable the IPXCP and IPX protocols.
|
||||||
|
noipx
|
||||||
|
|
||||||
|
# In the file /etc/ppp/filters are some active-filter rules. See man pppd
|
||||||
|
# and man tcpdump for more informations.
|
||||||
|
file /etc/ppp/filters
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# The next two options are only interesting for you if you are admin of
|
||||||
|
# a system with other users that use ppp, and those users are normally
|
||||||
|
# never allowed to add default route, or you do not want users to
|
||||||
|
# replace the default route.
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# enable this to prevent users from attempting to add a default route.
|
||||||
|
# Use this option with caution: If the user needs to use a program like
|
||||||
|
# wvdial, he will not be able to connect because wvdial forces defaulroute
|
||||||
|
# but this is rejected by this option and the user will not be able to
|
||||||
|
# connect to the internet.
|
||||||
|
#nodefaultroute
|
||||||
|
|
||||||
|
# enable this to prevent users from replacing an existing default route.
|
||||||
|
#noreplacedefaultroute
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# All options below only make sense if you configure pppd to be a dial-in
|
||||||
|
# server, so don't touch these if you want dial into your provider with
|
||||||
|
# PPP!
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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. {proxyarp,noproxyarp}
|
||||||
|
#proxyarp
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
|
||||||
|
# Two Servers can be remotely configured
|
||||||
|
#ms-dns 192.168.1.1
|
||||||
|
#ms-dns 192.168.1.2
|
||||||
|
|
||||||
|
# Specify which WINS Servers the incoming connection Win95 or WinNT should use
|
||||||
|
#ms-wins 192.168.1.50
|
||||||
|
#ms-wins 192.168.1.51
|
||||||
|
|
33
pap-secrets.template
Normal file
33
pap-secrets.template
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Secrets for authentication using PAP
|
||||||
|
# client server secret IP addresses
|
||||||
|
|
||||||
|
# OUTBOUND CONNECTIONS
|
||||||
|
# Here you should add your PPP Login and PPP password to connect to your
|
||||||
|
# provider via pap. The * means that the entry(login and passoword may be
|
||||||
|
# used for ANY host you connect to.
|
||||||
|
# Thus you do not have to worry about the foreign machine name. Just
|
||||||
|
# replace password with your password.
|
||||||
|
#hostname * password
|
||||||
|
|
||||||
|
# PREDIFINED CONNECTIONS
|
||||||
|
# These are user and password entries for publically accessible call-by-call
|
||||||
|
# Internet providers in Germany. If they confict with your config, remove them.
|
||||||
|
# READ_IN_CALLBYCALL_SECRETS
|
||||||
|
|
||||||
|
# INBOUND CONNECTIONS
|
||||||
|
#client hostname <password> 192.168.1.1
|
||||||
|
|
||||||
|
# If you add "auth login -chap +pap" to /etc/mgetty+sendfax/login.config,
|
||||||
|
# all users in /etc/passwd can use their password for pap-authentication.
|
||||||
|
#
|
||||||
|
# Every regular user can use PPP and has to use passwords from /etc/passwd
|
||||||
|
#* hostname ""
|
||||||
|
# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
|
||||||
|
# other accounts that should not be able to use pppd! Replace hostname
|
||||||
|
# with your local hostname.
|
||||||
|
#guest hostname "*" -
|
||||||
|
#master hostname "*" -
|
||||||
|
#root hostname "*" -
|
||||||
|
#support hostname "*" -
|
||||||
|
#stats hostname "*" -
|
||||||
|
|
3
ppp-2.5.0.tar.gz
Normal file
3
ppp-2.5.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5cae0e8075f8a1755f16ca290eb44e6b3545d3f292af4da65ecffe897de636ff
|
||||||
|
size 1170057
|
11
ppp-2.5.0.tar.gz.asc
Normal file
11
ppp-2.5.0.tar.gz.asc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQFGBAABCAAwFiEEv0VLfXa2m9eKuaRpnZrqdyxjcZ8FAmQrvoQSHHBhdWx1c0Bv
|
||||||
|
emxhYnMub3JnAAoJEJ2a6ncsY3Gfx+YH/3DJdp8pCZDaONwBADpWc9ttGAusH3k6
|
||||||
|
fsOntaWKumy5HyJIF7h/ArDvYiAUeO3rgSckZS9o94u3OfkDxP4uf9AnGWBPzCir
|
||||||
|
CAwUes6JIP23IHAI5uLnSqo72lGtsRNbh95H8PALobKGN/Im+CTi2j6FIx+Nnf2f
|
||||||
|
6GRSJuw+OSRDzp+rJb1osAoUyuMnRpogXuQAAAeKJAHFDC+98vInQhDmwcu7wNWP
|
||||||
|
rhR1PrviW8nIsikwRQQptCQNC35DVI3IYUg3L1o8Y2LU1ofF3gYtX7lDF7IthqLM
|
||||||
|
pUPy+ddE8AsOiHOnKKIxzH9YFy9/xABQmtFLRJDAT24BHe1BCTyqniI=
|
||||||
|
=4tVk
|
||||||
|
-----END PGP SIGNATURE-----
|
29
ppp-fix-bashisms.patch
Normal file
29
ppp-fix-bashisms.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
--- scripts/redialer.orig
|
||||||
|
+++ scripts/redialer
|
||||||
|
@@ -31,7 +31,7 @@ PASSWORD=my_password
|
||||||
|
# Function to initialize the modem and ensure that it is in command
|
||||||
|
# state. This may not be needed, but it doesn't hurt.
|
||||||
|
#
|
||||||
|
-function initialize
|
||||||
|
+initialize()
|
||||||
|
{
|
||||||
|
chat -v TIMEOUT 3 '' AT 'OK-+++\c-OK'
|
||||||
|
return
|
||||||
|
@@ -41,7 +41,7 @@ function initialize
|
||||||
|
#
|
||||||
|
# Script to dial a telephone
|
||||||
|
#
|
||||||
|
-function callnumber
|
||||||
|
+callnumber()
|
||||||
|
{
|
||||||
|
chat -v \
|
||||||
|
ABORT '\nBUSY\r' \
|
||||||
|
@@ -66,7 +66,7 @@ chat -v \
|
||||||
|
#
|
||||||
|
# Script to dial any telephone number
|
||||||
|
#
|
||||||
|
-function callall
|
||||||
|
+callall()
|
||||||
|
{
|
||||||
|
# echo "dialing attempt number: $1" >/dev/console
|
||||||
|
callnumber $PHONE1
|
91
ppp-fork-fix.patch
Normal file
91
ppp-fork-fix.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
--- pppd/main.c.orig
|
||||||
|
+++ pppd/main.c
|
||||||
|
@@ -1632,14 +1632,6 @@ ppp_safe_fork(int infd, int outfd, int e
|
||||||
|
int fd, pipefd[2];
|
||||||
|
char buf[1];
|
||||||
|
|
||||||
|
- /* make sure fds 0, 1, 2 are occupied (probably not necessary) */
|
||||||
|
- while ((fd = dup(fd_devnull)) >= 0) {
|
||||||
|
- if (fd > 2) {
|
||||||
|
- close(fd);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (pipe(pipefd) == -1)
|
||||||
|
pipefd[0] = pipefd[1] = -1;
|
||||||
|
pid = fork();
|
||||||
|
@@ -1663,25 +1655,31 @@ ppp_safe_fork(int infd, int outfd, int e
|
||||||
|
tdb_close(pppdb);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- /* make sure infd, outfd and errfd won't get tromped on below */
|
||||||
|
- if (infd == 1 || infd == 2)
|
||||||
|
- infd = dup(infd);
|
||||||
|
- if (outfd == 0 || outfd == 2)
|
||||||
|
- outfd = dup(outfd);
|
||||||
|
- if (errfd == 0 || errfd == 1)
|
||||||
|
- errfd = dup(errfd);
|
||||||
|
-
|
||||||
|
+ /* make sure fds 0, 1, 2 are occupied, so the duplicated fds always > 2 */
|
||||||
|
+ while ((fd = dup(fd_devnull)) >= 0) {
|
||||||
|
+ if (fd > 2) {
|
||||||
|
+ close(fd);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* always copy fd's to avoid to use a already closed fd later */
|
||||||
|
+ {
|
||||||
|
+ int fdi = infd, fdo = outfd;
|
||||||
|
+
|
||||||
|
+ infd = dup(infd);
|
||||||
|
+ outfd = dup(outfd);
|
||||||
|
+ if (errfd >= 0) {
|
||||||
|
+ fd = errfd;
|
||||||
|
+ errfd = dup(errfd);
|
||||||
|
+ close(fd);
|
||||||
|
+ }
|
||||||
|
+ close(fdi);
|
||||||
|
+ close(fdo);
|
||||||
|
+ }
|
||||||
|
closelog();
|
||||||
|
|
||||||
|
- /* dup the in, out, err fds to 0, 1, 2 */
|
||||||
|
- if (infd != 0)
|
||||||
|
- dup2(infd, 0);
|
||||||
|
- if (outfd != 1)
|
||||||
|
- dup2(outfd, 1);
|
||||||
|
- if (errfd != 2)
|
||||||
|
- dup2(errfd, 2);
|
||||||
|
-
|
||||||
|
- if (log_to_fd > 2)
|
||||||
|
+ if (log_to_fd > 0)
|
||||||
|
close(log_to_fd);
|
||||||
|
if (the_channel->close)
|
||||||
|
(*the_channel->close)();
|
||||||
|
@@ -1689,12 +1687,18 @@ ppp_safe_fork(int infd, int outfd, int e
|
||||||
|
close(devfd); /* some plugins don't have a close function */
|
||||||
|
close(fd_ppp);
|
||||||
|
close(fd_devnull);
|
||||||
|
- if (infd != 0)
|
||||||
|
- close(infd);
|
||||||
|
- if (outfd != 1)
|
||||||
|
- close(outfd);
|
||||||
|
- if (errfd != 2)
|
||||||
|
- close(errfd);
|
||||||
|
+
|
||||||
|
+ close(0);
|
||||||
|
+ dup2(infd, 0);
|
||||||
|
+ close(infd);
|
||||||
|
+ close(1);
|
||||||
|
+ dup2(outfd, 1);
|
||||||
|
+ close(outfd);
|
||||||
|
+ if (errfd >= 0) {
|
||||||
|
+ close(2);
|
||||||
|
+ dup2(errfd, 2);
|
||||||
|
+ close(errfd);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
notify(fork_notifier, 0);
|
||||||
|
close(pipefd[0]);
|
45
ppp-misc.patch
Normal file
45
ppp-misc.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
--- pppd/auth.c.orig
|
||||||
|
+++ pppd/auth.c
|
||||||
|
@@ -2184,9 +2184,10 @@ check_access(FILE *f, char *filename)
|
||||||
|
|
||||||
|
if (fstat(fileno(f), &sbuf) < 0) {
|
||||||
|
warn("cannot stat secret file %s: %m", filename);
|
||||||
|
- } else if ((sbuf.st_mode & (S_IRWXG | S_IRWXO)) != 0) {
|
||||||
|
- warn("Warning - secret file %s has world and/or group access",
|
||||||
|
- filename);
|
||||||
|
+ } else if ((sbuf.st_mode & S_IRWXO) != 0) {
|
||||||
|
+ warn("Warning - secret file %s has world access", filename);
|
||||||
|
+ } else if ((sbuf.st_mode & S_IRWXG) != 0 && sbuf.st_gid != 15) {
|
||||||
|
+ warn("Warning - secret file %s has group access", filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--- pppd/lcp.c.orig
|
||||||
|
+++ pppd/lcp.c
|
||||||
|
@@ -2243,7 +2243,7 @@ lcp_received_echo_reply (fsm *f, int id,
|
||||||
|
if (lcp_gotoptions[f->unit].neg_magicnumber
|
||||||
|
&& magic == lcp_gotoptions[f->unit].magicnumber) {
|
||||||
|
warn("appear to have received our own echo-reply!");
|
||||||
|
- return;
|
||||||
|
+ /* M$-Software did get this wrong so we also accept those packets. */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset the number of outstanding echo frames */
|
||||||
|
--- pppd/pppd-private.h.orig
|
||||||
|
+++ pppd/pppd-private.h
|
||||||
|
@@ -545,15 +545,7 @@ int parse_dotted_ip(char *, u_int32_t *)
|
||||||
|
#define DEBUGCHAP 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
|
||||||
|
-#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
|
||||||
|
- || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
|
||||||
|
- || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
|
||||||
|
#define LOG_PPP LOG_LOCAL2
|
||||||
|
-#else
|
||||||
|
-#define LOG_PPP LOG_DAEMON
|
||||||
|
-#endif
|
||||||
|
-#endif /* LOG_PPP */
|
||||||
|
|
||||||
|
#ifdef DEBUGMAIN
|
||||||
|
#define MAINDEBUG(x) if (debug) dbglog x
|
453
ppp-mkdir-run.patch
Normal file
453
ppp-mkdir-run.patch
Normal file
@ -0,0 +1,453 @@
|
|||||||
|
From b0e7307b3569a5dad0f2606d2736cc8317851598 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dominique Martinet <dominique.martinet@atmark-techno.com>
|
||||||
|
Date: Wed, 30 Aug 2023 11:46:01 +0900
|
||||||
|
Subject: [PATCH 1/2] utils: add mkdir_recursive
|
||||||
|
|
||||||
|
This will be used in the next commit.
|
||||||
|
|
||||||
|
A test file for utils has also been added to check mkdir works as
|
||||||
|
intended.
|
||||||
|
|
||||||
|
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
|
||||||
|
---
|
||||||
|
pppd/Makefile.am | 6 ++
|
||||||
|
pppd/pppd-private.h | 1 +
|
||||||
|
pppd/utils.c | 82 ++++++++++++++++++++++++++
|
||||||
|
pppd/utils_utest.c | 139 ++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
4 files changed, 228 insertions(+)
|
||||||
|
create mode 100644 pppd/utils_utest.c
|
||||||
|
|
||||||
|
--- pppd/Makefile.am.orig
|
||||||
|
+++ pppd/Makefile.am
|
||||||
|
@@ -20,6 +20,12 @@ utest_pppcrypt_LDFLAGS =
|
||||||
|
|
||||||
|
check_PROGRAMS += utest_crypto
|
||||||
|
|
||||||
|
+utest_utils_SOURCES = utils.c utils_utest.c
|
||||||
|
+utest_utils_CPPFLAGS = -DUNIT_TEST
|
||||||
|
+utest_utils_LDFLAGS =
|
||||||
|
+
|
||||||
|
+check_PROGRAMS += utest_utils
|
||||||
|
+
|
||||||
|
if WITH_SRP
|
||||||
|
sbin_PROGRAMS += srp-entry
|
||||||
|
dist_man8_MANS += srp-entry.8
|
||||||
|
--- pppd/pppd-private.h.orig
|
||||||
|
+++ pppd/pppd-private.h
|
||||||
|
@@ -437,6 +437,7 @@ int sifproxyarp(int, u_int32_t);
|
||||||
|
int cifproxyarp(int, u_int32_t);
|
||||||
|
/* Delete proxy ARP entry for peer */
|
||||||
|
u_int32_t GetMask(u_int32_t); /* Get appropriate netmask for address */
|
||||||
|
+int mkdir_recursive(const char *); /* Recursively create directory */
|
||||||
|
int lock(char *); /* Create lock file for device */
|
||||||
|
int relock(int); /* Rewrite lock file with new pid */
|
||||||
|
void unlock(void); /* Delete previously-created lock file */
|
||||||
|
--- pppd/utils.c.orig
|
||||||
|
+++ pppd/utils.c
|
||||||
|
@@ -781,6 +781,88 @@ complete_read(int fd, void *buf, size_t
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * mkdir_check - helper for mkdir_recursive, creates a directory
|
||||||
|
+ * but do not error on EEXIST if and only if entry is a directory
|
||||||
|
+ * The caller must check for errno == ENOENT if appropriate.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mkdir_check(const char *path)
|
||||||
|
+{
|
||||||
|
+ struct stat statbuf;
|
||||||
|
+
|
||||||
|
+ if (mkdir(path, 0755) >= 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (errno == EEXIST) {
|
||||||
|
+ if (stat(path, &statbuf) < 0)
|
||||||
|
+ /* got raced? */
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if ((statbuf.st_mode & S_IFMT) == S_IFDIR)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ /* already exists but not a dir, treat as failure */
|
||||||
|
+ errno = EEXIST;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mkdir_parent - helper for mkdir_recursive, modifies the string in place
|
||||||
|
+ * Assumes mkdir(path) already failed, so it first creates the parent then
|
||||||
|
+ * full path again.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mkdir_parent(char *path)
|
||||||
|
+{
|
||||||
|
+ char *slash;
|
||||||
|
+ int rc;
|
||||||
|
+
|
||||||
|
+ slash = strrchr(path, '/');
|
||||||
|
+ if (!slash)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ *slash = 0;
|
||||||
|
+ if (mkdir_check(path) < 0) {
|
||||||
|
+ if (errno != ENOENT) {
|
||||||
|
+ *slash = '/';
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ if (mkdir_parent(path) < 0) {
|
||||||
|
+ *slash = '/';
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ *slash = '/';
|
||||||
|
+
|
||||||
|
+ return mkdir_check(path);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mkdir_recursive - recursively create directory if it didn't exist
|
||||||
|
+ */
|
||||||
|
+int
|
||||||
|
+mkdir_recursive(const char *path)
|
||||||
|
+{
|
||||||
|
+ char *copy;
|
||||||
|
+ int rc;
|
||||||
|
+
|
||||||
|
+ // optimistically try on full path first to avoid allocation
|
||||||
|
+ if (mkdir_check(path) == 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ copy = strdup(path);
|
||||||
|
+ if (!copy)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rc = mkdir_parent(copy);
|
||||||
|
+ free(copy);
|
||||||
|
+ return rc;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Procedures for locking the serial device using a lock file. */
|
||||||
|
static char lock_file[MAXPATHLEN];
|
||||||
|
|
||||||
|
--- /dev/null
|
||||||
|
+++ pppd/utils_utest.c
|
||||||
|
@@ -0,0 +1,139 @@
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+
|
||||||
|
+#include "pppd-private.h"
|
||||||
|
+
|
||||||
|
+/* globals used in test.c... */
|
||||||
|
+int debug = 1;
|
||||||
|
+int error_count;
|
||||||
|
+int unsuccess;
|
||||||
|
+
|
||||||
|
+/* check if path exists and returns its type */
|
||||||
|
+static int
|
||||||
|
+file_type(char *path)
|
||||||
|
+{
|
||||||
|
+ struct stat statbuf;
|
||||||
|
+
|
||||||
|
+ if (stat(path, &statbuf) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ return statbuf.st_mode & S_IFMT;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+test_simple() {
|
||||||
|
+ if (mkdir_recursive("dir"))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (file_type("dir") != S_IFDIR)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rmdir("dir");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+test_recurse() {
|
||||||
|
+ if (mkdir_recursive("dir/subdir/subsubdir"))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (file_type("dir/subdir/subsubdir") != S_IFDIR)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rmdir("dir/subdir/subsubdir");
|
||||||
|
+
|
||||||
|
+ /* try again with partial existence */
|
||||||
|
+ if (mkdir_recursive("dir/subdir/subsubdir"))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (file_type("dir/subdir/subsubdir") != S_IFDIR)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rmdir("dir/subdir/subsubdir");
|
||||||
|
+ rmdir("dir/subdir");
|
||||||
|
+ rmdir("dir");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+test_recurse_multislash() {
|
||||||
|
+ if (mkdir_recursive("dir/subdir///subsubdir"))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (file_type("dir/subdir/subsubdir") != S_IFDIR)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rmdir("dir/subdir/subsubdir");
|
||||||
|
+ rmdir("dir/subdir");
|
||||||
|
+
|
||||||
|
+ /* try again with partial existence */
|
||||||
|
+ if (mkdir_recursive("dir/subdir/subsubdir///"))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (file_type("dir/subdir/subsubdir") != S_IFDIR)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ rmdir("dir/subdir/subsubdir");
|
||||||
|
+ rmdir("dir/subdir");
|
||||||
|
+ rmdir("dir");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+test_parent_notdir() {
|
||||||
|
+ int fd = open("file", O_CREAT, 0600);
|
||||||
|
+ if (fd < 0)
|
||||||
|
+ return -1;
|
||||||
|
+ close(fd);
|
||||||
|
+
|
||||||
|
+ if (mkdir_recursive("file") == 0)
|
||||||
|
+ return -1;
|
||||||
|
+ if (mkdir_recursive("file/dir") == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ unlink("file");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+main()
|
||||||
|
+{
|
||||||
|
+ char *base_dir = strdup("/tmp/ppp_utils_utest.XXXXXX");
|
||||||
|
+ int failure = 0;
|
||||||
|
+
|
||||||
|
+ if (mkdtemp(base_dir) == NULL) {
|
||||||
|
+ printf("Could not create test directory, aborting\n");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (chdir(base_dir) < 0) {
|
||||||
|
+ printf("Could not enter newly created test dir, aborting\n");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (test_simple()) {
|
||||||
|
+ printf("Could not create simple directory\n");
|
||||||
|
+ failure++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (test_recurse()) {
|
||||||
|
+ printf("Could not create recursive directory\n");
|
||||||
|
+ failure++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (test_recurse_multislash()) {
|
||||||
|
+ printf("Could not create recursive directory with multiple slashes\n");
|
||||||
|
+ failure++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (test_parent_notdir()) {
|
||||||
|
+ printf("Creating over a file appeared to work?\n");
|
||||||
|
+ failure++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ rmdir(base_dir);
|
||||||
|
+ free(base_dir);
|
||||||
|
+ return failure;
|
||||||
|
+}
|
||||||
|
--- pppd/tdb.c.orig
|
||||||
|
+++ pppd/tdb.c
|
||||||
|
@@ -60,8 +60,11 @@
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <signal.h>
|
||||||
|
+
|
||||||
|
+#include "pppd-private.h"
|
||||||
|
#include "tdb.h"
|
||||||
|
#include "spinlock.h"
|
||||||
|
+#include "pathnames.h"
|
||||||
|
|
||||||
|
#define TDB_MAGIC_FOOD "TDB file\n"
|
||||||
|
#define TDB_VERSION (0x26011967 + 6)
|
||||||
|
@@ -1728,7 +1731,12 @@ TDB_CONTEXT *tdb_open_ex(const char *nam
|
||||||
|
goto internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
+again:
|
||||||
|
if ((tdb->fd = open(name, open_flags, mode)) == -1) {
|
||||||
|
+ if ((open_flags & O_CREAT) && errno == ENOENT &&
|
||||||
|
+ mkdir_recursive(PPP_PATH_VARRUN) == 0)
|
||||||
|
+ goto again;
|
||||||
|
+
|
||||||
|
TDB_LOG((tdb, 5, "tdb_open_ex: could not open file %s: %s\n",
|
||||||
|
name, strerror(errno)));
|
||||||
|
goto fail; /* errno set by open(2) */
|
||||||
|
--- pppd/Makefile.in.orig
|
||||||
|
+++ pppd/Makefile.in
|
||||||
|
@@ -92,8 +92,8 @@ POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
sbin_PROGRAMS = pppd$(EXEEXT) $(am__EXEEXT_4)
|
||||||
|
-check_PROGRAMS = utest_crypto$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
|
||||||
|
- $(am__EXEEXT_3)
|
||||||
|
+check_PROGRAMS = utest_crypto$(EXEEXT) utest_utils$(EXEEXT) \
|
||||||
|
+ $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
|
||||||
|
@WITH_SRP_TRUE@am__append_1 = srp-entry
|
||||||
|
@WITH_SRP_TRUE@am__append_2 = srp-entry.8
|
||||||
|
@PPP_WITH_SYSTEM_CA_PATH_TRUE@am__append_3 = -DSYSTEM_CA_PATH='"@SYSTEM_CA_PATH@"'
|
||||||
|
@@ -258,6 +258,13 @@ utest_pppcrypt_LINK = $(LIBTOOL) $(AM_V_
|
||||||
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS) $(utest_pppcrypt_LDFLAGS) $(LDFLAGS) -o \
|
||||||
|
$@
|
||||||
|
+am_utest_utils_OBJECTS = utest_utils-utils.$(OBJEXT) \
|
||||||
|
+ utest_utils-utils_utest.$(OBJEXT)
|
||||||
|
+utest_utils_OBJECTS = $(am_utest_utils_OBJECTS)
|
||||||
|
+utest_utils_LDADD = $(LDADD)
|
||||||
|
+utest_utils_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
+ $(utest_utils_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
@@ -300,7 +307,9 @@ am__depfiles_remade = ./$(DEPDIR)/libppp
|
||||||
|
./$(DEPDIR)/utest_crypto-crypto.Po \
|
||||||
|
./$(DEPDIR)/utest_peap-mppe.Po ./$(DEPDIR)/utest_peap-peap.Po \
|
||||||
|
./$(DEPDIR)/utest_peap-utils.Po \
|
||||||
|
- ./$(DEPDIR)/utest_pppcrypt-crypto_ms.Po
|
||||||
|
+ ./$(DEPDIR)/utest_pppcrypt-crypto_ms.Po \
|
||||||
|
+ ./$(DEPDIR)/utest_utils-utils.Po \
|
||||||
|
+ ./$(DEPDIR)/utest_utils-utils_utest.Po
|
||||||
|
am__mv = mv -f
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
@@ -323,11 +332,11 @@ am__v_CCLD_1 =
|
||||||
|
SOURCES = $(libppp_crypto_la_SOURCES) $(pppd_SOURCES) \
|
||||||
|
$(srp_entry_SOURCES) $(utest_chap_SOURCES) \
|
||||||
|
$(utest_crypto_SOURCES) $(utest_peap_SOURCES) \
|
||||||
|
- $(utest_pppcrypt_SOURCES)
|
||||||
|
+ $(utest_pppcrypt_SOURCES) $(utest_utils_SOURCES)
|
||||||
|
DIST_SOURCES = $(libppp_crypto_la_SOURCES) $(am__pppd_SOURCES_DIST) \
|
||||||
|
$(am__srp_entry_SOURCES_DIST) $(utest_chap_SOURCES) \
|
||||||
|
$(utest_crypto_SOURCES) $(utest_peap_SOURCES) \
|
||||||
|
- $(utest_pppcrypt_SOURCES)
|
||||||
|
+ $(utest_pppcrypt_SOURCES) $(utest_utils_SOURCES)
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
@@ -733,6 +742,9 @@ utest_crypto_LDFLAGS =
|
||||||
|
utest_pppcrypt_SOURCES = crypto_ms.c
|
||||||
|
utest_pppcrypt_CPPFLAGS = -DUNIT_TEST_MSCRYPTO
|
||||||
|
utest_pppcrypt_LDFLAGS =
|
||||||
|
+utest_utils_SOURCES = utils.c utils_utest.c
|
||||||
|
+utest_utils_CPPFLAGS = -DUNIT_TEST
|
||||||
|
+utest_utils_LDFLAGS =
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = pppd.pc
|
||||||
|
pppd_includedir = $(includedir)/pppd
|
||||||
|
@@ -955,6 +967,10 @@ utest_pppcrypt$(EXEEXT): $(utest_pppcryp
|
||||||
|
@rm -f utest_pppcrypt$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(utest_pppcrypt_LINK) $(utest_pppcrypt_OBJECTS) $(utest_pppcrypt_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
+utest_utils$(EXEEXT): $(utest_utils_OBJECTS) $(utest_utils_DEPENDENCIES) $(EXTRA_utest_utils_DEPENDENCIES)
|
||||||
|
+ @rm -f utest_utils$(EXEEXT)
|
||||||
|
+ $(AM_V_CCLD)$(utest_utils_LINK) $(utest_utils_OBJECTS) $(utest_utils_LDADD) $(LIBS)
|
||||||
|
+
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
@@ -1006,6 +1022,8 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utest_peap-peap.Po@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utest_peap-utils.Po@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utest_pppcrypt-crypto_ms.Po@am__quote@ # am--include-marker
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utest_utils-utils.Po@am__quote@ # am--include-marker
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utest_utils-utils_utest.Po@am__quote@ # am--include-marker
|
||||||
|
|
||||||
|
$(am__depfiles_remade):
|
||||||
|
@$(MKDIR_P) $(@D)
|
||||||
|
@@ -1629,6 +1647,34 @@ utest_pppcrypt-crypto_ms.obj: crypto_ms.
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_pppcrypt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utest_pppcrypt-crypto_ms.obj `if test -f 'crypto_ms.c'; then $(CYGPATH_W) 'crypto_ms.c'; else $(CYGPATH_W) '$(srcdir)/crypto_ms.c'; fi`
|
||||||
|
|
||||||
|
+utest_utils-utils.o: utils.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utest_utils-utils.o -MD -MP -MF $(DEPDIR)/utest_utils-utils.Tpo -c -o utest_utils-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utest_utils-utils.Tpo $(DEPDIR)/utest_utils-utils.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='utest_utils-utils.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utest_utils-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
|
||||||
|
+
|
||||||
|
+utest_utils-utils.obj: utils.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utest_utils-utils.obj -MD -MP -MF $(DEPDIR)/utest_utils-utils.Tpo -c -o utest_utils-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utest_utils-utils.Tpo $(DEPDIR)/utest_utils-utils.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='utest_utils-utils.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utest_utils-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
|
||||||
|
+
|
||||||
|
+utest_utils-utils_utest.o: utils_utest.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utest_utils-utils_utest.o -MD -MP -MF $(DEPDIR)/utest_utils-utils_utest.Tpo -c -o utest_utils-utils_utest.o `test -f 'utils_utest.c' || echo '$(srcdir)/'`utils_utest.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utest_utils-utils_utest.Tpo $(DEPDIR)/utest_utils-utils_utest.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils_utest.c' object='utest_utils-utils_utest.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utest_utils-utils_utest.o `test -f 'utils_utest.c' || echo '$(srcdir)/'`utils_utest.c
|
||||||
|
+
|
||||||
|
+utest_utils-utils_utest.obj: utils_utest.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT utest_utils-utils_utest.obj -MD -MP -MF $(DEPDIR)/utest_utils-utils_utest.Tpo -c -o utest_utils-utils_utest.obj `if test -f 'utils_utest.c'; then $(CYGPATH_W) 'utils_utest.c'; else $(CYGPATH_W) '$(srcdir)/utils_utest.c'; fi`
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/utest_utils-utils_utest.Tpo $(DEPDIR)/utest_utils-utils_utest.Po
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils_utest.c' object='utest_utils-utils_utest.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(utest_utils_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o utest_utils-utils_utest.obj `if test -f 'utils_utest.c'; then $(CYGPATH_W) 'utils_utest.c'; else $(CYGPATH_W) '$(srcdir)/utils_utest.c'; fi`
|
||||||
|
+
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
@@ -1918,6 +1964,13 @@ utest_crypto.log: utest_crypto$(EXEEXT)
|
||||||
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
+utest_utils.log: utest_utils$(EXEEXT)
|
||||||
|
+ @p='utest_utils$(EXEEXT)'; \
|
||||||
|
+ b='utest_utils'; \
|
||||||
|
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||||
|
+ --log-file $$b.log --trs-file $$b.trs \
|
||||||
|
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
|
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
utest_chap.log: utest_chap$(EXEEXT)
|
||||||
|
@p='utest_chap$(EXEEXT)'; \
|
||||||
|
b='utest_chap'; \
|
||||||
|
@@ -2080,6 +2133,8 @@ distclean: distclean-am
|
||||||
|
-rm -f ./$(DEPDIR)/utest_peap-peap.Po
|
||||||
|
-rm -f ./$(DEPDIR)/utest_peap-utils.Po
|
||||||
|
-rm -f ./$(DEPDIR)/utest_pppcrypt-crypto_ms.Po
|
||||||
|
+ -rm -f ./$(DEPDIR)/utest_utils-utils.Po
|
||||||
|
+ -rm -f ./$(DEPDIR)/utest_utils-utils_utest.Po
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-hdr distclean-tags
|
||||||
|
@@ -2171,6 +2226,8 @@ maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f ./$(DEPDIR)/utest_peap-peap.Po
|
||||||
|
-rm -f ./$(DEPDIR)/utest_peap-utils.Po
|
||||||
|
-rm -f ./$(DEPDIR)/utest_pppcrypt-crypto_ms.Po
|
||||||
|
+ -rm -f ./$(DEPDIR)/utest_utils-utils.Po
|
||||||
|
+ -rm -f ./$(DEPDIR)/utest_utils-utils_utest.Po
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
9
ppp-peers
Normal file
9
ppp-peers
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#
|
||||||
|
# PPP (plain old modem) options
|
||||||
|
#
|
||||||
|
# Plugin passwordfd enables us to pipe the password to pppd, thus we
|
||||||
|
# don't have to put it into pap-secrets and chap-secrets.
|
||||||
|
#
|
||||||
|
plugin passwordfd.so
|
||||||
|
#
|
||||||
|
noauth
|
34
ppp-pidfiles.patch
Normal file
34
ppp-pidfiles.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From 091e69b4e612427eeb95410dbc73eff10ea5dadb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mike Gilbert <floppym@gentoo.org>
|
||||||
|
Date: Mon, 26 Jun 2023 01:17:16 -0400
|
||||||
|
Subject: [PATCH] Ensure there is a '/' between PPP_PATH_VARRUN and the PID
|
||||||
|
filename (#427)
|
||||||
|
|
||||||
|
Bug: https://bugs.gentoo.org/907311
|
||||||
|
|
||||||
|
Fixes: 66a8c74c3f73 ("Let ./configure control the paths for pppd", 2022-07-30)
|
||||||
|
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
|
||||||
|
---
|
||||||
|
pppd/main.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- pppd/main.c.orig
|
||||||
|
+++ pppd/main.c
|
||||||
|
@@ -888,7 +888,7 @@ create_pidfile(int pid)
|
||||||
|
{
|
||||||
|
FILE *pidfile;
|
||||||
|
|
||||||
|
- slprintf(pidfilename, sizeof(pidfilename), "%s%s.pid",
|
||||||
|
+ slprintf(pidfilename, sizeof(pidfilename), "%s/%s.pid",
|
||||||
|
PPP_PATH_VARRUN, ifname);
|
||||||
|
if ((pidfile = fopen(pidfilename, "w")) != NULL) {
|
||||||
|
fprintf(pidfile, "%d\n", pid);
|
||||||
|
@@ -907,7 +907,7 @@ create_linkpidfile(int pid)
|
||||||
|
if (linkname[0] == 0)
|
||||||
|
return;
|
||||||
|
ppp_script_setenv("LINKNAME", linkname, 1);
|
||||||
|
- slprintf(linkpidfile, sizeof(linkpidfile), "%sppp-%s.pid",
|
||||||
|
+ slprintf(linkpidfile, sizeof(linkpidfile), "%s/ppp-%s.pid",
|
||||||
|
PPP_PATH_VARRUN, linkname);
|
||||||
|
if ((pidfile = fopen(linkpidfile, "w")) != NULL) {
|
||||||
|
fprintf(pidfile, "%d\n", pid);
|
13
ppp-smpppd.patch
Normal file
13
ppp-smpppd.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--- pppd/main.c.orig
|
||||||
|
+++ pppd/main.c
|
||||||
|
@@ -1995,8 +1995,8 @@ forget_child(int pid, int status)
|
||||||
|
if (WIFSIGNALED(status)) {
|
||||||
|
warn("Child process %s (pid %d) terminated with signal %d",
|
||||||
|
(chp? chp->prog: "??"), pid, WTERMSIG(status));
|
||||||
|
- } else if (debug)
|
||||||
|
- dbglog("Script %s finished (pid %d), status = 0x%x",
|
||||||
|
+ } else
|
||||||
|
+ info("Script %s finished (pid %d), status = 0x%x",
|
||||||
|
(chp? chp->prog: "??"), pid,
|
||||||
|
WIFEXITED(status) ? WEXITSTATUS(status) : status);
|
||||||
|
if (chp && chp->done)
|
73
ppp-var_run_resolv_conf.patch
Normal file
73
ppp-var_run_resolv_conf.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
Tue Jul 22 14:16:29 CEST 2008 - hvogel@suse.de
|
||||||
|
|
||||||
|
Move the resolv.conf written by pppd to /var/run [bnc#401648]
|
||||||
|
|
||||||
|
|
||||||
|
--- Changes-2.3.orig
|
||||||
|
+++ Changes-2.3
|
||||||
|
@@ -262,10 +262,10 @@ What was new in ppp-2.3.6.
|
||||||
|
|
||||||
|
* Added new option `usepeerdns', thanks to Nick Walker
|
||||||
|
<nickwalker@email.com>. If the peer supplies DNS addresses, these
|
||||||
|
- will be written to /etc/ppp/resolv.conf. The ip-up script can then
|
||||||
|
- be used to add these addresses to /etc/resolv.conf if desired (see
|
||||||
|
- the ip-up.local.add and ip-down.local.add files in the scripts
|
||||||
|
- directory).
|
||||||
|
+ will be written to /run/ppp_resolv.conf.$INTERFACE_NAME.
|
||||||
|
+ The ip-up script can then be used to add these addresses to
|
||||||
|
+ /etc/resolv.conf if desired (see the ip-up.local.add and
|
||||||
|
+ ip-down.local.add files in the scripts directory).
|
||||||
|
|
||||||
|
* The Solaris ppp driver should now work correctly on SMP systems.
|
||||||
|
|
||||||
|
--- pppd/ipcp.c.orig
|
||||||
|
+++ pppd/ipcp.c
|
||||||
|
@@ -2151,10 +2151,13 @@ static void
|
||||||
|
create_resolv(u_int32_t peerdns1, u_int32_t peerdns2)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
+ char rcfilename[PATH_MAX];
|
||||||
|
|
||||||
|
- f = fopen(PPP_PATH_RESOLV, "w");
|
||||||
|
+ slprintf(rcfilename, sizeof(rcfilename), "%s.%s", PPP_PATH_RESOLV, ifname);
|
||||||
|
+
|
||||||
|
+ f = fopen(rcfilename, "w");
|
||||||
|
if (f == NULL) {
|
||||||
|
- error("Failed to create %s: %m", PPP_PATH_RESOLV);
|
||||||
|
+ error("Failed to create %s: %m", rcfilename);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2165,7 +2168,7 @@ create_resolv(u_int32_t peerdns1, u_int3
|
||||||
|
fprintf(f, "nameserver %s\n", ip_ntoa(peerdns2));
|
||||||
|
|
||||||
|
if (ferror(f))
|
||||||
|
- error("Write failed to %s: %m", PPP_PATH_RESOLV);
|
||||||
|
+ error("Write failed to %s: %m", rcfilename);
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
--- pppd/pathnames.h.orig
|
||||||
|
+++ pppd/pathnames.h
|
||||||
|
@@ -105,7 +105,7 @@
|
||||||
|
#define PPP_PATH_AUTHDOWN PPP_PATH_CONFDIR "/auth-down"
|
||||||
|
#define PPP_PATH_TTYOPT PPP_PATH_CONFDIR "/options."
|
||||||
|
#define PPP_PATH_PEERFILES PPP_PATH_CONFDIR "/peers/"
|
||||||
|
-#define PPP_PATH_RESOLV PPP_PATH_CONFDIR "/resolv.conf"
|
||||||
|
+#define PPP_PATH_RESOLV PPP_PATH_VARRUN "/ppp_resolv.conf"
|
||||||
|
|
||||||
|
#define PPP_PATH_CONNERRS PPP_PATH_VARLOG "/connect-errors"
|
||||||
|
|
||||||
|
--- pppd/pppd.8.orig
|
||||||
|
+++ pppd/pppd.8
|
||||||
|
@@ -1189,8 +1189,8 @@ Ask the peer for up to 2 DNS server addr
|
||||||
|
by the peer (if any) are passed to the /etc/ppp/ip\-up script in the
|
||||||
|
environment variables DNS1 and DNS2, and the environment variable
|
||||||
|
USEPEERDNS will be set to 1. In addition, pppd will create an
|
||||||
|
-/etc/ppp/resolv.conf file containing one or two nameserver lines with
|
||||||
|
-the address(es) supplied by the peer.
|
||||||
|
+/run/ppp_resolv.conf.$INTERFACE file containing one or two nameserver
|
||||||
|
+lines with the address(es) supplied by the peer.
|
||||||
|
.TP
|
||||||
|
.B usepeerwins
|
||||||
|
Ask the peer for up to 2 WINS server addresses. The addresses supplied
|
1093
ppp.changes
Normal file
1093
ppp.changes
Normal file
File diff suppressed because it is too large
Load Diff
157
ppp.keyring
Normal file
157
ppp.keyring
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: SKS 1.1.6
|
||||||
|
Comment: Hostname: sks.pod02.fleetstreetops.com
|
||||||
|
|
||||||
|
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
|
||||||
|
=lvBd
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
7
ppp.pamd
Normal file
7
ppp.pamd
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#%PAM-1.0
|
||||||
|
auth required pam_nologin.so
|
||||||
|
auth include common-auth
|
||||||
|
account include common-account
|
||||||
|
password include common-password
|
||||||
|
session optional pam_keyinit.so revoke
|
||||||
|
session include common-session
|
202
ppp.spec
Normal file
202
ppp.spec
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
#
|
||||||
|
# spec file for package ppp
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%define _group dialout
|
||||||
|
Name: ppp
|
||||||
|
Version: 2.5.0
|
||||||
|
Release: 0
|
||||||
|
Summary: The Point to Point Protocol for Linux
|
||||||
|
License: BSD-3-Clause AND LGPL-2.1-or-later AND GPL-2.0-or-later
|
||||||
|
Group: Productivity/Networking/PPP
|
||||||
|
URL: https://ppp.samba.org
|
||||||
|
Source0: https://download.samba.org/pub/ppp/ppp-%{version}.tar.gz
|
||||||
|
Source1: https://download.samba.org/pub/ppp/ppp-%{version}.tar.gz.asc
|
||||||
|
# templates for secrets
|
||||||
|
Source2: pap-secrets.template
|
||||||
|
Source3: chap-secrets.template
|
||||||
|
# config for pam
|
||||||
|
Source4: ppp.pamd
|
||||||
|
# options and filters files
|
||||||
|
Source5: options
|
||||||
|
Source6: filters
|
||||||
|
# several peers file
|
||||||
|
Source7: modem-peers
|
||||||
|
Source8: pppoe-peers
|
||||||
|
Source9: pppoe-rp-peers
|
||||||
|
Source11: ppp-peers
|
||||||
|
Source12: pptp-peers
|
||||||
|
# modem files
|
||||||
|
Source14: modem.chat
|
||||||
|
Source15: modem@.service
|
||||||
|
Source16: modem.rules
|
||||||
|
# https://www.kernel.org/doc/wot/paulus.html
|
||||||
|
Source17: %{name}.keyring
|
||||||
|
# PATCH-FEATURE-OPENSUSE ppp-smpppd.patch -- Add more log output for smpppd (move from debug to info log)
|
||||||
|
Patch0: ppp-smpppd.patch
|
||||||
|
# PATCH-FIX-UPSTREAM ppp-var_run_resolv_conf.patch -- Move resolv.conf to /var/run
|
||||||
|
Patch3: ppp-var_run_resolv_conf.patch
|
||||||
|
# PATCH-FIX-UPSTREAM ppp-fix-bashisms.patch -- Remove bashism from posix shell interpreted script https://github.com/ppp-project/ppp/issues/348
|
||||||
|
Patch4: ppp-fix-bashisms.patch
|
||||||
|
# PATCH-FIX-UPSTREAM ppp-fork-fix.patch -- fix safe_fork to not close needed file descriptors
|
||||||
|
Patch5: ppp-fork-fix.patch
|
||||||
|
# misc tiny stuff
|
||||||
|
Patch6: ppp-misc.patch
|
||||||
|
Patch7: ppp-mkdir-run.patch
|
||||||
|
Patch8: ppp-pidfiles.patch
|
||||||
|
|
||||||
|
# Of cause any other compatible libc would work, like musl, but 2.24 required for SOL_NETLINK
|
||||||
|
BuildRequires: glibc-devel >= 2.24
|
||||||
|
BuildRequires: libpcap-devel
|
||||||
|
BuildRequires: openssl-devel
|
||||||
|
BuildRequires: pam-devel
|
||||||
|
BuildRequires: pkgconfig(libsystemd)
|
||||||
|
Requires: group(%{_group})
|
||||||
|
Requires(pre): group(%{_group})
|
||||||
|
|
||||||
|
%description
|
||||||
|
The ppp package contains the PPP (Point-to-Point Protocol) daemon,
|
||||||
|
pppd, additional PPP utilities, documentation, and sample files. PPP
|
||||||
|
provides a method for transmitting IP and IPX datagrams over serial
|
||||||
|
point-to-point links, for example over a modem. The PPP daemon handles
|
||||||
|
the details of setting up a PPP link including configuring the network
|
||||||
|
interface and performing the PPP negotiations.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Header Files Required for Developing Plugins for pppd
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: ppp = %{version}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
The package ppp-devel contains C header files required for developing
|
||||||
|
plugins for the pppd.
|
||||||
|
|
||||||
|
%package modem
|
||||||
|
Summary: Automatic redial for any USB modem supported by the kernel
|
||||||
|
Group: System/Kernel
|
||||||
|
Requires: ppp
|
||||||
|
Requires: udev
|
||||||
|
Requires: group(dialout)
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description modem
|
||||||
|
This package contains peer, chat script, systemd unit and udev rule for
|
||||||
|
automatic redial when connecting any USB modem supported by the kernel.
|
||||||
|
For disable automatic redial (by default enabled for all), run
|
||||||
|
sudo systemctl mask modem@0.service
|
||||||
|
For enable again automatic redial, run
|
||||||
|
sudo systemctl unmask modem@0.service
|
||||||
|
"0" after "@" is the serial number of the modem, if you have more than one,
|
||||||
|
you can disable unnecessary or disable everything.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p0
|
||||||
|
|
||||||
|
sed -i -e '1s/local\///' scripts/secure-card
|
||||||
|
find scripts -type f | xargs chmod a-x
|
||||||
|
find -type f -name '*.orig' | xargs rm -f
|
||||||
|
|
||||||
|
%build
|
||||||
|
%configure \
|
||||||
|
--with-runtime-dir=%_rundir/ppp/ \
|
||||||
|
--enable-cbcp \
|
||||||
|
--with-pam \
|
||||||
|
--enable-multilink \
|
||||||
|
--enable-systemd
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
#CHAPMS=y CBCP=y HAS_SHADOW=y USE_PAM=y FILTER=y HAVE_INET6=y HAVE_LOGWTMP=y
|
||||||
|
|
||||||
|
%install
|
||||||
|
make install DESTDIR=%{buildroot}
|
||||||
|
install -dm 750 %{buildroot}%{_sysconfdir}/ppp
|
||||||
|
install -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/ppp/options
|
||||||
|
install -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/ppp/filters
|
||||||
|
install -m 600 %{SOURCE2} %{buildroot}%{_sysconfdir}/ppp/pap-secrets
|
||||||
|
install -m 600 %{SOURCE3} %{buildroot}%{_sysconfdir}/ppp/chap-secrets
|
||||||
|
install -d 755 %{buildroot}%{_sysconfdir}/ppp/peers
|
||||||
|
install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/ppp/peers/modem
|
||||||
|
install -m 644 %{SOURCE8} %{buildroot}%{_sysconfdir}/ppp/peers/pppoe
|
||||||
|
install -m 644 %{SOURCE9} %{buildroot}%{_sysconfdir}/ppp/peers/pppoe-rp
|
||||||
|
install -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/ppp/peers/ppp
|
||||||
|
install -m 644 %{SOURCE12} %{buildroot}%{_sysconfdir}/ppp/peers/pptp
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
|
install -d 755 %{buildroot}%{_pam_vendordir}
|
||||||
|
install -m 644 %{SOURCE4} %{buildroot}%{_pam_vendordir}/ppp
|
||||||
|
%else
|
||||||
|
install -d 755 %{buildroot}%{_sysconfdir}/pam.d
|
||||||
|
install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/pam.d/ppp
|
||||||
|
%endif
|
||||||
|
install -Dm 644 %{SOURCE14} %{buildroot}%{_sysconfdir}/ppp/chatscripts/modem.chat
|
||||||
|
install -Dm 644 %{SOURCE15} %{buildroot}%{_unitdir}/modem@.service
|
||||||
|
install -Dm 644 %{SOURCE16} %{buildroot}%{_udevrulesdir}/90-modem.rules
|
||||||
|
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
|
%pre
|
||||||
|
# Prepare for migration to /usr/etc; save any old .rpmsave
|
||||||
|
for i in pam.d/ppp ; do
|
||||||
|
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i}.rpmsave.old ||:
|
||||||
|
done
|
||||||
|
|
||||||
|
%posttrans
|
||||||
|
# Migration to /usr/etc, restore just created .rpmsave
|
||||||
|
for i in pam.d/ppp ; do
|
||||||
|
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||:
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files
|
||||||
|
%attr(0750,root,root) %dir %{_sysconfdir}/ppp
|
||||||
|
%dir %{_sysconfdir}/ppp/peers
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/options
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/filters
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/pap-secrets
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/chap-secrets
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/eaptls-*
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/openssl.cnf
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/peers/p*
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
|
%{_pam_vendordir}/ppp
|
||||||
|
%else
|
||||||
|
%config(noreplace) %{_sysconfdir}/pam.d/ppp
|
||||||
|
%endif
|
||||||
|
%doc FAQ README* SETUP scripts PLUGINS
|
||||||
|
%{_mandir}/man?/*.?%{ext_man}
|
||||||
|
%attr(-,root,%{_group}) %{_sbindir}/pppd
|
||||||
|
%{_sbindir}/chat
|
||||||
|
%{_sbindir}/pppdump
|
||||||
|
%{_sbindir}/pppstats
|
||||||
|
%{_sbindir}/pppoe-discovery
|
||||||
|
%dir %{_libdir}/pppd
|
||||||
|
%dir %{_libdir}/pppd/%{version}
|
||||||
|
%attr(0755,root,root) %{_libdir}/pppd/%{version}/*.so
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{_includedir}/pppd
|
||||||
|
%_libdir/pkgconfig/*
|
||||||
|
%{_libdir}/pppd/%{version}/*.la
|
||||||
|
|
||||||
|
%files modem
|
||||||
|
%dir %{_sysconfdir}/ppp/peers
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/peers/modem
|
||||||
|
%dir %{_sysconfdir}/ppp/chatscripts
|
||||||
|
%config(noreplace) %{_sysconfdir}/ppp/chatscripts/modem.chat
|
||||||
|
%{_unitdir}/modem@.service
|
||||||
|
%dir %{_udevrulesdir}
|
||||||
|
%{_udevrulesdir}/90-modem.rules
|
||||||
|
|
||||||
|
%changelog
|
11
pppoatm-peers
Normal file
11
pppoatm-peers
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# PPP over ATM options
|
||||||
|
#
|
||||||
|
plugin pppoatm.so
|
||||||
|
#
|
||||||
|
# Plugin passwordfd enables us to pipe the password to pppd, thus we
|
||||||
|
# don't have to put it into pap-secrets and chap-secrets.
|
||||||
|
#
|
||||||
|
plugin passwordfd.so
|
||||||
|
#
|
||||||
|
noauth
|
19
pppoe-peers
Normal file
19
pppoe-peers
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#
|
||||||
|
# PPP over Ethernet options (using pppoe plugin)
|
||||||
|
#
|
||||||
|
plugin pppoe.so
|
||||||
|
#
|
||||||
|
# Plugin passwordfd enables us to pipe the password to pppd, thus we
|
||||||
|
# don't have to put it into pap-secrets and chap-secrets.
|
||||||
|
#
|
||||||
|
plugin passwordfd.so
|
||||||
|
#
|
||||||
|
noauth
|
||||||
|
# pppoe has a lower mtu/mru
|
||||||
|
mtu 1492
|
||||||
|
mru 1492
|
||||||
|
# switch off all compressions (this is a must)
|
||||||
|
nopcomp
|
||||||
|
# this is recommended
|
||||||
|
novjccomp
|
||||||
|
noccp
|
17
pppoe-rp-peers
Normal file
17
pppoe-rp-peers
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#
|
||||||
|
# PPP over Ethernet options (using roaring pinguin external program)
|
||||||
|
#
|
||||||
|
# Plugin passwordfd enables us to pipe the password to pppd, thus we
|
||||||
|
# don't have to put it into pap-secrets and chap-secrets.
|
||||||
|
#
|
||||||
|
plugin passwordfd.so
|
||||||
|
#
|
||||||
|
noauth
|
||||||
|
# pppoe has a lower mtu/mru
|
||||||
|
mtu 1492
|
||||||
|
mru 1492
|
||||||
|
# switch off all compressions (this is a must)
|
||||||
|
nopcomp
|
||||||
|
# this is recommended
|
||||||
|
novjccomp
|
||||||
|
noccp
|
15
pptp-peers
Normal file
15
pptp-peers
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#
|
||||||
|
# PPTP options
|
||||||
|
#
|
||||||
|
# Plugin passwordfd enables us to pipe the password to pppd, thus we
|
||||||
|
# don't have to put it into pap-secrets and chap-secrets.
|
||||||
|
#
|
||||||
|
plugin passwordfd.so
|
||||||
|
#
|
||||||
|
noauth
|
||||||
|
linkname adsl
|
||||||
|
nocrtscts
|
||||||
|
local
|
||||||
|
# switch off all compressions (this is a must)
|
||||||
|
noaccomp
|
||||||
|
nopcomp
|
Loading…
x
Reference in New Issue
Block a user