/usr/sbin/pppoe-connect is in pppoe 3.8-3ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 | #!/bin/sh
# ../scripts/pppoe-connect. Generated from pppoe-connect.in by configure.
#***********************************************************************
#
# pppoe-connect
#
# Shell script to connect to a PPPoE provider
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# $Id: pppoe-connect.in,v 1.3 2005/08/29 12:16:37 dfs Exp $
#
# This file may be distributed under the terms of the GNU General
# Public License.
#
# LIC: GPL
#
# Usage: pppoe-connect [config_file]
# pppoe-connect interface user [config_file]
# Second form overrides USER and ETH from config file.
# If config_file is omitted, defaults to /etc//ppp/pppoe.conf
#
#***********************************************************************
# From AUTOCONF
prefix=/usr
exec_prefix=${prefix}
localstatedir=/var
# Paths to programs
IFCONFIG=/sbin/ifconfig
PPPD=/usr/sbin/pppd
SETSID=/usr/bin/setsid
PPPOE=${exec_prefix}/sbin/pppoe
LOGGER="/usr/bin/logger -t `basename $0`"
# Set to "C" locale so we can parse messages from commands
LANG=C
export LANG
# Must be root
if test "`/usr/bin/id -u`" != 0 ; then
echo "$0: You must be root to run this script" >& 2
exit 1
fi
if test "$SETSID" != "" -a ! -x "$SETSID"; then
SETSID=""
fi
CONFIG=/etc//ppp/pppoe.conf
USER=""
ETH=""
# Sort out command-line arguments
case "$#" in
1)
CONFIG="$1"
;;
3)
CONFIG="$3"
;;
esac
if test ! -f "$CONFIG" -o ! -r "$CONFIG" ; then
echo "$0: Cannot read configuration file '$CONFIG'" >& 2
exit 1
fi
export CONFIG
. $CONFIG
PPPOE_PIDFILE="$PIDFILE.pppoe"
PPPD_PIDFILE="$PIDFILE.pppd"
# Check for command-line overriding of ETH and USER
case "$#" in
2|3)
ETH="$1"
USER="$2"
;;
esac
# Check that config file is sane
if test "$USER" = "" ; then
echo "$0: Check '$CONFIG' -- no setting for USER" >& 2
exit 1
fi
if test "$ETH" = "" ; then
echo "$0: Check '$CONFIG' -- no setting for ETH" >& 2
exit 1
fi
PPPD_PID=0
# Catch common error
if test "$DEBUG" = "1" ; then
echo "*** If you want to use DEBUG, invoke pppoe-start, not pppoe-connect."
exit 1
fi
if test "$DEBUG" != "" ; then
if test "$LINUX_PLUGIN" != "" ; then
echo "Cannot use DEBUG mode and LINUX_PLUGIN at the same time."
echo "Kernel-mode PPPoE is experimental and unsupported."
exit 1
fi
echo "* The following section identifies your Ethernet interface" >> $DEBUG
echo "* and user name. Some ISP's need 'username'; others" >> $DEBUG
echo "* need 'username@isp.com'. Try both" >> $DEBUG
echo "ETH=$ETH; USER=$USER" >> $DEBUG
echo "---------------------------------------------" >> $DEBUG
fi
# MTU of Ethernet card attached to modem MUST be 1500. This apparently
# fails on some *BSD's, so we'll only do it under Linux
if test `uname -s` = Linux ; then
$IFCONFIG $ETH up mtu 1500
# For 2.4 kernels. Will fail on 2.2.x, but who cares?
modprobe ppp_generic > /dev/null 2>&1
modprobe ppp_async > /dev/null 2>&1
modprobe ppp_synctty > /dev/null 2>&1
if test -n "$LINUX_PLUGIN" ; then
modprobe pppox > /dev/null 2>&1
modprobe pppoe > /dev/null 2>&1
fi
fi
if test "$SYNCHRONOUS" = "yes" ; then
PPPOE_SYNC=-s
PPPD_SYNC=sync
# Increase the chances of it working on Linux...
if test `uname -s` = Linux ; then
modprobe n_hdlc > /dev/null 2>&1
fi
else
PPPOE_SYNC=""
PPPD_SYNC=""
fi
if test -n "$ACNAME" ; then
ACNAME="-C $ACNAME"
fi
if test -n "$SERVICENAME" ; then
SERVICENAMEOPT="-S $SERVICENAME"
else
SERVICENAMEOPT=""
fi
if test "$CLAMPMSS" = "no" ; then
CLAMPMSS=""
else
CLAMPMSS="-m $CLAMPMSS"
fi
# If DNSTYPE is SERVER, we must use "usepeerdns" option to pppd.
if test "$DNSTYPE" = "SERVER" ; then
PEERDNS=yes
USEPEERDNS=yes
fi
if test "$PEERDNS" = "yes" ; then
PEERDNS="usepeerdns"
else
PEERDNS=""
fi
# Backward config file compatibility -- PEERDNS used to be USEPEERDNS
if test "$USEPEERDNS" = "yes" ; then
PEERDNS="usepeerdns"
fi
if test "$USEPEERDNS" = "no" ; then
PEERDNS=""
fi
# Backward config file compatibility
if test "$DEMAND" = "" ; then
DEMAND=no
fi
if test "$DEMAND" = "no" ; then
DEMAND=""
else
DEMAND="demand persist idle $DEMAND 10.112.112.112:10.112.112.113 ipcp-accept-remote ipcp-accept-local connect true noipdefault ktune"
fi
case "$FIREWALL" in
STANDALONE)
. /etc/ppp/firewall-standalone
;;
MASQUERADE)
. /etc/ppp/firewall-masq
;;
esac
# If we're using kernel-mode PPPoE on Linux...
if test "$LINUX_PLUGIN" != "" ; then
PLUGIN_OPTS="plugin $LINUX_PLUGIN nic-$ETH"
if test -n "$SERVICENAME" ; then
PLUGIN_OPTS="$PLUGIN_OPTS rp_pppoe_service $SERVICENAME"
fi
# Interface name MUST BE LAST!!
PLUGIN_OPTS="$PLUGIN_OPTS $ETH"
modprobe pppoe > /dev/null 2>&1
fi
if test "$DEFAULTROUTE" != "no" ; then
DEFAULTROUTE="defaultroute"
else
DEFAULTROUTE=""
fi
# Standard PPP options we always use
PPP_STD_OPTIONS="$PLUGIN_OPTS noipdefault noauth default-asyncmap $DEFAULTROUTE hide-password nodetach $PEERDNS mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user $USER lcp-echo-interval $LCP_INTERVAL lcp-echo-failure $LCP_FAILURE $PPPD_EXTRA"
# Jigger DNS if required...
if test "$DNSTYPE" = "SERVER" ; then
# Sorry, dude...
rm -f /etc/resolv.conf
ln -s /etc/ppp/resolv.conf /etc/resolv.conf
elif test "$DNSTYPE" = "SPECIFY" ; then
# Sorry, dude...
rm -f /etc/resolv.conf
echo "nameserver $DNS1" > /etc/resolv.conf
if test -n "$DNS2" ; then
echo "nameserver $DNS2" >> /etc/resolv.conf
fi
fi
# PPPoE invocation
PPPOE_CMD="$PPPOE -p $PPPOE_PIDFILE -I $ETH -T $PPPOE_TIMEOUT -U $PPPOE_SYNC $CLAMPMSS $ACNAME $SERVICENAMEOPT $PPPOE_EXTRA"
if test "$DEBUG" != "" ; then
if test "$DEMAND" != "" ; then
echo "(Turning off DEMAND for debugging purposes)"
DEMAND=""
fi
echo "* The following section shows the pppd command we will invoke" >> $DEBUG
echo "pppd invocation" >> $DEBUG
echo "$SETSID $PPPD pty '$PPPOE_CMD' $PPP_STD_OPTIONS $PPPD_SYNC debug" >> $DEBUG
echo "---------------------------------------------" >> $DEBUG
$SETSID $PPPD pty "$PPPOE_CMD -D $DEBUG-0" \
$PPP_STD_OPTIONS \
$PPPD_SYNC \
debug >> $DEBUG 2>&1
echo "---------------------------------------------" >> $DEBUG
echo "* The following section is an extract from your log." >> $DEBUG
echo "* Look for error messages from pppd, such as" >> $DEBUG
echo "* a lack of kernel support for PPP, authentication failure" >> $DEBUG
echo "* etc." >> $DEBUG
if test -f "/var/log/messages" ; then
echo "Extract from /var/log/messages" >> $DEBUG
grep 'ppp' /var/log/messages | tail -150 >> $DEBUG
elif test -f "/var/adm/messages"; then
echo "Extract from /var/adm/messages" >> $DEBUG
grep 'ppp' /var/adm/messages | tail -150 >> $DEBUG
else
echo "Can't find messages file (looked for /var/{log,adm}/messages" >> $DEBUG
fi
date >> $DEBUG
echo "---------------------------------------------" >> $DEBUG
echo "* The following section is a dump of the packets" >> $DEBUG
echo "* sent and received by rp-pppoe. If you don't see" >> $DEBUG
echo "* any output, it's an Ethernet driver problem. If you only" >> $DEBUG
echo "* see three PADI packets and nothing else, check your cables" >> $DEBUG
echo "* and modem. Make sure the modem lights flash when you try" >> $DEBUG
echo "* to connect. Check that your Ethernet card is in" >> $DEBUG
echo "* half-duplex, 10Mb/s mode. If all else fails," >> $DEBUG
echo "* try using pppoe-sniff." >> $DEBUG
echo "rp-pppoe debugging dump" >> $DEBUG
cat $DEBUG-0 >> $DEBUG
rm -f $DEBUG-0
for i in 1 2 3 4 5 6 7 8 9 10 ; do
echo ""
echo ""
echo ""
done
echo "*** Finished debugging run. Please review the file"
echo "*** '$DEBUG' and try to"
echo "*** figure out what is going on."
echo "***"
echo "*** Unfortunately, we can NO LONGER accept debugging"
echo "*** output for analysis. Please do not send this to"
echo "*** Roaring Penguin; it is too time-consuming for"
echo "*** us to deal with all the analyses we have been sent."
exit 0
fi
echo $$ > $PIDFILE
while [ true ] ; do
if test "$OVERRIDE_PPPD_COMMAND" != "" ; then
$SETSID $OVERRIDE_PPPD_COMMAND &
echo "$!" > $PPPD_PIDFILE
elif test "$LINUX_PLUGIN" != "" ; then
$SETSID $PPPD $PPP_STD_OPTIONS $DEMAND &
echo "$!" > $PPPD_PIDFILE
else
$SETSID $PPPD pty "$PPPOE_CMD" \
$PPP_STD_OPTIONS \
$DEMAND \
$PPPD_SYNC &
echo "$!" > $PPPD_PIDFILE
fi
wait
if test "$RETRY_ON_FAILURE" = "no" ; then
exit
fi
# Run /etc/ppp/pppoe-lost if it exists
test -x /etc/ppp/pppoe-lost && /etc/ppp/pppoe-lost
# Re-establish the connection
$LOGGER -p daemon.notice \
"PPPoE connection lost; attempting re-connection."
# Wait a bit in case a problem causes tons of log messages :-)
sleep 5
done
|