Browse Source

ROCK Net PPP refactoring - can now handle mobile GPRS connections and should

be able to handle normal modem connections - DSL to be retested.
Warning: API change (as written in the Handbook PPP was proof of concept) -
         might still not be the final config API ...


git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@2553 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc
rocklinux
Rene Rebe 21 years ago
parent
commit
6695736b54
1 changed files with 71 additions and 47 deletions
  1. +71
    -47
      package/base/ppp/rocknet_ppp.sh

+ 71
- 47
package/base/ppp/rocknet_ppp.sh

@ -1,10 +1,7 @@
# FIXME: /tmp/.rocknet or such a directory should go to base.sh?
ppp_config_path=/tmp/.rocknet/ppp
[ -d $ppp_config_path ] || mkdir -p $ppp_config_path
# ppp_option <file> ppp-option [...] - add "ppp-option [...]" to the config file
# specified by <file>
ppp_option() {
local optfile=$1
local opt=$2 ; shift 2
@ -48,73 +45,100 @@ ppp_option() {
fi
}
# pppoe_config_defaults - create default settings, the respective config file
# is \$ppp_${if}_config
pppoe_config_defaults() {
local each
for each in noipdefault noauth default-asyncmap hide-password noaccomp nobsdcomp \
ipcp-accept-local ipcp-accept-remote \
nodeflate nopcomp novj novjccomp ktune; do
addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
done
addcode up 4 5 "ppp_option \$ppp_${if}_config mru 1492"
addcode up 4 5 "ppp_option \$ppp_${if}_config mtu 1492"
addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-interval 20"
addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-failure 3"
addcode up 4 6 "ppp_option \$ppp_${if}_config ipcp-accept-remote"
addcode up 4 6 "ppp_option \$ppp_${if}_config ipcp-accept-local"
chat_init_if() {
if isfirst "chat_$if" ; then
addcode up 4 1 "echo -n > \$ppp_${if}_chat"
addcode up 4 6 "ppp_option \$ppp_${if}_config \
connect chat -v -f \$ppp_${if}_chat"
fi
}
# PUBLIC COMMANDS ###########################################################
# pppoe ppp-interface [config file|auto] [ppp-command-line-arg [...]]
public_pppoe() {
# default config file
eval "ppp_${if}_config=$ppp_config_path/option.$if"
addcode up 4 3 "echo -n > \$ppp_${if}_config"
public_ppp() {
# config file
eval "ppp_${if}_config=$ppp_config_path/${if}_options"
eval "ppp_${if}_chat=$ppp_config_path/${if}_chat"
# get unit from $if
ppp_unit=${if#ppp}
# parse args
local ppp_if=$1 ; shift
local ppp_args=
# <config file> or "auto" present?
case $1 in
auto)
pppoe_config_defaults
eval "ppp_args=\"$ppp_args${ppp_args+ }file \$ppp_${if}_config\""
shift
;;
/*)
eval "ppp_${if}_config=$1"
eval "ppp_args=\"$ppp_args${ppp_args+ }file \$ppp_${if}_config\""
shift
;;
esac
local ppp_args="file \$ppp_${if}_config\""
ppp_args="`echo $* | sed 's,",\\\\",g'`"
# user or password info should not be world readable...
addcode up 4 3 "chmod 0600 \$ppp_${if}_config"
addcode up 4 1 "echo -n > \$ppp_${if}_config"
addcode up 4 2 "chmod 0600 \$ppp_${if}_config"
addcode up 5 2 "/usr/sbin/pppd $ppp_if unit $ppp_unit $ppp_args"
ppp_args="$ppp_args${ppp_args+ }`echo $* | sed 's,",\\\\",g'`"
addcode down 6 1 "[ -f /var/run/$if.pid ] && kill -TERM \`head -n 1 /var/run/$if.pid\`"
addcode down 6 2 "[ -f /var/run/$if.pid ] && rm -f /var/run/$if.pid"
}
# final config codes
addcode up 5 1 "ip link set $ppp_if down up"
addcode up 5 2 "/usr/sbin/pppd plugin rp-pppoe.so $ppp_if unit $ppp_unit $ppp_args"
addcode down 5 2 "[ -f /var/run/$if.pid ] && kill -TERM \`head -n 1 /var/run/$if.pid\`"
addcode down 5 1 "[ -f /var/run/$if.pid ] && rm -f /var/run/$if.pid"
public_pppoe() {
addcode up 4 5 "ppp_option \$ppp_${if}_config plugin rp-pppoe.so"
addcode up 4 5 "ppp_option \$ppp_${if}_config mru 1492"
addcode up 4 5 "ppp_option \$ppp_${if}_config mtu 1492"
addcode up 5 1 "ip link set $ppp_if up"
addcode down 5 5 "ip link set $ppp_ip down"
}
public_ppp_defaults() {
local each
for each in noipdefault noauth hide-password \
ipcp-accept-local ipcp-accept-remote \
defaultroute usepeerdns ; do
addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
done
}
public_ppp_speed_defaults() {
local each
for each in default-asyncmap noaccomp nobsdcomp nodeflate nopcomp \
novj novjccomp ktune ; do
addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
done
addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-interval 20"
addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-failure 3"
}
# ppp-option ppp-option [...]
public_ppp_option() {
local param="`echo $* | sed 's,",\\\\",g'`"
addcode up 4 6 "ppp_option \$ppp_${if}_config $param"
}
# ppp-on-demand <idle time in seconds>
public_ppp_on_demand() {
addcode up 4 6 "ppp_option \$ppp_${if}_config demand"
addcode up 4 6 "ppp_option \$ppp_${if}_config idle $1"
addcode up 4 6 "ppp_option \$ppp_${if}_config persist"
}
public_chat_defaults() {
chat_init_if
addcode up 4 1 "echo 'ABORT \"NO CARRIER\"
ABORT \"NO DIALTONE\"
ABORT \"ERROR\"
ABORT \"NO ANSWER\"
ABORT \"BUSY\"
\"\" \"AT\"' >> \$ppp_${if}_chat"
}
public_chat_init() {
chat_init_if
# don't ask and count ...
opts="`echo "$@" | sed 's/"/\\\\\\\\\\\\\"/g'`"
addcode up 4 3 "echo '\"OK\" \"$opts\"' >> \$ppp_${if}_chat"
}
public_chat_dial() {
chat_init_if
# don't ask and count ...
opts="`echo "$@" | sed 's/"/\\\\\\\\\\\\\"/g'`"
addcode up 4 5 "echo '\"OK\" \"$opts\"' >> \$ppp_${if}_chat"
}

Loading…
Cancel
Save