pppoe support c/o below0

SVN-Revision: 88
This commit is contained in:
Mike Baker 2004-07-12 03:36:25 +00:00
parent a33ddbdadc
commit beac990354
9 changed files with 294 additions and 0 deletions

View file

@ -0,0 +1,103 @@
OPENWRT PPPOECD NOTES
=====================
1. GENERAL
----------
This package is used to estabilish basic connection to the
Internet via DSL/ADSL modems. This is also known as the
PPPoE or PPP-over-Ethernet connection.
The PPPOECD program included in the OpenWrt distribution is a
modified version of the PPPOECD that is present in the original
Linksys firmware.
This modified version is directly supported by the OpenWrt
startup scripts.
2. BUILDING
-----------
If you have a pre-compiled PPPOECD package, skip this section.
PPPOECD can be built in two ways. As an integrated part
of the OpenWrt FLASH image or as an .ipk package that can
be installed separately.
To build PPPOECD as an embedded component, add "pppoecd" to the
TARGETS variable in the main OpenWrt Makefile before the
"openwrt-bin" value.
To build as a standalone package, add "pppoecd" to the
PACKAGES variable in the main OpenWrt Makefile.
3. NVRAM variables
------------------
In order for the PPPoE link to be established by the networking
scripts the following NVRAM variables must be present:
wan_ifname Should be set to: ppp0
wan_proto Should be set to: pppoe
pppoe_ifname Set it to the WAN interface on which the PPPoE
is to function. On a 2.0 or a GS model it is
usually vlan1. The 1.0 and 1.1 models used vlan2.
ppp_username User name for your PPPoE connection.
ppp_passwd Password for the connection.
ppp_redialperiod Time between reconnect attempts.
Usualy set to 30.
ppp_idletime Time the link has to stay dead before reconnecting.
Usually set to 5.
wan_mtu The Maxumum Transfer Unit for the PPPoE connection.
Typically 1492.
Please consult the OpenWrt WIKI or the forum for more
information on NVRAM variables.
4. STARTUP / SHUTDOWN
---------------------
OpenWrt will attempt to connect using PPPOECD when starting up.
The script responsible for that is /etc/init.d/S40network.
You can also manually start the PPPOECD by doing:
. /etc/functions.sh; ifup wan
Similarly you can shutdown the PPPOECD by doing:
. /etc/functions.sh; ifdown wan
5. CONFIGURATION
----------------
PPPoE firewall configuration is the standard OpenWrt configuration
in /etc/init.d/S45firewall that applies to all the other types
of connections to the Internet.
Additional actions can be performed when connecting or disconnecting
by modifying "ip-up" and "ip-down" scripts in the /etc/ppp directory.
When connecting, PPPOECD creates /tmp/resolv.conf file that contains
DNS server entries as supplied by the ISP. The standard ip-up
script will also add a default route leading via the PPPoE link.
6. DIFFERENCES FROM THE ORIGINAL PPPOECD
----------------------------------------
The main difference is the location of files. Original Linksys
PPPOECD operated almost exclusively in the /tmp/ppp directory. This
however prevents any persistent configuration of the program via
ip-up or ip-down scripts. Also the program itself was located in
/usr/sbin whereas OpenWrt scripts expect it to be in /sbin directory.

View file

