mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.4 KiB

  1. # FIXME: /tmp/.rocknet or such a directory should go to base.sh?
  2. ppp_config_path=/tmp/.rocknet/ppp
  3. [ -d $ppp_config_path ] || mkdir -p $ppp_config_path
  4. # ppp_option <file> ppp-option [...] - add "ppp-option [...]" to the config file
  5. # specified by <file>
  6. ppp_option() {
  7. local optfile=$1
  8. local opt=$2 ; shift 2
  9. case $opt in
  10. hide-password|show-password) optx="hide-password|show-password" ;;
  11. refuse-chap|require-chap) optx="refuse-chap|require-chap" ;;
  12. refuse-mschap|require-mschap) optx="refuse-mschap|require-mschap" ;;
  13. refuse-mschap-v2|require-mschap-v2) optx="refuse-mschap-v2|require-mschap-v2" ;;
  14. refuse-eap|require-eap) optx="refuse-eap|require-eap" ;;
  15. refuse-pap|require-pap) optx="refuse-pap|require-pap" ;;
  16. require-mppe|nomppe) optx="require-mppe|nomppe" ;;
  17. require-mppe-40|nomppe-40) optx="require-mppe-40|nomppe-40" ;;
  18. require-mppe-128|nomppe-128) optx="require-mppe-128|nomppe-128" ;;
  19. noauth|auth) optx="noauth|auth" ;;
  20. nobsdcomp|bsdcomp) optx="nobsdcomp|bsdcomp" ;;
  21. nocrtscts|crtscts) optx="nocrtscts|crtscts" ;;
  22. nocdtrcts|cdtrcts) optx="nocdtrcts|cdtrcts" ;;
  23. nodefaultroute|defaultroute) optx="nodefaultroute|defaultroute" ;;
  24. nodeflate|deflate) optx="nodeflate|deflate" ;;
  25. noendpoint|endpoint) optx="noendpoint|endpoint" ;;
  26. noipv6|ipv6) optx="noipv6|ipv6" ;;
  27. noipx|ipx) optx="noipx|ipx" ;;
  28. noktune|ktune) optx="noktune|ktune" ;;
  29. nomp|mp) optx="nomp|mp" ;;
  30. nomppe-stateful|mppe-stateful) optx="nomppe-stateful|mppe-stateful" ;;
  31. nompshortseq|mpshortseq) optx="nompshortseq|mpshortseq" ;;
  32. nomultilink|multilink) optx="nomultilink|multilink" ;;
  33. nopersist|persist) optx="nopersist|persist" ;;
  34. nopredictor1|predictor1) optx="nopredictor1|predictor1" ;;
  35. noproxyarp|proxyarp) optx="noproxyarp|proxyarp" ;;
  36. novj|vj) optx="novj|vj" ;;
  37. *) optx="$opt" ;;
  38. esac
  39. if egrep "^($optx) .*" $optfile 1>/dev/null 2>/dev/null; then
  40. cp $optfile $optfile.tmp
  41. optx="`echo $optx | sed 's,|,\\\\|,g'`"
  42. sed "s,^\($optx\) .*,$opt $*," < $optfile.tmp > $optfile
  43. rm -f $optfile.tmp
  44. else
  45. echo "$opt $*" >> $optfile
  46. fi
  47. }
  48. # pppoe_config_defaults - create default settings, the respective config file
  49. # is \$ppp_${if}_config
  50. pppoe_config_defaults() {
  51. # FIXME should this be provider dependant, or does this fit for everybody?
  52. local each
  53. for each in noipdefault noauth default-asyncmap hide-password noaccomp nobsdcomp \
  54. ipcp-accept-local ipcp-accept-remote \
  55. nodeflate nopcomp novj novjccomp ktune; do
  56. addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
  57. done
  58. addcode up 4 5 "ppp_option \$ppp_${if}_config mru 1492"
  59. addcode up 4 5 "ppp_option \$ppp_${if}_config mtu 1492"
  60. addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-interval 20"
  61. addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-failure 3"
  62. addcode up 4 6 "ppp_option \$ppp_${if}_config ipcp-accept-remote"
  63. addcode up 4 6 "ppp_option \$ppp_${if}_config ipcp-accept-local"
  64. }
  65. # PUBLIC COMMANDS ###########################################################
  66. # pppoe ppp-interface [config file|auto] [ppp-command-line-arg [...]]
  67. public_pppoe() {
  68. # default config file
  69. eval "ppp_${if}_config=$ppp_config_path/option.$if"
  70. addcode up 4 3 "echo -n > \$ppp_${if}_config"
  71. # get unit from $if
  72. ppp_unit=${if#ppp}
  73. # parse args
  74. local ppp_if=$1 ; shift
  75. local ppp_args=
  76. # <config file> or "auto" present?
  77. case $1 in
  78. auto)
  79. pppoe_config_defaults
  80. eval "ppp_args=\"$ppp_args${ppp_args+ }file \$ppp_${if}_config\""
  81. shift
  82. ;;
  83. /*)
  84. eval "ppp_${if}_config=$1"
  85. eval "ppp_args=\"$ppp_args${ppp_args+ }file \$ppp_${if}_config\""
  86. shift
  87. ;;
  88. esac
  89. # user or password info should not be world readable...
  90. addcode up 4 3 "chmod 0600 \$ppp_${if}_config"
  91. ppp_args="$ppp_args${ppp_args+ }`echo $* | sed 's,",\\\\",g'`"
  92. # fire
  93. addcode up 5 1 "ip link set $ppp_if down up"
  94. addcode up 5 2 "/usr/sbin/pppd plugin rp-pppoe.so $ppp_if unit $ppp_unit $ppp_args"
  95. addcode down 5 2 "[ -f /var/run/$if.pid ] && kill -TERM \`head -1 /var/run/$if.pid\`"
  96. addcode down 5 1 "[ -f /var/run/$if.pid ] && rm -f /var/run/$if.pid"
  97. }
  98. # ppp-option ppp-option [...]
  99. public_ppp_option() {
  100. local param="`echo $* | sed 's,",\\\\",g'`"
  101. addcode up 4 6 "ppp_option \$ppp_${if}_config $param"
  102. }
  103. # ppp-on-demand <idle time in seconds>
  104. public_ppp_on_demand() {
  105. addcode up 4 6 "ppp_option \$ppp_${if}_config demand"
  106. addcode up 4 6 "ppp_option \$ppp_${if}_config idle $1"
  107. addcode up 4 6 "ppp_option \$ppp_${if}_config persist"
  108. }