5 # ifup-ppp script for pppd-2.3.5 (with persist & demand options) ver 0.2
6 # Grzegorz Stanislawski <stangrze@open.net.pl>
8 # - since persist option is included to pppd it''s no need to do werid loops
9 # ifup-ppp script. This also makes your logfile grow slower when Your link
11 # - chat-ppp? file with script for chat is now parsed by shell, so You can
12 # include in it shell variables (for example $PHONE, $USERNAME)
13 # You can define any variable in ifcfg-ppp? file and use it in chat-ppp?
14 # You only have to add it's name into DATAFORCHAT variable
15 # Note, that chat-ppp file is now parsed by shell, so you have to escape
16 # with "\" all shell special characters like \$;:)(& etc.
18 PATH=/sbin:/usr/sbin:/bin:/usr/bin
20 # ifup-post for PPP is handled through /etc/ppp/ip-up
22 . /etc/sysconfig/network
23 . /etc/rc.d/init.d/functions
24 . /etc/sysconfig/network-scripts/functions.network
28 # set all major variables
31 if [ "$2" = "boot" ] && is_no "${ONBOOT}"; then
34 if [ ! -x /usr/sbin/pppd ]; then
35 nls "/usr/sbin/pppd does not exist or is not executable"
36 nls "ifup-ppp for %s exiting" "$DEVICE"
37 logger -p daemon.info -t ifup-ppp \
38 "$(nls '/usr/sbin/pppd does not exist or is not executable for %s' "$DEVICE")"
42 # modprobe ppp in case of kernel with devfs
43 # (/dev/ppp is missing and ppp fails without this) --misiek
44 [ -c /dev/.devfsd ] && modprobe -s -k char-major-108
48 if [ -z "${REPORTFILE}" ] ; then
52 if [ -n "${PPPOE_DEV}" ]; then
53 if is_yes "${PPPOE_KERNEL}"; then
55 MODEMMODE="plugin rp-pppoe.so"
56 MODEMPORT="${PPPOE_DEV}"
59 MODEMPORT="pppoe -I ${PPPOE_DEV} ${PPPOE_OPT}"
62 if is_no "${DIRECT_CONNECT}" || [ -z "${DIRECT_CONNECT}" ]; then
64 PEERCONF=/etc/ppp/peers/${DEVNAME}
66 if [ ! -f ${PEERCONF} ]; then
67 if [ -z "${WVDIALSECT}" ]; then
68 # XXX: REPORTFILE support is problematic here --misiek
69 [ -f "${CHATSCRIPT}" ] || CHATSCRIPT=/etc/sysconfig/interfaces/data/chat-${PARENTDEVNAME}
70 if [ ! -f "${CHATSCRIPT}" ]; then
71 nls '/etc/sysconfig/network-scripts/chat-%s does not exist' "${DEVNAME}"
72 nls 'ifup-ppp for %s exiting' "${DEVNAME}"
73 logger -p daemon.info -t ifup-ppp \
74 "$(nls '/etc/sysconfig/network-scripts/chat-%s does not exist for %s' "${DEVNAME}" "${DEVICE}")"
78 logger -s -p daemon.notice -t ifup-ppp "$(nls 'Setting up a new %s config file' "${PEERCONF}")"
79 if [ -f /etc/ppp/peers/${DEVICE} ]; then
80 cp -f /etc/ppp/peers/${DEVICE} ${PEERCONF}
84 if [ "${WVDIALSECT}" ]; then
85 echo "connect \"/usr/bin/wvdial --chat ${WVDIALSECT} --config /etc/wvdial.conf >> ${REPORTFILE} 2>&1 \"" >> ${PEERCONF}
87 if is_yes "${DEBUG}"; then
90 echo "connect \"/usr/sbin/chat $chatdbg -f ${CHATSCRIPT} -r ${REPORTFILE} ${chatdbg}\"" >> ${PEERCONF}
94 opts="$opts call ${DEVNAME}"
98 if [ -z "$HOLDOFF" ]; then
101 if is_yes "${PERSIST}"; then
102 if [ -z "${MAXFAIL}" ]; then
105 opts="$opts persist holdoff $HOLDOFF maxfail $MAXFAIL"
107 if is_yes "${DEMAND}"; then
108 if [ -z "${IDLE}" ]; then
111 opts="$opts demand ktune idle ${IDLE}"
113 if ! is_no "${HARDFLOWCTL}"; then
116 if is_yes "${MODEMCTL}"; then
119 if is_yes "${ESCAPECHARS}"; then
120 opts="$opts asyncmap FFFFFFFF"
122 opts="$opts asyncmap 00000000"
124 if ! is_no "${DEFROUTE}"; then
125 # pppd will no longer delete an existing default route
126 # so we have to help it out a little here.
127 ip route del 0/0 > /dev/null 2>&1
128 opts="$opts defaultroute"
130 if ! is_no "${PEERDNS}"; then
131 opts="$opts usepeerdns"
133 if [ -n "${MRU}" ] ; then
134 opts="$opts mru ${MRU}"
136 if [ -n "${MTU}" ] ; then
137 opts="$opts mtu ${MTU}"
139 if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}${REMIP}" ] ; then
140 # if either IP address is set, the following will work.
141 opts="$opts ${IP4ADDR}:${REMIP}"
143 if is_yes "$IPV6_NETWORKING"; then
144 if is_yes "$IPV6_PPP"; then
145 if [ -n "${IP6ADDR}${REMIP6}" ] ; then
146 opts="$opts ipv6 ${IP6ADDR},${REMIP6}"
147 elif is_yes "$IPV6_CP_USEV4"; then
148 opts="$opts ipv6cp-use-ipaddr"
149 elif is_yes "$IPV6_CP_PERSISTENT"; then
150 opts="$opts ipv6cp-use-persistent"
152 elif is_no "$IPV6_PPP"; then
155 elif is_no "$IPV6_NETWORKING"; then
158 if is_yes "${IPX_PPP}"; then
160 if [ -n "${IPX_PPP_NETWORK}" ]; then
161 opts="$opts ipx-network ${IPX_PPP_NETWORK}"
163 if [ -n "${IPX_PPP_NODE}" ]; then
164 opts="$opts ipx-node ${IPX_PPP_NODE}"
166 if [ -n "${IPX_PPP_ROUTING}" ]; then
167 opts="$opts ipx-routing ${IPX_PPP_ROUTING}"
171 if [ -n "${PAPNAME}" ] ; then
172 opts="$opts user ${PAPNAME}"
174 if [ -n "${REMOTENAME}" ] ; then
175 opts="$opts remotename ${REMOTENAME}"
177 if is_yes "${DEBUG}"; then
180 if is_yes "${AUTH}"; then
182 elif is_no "${AUTH}"; then
186 if ! is_no "${UNIT}"; then
187 UNIT=$(echo "${DEVICE}" | awk ' { gsub(/ppp/,NUL); print $0} ')
188 opts="$opts unit ${UNIT}"
191 MODEM="${MODEMPORT}"; export MODEM
193 (logger -p daemon.info -t ifup-ppp \
194 $(nls 'pppd started for %s on device %s at speed %s' "$DEVICE" "$MODEMPORT" "${LINESPEED:-(unspecified)} on unit ${UNIT}") &)&
196 /usr/sbin/pppd $opts ${MODEMMODE} "${MODEMPORT}" ${LINESPEED} \
197 ipparam ${DEVNAME} linkname ${DEVNAME} \
200 # This must be last line !
201 # vi:syntax=sh:tw=78:ts=8:sw=4