Skip to content

Commit ff28c30

Browse files
paulusmackcarlsonj
andauthored
Bring Solaris port back up to date (#525)
- Updated READMEs - Disabled MPPE support for Solaris - Fixed compilation error in ccp.c with MPPE disabled - Use OS-provided drivers and associated include files - Tested on OpenIndiana Hipster (Illumos) Signed-off-by: James Carlson <[email protected]> Signed-off-by: Paul Mackerras <[email protected]> Co-authored-by: James Carlson <[email protected]>
1 parent d540579 commit ff28c30

File tree

11 files changed

+74
-1212
lines changed

11 files changed

+74
-1212
lines changed

README

+7-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ Linux distributions. The Linux kernel code supports using PPP over
3535
things other than serial ports, such as PPP over Ethernet and PPP over
3636
ATM.
3737

38+
Similarly, the kernel code for Solaris is no longer distributed with
39+
this package. See the Illumos web site for pointers to the kernel
40+
module source code and build environment.
41+
42+
https://www.illumos.org/
43+
3844

3945
Installation.
4046
*************
@@ -172,7 +178,7 @@ to [email protected], or report them to the maintainer for the
172178
port for the operating system you are using:
173179

174180
Linux Paul Mackerras <[email protected]>
175-
Solaris James Carlson <carlson@workingcode.com>
181+
Solaris James Carlson <carlsonj@workingcode.com>
176182

177183

178184
Copyrights:

README.sol2

+48-200
Original file line numberDiff line numberDiff line change
@@ -1,215 +1,69 @@
1-
NOTE: These instructions are out of date.
2-
3-
This file describes the installation process for ppp-2.4 on systems
4-
running Solaris. The Solaris and SVR4 ports share a lot of code but
5-
are not identical. The STREAMS kernel modules and driver for Solaris
6-
are in the solaris directory (and use some code from the modules
7-
directory).
8-
9-
NOTE: Although the kernel driver and modules have been designed to
10-
operate correctly on SMP systems, they have not been extensively
11-
tested on SMP machines. Some users of SMP Solaris x86 systems have
12-
reported system problems apparently linked to the use of previous
13-
versions of this software. I believe these problems have been fixed.
14-
15-
16-
Installation.
1+
Introduction.
172
*************
183

19-
1. Run the configure script and make the user-level programs and the
20-
kernel modules.
21-
22-
./configure
23-
make
24-
25-
The configure script will automatically find Sun's cc if it's in
26-
the standard location (/opt/SUNWspro/bin/cc). If you do not have
27-
Sun's WorkShop compiler, configure will attempt to use 'gcc'. If
28-
this is found and you have a 64 bit kernel, it will check that gcc
29-
accepts the "-m64" option, which is required to build kernel
30-
modules.
31-
32-
You should not have to edit the Makefiles for most ordinary cases.
33-
34-
2. Install the programs and kernel modules: as root, do
35-
36-
make install
37-
38-
This installs pppd, chat and pppstats in /usr/local/bin and the
39-
kernel modules in /kernel/drv and /kernel/strmod, and creates the
40-
/etc/ppp directory and populates it with default configuration
41-
files. You can change the installation directories by editing
42-
solaris/Makedefs. If you have a 64 bit kernel, the 64-bit drivers
43-
are installed in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9.
44-
45-
If your system normally has only one network interface at boot
46-
time, the default Solaris system startup scripts will disable IP
47-
forwarding in the IP kernel module. This will prevent the remote
48-
machine from using the local machine as a gateway to access other
49-
hosts. The solution is to create an /etc/ppp/ip-up script
50-
containing something like this:
51-
52-
#!/bin/sh
53-
/usr/sbin/ndd -set /dev/ip ip_forwarding 1
54-
55-
See the man page for ip(7p) for details.
56-
57-
Integrated pppd
58-
***************
4+
This file describes the installation process for ppp-2.5 on systems
5+
running an OpenSolaris-derived OS, such as Illumos or OpenIndiana.
6+
For these systems, the STREAMS kernel modules are supplied with the
7+
OS itself and are used as-is by this distribution. For more
8+
information on these distributions (including kernel source) see:
599

60-
Solaris 8 07/01 (Update 5) and later have an integrated version of
61-
pppd, known as "Solaris PPP 4.0," and is based on ppp-2.4.0. This
62-
version comes with the standard Solaris software distribution and is
63-
supported by Sun. It is fully tested in 64-bit and SMP modes, and
64-
with bundled and unbundled synchronous drivers. Solaris 8 10/01
65-
(Update 6) and later includes integrated PPPoE client and server
66-
support, with kernel-resident data handling. See pppd(1M).
10+
https://www.illumos.org/
11+
https://illumos.org/docs/about/distro/
6712

68-
The feature is part of the regular full installation, and is
69-
provided by these packages:
13+
For Oracle Solaris systems, either use the vendor-supplied PPP
14+
implementation ("Solaris PPP 4.0" based on pppd-2.4.0), or download
15+
an older version of the pppd sources here:
7016

71-
SUNWpppd - 32-bit mode kernel drivers
72-
SUNWpppdr - root-resident /etc/ppp config samples
73-
SUNWpppdu - /usr/bin/pppd itself, plus chat
74-
SUNWpppdx - 64-bit mode kernel drivers
75-
SUNWpppdt - PPPoE support
76-
SUNWpppg - GPL'd optional 'pppdump' and plugins
77-
SUNWpppgS - Source for GPL'd optional features
17+
https://download.samba.org/pub/ppp/
7818

79-
Use the open source version of pppd if you wish to recompile to add
80-
new features or to experiment with the code. Production systems,
81-
however, should run the Sun-supplied version, if at all possible.
19+
The last version known to compile and run correctly on Oracle
20+
Solaris 10 is pppd-2.4.8. It may be possible to compile and use
21+
newer versions on either Solaris 11 or by installing third-party
22+
compilers; this has not been tested.
8223

83-
You can run both versions on a single system if you wish. The
84-
Solaris PPP 4.0 interfaces are named "spppN," while this open source
85-
version names its interfaces as "pppN". The STREAMS modules are
86-
similarly separated. The Sun-supplied pppd lives in /usr/bin/pppd,
87-
while the open source version installs (by default) in
88-
/usr/local/bin/pppd.
8924

90-
Dynamic STREAMS Re-Plumbing Support.
91-
************************************
92-
93-
Solaris 8 (and later) includes dynamic re-plumbing support. With
94-
this feature, modules below ip can be inserted, or removed, without
95-
having the ip stream be unplumbed, and re-plumbed again. All state
96-
in ip for the interface will be preserved as modules are added or
97-
removed. Users can install (or upgrade) modules such as firewall,
98-
bandwidth manager, cache manager, tunneling, etc., without shutting
99-
the interface down.
100-
101-
To support this, ppp driver now uses /dev/udp instead of /dev/ip for
102-
the ip stream. The interface stream (where ip module pushed on top
103-
of ppp) is then I_PLINK'ed below the ip stream. /dev/udp is used
104-
because STREAMS will not let a driver be PLINK'ed under itself, and
105-
/dev/ip is typically the driver at the bottom of the tunneling
106-
interfaces stream. The mux ids of the ip streams are then added
107-
using SIOCSxIFMUXID ioctl.
108-
109-
Users will be able to see the modules on the interface stream by,
110-
for example:
111-
112-
pikapon# ifconfig ppp modlist
113-
0 ip
114-
1 ppp
115-
116-
Or arbitrarily if bandwidth manager and firewall modules are installed:
117-
118-
pikapon# ifconfig hme0 modlist
119-
0 arp
120-
1 ip
121-
2 ipqos
122-
3 firewall
123-
4 hme
124-
125-
Snoop Support.
126-
**************
127-
128-
This version includes support for /usr/sbin/snoop. Tests have been
129-
done on Solaris 7 through 9. Only IPv4 and IPv6 packets will be sent
130-
up to stream(s) marked as promiscuous (i.e., those used by snoop).
131-
132-
Users will be able to see the packets on the ppp interface by, for
133-
example:
134-
135-
snoop -d ppp0
136-
137-
See the man page for snoop(1M) for details.
138-
139-
IPv6 Support.
25+
Installation.
14026
*************
14127

142-
This is for Solaris 8 and later.
143-
144-
This version has been tested under Solaris 8 and 9 running IPv6.
145-
Interoperability testing has only been done between Solaris machines
146-
in terms of the IPV6 NCP. An additional command line option for the
147-
pppd daemon has been added: ipv6cp-use-persistent.
28+
1. Make sure you have a suitable compiler installed. This package was
29+
tested with "pkg install gcc-14" but other modern compilers should
30+
work.
14831

149-
By default, compilation for IPv6 support is not enabled. Uncomment
150-
the necessary lines in pppd/Makefile.sol2 to enable it. Once done,
151-
the quickest way to get IPv6 running is to add the following
152-
somewhere in the command line option:
32+
2. Run the configure script and build the package.
15333

154-
+ipv6 ipv6cp-use-persistent
34+
./configure --with-runtime-dir=/var/run --with-logfile-dir=/var/log/ppp
35+
make
15536

156-
The persistent id for the link-local address was added to conform to
157-
RFC 2472; such that if there's an EUI-48 available, use that to make
158-
up the EUI-64. As of now, the Solaris implementation extracts the
159-
EUI-48 id from the Ethernet's MAC address (the ethernet interface
160-
needs to be up). Future work might support other ways of obtaining
161-
a unique yet persistent id, such as EEPROM serial numbers, etc.
37+
The configure script will automatically find the compiler if it's in
38+
the standard location (/usr/bin/gcc). By default, everything will be
39+
installed in /usr/local. Use "--prefix" to choose a different
40+
installation directory if desired. Use "./configure -h" to see other
41+
options.
16242

