From: nbd Date: Tue, 20 Mar 2012 13:09:27 +0000 (+0000) Subject: pppd: split files into netifd and non-netifd files, move the netifd ppp.sh file to... X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/483a02ae41cf8a27a24d447bc17286e0b85c6843 pppd: split files into netifd and non-netifd files, move the netifd ppp.sh file to the pppd package git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31041 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/package/netifd/files/lib/netifd/proto/ppp.sh b/package/netifd/files/lib/netifd/proto/ppp.sh deleted file mode 100755 index 5f549bf6e..000000000 --- a/package/netifd/files/lib/netifd/proto/ppp.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/sh - -[ -x /usr/sbin/pppd ] || exit 0 - -[ -n "$INCLUDE_ONLY" ] || { - . /etc/functions.sh - . ../netifd-proto.sh - init_proto "$@" -} - -ppp_generic_init_config() { - proto_config_add_string "username" - proto_config_add_string "password" - proto_config_add_string "keepalive" - proto_config_add_int "demand" - proto_config_add_string "pppd_options" - proto_config_add_string "connect" - proto_config_add_string "disconnect" - proto_config_add_boolean "defaultroute" - proto_config_add_boolean "peerdns" - proto_config_add_boolean "ipv6" - proto_config_add_int "mtu" -} - -ppp_generic_setup() { - local config="$1"; shift - - json_get_var ipv6 ipv6 - [ "$ipv6" = 1 ] || ipv6="" - - json_get_var peerdns peerdns - [ "$peerdns" = 0 ] && peerdns="" || peerdns="1" - - json_get_var defaultroute defaultroute - if [ "$defaultroute" = 1 ]; then - defaultroute="defaultroute replacedefaultroute"; - else - defaultroute="nodefaultroute" - fi - - json_get_var demand demand - if [ "${demand:-0}" -gt 0 ]; then - demand="precompiled-active-filter /etc/ppp/filter demand idle $demand" - else - demand="persist" - fi - - [ -n "$mtu" ] || json_get_var mtu mtu - - json_get_var keepalive keepalive - local interval="${keepalive##*[, ]}" - [ "$interval" != "$keepalive" ] || interval=5 - - json_get_var username username - json_get_var password password - - [ -n "$connect" ] || json_get_var connect connect - [ -n "$disconnect" ] || json_get_var disconnect disconnect - json_get_var pppd_options pppd_options - - proto_run_command "$config" /usr/sbin/pppd \ - nodetach ipparam "$config" \ - ifname "${proto:-ppp}-$config" \ - ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ - ${ipv6:++ipv6} $defaultroute \ - ${peerdns:+usepeerdns} \ - $demand maxfail 1 \ - ${username:+user "$username" password "$password"} \ - ${connect:+connect "$connect"} \ - ${disconnect:+disconnect "$disconnect"} \ - ip-up-script /lib/netifd/ppp-up \ - ipv6-up-script /lib/netifd/ppp-up \ - ip-down-script /lib/netifd/ppp-down \ - ipv6-down-script /lib/netifd/ppp-down \ - ${mtu:+mtu $mtu mru $mtu} \ - $pppd_options "$@" -} - -ppp_generic_teardown() { - local interface="$1" - - case "$ERROR" in - 11|19) - proto_notify_error "$interface" AUTH_FAILED - proto_block_restart "$interface" - ;; - esac - proto_kill_command "$interface" -} - -# PPP on serial device - -proto_ppp_init_config() { - proto_config_add_string "device" - ppp_generic_init_config - no_device=1 - available=1 -} - -proto_ppp_setup() { - local config="$1" - - json_get_var device device - ppp_generic_setup "$config" "$device" -} - -proto_ppp_teardown() { - ppp_generic_teardown "$@" -} - -proto_pppoe_init_config() { - ppp_generic_init_config - proto_config_add_string "ac" - proto_config_add_string "service" -} - -proto_pppoe_setup() { - local config="$1" - local iface="$2" - - for module in slhc ppp_generic pppox pppoe; do - /sbin/insmod $module 2>&- >&- - done - - json_get_var mtu mtu - mtu="${mtu:-1492}" - - json_get_var ac ac - json_get_var service service - - ppp_generic_setup "$config" \ - plugin rp-pppoe.so \ - ${ac:+rp_pppoe_ac "$ac"} \ - ${service:+rp_pppoe_service "$service"} \ - "nic-$iface" -} - -proto_pppoe_teardown() { - ppp_generic_teardown "$@" -} - -proto_pppoa_init_config() { - ppp_generic_init_config - proto_config_add_int "atmdev" - proto_config_add_int "vci" - proto_config_add_int "vpi" - proto_config_add_string "encaps" -} - -proto_pppoa_setup() { - local config="$1" - local iface="$2" - - for module in slhc ppp_generic pppox pppoatm; do - /sbin/insmod $module 2>&- >&- - done - - json_get_var atmdev atmdev - json_get_var vci vci - json_get_var vpi vpi - - json_get_var encaps encaps - case "$encaps" in - 1|vc) encaps="vc-encaps" ;; - *) encaps="llc-encaps" ;; - esac - - ppp_generic_setup "$config" \ - plugin pppoatm.so \ - ${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ - ${encaps} -} - -proto_pppoa_teardown() { - ppp_generic_teardown "$@" -} - -[ -n "$INCLUDE_ONLY" ] || { - add_protocol ppp - [ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe - [ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa -} - diff --git a/package/ppp/Makefile b/package/ppp/Makefile index e41e87730..4ace4d936 100644 --- a/package/ppp/Makefile +++ b/package/ppp/Makefile @@ -156,23 +156,40 @@ define Build/InstallDev $(CP) $(PKG_INSTALL_DIR)/include/pppd $(1)/usr/include/ endef +ifneq ($(CONFIG_PACKAGE_netifd),) + define Package/ppp/script_install + $(INSTALL_DIR) $(1)/lib/netifd/proto + $(INSTALL_BIN) ./files/ppp.sh $(1)/lib/netifd/proto/ + endef +else + define Package/ppp/script_install + $(INSTALL_DIR) $(1)/lib/network + $(INSTALL_BIN) ./files.old/ppp.sh $(1)/lib/network/ + $(INSTALL_BIN) ./files.old/etc/ppp/ip-up $(1)/etc/ppp/ + $(INSTALL_DIR) $(1)/etc/ppp/ip-up.d + $(INSTALL_BIN) ./files.old/etc/ppp/ip-down $(1)/etc/ppp/ + $(INSTALL_DIR) $(1)/etc/ppp/ip-down.d + $(INSTALL_BIN) ./files.old/etc/ppp/ipv6-up $(1)/etc/ppp/ + $(INSTALL_BIN) ./files.old/etc/ppp/ipv6-down $(1)/etc/ppp/ + $(INSTALL_DIR) $(1)/lib/network + $(INSTALL_BIN) ./files.old/pppoe.sh $(1)/lib/network/ + $(INSTALL_DIR) $(1)/lib/network + $(INSTALL_BIN) ./files.old/pppoa.sh $(1)/lib/network/ + $(INSTALL_DIR) $(1)/etc/hotplug.d/atm + $(INSTALL_DATA) ./files.old/etc/hotplug.d/atm/20-atm-modem $(1)/etc/hotplug.d/atm/ + endef +endif + define Package/ppp/install $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION) $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppd $(1)/usr/sbin/ - $(INSTALL_DIR) $(1)/lib/network - $(INSTALL_BIN) ./files/ppp.sh $(1)/lib/network/ $(INSTALL_DIR) $(1)/etc/ppp $(INSTALL_CONF) ./files/etc/ppp/chap-secrets $(1)/etc/ppp/ $(INSTALL_DATA) ./files/etc/ppp/filter $(1)/etc/ppp/ - $(INSTALL_BIN) ./files/etc/ppp/ip-up $(1)/etc/ppp/ - $(INSTALL_DIR) $(1)/etc/ppp/ip-up.d - $(INSTALL_BIN) ./files/etc/ppp/ip-down $(1)/etc/ppp/ - $(INSTALL_DIR) $(1)/etc/ppp/ip-down.d - $(INSTALL_BIN) ./files/etc/ppp/ipv6-up $(1)/etc/ppp/ - $(INSTALL_BIN) ./files/etc/ppp/ipv6-down $(1)/etc/ppp/ $(INSTALL_DATA) ./files/etc/ppp/options $(1)/etc/ppp/ ln -sf /tmp/resolv.conf.ppp $(1)/etc/ppp/resolv.conf + $(Package/ppp/script_install) endef Package/ppp-multilink/install=$(Package/ppp/install) @@ -180,18 +197,12 @@ define Package/ppp-mod-pppoa/install $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION) $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppoatm.so \ $(1)/usr/lib/pppd/$(PKG_VERSION)/ - $(INSTALL_DIR) $(1)/lib/network - $(INSTALL_BIN) ./files/pppoa.sh $(1)/lib/network/ - $(INSTALL_DIR) $(1)/etc/hotplug.d/atm - $(INSTALL_DATA) ./files/etc/hotplug.d/atm/20-atm-modem $(1)/etc/hotplug.d/atm/ endef define Package/ppp-mod-pppoe/install $(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION) $(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \ $(1)/usr/lib/pppd/$(PKG_VERSION)/ - $(INSTALL_DIR) $(1)/lib/network - $(INSTALL_BIN) ./files/pppoe.sh $(1)/lib/network/ endef define Package/ppp-mod-radius/install diff --git a/package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem b/package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem new file mode 100644 index 000000000..4fd9b9c66 --- /dev/null +++ b/package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem @@ -0,0 +1,28 @@ +#!/bin/sh + +if [ "$ACTION" = "add" ]; then + include /lib/network + scan_interfaces + + local found=0 + local ifc + for ifc in $interfaces; do + local up + config_get_bool up "$ifc" up 0 + + local auto + config_get_bool auto "$ifc" auto 1 + + local proto + config_get proto "$ifc" proto + + if [ "$proto" = "pppoa" ] && [ "$up" != 1 ] && [ "$auto" = 1 ]; then + found=1 + ( sleep 1; ifup "$ifc" ) & + fi + done + + if [ "$found" != 1 ]; then + logger "Found no matching interface for DSL device $DEVICENAME" + fi +fi diff --git a/package/ppp/files.old/etc/ppp/ip-down b/package/ppp/files.old/etc/ppp/ip-down new file mode 100755 index 000000000..487ff6b46 --- /dev/null +++ b/package/ppp/files.old/etc/ppp/ip-down @@ -0,0 +1,25 @@ +#!/bin/sh +. /etc/functions.sh +PPP_IFACE="$1" +PPP_TTY="$2" +PPP_SPEED="$3" +PPP_LOCAL="$4" +PPP_REMOTE="$5" +PPP_IPPARAM="$(echo $6 | sed 's/\./_/g')" +export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM +[ -z "$PPP_IPPARAM" ] || { + case "$PPP_IFACE" in + # only handle uci managed interfaces here, others are done by generic hotplug + 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) + env -i ACTION="ifdown" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface" + uci_revert_state network "$PPP_IPPARAM" + ;; + esac +} + +[ -d /etc/ppp/ip-down.d ] && { + for SCRIPT in /etc/ppp/ip-down.d/* + do + [ -x "$SCRIPT" ] && "$SCRIPT" "$@" + done +} diff --git a/package/ppp/files.old/etc/ppp/ip-up b/package/ppp/files.old/etc/ppp/ip-up new file mode 100755 index 000000000..353f66789 --- /dev/null +++ b/package/ppp/files.old/etc/ppp/ip-up @@ -0,0 +1,37 @@ +#!/bin/sh + +. /etc/functions.sh +. /lib/network/config.sh + +PPP_IFACE="$1" +PPP_TTY="$2" +PPP_SPEED="$3" +PPP_LOCAL="$4" +PPP_REMOTE="$5" +PPP_IPPARAM="$(echo $6 | sed 's/\./_/g')" + +export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM +[ -z "$PPP_IPPARAM" -o -z "$PPP_LOCAL" ] || { + uci_set_state network "$PPP_IPPARAM" ifname "$PPP_IFACE" + uci_set_state network "$PPP_IPPARAM" ipaddr "$PPP_LOCAL" + uci_set_state network "$PPP_IPPARAM" gateway "$PPP_REMOTE" + + local dns="$DNS1${DNS2:+ $DNS2}" + [ -n "$dns" ] && add_dns "$PPP_IPPARAM" $dns +} + +[ -z "$PPP_IPPARAM" ] || { + case "$PPP_IFACE" in + # only handle uci managed interfaces here, others are done by generic hotplug + 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) + env -i ACTION="ifup" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface" + ;; + esac +} + +[ -d /etc/ppp/ip-up.d ] && { + for SCRIPT in /etc/ppp/ip-up.d/* + do + [ -x "$SCRIPT" ] && "$SCRIPT" "$@" + done +} diff --git a/package/ppp/files.old/etc/ppp/ipv6-down b/package/ppp/files.old/etc/ppp/ipv6-down new file mode 100644 index 000000000..436b91ded --- /dev/null +++ b/package/ppp/files.old/etc/ppp/ipv6-down @@ -0,0 +1,16 @@ +#!/bin/sh + +gw=$5 +dev=$1 +cfg=$6 + +. /etc/functions.sh # common functions +include /lib/network # include /lib/network/*.sh +scan_interfaces # read and parse the network config + +config_get_bool defaultroute "$cfg" defaultroute 1 + +if [ ${defaultroute} -eq 1 ] +then + route -A inet6 del default gw ${gw} dev ${dev} +fi diff --git a/package/ppp/files.old/etc/ppp/ipv6-up b/package/ppp/files.old/etc/ppp/ipv6-up new file mode 100644 index 000000000..5162455fa --- /dev/null +++ b/package/ppp/files.old/etc/ppp/ipv6-up @@ -0,0 +1,16 @@ +#!/bin/sh + +gw=$5 +dev=$1 +cfg=$6 + +. /etc/functions.sh # common functions +include /lib/network # include /lib/network/*.sh +scan_interfaces # read and parse the network config + +config_get_bool defaultroute "$cfg" defaultroute 1 + +if [ ${defaultroute} -eq 1 ] +then + route -A inet6 add default gw ${gw} dev ${dev} +fi diff --git a/package/ppp/files.old/ppp.sh b/package/ppp/files.old/ppp.sh new file mode 100644 index 000000000..e26749ebc --- /dev/null +++ b/package/ppp/files.old/ppp.sh @@ -0,0 +1,145 @@ +stop_interface_ppp() { + local cfg="$1" + + local proto + config_get proto "$cfg" proto + + local link="$proto-$cfg" + SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ + service_stop /usr/sbin/pppd + + remove_dns "$cfg" + + local lock="/var/lock/ppp-$link" + [ -f "$lock" ] && lock -u "$lock" +} + +start_pppd() { + local cfg="$1"; shift + + # Workaround for PPPoE service and AC name options, + # filter out the nic-* argument and append it as last option + local nic="" + case "$1" in + nic-*) nic="$1"; shift ;; + esac + + local proto + config_get proto "$cfg" proto + + # unique link identifier + local link="${proto:-ppp}-$cfg" + + # make sure only one pppd process is started + lock "/var/lock/ppp-${link}" + SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ + service_check /usr/sbin/pppd && { + lock -u "/var/lock/ppp-${link}" + return 0 + } + + # Workaround: sometimes hotplug2 doesn't deliver the hotplug event for creating + # /dev/ppp fast enough to be used here + [ -e /dev/ppp ] || mknod /dev/ppp c 108 0 + + local device + config_get device "$cfg" device + + local username + config_get username "$cfg" username + + local password + config_get password "$cfg" password + + local keepalive + config_get keepalive "$cfg" keepalive + + local connect + config_get connect "$cfg" connect + + local disconnect + config_get disconnect "$cfg" disconnect + + local pppd_options + config_get pppd_options "$cfg" pppd_options + + local defaultroute + config_get_bool defaultroute "$cfg" defaultroute 1 + [ "$defaultroute" -eq 1 ] && \ + defaultroute="defaultroute replacedefaultroute" || defaultroute="nodefaultroute" + + local interval="${keepalive##*[, ]}" + [ "$interval" != "$keepalive" ] || interval=5 + + local dns + config_get dns "$config" dns + + local has_dns=0 + local peer_default=1 + [ -n "$dns" ] && { + has_dns=1 + peer_default=0 + } + + local peerdns + config_get_bool peerdns "$cfg" peerdns $peer_default + + [ "$peerdns" -eq 1 ] && { + peerdns="usepeerdns" + } || { + peerdns="" + add_dns "$cfg" $dns + } + + local demand + config_get demand "$cfg" demand 0 + + local demandargs + [ "$demand" -gt 0 ] && { + demandargs="precompiled-active-filter /etc/ppp/filter demand idle $demand" + [ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 + } || { + demandargs="persist" + } + + local ipv6 + config_get_bool ipv6 "$cfg" ipv6 0 + [ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6="" + + SERVICE_DAEMONIZE=1 \ + SERVICE_WRITE_PID=1 \ + SERVICE_PID_FILE="/var/run/ppp-$link.pid" \ + service_start /usr/sbin/pppd "$@" \ + ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ + $demandargs \ + $peerdns \ + $defaultroute \ + ${username:+user "$username" password "$password"} \ + ipparam "$cfg" \ + ifname "$link" \ + ${connect:+connect "$connect"} \ + ${disconnect:+disconnect "$disconnect"} \ + ${ipv6} \ + ${pppd_options} \ + nodetach \ + ${nic} + + lock -u "/var/lock/ppp-${link}" +} + +setup_interface_ppp() { + local iface="$1" + local config="$2" + + local device + config_get device "$config" device + + local mtu + config_get mtu "$config" mtu + + mtu=${mtu:-1492} + start_pppd "$config" \ + mtu $mtu mru $mtu \ + "$device" +} + diff --git a/package/ppp/files.old/pppoa.sh b/package/ppp/files.old/pppoa.sh new file mode 100644 index 000000000..dbb6eb00e --- /dev/null +++ b/package/ppp/files.old/pppoa.sh @@ -0,0 +1,39 @@ +scan_pppoa() { + config_set "$1" device "pppoa-$1" +} + +stop_interface_pppoa() { + stop_interface_ppp "$1" +} + +setup_interface_pppoa() { + local config="$2" + + local atmdev + config_get atmdev "$config" atmdev + + local vpi + config_get vpi "$config" vpi + + local vci + config_get vci "$config" vci + + for module in slhc ppp_generic pppoatm; do + /sbin/insmod $module 2>&- >&- + done + + local encaps + config_get encaps "$config" encaps + + case "$encaps" in + 1|vc) encaps="vc-encaps" ;; + *) encaps="llc-encaps" ;; + esac + + local mtu + config_get mtu "$config" mtu + + start_pppd "$config" \ + plugin pppoatm.so ${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ + ${encaps} ${mtu:+mtu $mtu mru $mtu} +} diff --git a/package/ppp/files.old/pppoe.sh b/package/ppp/files.old/pppoe.sh new file mode 100644 index 000000000..ea3dc6cf0 --- /dev/null +++ b/package/ppp/files.old/pppoe.sh @@ -0,0 +1,30 @@ +stop_interface_pppoe() { + stop_interface_ppp "$1" +} + +setup_interface_pppoe() { + local iface="$1" + local config="$2" + + for module in slhc ppp_generic pppox pppoe; do + /sbin/insmod $module 2>&- >&- + done + + local mtu + config_get mtu "$config" mtu 1492 + + local ac + config_get ac "$config" ac + + local service + config_get service "$config" service + + # NB: the first nic-* argument will be moved to the + # end of the argument list by start_pppd() + start_pppd "$config" \ + "nic-$iface" \ + plugin rp-pppoe.so \ + ${ac:+rp_pppoe_ac "$ac"} \ + ${service:+rp_pppoe_service "$service"} \ + mtu $mtu mru $mtu +} diff --git a/package/ppp/files/etc/hotplug.d/atm/20-atm-modem b/package/ppp/files/etc/hotplug.d/atm/20-atm-modem deleted file mode 100644 index 4fd9b9c66..000000000 --- a/package/ppp/files/etc/hotplug.d/atm/20-atm-modem +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -if [ "$ACTION" = "add" ]; then - include /lib/network - scan_interfaces - - local found=0 - local ifc - for ifc in $interfaces; do - local up - config_get_bool up "$ifc" up 0 - - local auto - config_get_bool auto "$ifc" auto 1 - - local proto - config_get proto "$ifc" proto - - if [ "$proto" = "pppoa" ] && [ "$up" != 1 ] && [ "$auto" = 1 ]; then - found=1 - ( sleep 1; ifup "$ifc" ) & - fi - done - - if [ "$found" != 1 ]; then - logger "Found no matching interface for DSL device $DEVICENAME" - fi -fi diff --git a/package/ppp/files/etc/ppp/ip-down b/package/ppp/files/etc/ppp/ip-down deleted file mode 100755 index 487ff6b46..000000000 --- a/package/ppp/files/etc/ppp/ip-down +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -. /etc/functions.sh -PPP_IFACE="$1" -PPP_TTY="$2" -PPP_SPEED="$3" -PPP_LOCAL="$4" -PPP_REMOTE="$5" -PPP_IPPARAM="$(echo $6 | sed 's/\./_/g')" -export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM -[ -z "$PPP_IPPARAM" ] || { - case "$PPP_IFACE" in - # only handle uci managed interfaces here, others are done by generic hotplug - 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) - env -i ACTION="ifdown" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface" - uci_revert_state network "$PPP_IPPARAM" - ;; - esac -} - -[ -d /etc/ppp/ip-down.d ] && { - for SCRIPT in /etc/ppp/ip-down.d/* - do - [ -x "$SCRIPT" ] && "$SCRIPT" "$@" - done -} diff --git a/package/ppp/files/etc/ppp/ip-up b/package/ppp/files/etc/ppp/ip-up deleted file mode 100755 index 353f66789..000000000 --- a/package/ppp/files/etc/ppp/ip-up +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -. /etc/functions.sh -. /lib/network/config.sh - -PPP_IFACE="$1" -PPP_TTY="$2" -PPP_SPEED="$3" -PPP_LOCAL="$4" -PPP_REMOTE="$5" -PPP_IPPARAM="$(echo $6 | sed 's/\./_/g')" - -export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM -[ -z "$PPP_IPPARAM" -o -z "$PPP_LOCAL" ] || { - uci_set_state network "$PPP_IPPARAM" ifname "$PPP_IFACE" - uci_set_state network "$PPP_IPPARAM" ipaddr "$PPP_LOCAL" - uci_set_state network "$PPP_IPPARAM" gateway "$PPP_REMOTE" - - local dns="$DNS1${DNS2:+ $DNS2}" - [ -n "$dns" ] && add_dns "$PPP_IPPARAM" $dns -} - -[ -z "$PPP_IPPARAM" ] || { - case "$PPP_IFACE" in - # only handle uci managed interfaces here, others are done by generic hotplug - 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) - env -i ACTION="ifup" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface" - ;; - esac -} - -[ -d /etc/ppp/ip-up.d ] && { - for SCRIPT in /etc/ppp/ip-up.d/* - do - [ -x "$SCRIPT" ] && "$SCRIPT" "$@" - done -} diff --git a/package/ppp/files/etc/ppp/ipv6-down b/package/ppp/files/etc/ppp/ipv6-down deleted file mode 100644 index 436b91ded..000000000 --- a/package/ppp/files/etc/ppp/ipv6-down +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -gw=$5 -dev=$1 -cfg=$6 - -. /etc/functions.sh # common functions -include /lib/network # include /lib/network/*.sh -scan_interfaces # read and parse the network config - -config_get_bool defaultroute "$cfg" defaultroute 1 - -if [ ${defaultroute} -eq 1 ] -then - route -A inet6 del default gw ${gw} dev ${dev} -fi diff --git a/package/ppp/files/etc/ppp/ipv6-up b/package/ppp/files/etc/ppp/ipv6-up deleted file mode 100644 index 5162455fa..000000000 --- a/package/ppp/files/etc/ppp/ipv6-up +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -gw=$5 -dev=$1 -cfg=$6 - -. /etc/functions.sh # common functions -include /lib/network # include /lib/network/*.sh -scan_interfaces # read and parse the network config - -config_get_bool defaultroute "$cfg" defaultroute 1 - -if [ ${defaultroute} -eq 1 ] -then - route -A inet6 add default gw ${gw} dev ${dev} -fi diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh old mode 100644 new mode 100755 index e26749ebc..5f549bf6e --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -1,145 +1,183 @@ -stop_interface_ppp() { - local cfg="$1" +#!/bin/sh - local proto - config_get proto "$cfg" proto +[ -x /usr/sbin/pppd ] || exit 0 - local link="$proto-$cfg" - SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ - service_stop /usr/sbin/pppd +[ -n "$INCLUDE_ONLY" ] || { + . /etc/functions.sh + . ../netifd-proto.sh + init_proto "$@" +} + +ppp_generic_init_config() { + proto_config_add_string "username" + proto_config_add_string "password" + proto_config_add_string "keepalive" + proto_config_add_int "demand" + proto_config_add_string "pppd_options" + proto_config_add_string "connect" + proto_config_add_string "disconnect" + proto_config_add_boolean "defaultroute" + proto_config_add_boolean "peerdns" + proto_config_add_boolean "ipv6" + proto_config_add_int "mtu" +} + +ppp_generic_setup() { + local config="$1"; shift + + json_get_var ipv6 ipv6 + [ "$ipv6" = 1 ] || ipv6="" + + json_get_var peerdns peerdns + [ "$peerdns" = 0 ] && peerdns="" || peerdns="1" + + json_get_var defaultroute defaultroute + if [ "$defaultroute" = 1 ]; then + defaultroute="defaultroute replacedefaultroute"; + else + defaultroute="nodefaultroute" + fi + + json_get_var demand demand + if [ "${demand:-0}" -gt 0 ]; then + demand="precompiled-active-filter /etc/ppp/filter demand idle $demand" + else + demand="persist" + fi + + [ -n "$mtu" ] || json_get_var mtu mtu - remove_dns "$cfg" + json_get_var keepalive keepalive + local interval="${keepalive##*[, ]}" + [ "$interval" != "$keepalive" ] || interval=5 + + json_get_var username username + json_get_var password password - local lock="/var/lock/ppp-$link" - [ -f "$lock" ] && lock -u "$lock" + [ -n "$connect" ] || json_get_var connect connect + [ -n "$disconnect" ] || json_get_var disconnect disconnect + json_get_var pppd_options pppd_options + + proto_run_command "$config" /usr/sbin/pppd \ + nodetach ipparam "$config" \ + ifname "${proto:-ppp}-$config" \ + ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ + ${ipv6:++ipv6} $defaultroute \ + ${peerdns:+usepeerdns} \ + $demand maxfail 1 \ + ${username:+user "$username" password "$password"} \ + ${connect:+connect "$connect"} \ + ${disconnect:+disconnect "$disconnect"} \ + ip-up-script /lib/netifd/ppp-up \ + ipv6-up-script /lib/netifd/ppp-up \ + ip-down-script /lib/netifd/ppp-down \ + ipv6-down-script /lib/netifd/ppp-down \ + ${mtu:+mtu $mtu mru $mtu} \ + $pppd_options "$@" } -start_pppd() { - local cfg="$1"; shift +ppp_generic_teardown() { + local interface="$1" - # Workaround for PPPoE service and AC name options, - # filter out the nic-* argument and append it as last option - local nic="" - case "$1" in - nic-*) nic="$1"; shift ;; + case "$ERROR" in + 11|19) + proto_notify_error "$interface" AUTH_FAILED + proto_block_restart "$interface" + ;; esac + proto_kill_command "$interface" +} - local proto - config_get proto "$cfg" proto +# PPP on serial device - # unique link identifier - local link="${proto:-ppp}-$cfg" +proto_ppp_init_config() { + proto_config_add_string "device" + ppp_generic_init_config + no_device=1 + available=1 +} - # make sure only one pppd process is started - lock "/var/lock/ppp-${link}" - SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ - service_check /usr/sbin/pppd && { - lock -u "/var/lock/ppp-${link}" - return 0 - } +proto_ppp_setup() { + local config="$1" - # Workaround: sometimes hotplug2 doesn't deliver the hotplug event for creating - # /dev/ppp fast enough to be used here - [ -e /dev/ppp ] || mknod /dev/ppp c 108 0 + json_get_var device device + ppp_generic_setup "$config" "$device" +} - local device - config_get device "$cfg" device +proto_ppp_teardown() { + ppp_generic_teardown "$@" +} - local username - config_get username "$cfg" username +proto_pppoe_init_config() { + ppp_generic_init_config + proto_config_add_string "ac" + proto_config_add_string "service" +} - local password - config_get password "$cfg" password +proto_pppoe_setup() { + local config="$1" + local iface="$2" - local keepalive - config_get keepalive "$cfg" keepalive + for module in slhc ppp_generic pppox pppoe; do + /sbin/insmod $module 2>&- >&- + done - local connect - config_get connect "$cfg" connect + json_get_var mtu mtu + mtu="${mtu:-1492}" - local disconnect - config_get disconnect "$cfg" disconnect + json_get_var ac ac + json_get_var service service - local pppd_options - config_get pppd_options "$cfg" pppd_options + ppp_generic_setup "$config" \ + plugin rp-pppoe.so \ + ${ac:+rp_pppoe_ac "$ac"} \ + ${service:+rp_pppoe_service "$service"} \ + "nic-$iface" +} - local defaultroute - config_get_bool defaultroute "$cfg" defaultroute 1 - [ "$defaultroute" -eq 1 ] && \ - defaultroute="defaultroute replacedefaultroute" || defaultroute="nodefaultroute" +proto_pppoe_teardown() { + ppp_generic_teardown "$@" +} - local interval="${keepalive##*[, ]}" - [ "$interval" != "$keepalive" ] || interval=5 +proto_pppoa_init_config() { + ppp_generic_init_config + proto_config_add_int "atmdev" + proto_config_add_int "vci" + proto_config_add_int "vpi" + proto_config_add_string "encaps" +} - local dns - config_get dns "$config" dns - - local has_dns=0 - local peer_default=1 - [ -n "$dns" ] && { - has_dns=1 - peer_default=0 - } - - local peerdns - config_get_bool peerdns "$cfg" peerdns $peer_default - - [ "$peerdns" -eq 1 ] && { - peerdns="usepeerdns" - } || { - peerdns="" - add_dns "$cfg" $dns - } - - local demand - config_get demand "$cfg" demand 0 - - local demandargs - [ "$demand" -gt 0 ] && { - demandargs="precompiled-active-filter /etc/ppp/filter demand idle $demand" - [ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 - } || { - demandargs="persist" - } - - local ipv6 - config_get_bool ipv6 "$cfg" ipv6 0 - [ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6="" - - SERVICE_DAEMONIZE=1 \ - SERVICE_WRITE_PID=1 \ - SERVICE_PID_FILE="/var/run/ppp-$link.pid" \ - service_start /usr/sbin/pppd "$@" \ - ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ - $demandargs \ - $peerdns \ - $defaultroute \ - ${username:+user "$username" password "$password"} \ - ipparam "$cfg" \ - ifname "$link" \ - ${connect:+connect "$connect"} \ - ${disconnect:+disconnect "$disconnect"} \ - ${ipv6} \ - ${pppd_options} \ - nodetach \ - ${nic} +proto_pppoa_setup() { + local config="$1" + local iface="$2" - lock -u "/var/lock/ppp-${link}" -} + for module in slhc ppp_generic pppox pppoatm; do + /sbin/insmod $module 2>&- >&- + done -setup_interface_ppp() { - local iface="$1" - local config="$2" + json_get_var atmdev atmdev + json_get_var vci vci + json_get_var vpi vpi - local device - config_get device "$config" device + json_get_var encaps encaps + case "$encaps" in + 1|vc) encaps="vc-encaps" ;; + *) encaps="llc-encaps" ;; + esac + + ppp_generic_setup "$config" \ + plugin pppoatm.so \ + ${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ + ${encaps} +} - local mtu - config_get mtu "$config" mtu +proto_pppoa_teardown() { + ppp_generic_teardown "$@" +} - mtu=${mtu:-1492} - start_pppd "$config" \ - mtu $mtu mru $mtu \ - "$device" +[ -n "$INCLUDE_ONLY" ] || { + add_protocol ppp + [ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe + [ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa } diff --git a/package/ppp/files/pppoa.sh b/package/ppp/files/pppoa.sh deleted file mode 100644 index dbb6eb00e..000000000 --- a/package/ppp/files/pppoa.sh +++ /dev/null @@ -1,39 +0,0 @@ -scan_pppoa() { - config_set "$1" device "pppoa-$1" -} - -stop_interface_pppoa() { - stop_interface_ppp "$1" -} - -setup_interface_pppoa() { - local config="$2" - - local atmdev - config_get atmdev "$config" atmdev - - local vpi - config_get vpi "$config" vpi - - local vci - config_get vci "$config" vci - - for module in slhc ppp_generic pppoatm; do - /sbin/insmod $module 2>&- >&- - done - - local encaps - config_get encaps "$config" encaps - - case "$encaps" in - 1|vc) encaps="vc-encaps" ;; - *) encaps="llc-encaps" ;; - esac - - local mtu - config_get mtu "$config" mtu - - start_pppd "$config" \ - plugin pppoatm.so ${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ - ${encaps} ${mtu:+mtu $mtu mru $mtu} -} diff --git a/package/ppp/files/pppoe.sh b/package/ppp/files/pppoe.sh deleted file mode 100644 index ea3dc6cf0..000000000 --- a/package/ppp/files/pppoe.sh +++ /dev/null @@ -1,30 +0,0 @@ -stop_interface_pppoe() { - stop_interface_ppp "$1" -} - -setup_interface_pppoe() { - local iface="$1" - local config="$2" - - for module in slhc ppp_generic pppox pppoe; do - /sbin/insmod $module 2>&- >&- - done - - local mtu - config_get mtu "$config" mtu 1492 - - local ac - config_get ac "$config" ac - - local service - config_get service "$config" service - - # NB: the first nic-* argument will be moved to the - # end of the argument list by start_pppd() - start_pppd "$config" \ - "nic-$iface" \ - plugin rp-pppoe.so \ - ${ac:+rp_pppoe_ac "$ac"} \ - ${service:+rp_pppoe_service "$service"} \ - mtu $mtu mru $mtu -}