#!/usr/bin/sh #---------------------------------------------------------------------------- # /usr/libexec/dsl/dsl - start/stop script for PPPoE modules # # Creation: 2024-12-09 hbfl # Last Update: $Id$ # # Copyright (c) 2024-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- package_name='dsl' #exec 2>/tmp/dsl-trace$$.log #set -x # read configuration . /etc/config.d/dsl . /etc/config.d/base load='/sbin/modprobe' unload='/sbin/modprobe -r' ppp_modules='slhc ppp_generic pppoe' ppp_modules_rev='n_hdlc ppp_synctty ppp_async ppp_generic slhc pppoe' #exec 2>/tmp/dsl-trace$$.log #set -x # --------------------------------------------------------------------------- # unload modules # # recursively unload a module and its dependencies, if possible. # where's modprobe -r when you need it? # inputs: module to unload. # returns: the result from # --------------------------------------------------------------------------- unload_modules() { module="${1}" line=$(/usr/bin/lsmod 2>/dev/null | /usr/bin/grep "^${1} ") if [ -z "${line}" ] then return fi # module was not loaded set -- ${line} # $1: the original module # $2: size # $3: refcount # $4: deps list # use newline here to can do 'grep -v' not a space mods=$(echo ${4} | /usr/bin/tr , '\n') for mod in ${mods} do # run in a subshell, so it won't step over our vars: ( unload_modules ${mod} ) # TODO: the following is probably the error handling we want: # if [ $? != 0 ]; then return 1; fi done /usr/sbin/rmmod ${module} } # --------------------------------------------------------------------------- # start dsl # --------------------------------------------------------------------------- dsl_start() { /usr/sbin/ip addr flush dev ppp0 2>/dev/null # set pppoe.nmconnection { eval ethx="${DSL_PPPOE_BIND_ETH}" eval pppoe_iface='${IP_ETH_'${ethx}'_NAME}' # set interface parameter echo '[connection]' echo 'id=pppoe' echo 'autoconnect=true' echo 'type=pppoe' echo "interface-name=${pppoe_iface}" echo echo '[ethernet]' echo echo '[ppp]' echo 'refuse-eap=true' echo 'refuse-mschap=true' echo 'refuse-mschapv2=true' echo echo '[pppoe]' echo "password=${DSL_PPPOE_PASS}" echo "username=${DSL_PPPOE_USER}" ipv4_method='auto' echo echo '[ipv4]' if [ "${DSL_PPPOE_USEPEERDNS:-no}" != "yes" ] then echo 'ignore-auto-dns=true' # include to set dns responder . /var/install/include/nm-get-dns fi echo "method=${ipv4_method}" ipv6_method='auto' echo echo '[ipv6]' echo 'addr-gen-mode=default' echo "method=${ipv6_method}" echo echo '[proxy]' echo } > /etc/NetworkManager/system-connections/pppoe.nmconnection /usr/bin/chmod 0600 /etc/NetworkManager/system-connections/pppoe.nmconnection >/run/netconfig/pppoe.nmconnection local=10.112.112.112 remote=10.112.112.113 netmask=255.255.255.0 echo ${local} >/run/pppoe.conf echo ${remote} >>/run/pppoe.conf echo ${netmask} >>/run/pppoe.conf echo auto >/run/pppoe.dialmode } # --------------------------------------------------------------------------- # stop dsl # --------------------------------------------------------------------------- dsl_stop() { for i in 0 1 2 3 do /usr/sbin/ip addr flush dev ppp${i} 2>/dev/null /usr/sbin/ip link del ppp${i} 2>/dev/null done /usr/sbin/modprobe -r 'pppoe' 2>/dev/null } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- main() { while [ "${#}" -gt 0 ] do case "${1}" in -q|--quiet) _quiet=true shift ;; *) _action=${1} shift ;; esac done case "${_action}" in start) dsl_start ;; stop) dsl_stop ;; esac exit 0 } # --------------------------------------------------------------------------- # exec main # --------------------------------------------------------------------------- main "${@}" # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------