1# LIC: GPL 2 3RP-PPPoE now supports kernel-mode PPPoE on Linux kernels 2.4 or newer. 4However, the default "./go" build procedure does not make kernel-mode 5support. 6 7Here's what you need to do: 8 90) Make sure you are running kernel 2.4 or newer on the machine you 10will build rp-pppoe on. You must have the following kernel 11configuration settings: 12 13 CONFIG_PPP=m or CONFIG_PPP=y 14 CONFIG_PPP_ASYNC=m or CONFIG_PPP_ASYNC=y 15 CONFIG_PPP_SYNC_TTY=m or CONFIG_PPP_SYNC_TTY=y 16 CONFIG_PPP_DEFLATE=m or CONFIG_PPP_DEFLATE=y 17 CONFIG_PPP_BSDCOMP=m or CONFIG_PPP_BSDCOMP=y 18 CONFIG_PPPOE=m or CONFIG_PPPOE=y 19 CONFIG_N_HDLC=m or CONFIG_N_HDLC=y 20 CONFIG_UNIX98_PTYS=y 21 22You also need a /dev/ppp file: 23 24 mknod --mode=664 /dev/ppp c 108 0 25 26You might want to add these lines to /etc/modules.conf: 27 28 alias char-major-108 ppp_generic 29 alias tty-ldisc-3 ppp_async 30 alias tty-ldisc-13 n_hdlc 31 alias tty-ldisc-14 ppp_synctty 32 alias net-pf-24 pppoe 33 341) If you are running pppd older than 2.4.0, check out the latest 35version of the PPP software from the CVS repository at cvs.samba.org. 36Here's how to do this: 37 38 cvs -d :pserver:cvs@pserver.samba.org:/cvsroot login 39 # When prompted for a password, type "cvs" 40 41 # Change to the directory in which you want to store the PPP source 42 # code. 43 cd /path/to/checked/out/sources 44 45 # Check out the source 46 cvs -z5 -d :pserver:cvs@pserver.samba.org:/cvsroot co ppp 47 48If you are running pppd 2.4.0 or newer, and have the pppd development 49headers installed, you can skip steps 1 and 2. 50 512) The source gets checked out into a subdirectory called ppp. If 52the source ends up in /path/to/checked/out/sources/ppp, then call 53that path $PPPDIR. 54 55Build and install the checked-out ppp code according to its instructions. 56 573) Unpack rp-pppoe. 58 594) In the rp-pppoe directory, change to src/ and type: 60 61 ./configure --enable-plugin=$PPPDIR 62 63where $PPPDIR, of course, refers to the checked-out "ppp" directory 64from cvs.samba.org. 65 66If you didn't check out the PPP software from cvs.samba.org, use: 67 68 ./configure --enable-plugin 69 70This will work if the header pppd/pppd.h is located in /usr/include 71or /usr/local/include. 72 734) Type make; make install 74 755) Edit /etc/ppp/pppoe.conf to include this line: 76 77 LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so 78 79After that, pppoe-start should use kernel-mode PPPoE. 80 81The rp-pppoe.so plugin adds the following command-line options to pppd: 82 83ethXXX -- Use interface ethXXX as Ethernet interface 84brXXX -- Use interface brXXX as Ethernet interface 85nic-XXXX -- Use interface XXXX as the Ethernet interface 86 87rp_pppoe_service SERVICE_NAME -- Specify desired service name 88rp_pppoe_ac NAME -- Specify desired access concentrator name 89rp_pppoe_verbose 0|1 -- Print names of access concentrators 90 91rp_pppoe_sess nnnn:aa:bb:cc:dd:ee:ff -- Attach to existing session 'nnnn' 92 on AC with Ethernet address aa:bb:cc:dd:ee:ff 93 This skips the discovery phase. 94 95rp_pppoe_mac aa:bb:cc:dd:ee:ff -- only accept PADOs from specified MAC address 96 97The kernel-mode PPPoE plugin permits an MTU of up to 1500 on the PPP 98interface providing that the MTU on the underlying Ethernet interface 99is at least 1508. In /etc/ppp/pppoe.conf, set MTU=1500 and MRU=1500 to 100enable the larger PPP MTU. The larger PPP MTU is negotiated according 101to RFC 4638. 102 103-- 104David F. Skoll <dfs@roaringpenguin.com> 105 106