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.

139 lines
4.4 KiB

  1. ppp_option() {
  2. local optfile=$1
  3. local opt=$2 ; shift 2
  4. case $opt in
  5. hide-password|show-password) optx="hide-password|show-password" ;;
  6. refuse-chap|require-chap) optx="refuse-chap|require-chap" ;;
  7. refuse-mschap|require-mschap) optx="refuse-mschap|require-mschap" ;;
  8. refuse-mschap-v2|require-mschap-v2) optx="refuse-mschap-v2|require-mschap-v2" ;;
  9. refuse-eap|require-eap) optx="refuse-eap|require-eap" ;;
  10. refuse-pap|require-pap) optx="refuse-pap|require-pap" ;;
  11. require-mppe|nomppe) optx="require-mppe|nomppe" ;;
  12. require-mppe-40|nomppe-40) optx="require-mppe-40|nomppe-40" ;;
  13. require-mppe-128|nomppe-128) optx="require-mppe-128|nomppe-128" ;;
  14. noauth|auth) optx="noauth|auth" ;;
  15. nobsdcomp|bsdcomp) optx="nobsdcomp|bsdcomp" ;;
  16. nocrtscts|crtscts) optx="nocrtscts|crtscts" ;;
  17. nocdtrcts|cdtrcts) optx="nocdtrcts|cdtrcts" ;;
  18. nodefaultroute|defaultroute) optx="nodefaultroute|defaultroute" ;;
  19. nodeflate|deflate) optx="nodeflate|deflate" ;;
  20. noendpoint|endpoint) optx="noendpoint|endpoint" ;;
  21. noipv6|ipv6) optx="noipv6|ipv6" ;;
  22. noipx|ipx) optx="noipx|ipx" ;;
  23. noktune|ktune) optx="noktune|ktune" ;;
  24. nomp|mp) optx="nomp|mp" ;;
  25. nomppe-stateful|mppe-stateful) optx="nomppe-stateful|mppe-stateful" ;;
  26. nompshortseq|mpshortseq) optx="nompshortseq|mpshortseq" ;;
  27. nomultilink|multilink) optx="nomultilink|multilink" ;;
  28. nopersist|persist) optx="nopersist|persist" ;;
  29. nopredictor1|predictor1) optx="nopredictor1|predictor1" ;;
  30. noproxyarp|proxyarp) optx="noproxyarp|proxyarp" ;;
  31. novj|vj) optx="novj|vj" ;;
  32. *) optx="$opt" ;;
  33. esac
  34. if egrep "^($optx) .*" $optfile 1>/dev/null 2>/dev/null; then
  35. optx="`echo $optx | sed 's,|,\\\\|,g'`"
  36. sed -i "s,^\($optx\) .*,$opt $*," $optfile
  37. else
  38. echo "$opt $*" >> $optfile
  39. fi
  40. }
  41. chat_init_if() {
  42. if isfirst "chat_$if" ; then
  43. addcode up 4 1 "echo -n > \$ppp_${if}_chat"
  44. addcode up 4 6 "ppp_option \$ppp_${if}_config \
  45. connect \'chat -v -f \$ppp_${if}_chat\'"
  46. fi
  47. }
  48. # PUBLIC COMMANDS ###########################################################
  49. # pppoe ppp-interface [config file|auto] [ppp-command-line-arg [...]]
  50. public_ppp() {
  51. # config file
  52. eval "ppp_${if}_config=$rocknet_tmp_base/ppp_${if}_options"
  53. eval "ppp_${if}_chat=$rocknet_tmp_base/ppp_${if}_chat"
  54. # get unit from $if
  55. ppp_unit=${if#ppp}
  56. # parse args
  57. ppp_if=$1 ; shift
  58. local ppp_args="`echo $* | sed 's,",\\\\",g'`"
  59. addcode up 4 1 "echo -n > \$ppp_${if}_config"
  60. addcode up 4 2 "chmod 0600 \$ppp_${if}_config"
  61. addcode up 6 2 "/usr/sbin/pppd file \$ppp_${if}_config $ppp_if unit $ppp_unit $ppp_args"
  62. addcode down 5 5 "[ -f /var/run/$if.pid ] && kill -TERM \`head -n 1 /var/run/$if.pid\`"
  63. addcode down 5 4 "[ -f /var/run/$if.pid ] && rm -f /var/run/$if.pid"
  64. }
  65. public_pppoe() {
  66. addcode up 4 5 "ppp_option \$ppp_${if}_config plugin rp-pppoe.so"
  67. addcode up 4 5 "ppp_option \$ppp_${if}_config mru 1492"
  68. addcode up 4 5 "ppp_option \$ppp_${if}_config mtu 1492"
  69. addcode up 5 1 "ip link set $ppp_if up"
  70. }
  71. public_ppp_defaults() {
  72. local each
  73. for each in noipdefault noauth hide-password \
  74. ipcp-accept-local ipcp-accept-remote \
  75. defaultroute usepeerdns ; do
  76. addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
  77. done
  78. }
  79. public_ppp_speed_defaults() {
  80. local each
  81. for each in default-asyncmap noaccomp nobsdcomp nodeflate nopcomp \
  82. novj novjccomp ktune ; do
  83. addcode up 4 4 "ppp_option \$ppp_${if}_config $each"
  84. done
  85. addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-interval 20"
  86. addcode up 4 5 "ppp_option \$ppp_${if}_config lcp-echo-failure 3"
  87. }
  88. public_ppp_option() {
  89. local param="`echo $* | sed 's,",\\\\",g'`"
  90. addcode up 4 6 "ppp_option \$ppp_${if}_config $param"
  91. }
  92. public_ppp_on_demand() {
  93. addcode up 4 6 "ppp_option \$ppp_${if}_config demand"
  94. addcode up 4 6 "ppp_option \$ppp_${if}_config idle $1"
  95. addcode up 4 6 "ppp_option \$ppp_${if}_config persist"
  96. }
  97. public_chat_defaults() {
  98. chat_init_if
  99. addcode up 4 1 "echo 'ABORT \"NO CARRIER\"
  100. ABORT \"NO DIALTONE\"
  101. ABORT \"ERROR\"
  102. ABORT \"NO ANSWER\"
  103. ABORT \"BUSY\"
  104. \"\" \"at\"' >> \$ppp_${if}_chat"
  105. }
  106. public_chat_init() {
  107. chat_init_if
  108. # don't ask and count ...
  109. opts="`echo "$@" | sed -e 's/"/\\\\\\\\\\\\\"/g' \
  110. -e 's/&/\\\\\\&/g'`"
  111. addcode up 4 3 "echo '\"OK\" \"$opts\"' >> \$ppp_${if}_chat"
  112. }
  113. public_chat_dial() {
  114. chat_init_if
  115. # don't ask and count ...
  116. opts="`echo "$@" | sed 's/"/\\\\\\\\\\\\\"/g'`"
  117. addcode up 4 5 "echo -e '\"OK\" \"$opts\"\n\"CONNECT\" \"\"' >> \$ppp_${if}_chat"
  118. }