163-
There need not be any up/down scripts for ipv6,
164-
e.g. /etc/ppp/ipv6-up or /etc/ppp/ipv6-down, to trigger IPv6
165-
neighbor discovery for auto configuration and routing. The in.ndpd
166-
daemon will perform all of the necessary jobs in the
167-
background. /etc/inet/ndpd.conf can be further customized to enable
168-
the machine as an IPv6 router. See the man page for in.ndpd(1M) and
169-
ndpd.conf(4) for details.
43+
3. Install the programs.
17044

171-
Below is a sample output of "ifconfig -a" with persistent link-local
172-
address. Note the UNNUMBERED flag is set because hme0 and ppp0 both
173-
have identical link-local IPv6 addresses:
45+
sudo make install
17446

175-
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
176-
inet 127.0.0.1 netmask ff000000
177-
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
178-
inet 129.146.86.248 netmask ffffff00 broadcast 129.146.86.255
179-
ether 8:0:20:8d:38:c1
180-
lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
181-
inet6 ::1/128
182-
hme0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
183-
ether 8:0:20:8d:38:c1
184-
inet6 fe80::a00:20ff:fe8d:38c1/10
185-
hme0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
186-
inet6 fec0::56:a00:20ff:fe8d:38c1/64
187-
hme0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
188-
inet6 2000::56:a00:20ff:fe8d:38c1/64
189-
hme0:3: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
190-
inet6 2::56:a00:20ff:fe8d:38c1/64
191-
ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 12
192-
inet 172.16.1.1 --> 172.16.1.2 netmask ffffff00
193-
ppp0: flags=2202851<UP,POINTOPOINT,RUNNING,MULTICAST,UNNUMBERED,NONUD,IPv6> mtu 1500 index 12
194-
inet6 fe80::a00:20ff:fe8d:38c1/10 --> fe80::a00:20ff:fe7a:24fb
47+
This installs the following:
19548

