This file is indexed.

/usr/sbin/pppoe-connect is in pppoe 3.11-0ubuntu1.

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
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
#!/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$
#
# 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
    EXISTING_MTU=`$IFCONFIG $ETH 2> /dev/null | grep MTU: | sed -e 's/.*MTU://' | sed -e 's/[^0-9].*//'`
    if test "$EXISTING_MTU" = "" -o "$EXISTING_MTU" -lt 1500 ; then
	$IFCONFIG $ETH mtu 1500
    fi

    # 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
    modprobe pppoe > /dev/null 2>&1
fi

if test "$DEFAULTROUTE" != "no" ; then
    DEFAULTROUTE="defaultroute"
else
    DEFAULTROUTE=""
fi

if test -n "$UNIT" ; then
    DOUNIT="unit $UNIT"
else
    DOUNIT=""
fi

if test "$MTU" = "" ; then
    MTU=1492
fi
if test "$MRU" = "" ; then
    MRU=1492
fi

# Standard PPP options we always use
PPP_STD_OPTIONS="$PLUGIN_OPTS $DOUNIT noipdefault noauth default-asyncmap $DEFAULTROUTE hide-password nodetach $PEERDNS mtu $MTU mru $MRU 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