@ -0,0 +1,73 @@
# build the Linksys pppoecd
# Note that this patches the linksys pppd before patching pppoecd.
# The pppd patch changes the pathnames that pppoecd will use.
# In an attempt to avoid conflicts the marker file is called
# .patched-pppoecd in the pppd directory.
PPPD_DIR=$(BUILD_DIR)/WRT54GS/release/src/router/ppp/pppd
PPPD_PATCH=$(SOURCE_DIR)/pppoecd-pathnames.patch
PPPOECD_DIR=$(BUILD_DIR)/WRT54GS/release/src/router/ppp/pppoecd
PPPOECD_PATCH=$(SOURCE_DIR)/pppoecd.patch
PPPOECD_BIN=$(TARGET_DIR)/sbin/pppoecd
PPPOECD_IPK_DIR=$(BUILD_DIR)/pppoecd-1.0
PPPOECD_PACKAGE=$(BUILD_DIR)/pppoecd_1.0_mipsel.ipk
PPPOECD_IPK_BIN=$(PPPOECD_IPK_DIR)/sbin/pppoecd
# patch pppd for the openwrt compatible path names
$(PPPD_DIR)/.patched-pppoecd: $(BUILD_DIR)/WRT54GS/.source
cat $(PPPD_PATCH) | patch -d $(PPPD_DIR)
touch $(PPPD_DIR)/.patched-pppoecd
# patch the pppoecd itself for GCC3.x compatibility and to move pppoecd to /sbin
$(PPPOECD_DIR)/.patched: $(PPPD_DIR)/.patched-pppoecd
cat $(PPPOECD_PATCH) | patch -d $(PPPOECD_DIR)
touch $(PPPOECD_DIR)/.patched
# build the pppoecd binary for the ipk version
$(PPPOECD_IPK_BIN): $(PPPOECD_DIR)/.patched
mkdir -p $(PPPOECD_IPK_DIR)/etc/ppp
cp $(SOURCE_DIR)/pppoecd.ip-up $(PPPOECD_IPK_DIR)/etc/ppp/ip-up
chmod a+x $(PPPOECD_IPK_DIR)/etc/ppp/ip-up
$(MAKE) -C $(PPPOECD_DIR) CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
SRCBASE=$(OPENWRT_SRCBASE) INSTALLDIR=$(PPPOECD_IPK_DIR) LIBDIR=$(UCLIBC_DIR)/lib \
STRIP="$(STRIP)" \
install
# setup ipkg control files
$(PPPOECD_IPK_DIR)/CONTROL/control:
mkdir -p $(PPPOECD_IPK_DIR)/CONTROL
cp $(SOURCE_DIR)/pppoecd.prerm $(PPPOECD_IPK_DIR)/CONTROL/prerm
chmod a+x $(PPPOECD_IPK_DIR)/CONTROL/prerm
cp $(SOURCE_DIR)/pppoecd.postrm $(PPPOECD_IPK_DIR)/CONTROL/postrm
chmod a+x $(PPPOECD_IPK_DIR)/CONTROL/postrm
cp $(SOURCE_DIR)/pppoecd.conffiles $(PPPOECD_IPK_DIR)/CONTROL/conffiles
cp $(SOURCE_DIR)/pppoecd.control $(PPPOECD_IPK_DIR)/CONTROL/control
# build the ipk package
$(PPPOECD_PACKAGE): $(PPPOECD_IPK_BIN) $(PPPOECD_IPK_DIR)/CONTROL/control
cd $(BUILD_DIR); $(STAGING_DIR)/bin/ipkg-build -c -o root -g root pppoecd-1.0
# main target for building the ipk version
pppoecd-ipk: $(PPPOECD_PACKAGE)
# the embedded binary
$(PPPOECD_BIN): $(PPPOECD_DIR)/.patched
mkdir $(TARGET_DIR)/etc/ppp
cp $(SOURCE_DIR)/pppoecd.ip-up $(TARGET_DIR)/etc/ppp/ip-up
chmod a+x $(TARGET_DIR)/etc/ppp/ip-up
$(MAKE) -C $(PPPOECD_DIR) CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
SRCBASE=$(OPENWRT_SRCBASE) INSTALLDIR=$(TARGET_DIR) LIBDIR=$(UCLIBC_DIR)/lib \
STRIP="$(STRIP)" \
install
# main target for building the embedded version
pppoecd: $(PPPOECD_BIN)
pppoecd-clean:
-$(MAKE) -C $(PPPOECD_DIR) clean
rm -f $(TARGET_DIR)/usr/sbin/pppoecd
rm -rf $(PPPOECD_IPK_DIR)
rm -f $(PPPOECD_PACKAGE)

View file

