pppd: split files into netifd and non-netifd files, move the netifd ppp.sh file to the pppd package

SVN-Revision: 31041
This commit is contained in:
Felix Fietkau 2012-03-20 13:09:27 +00:00
parent f6ad186eec
commit a660a57d71
11 changed files with 328 additions and 317 deletions

View file

@ -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
}

View file

@ -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

View file

@ -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"
}

278
package/ppp/files/ppp.sh Normal file → Executable file
View file

@ -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
remove_dns "$cfg"
local lock="/var/lock/ppp-$link"
[ -f "$lock" ] && lock -u "$lock"
[ -n "$INCLUDE_ONLY" ] || {
. /etc/functions.sh
. ../netifd-proto.sh
init_proto "$@"
}
start_pppd() {
local cfg="$1"; shift
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"
}
# 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
ppp_generic_setup() {
local config="$1"; shift
local proto
config_get proto "$cfg" proto
json_get_var ipv6 ipv6
[ "$ipv6" = 1 ] || ipv6=""
# unique link identifier
local link="${proto:-ppp}-$cfg"
json_get_var peerdns peerdns
[ "$peerdns" = 0 ] && peerdns="" || peerdns="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
}
json_get_var defaultroute defaultroute
if [ "$defaultroute" = 1 ]; then
defaultroute="defaultroute replacedefaultroute";
else
defaultroute="nodefaultroute"
fi
# 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 demand demand
if [ "${demand:-0}" -gt 0 ]; then
demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
else
demand="persist"
fi
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"
[ -n "$mtu" ] || json_get_var mtu mtu
json_get_var keepalive keepalive
local interval="${keepalive##*[, ]}"
[ "$interval" != "$keepalive" ] || interval=5
local dns
config_get dns "$config" dns
json_get_var username username
json_get_var password password
local has_dns=0
local peer_default=1
[ -n "$dns" ] && {
has_dns=1
peer_default=0
}
[ -n "$connect" ] || json_get_var connect connect
[ -n "$disconnect" ] || json_get_var disconnect disconnect
json_get_var pppd_options pppd_options
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 "$@" \
proto_run_command "$config" /usr/sbin/pppd \
nodetach ipparam "$config" \
ifname "${proto:-ppp}-$config" \
${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \
$demandargs \
$peerdns \
$defaultroute \
${ipv6:++ipv6} $defaultroute \
${peerdns:+usepeerdns} \
$demand maxfail 1 \
${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}"
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 "$@"
}
setup_interface_ppp() {
local iface="$1"
local config="$2"
ppp_generic_teardown() {
local interface="$1"
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"
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
}