196-
Note also that a plumbed ipv6 interface stream will exist throughout
197-
the entire PPP session in the case where the peer rejects IPV6CP,
198-
which further causes the interface state to stay down. Unplumbing
199-
will happen when the daemon exits. This is done by design and is not
200-
a bug.
49+
/usr/local/sbin pppd, chat, pppstats, pppdump
50+
/usr/local/share/man/man8 man pages
51+
/usr/local/include/pppd plug-in header files
52+
/usr/local/lib/pppd/$VER plug-in modules
53+
/usr/local/etc/ppp example configuration files
54+
55+
If your system normally has only one network interface at boot
56+
time, the default Solaris system startup scripts will disable IP
57+
forwarding in the IP kernel module. This will prevent the remote
58+
machine from using the local machine as a gateway to access other
59+
hosts. The solution is to create an /etc/ppp/ip-up script
60+
containing something like this:
20161

202-
64-bit Support.
203-
***************
62+
#!/bin/sh
63+
/usr/sbin/ndd -set /dev/ip ip_forwarding 1
20464

205-
This version has been tested under Solaris 7 through 9 in both 32-
206-
and 64-bit environments (Ultra class machines). Installing the
207-
package by executing "make install" will result in additional files
208-
residing in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9
209-
subdirectories.
65+
See the man page for ip(7p) for details.
21066

211-
64-bit modules and driver have been compiled and tested using Sun's
212-
cc and gcc.
21367

21468
Synchronous Serial Support.
21569
***************************
@@ -220,14 +74,8 @@ Synchronous Serial Support.
22074
was tested with a Cisco router.
22175

22276
The ppp daemon does not directly support controlling the serial
223-
interface. It relies on the /usr/sbin/syncinit command to
224-
initialize HDLC mode and clocking.
225-
226-
There is a confirmed bug with NRZ/NRZI mode in the /dev/se_hdlc
227-
driver, and Solaris patch 104596-11 is needed to correct it.
228-
(However this patch seems to introduce other serial problems. If
229-
you don't apply the patch, the workaround is to change the nrzi mode
230-
to yes or no, whichever works.)
77+
interface. It relies on the OS-supplied /usr/sbin/syncinit command
78+
to initialize HDLC mode and clocking.
23179

23280
How to start pppd with synchronous support:
23381

configure.ac

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ AM_CONDITIONAL(PPP_WITH_CHAPMS, test "x${enable_microsoft_extensions}" != "xno")
138138
AM_COND_IF([PPP_WITH_CHAPMS],
139139
AC_DEFINE([PPP_WITH_CHAPMS], 1, [Have Microsoft CHAP support]))
140140

141-
AM_CONDITIONAL(PPP_WITH_MPPE, test "x${enable_microsoft_extensions}" != "xno")
141+
AM_CONDITIONAL(PPP_WITH_MPPE, test "x${build_sunos}" != "xyes" && test "x${enable_microsoft_extensions}" != "xno")
142142
AM_COND_IF([PPP_WITH_MPPE],
143143
AC_DEFINE([PPP_WITH_MPPE], 1, [Have Microsoft MPPE support]))
144144

include/Makefile.am

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
EXTRA_HEADERS = \
22
linux/ppp-comp.h \
3-
linux/ppp_defs.h \
4-
net/ppp-comp.h \
5-
net/ppp_defs.h \
6-
net/pppio.h \
7-
net/vjcompress.h
3+
linux/ppp_defs.h
84

95
EXTRA_DIST = \
106
$(EXTRA_HEADERS)

0 commit comments

Comments
 (0)