@ -0,0 +1,66 @@
--- pathnames.h.orig Tue Oct 14 03:09:53 2003
+++ pathnames.h Sat Jul 10 21:04:34 2004
@@ -9,37 +9,37 @@
#else /* HAVE_PATHS_H */
#ifndef _PATH_VARRUN
-#define _PATH_VARRUN "/tmp/ppp/"
+#define _PATH_VARRUN "/var/run"
#endif
#define _PATH_DEVNULL "/dev/null"
#endif /* HAVE_PATHS_H */
#ifndef _ROOT_PATH
-#define _ROOT_PATH
+#define _ROOT_PATH "/etc"
#endif
-#define _PATH_UPAPFILE _ROOT_PATH "/tmp/ppp/pap-secrets"
-#define _PATH_CHAPFILE _ROOT_PATH "/tmp/ppp/chap-secrets"
-#define _PATH_SYSOPTIONS _ROOT_PATH "/tmp/ppp/options"
-#define _PATH_IPUP _ROOT_PATH "/tmp/ppp/ip-up"
-#define _PATH_IPDOWN _ROOT_PATH "/tmp/ppp/ip-down"
-#define _PATH_AUTHUP _ROOT_PATH "/tmp/ppp/auth-up"
-#define _PATH_AUTHDOWN _ROOT_PATH "/tmp/ppp/auth-down"
-#define _PATH_TTYOPT _ROOT_PATH "/tmp/ppp/options."
-#define _PATH_CONNERRS _ROOT_PATH "/tmp/ppp/connect-errors"
-#define _PATH_PEERFILES _ROOT_PATH "/tmp/ppp/peers/"
-#define _PATH_RESOLV _ROOT_PATH "/tmp/ppp/resolv.conf"
+#define _PATH_UPAPFILE _ROOT_PATH "/ppp/pap-secrets"
+#define _PATH_CHAPFILE _ROOT_PATH "/ppp/chap-secrets"
+#define _PATH_SYSOPTIONS _ROOT_PATH "/ppp/options"
+#define _PATH_IPUP _ROOT_PATH "/ppp/ip-up"
+#define _PATH_IPDOWN _ROOT_PATH "/ppp/ip-down"
+#define _PATH_AUTHUP _ROOT_PATH "/ppp/auth-up"
+#define _PATH_AUTHDOWN _ROOT_PATH "/ppp/auth-down"
+#define _PATH_TTYOPT _ROOT_PATH "/ppp/options."
+#define _PATH_CONNERRS "/tmp/connect-errors"
+#define _PATH_PEERFILES _ROOT_PATH "/ppp/peers/"
+#define _PATH_RESOLV "/tmp/resolv.conf"
#define _PATH_USEROPT ".ppprc"
#ifdef INET6
-#define _PATH_IPV6UP _ROOT_PATH "/tmp/ppp/ipv6-up"
-#define _PATH_IPV6DOWN _ROOT_PATH "/tmp/ppp/ipv6-down"
+#define _PATH_IPV6UP _ROOT_PATH "/ppp/ipv6-up"
+#define _PATH_IPV6DOWN _ROOT_PATH "/ppp/ipv6-down"
#endif
#ifdef IPX_CHANGE
-#define _PATH_IPXUP _ROOT_PATH "/tmp/ppp/ipx-up"
-#define _PATH_IPXDOWN _ROOT_PATH "/tmp/ppp/ipx-down"
+#define _PATH_IPXUP _ROOT_PATH "/ppp/ipx-up"
+#define _PATH_IPXDOWN _ROOT_PATH "/ppp/ipx-down"
#endif /* IPX_CHANGE */
#ifdef __STDC__
@@ -48,7 +48,7 @@
#ifdef HAVE_PATHS_H
#define _PATH_PPPDB "/var/run/pppd.tdb"
#else
-#define _PATH_PPPDB "/tmp/ppp/pppd.tdb"
+#define _PATH_PPPDB "/tmp/pppd.tdb"
#endif
#endif /* __STDC__ */

View file

@ -0,0 +1 @@
/etc/ppp/ip-up

View file

@ -0,0 +1,10 @@
Package: pppoecd
Priority: optional
Version: 1.0
Architecture: mipsel
Maintainer: below0
Section: net
Source: Embedded in the main openwrt tarball
Description: Linksys PPPoE daemon for access to internet using DSL modems

View file

@ -0,0 +1,5 @@
#!/bin/sh
# set default route
/sbin/route add default gw $IPREMOTE

View file

@ -0,0 +1,27 @@
--- pppoe.c.orig Sat Jul 10 20:55:38 2004
+++ pppoe.c Sat Jul 10 20:55:55 2004
@@ -131,8 +131,7 @@
if (pppoe_srv_name !=NULL) {
if (strlen (pppoe_srv_name) > 255) {
- poe_error (ses," Service name too long
- (maximum allowed 256 chars)");
+ poe_error (ses," Service name too long (maximum allowed 256 chars)");
poe_die(-1);
}
ses->filt->stag = make_filter_tag(PTT_SRV_NAME,
--- Makefile.orig Sun Jul 11 03:26:49 2004
+++ Makefile Sun Jul 11 03:27:18 2004
@@ -68,9 +68,9 @@
all: pppoecd
install: all
- install -d $(INSTALLDIR)/usr/sbin
- install -m 755 pppoecd $(INSTALLDIR)/usr/sbin
- $(STRIP) $(INSTALLDIR)/usr/sbin/pppoecd
+ install -d $(INSTALLDIR)/sbin
+ install -m 755 pppoecd $(INSTALLDIR)/sbin
+ $(STRIP) $(INSTALLDIR)/sbin/pppoecd
pppoecd: $(OBJS)
$(LD) -r -o .$@ $^ $(LIBCRYPT)

View file

@ -0,0 +1,4 @@
#!/bin/sh
rm -rf /etc/ppp

View file

@ -0,0 +1,5 @@
#!/bin/sh
killall pppoecd
sleep 3
killall -9 pppoecd