hotplug-based network script rewrite
SVN-Revision: 2531
This commit is contained in:
parent
9a8a69c0b8
commit
733dc97762
15 changed files with 366 additions and 247 deletions
|
@ -60,6 +60,3 @@ mount none /tmp -t ramfs
|
||||||
umount /rom/proc
|
umount /rom/proc
|
||||||
umount /rom/tmp
|
umount /rom/tmp
|
||||||
umount /rom/dev
|
umount /rom/dev
|
||||||
|
|
||||||
# normally created by boot script
|
|
||||||
mkdir -p /var/run
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/ash
|
#!/bin/sh
|
||||||
. /etc/nvram.sh
|
. /etc/nvram.sh
|
||||||
|
|
||||||
alias debug=${DEBUG:-:}
|
alias debug=${DEBUG:-:}
|
||||||
|
@ -7,74 +7,11 @@ alias debug=${DEBUG:-:}
|
||||||
if_valid () (
|
if_valid () (
|
||||||
ifconfig "$1" >&- 2>&- ||
|
ifconfig "$1" >&- 2>&- ||
|
||||||
[ "${1%%[0-9]}" = "br" ] ||
|
[ "${1%%[0-9]}" = "br" ] ||
|
||||||
{
|
|
||||||
[ "${1%%[0-9]}" = "vlan" ] && (
|
|
||||||
i=${1#vlan}
|
|
||||||
hwname=$(nvram get vlan${i}hwname)
|
|
||||||
hwaddr=$(nvram get ${hwname}macaddr)
|
|
||||||
[ -z "$hwaddr" ] && return 1
|
|
||||||
|
|
||||||
vif=$(ifconfig -a | awk '/^eth.*'$hwaddr'/ {print $1; exit}' IGNORECASE=1)
|
|
||||||
debug "# vlan$i => $vif"
|
|
||||||
|
|
||||||
$DEBUG ifconfig $vif up
|
|
||||||
$DEBUG vconfig add $vif $i 2>&-
|
|
||||||
)
|
|
||||||
} ||
|
|
||||||
{ debug "# missing interface '$1' ignored"; false; }
|
{ debug "# missing interface '$1' ignored"; false; }
|
||||||
)
|
)
|
||||||
|
|
||||||
do_ifup() {
|
hotplug_dev() {
|
||||||
if_proto=$(nvram get ${2}_proto)
|
env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug net
|
||||||
if=$(nvram get ${2}_ifname)
|
|
||||||
[ "${if%%[0-9]}" = "ppp" ] && if=$(nvram get ${if_proto}_ifname)
|
|
||||||
|
|
||||||
pidfile=/var/run/${if}.pid
|
|
||||||
[ -f $pidfile ] && $DEBUG kill $(cat $pidfile)
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
static)
|
|
||||||
ip=$(nvram get ${2}_ipaddr)
|
|
||||||
netmask=$(nvram get ${2}_netmask)
|
|
||||||
gateway=$(nvram get ${2}_gateway)
|
|
||||||
|
|
||||||
$DEBUG ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up
|
|
||||||
${gateway:+$DEBUG route add default gw $gateway}
|
|
||||||
|
|
||||||
[ -f /etc/resolv.conf ] || {
|
|
||||||
debug "# --- creating /etc/resolv.conf ---"
|
|
||||||
for dns in $(nvram get ${2}_dns); do
|
|
||||||
echo "nameserver $dns" >> /etc/resolv.conf
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
env -i ACTION="ifup" INTERFACE="${2}" PROTO=static /sbin/hotplug "iface" &
|
|
||||||
;;
|
|
||||||
dhcp)
|
|
||||||
DHCP_IP=$(nvram get ${2}_ipaddr)
|
|
||||||
DHCP_NETMASK=$(nvram get ${2}_netmask)
|
|
||||||
$DEBUG ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up
|
|
||||||
|
|
||||||
DHCP_ARGS="-i $if ${DHCP_IP:+-r $DHCP_IP} -b -p $pidfile"
|
|
||||||
DHCP_HOSTNAME=$(nvram get ${2}_hostname)
|
|
||||||
DHCP_HOSTNAME=${DHCP_HOSTNAME%%.*}
|
|
||||||
[ -z $DHCP_HOSTNAME ] || DHCP_ARGS="$DHCP_ARGS -H $DHCP_HOSTNAME"
|
|
||||||
[ "$if_proto" = "pptp" ] && DHCP_ARGS="$DHCP_ARGS -n -q" || DHCP_ARGS="$DHCP_ARGS -R &"
|
|
||||||
oldpid=$(cat $pidfile)
|
|
||||||
${DEBUG:-eval} "udhcpc $DHCP_ARGS"
|
|
||||||
pidof udhcpc | grep "$oldpid" >&- 2>&- && {
|
|
||||||
sleep 1
|
|
||||||
kill -9 $oldpid
|
|
||||||
}
|
|
||||||
# hotplug events are handled by /usr/share/udhcpc/default.script
|
|
||||||
;;
|
|
||||||
none|"")
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
[ -x "/sbin/ifup.$1" ] && { $DEBUG /sbin/ifup.$1 ${2}; exit; }
|
|
||||||
echo "### ifup ${2}: ignored ${2}_proto=\"$1\" (not supported)"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bitcount () {
|
bitcount () {
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
[ "${INTERFACE%%[0-9]*}" = "wds" ] && {
|
|
||||||
ifconfig $INTERFACE 0.0.0.0 up
|
|
||||||
/usr/sbin/brctl addif br0 $INTERFACE
|
|
||||||
}
|
|
||||||
|
|
190
openwrt/package/base-files/default/etc/hotplug.d/net/10-net
Normal file
190
openwrt/package/base-files/default/etc/hotplug.d/net/10-net
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
#!/bin/sh
|
||||||
|
setup_eth()
|
||||||
|
{
|
||||||
|
[ -f /proc/net/wl0 ] && {
|
||||||
|
lsmod | grep wlcompat >&- || insmod wlcompat
|
||||||
|
}
|
||||||
|
iwconfig "$INTERFACE" 2>&- | grep -v 'no wireless' >&- && {
|
||||||
|
/sbin/wifi
|
||||||
|
}
|
||||||
|
if="$(echo "$INTERFACE" | sed s,eth,et,)"
|
||||||
|
ifconfig "$INTERFACE" up 2>&- >&-
|
||||||
|
for vlan in $(seq 0 15); do
|
||||||
|
[ "$(nvram get vlan${vlan}hwname)" = "$if" ] && \
|
||||||
|
$DEBUG vconfig add "$INTERFACE" "$vlan"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
find_name()
|
||||||
|
{
|
||||||
|
pppoa_ifname="atm0" # hack for ppp over atm, which has no ${proto}_ifname
|
||||||
|
interfaces="lan wan wifi $(nvram get ifnames)"
|
||||||
|
for ifname in $interfaces; do
|
||||||
|
IFTYPE="${ifname}"
|
||||||
|
IFPROTO="$(nvram get ${IFTYPE}_proto)"
|
||||||
|
IFACE="$(nvram get ${IFTYPE}_ifname)"
|
||||||
|
[ -z "$IFPROTO" -o "$IFPROTO" = "none" ] || {
|
||||||
|
[ "${IFACE}" = "$INTERFACE" ] && return 0
|
||||||
|
case "$IFPROTO" in
|
||||||
|
static|dhcp)
|
||||||
|
[ "${IFACE%%[0-9]*}" = "br" ] && {
|
||||||
|
for part in $(nvram get ${IFTYPE}_ifnames); do
|
||||||
|
[ "$part" = "$INTERFACE" ] && return 0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
[ "$(nvram get ${IFPROTO}_ifname)" = "$INTERFACE" \
|
||||||
|
-a -x /sbin/ifup.${IFPROTO} ] && return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
done
|
||||||
|
IFACE=""
|
||||||
|
IFTYPE=""
|
||||||
|
IFPROTO=""
|
||||||
|
return 255
|
||||||
|
}
|
||||||
|
|
||||||
|
do_ifup() {
|
||||||
|
if="$3"
|
||||||
|
if_proto="$(nvram get ${2}_proto)"
|
||||||
|
|
||||||
|
pidfile=/var/run/${if}.pid
|
||||||
|
[ -f $pidfile ] && $DEBUG kill $(cat $pidfile)
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
static)
|
||||||
|
ip=$(nvram get ${2}_ipaddr)
|
||||||
|
netmask=$(nvram get ${2}_netmask)
|
||||||
|
gateway=$(nvram get ${2}_gateway)
|
||||||
|
|
||||||
|
$DEBUG ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up
|
||||||
|
${gateway:+$DEBUG route add default gw $gateway}
|
||||||
|
|
||||||
|
[ -f /etc/resolv.conf ] || {
|
||||||
|
debug "# --- creating /etc/resolv.conf ---"
|
||||||
|
for dns in $(nvram get ${2}_dns); do
|
||||||
|
echo "nameserver $dns" >> /etc/resolv.conf
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
env -i ACTION="ifup" INTERFACE="${2}" PROTO=static /sbin/hotplug "iface" &
|
||||||
|
;;
|
||||||
|
dhcp)
|
||||||
|
DHCP_IP=$(nvram get ${2}_ipaddr)
|
||||||
|
DHCP_NETMASK=$(nvram get ${2}_netmask)
|
||||||
|
$DEBUG ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up
|
||||||
|
|
||||||
|
DHCP_ARGS="-i $if ${DHCP_IP:+-r $DHCP_IP} -b -p $pidfile"
|
||||||
|
DHCP_HOSTNAME=$(nvram get ${2}_hostname)
|
||||||
|
DHCP_HOSTNAME=${DHCP_HOSTNAME%%.*}
|
||||||
|
[ -z $DHCP_HOSTNAME ] || DHCP_ARGS="$DHCP_ARGS -H $DHCP_HOSTNAME"
|
||||||
|
[ "$if_proto" = "pptp" ] && DHCP_ARGS="$DHCP_ARGS -n -q" || DHCP_ARGS="$DHCP_ARGS -R &"
|
||||||
|
oldpid=$(cat $pidfile)
|
||||||
|
${DEBUG:-eval} "udhcpc $DHCP_ARGS"
|
||||||
|
pidof udhcpc | grep "$oldpid" >&- 2>&- && {
|
||||||
|
sleep 1
|
||||||
|
kill -9 $oldpid
|
||||||
|
}
|
||||||
|
# hotplug events are handled by /usr/share/udhcpc/default.script
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -x "/sbin/ifup.$1" ]; then
|
||||||
|
( $DEBUG . /sbin/ifup.$1 ${2} $3 )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
do_register()
|
||||||
|
{
|
||||||
|
case "${INTERFACE%%[0-9]*}" in
|
||||||
|
eth) setup_eth;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -z "$IFTYPE" -o -z "$IFPROTO" ] && {
|
||||||
|
find_name || {
|
||||||
|
case "${INTERFACE%%[0-9]*}" in
|
||||||
|
wds)
|
||||||
|
for tmp in lan wifi; do
|
||||||
|
[ -z "$IFPROTO" ] && [ "$(nvram get ${tmp}_ifname)" = "br0" ] && {
|
||||||
|
IFPROTO="$(nvram get ${tmp}_proto)"
|
||||||
|
IFTYPE="${tmp}"
|
||||||
|
}
|
||||||
|
done
|
||||||
|
[ -z "$IFPROTO" ] && return 0
|
||||||
|
;;
|
||||||
|
atm)
|
||||||
|
for tmp in lan wan wifi $(nvram get ifnames); do
|
||||||
|
[ "$(nvram get ${tmp}_proto)" = "pppoa" ] && {
|
||||||
|
do_ifup "pppoa" "$tmp" "$INTERFACE"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${INTERFACE%%[0-9]*}" in
|
||||||
|
ppp|atm);;
|
||||||
|
*)
|
||||||
|
mac=$(nvram get ${IFTYPE}_hwaddr)
|
||||||
|
${mac:+$DEBUG ifconfig $INTERFACE down hw ether $mac}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if="$(nvram get ${IFTYPE}_ifname)"
|
||||||
|
if [ "${if%%[0-9]}" = "br" ]; then
|
||||||
|
if_valid "$INTERFACE" && {
|
||||||
|
ifconfig "$if" 2>&- >&- || {
|
||||||
|
stp=$(nvram get ${IFTYPE}_stp)
|
||||||
|
$DEBUG brctl addbr "$if"
|
||||||
|
$DEBUG brctl setfd "$if" 0
|
||||||
|
$DEBUG brctl stp "$if" "${stp:-0}"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$INTERFACE" != "$if" ]; then
|
||||||
|
$DEBUG ifconfig "$INTERFACE" 0.0.0.0 up
|
||||||
|
brctl addif "$if" "$INTERFACE"
|
||||||
|
else
|
||||||
|
do_ifup "$IFPROTO" "$IFTYPE" "$if"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
else
|
||||||
|
do_ifup "$IFPROTO" "$IFTYPE" "$if"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
do_unregister() {
|
||||||
|
[ "${INTERFACE%%[0-9]*}" = "atm" ] || ifconfig "$INTERFACE" 0.0.0.0 down 2>&-
|
||||||
|
[ -z "$IFTYPE" -o -z "$IFPROTO" ] && find_name
|
||||||
|
[ -z "$IFTYPE" -o -z "$IFPROTO" ] && return 0
|
||||||
|
|
||||||
|
[ "${IFACE%%[0-9]*}" = "br" ] && {
|
||||||
|
if [ "$INTERFACE" != "$IFACE" ]; then
|
||||||
|
brctl delif "$IFACE" "$INTERFACE" 2>&- >&-
|
||||||
|
else
|
||||||
|
brctl delbr "$IFACE" 2>&- >&-
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$IFPROTO" in
|
||||||
|
pppoe|pppoa|pptp)
|
||||||
|
killall ifup.${IFPROTO}
|
||||||
|
killall pppd
|
||||||
|
;;
|
||||||
|
dhcp)
|
||||||
|
[ -f /var/run/${INTERFACE}.pid ] && kill "$(cat /var/run/${INTERFACE}.pid)" 2>&- >&-
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
register) do_register;;
|
||||||
|
unregister) do_unregister;;
|
||||||
|
esac
|
|
@ -5,10 +5,22 @@
|
||||||
echo "S" > /proc/jffs2_bbc
|
echo "S" > /proc/jffs2_bbc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vconfig set_name_type VLAN_PLUS_VID_NO_PAD
|
||||||
|
|
||||||
|
HOSTNAME=$(nvram get wan_hostname)
|
||||||
|
HOSTNAME=${HOSTNAME%%.*}
|
||||||
|
echo ${HOSTNAME:=OpenWrt}>/proc/sys/kernel/hostname
|
||||||
|
|
||||||
|
# automagically run firstboot
|
||||||
|
[ -z "$FAILSAFE" -a -z "$(nvram get no_root_swap)" ] && {
|
||||||
|
{ mount|grep "on / type jffs2" 1>&-; } || firstboot
|
||||||
|
}
|
||||||
|
|
||||||
mkdir -p /var/run
|
mkdir -p /var/run
|
||||||
mkdir -p /var/log
|
mkdir -p /var/log
|
||||||
touch /var/log/wtmp
|
touch /var/log/wtmp
|
||||||
touch /var/log/lastlog
|
touch /var/log/lastlog
|
||||||
|
[ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
|
||||||
|
|
||||||
sed 's/^[^#]/insmod &/' /etc/modules /etc/modules.d/* 2>&-|ash
|
sed 's/^[^#]/insmod &/' /etc/modules /etc/modules.d/* 2>&-|ash
|
||||||
|
|
||||||
|
@ -20,13 +32,4 @@ ifconfig eth0 promisc
|
||||||
robocfg show
|
robocfg show
|
||||||
}
|
}
|
||||||
|
|
||||||
HOSTNAME=$(nvram get wan_hostname)
|
|
||||||
HOSTNAME=${HOSTNAME%%.*}
|
|
||||||
echo ${HOSTNAME:=OpenWrt}>/proc/sys/kernel/hostname
|
|
||||||
|
|
||||||
vconfig set_name_type VLAN_PLUS_VID_NO_PAD
|
|
||||||
|
|
||||||
# automagically run firstboot
|
|
||||||
[ -z "$FAILSAFE" -a -z "$(nvram get no_root_swap)" ] && {
|
|
||||||
{ mount|grep "on / type jffs2" 1>&-; } || firstboot
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start|restart)
|
start|restart)
|
||||||
ifup lan
|
# ifup lan
|
||||||
ifup wan
|
# ifup wan
|
||||||
ifup wifi
|
# ifup wifi
|
||||||
wifi up
|
# wifi up
|
||||||
|
|
||||||
for route in $(nvram get static_route); do {
|
for route in $(nvram get static_route); do {
|
||||||
eval "set $(echo $route | sed 's/:/ /g')"
|
eval "set $(echo $route | sed 's/:/ /g')"
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
nvram () {
|
nvram () {
|
||||||
if [ -x /usr/sbin/nvram ]; then
|
if [ -x /usr/sbin/nvram ]; then
|
||||||
case $1 in
|
case $1 in
|
||||||
get) eval "echo \${$2:-\$(command nvram get $2)}";;
|
get) eval "echo \${$2:-\$(/usr/sbin/nvram get $2)}";;
|
||||||
*) command nvram $*;;
|
*) /usr/sbin/nvram $*;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
case $1 in
|
case $1 in
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
[ -e /tmp/.failsafe ] && {
|
||||||
|
export FAILSAFE=true
|
||||||
|
} || {
|
||||||
|
[ -e /etc/config/network ] && . /etc/config/network
|
||||||
|
}
|
||||||
. /etc/functions.sh
|
. /etc/functions.sh
|
||||||
. /etc/network.overrides
|
. /etc/network.overrides
|
||||||
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
|
||||||
|
|
||||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin
|
||||||
LOGNAME=root
|
LOGNAME=root
|
||||||
|
|
|
@ -1,19 +1,29 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
[ $# = 0 ] && { echo " $0 <group>"; exit; }
|
[ $# = 0 ] && { echo " $0 <group>"; exit; }
|
||||||
. /etc/functions.sh
|
. /etc/functions.sh
|
||||||
. /etc/network.overrides
|
. /etc/network.overrides
|
||||||
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
||||||
|
|
||||||
type=$1
|
|
||||||
debug "### ifdown $type ###"
|
debug "### ifdown $type ###"
|
||||||
|
type=$1
|
||||||
|
|
||||||
|
if_proto=$(nvram get ${type}_proto)
|
||||||
if=$(nvram get ${type}_ifname)
|
if=$(nvram get ${type}_ifname)
|
||||||
proto=$(nvram get ${type}_proto)
|
|
||||||
if_valid $if && $DEBUG ifconfig $if down
|
case "$if_proto" in
|
||||||
kill $(cat /var/run/${if}.pid 2>&-) 2>&-
|
pppoa) hotplug_dev unregister atm0; exit 0 ;;
|
||||||
killall ifup.$proto >&- 2>&-
|
pppoe)
|
||||||
case "$proto" in
|
[ "$(nvram get pppoe_atm)" = 1 ] && {
|
||||||
pptp|pppoe) killall pppd >&- 2>&- ;;
|
hotplug_dev unregister atm0
|
||||||
static) env -i ACTION="ifdown" INTERFACE="$if" PROTO=static /sbin/hotplug "iface" ;;
|
exit
|
||||||
|
}
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [ "${if%%[0-9]}" = "br" ]; then
|
||||||
|
for sif in $(nvram get ${type}_ifnames); do
|
||||||
|
hotplug_dev unregister "$sif"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
hotplug_dev unregister "$if"
|
||||||
|
|
|
@ -1,36 +1,31 @@
|
||||||
#!/bin/ash
|
#!/bin/sh
|
||||||
[ $# = 0 ] && { echo " $0 <group>"; exit; }
|
[ $# = 0 ] && { echo " $0 <group>"; exit; }
|
||||||
|
|
||||||
. /etc/functions.sh
|
. /etc/functions.sh
|
||||||
. /etc/network.overrides
|
. /etc/network.overrides
|
||||||
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
[ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network
|
||||||
|
|
||||||
type=$1
|
ifdown $1
|
||||||
|
|
||||||
debug "### ifup $type ###"
|
debug "### ifup $type ###"
|
||||||
|
type=$1
|
||||||
|
|
||||||
if_proto=$(nvram get ${type}_proto)
|
if_proto=$(nvram get ${type}_proto)
|
||||||
if=$(nvram get ${type}_ifname)
|
if=$(nvram get ${type}_ifname)
|
||||||
[ "${if%%[0-9]}" = "ppp" ] && if=$(nvram get ${if_proto}_ifname)
|
|
||||||
|
|
||||||
if_valid $if || [ "$if_proto" = "pptp" ] || exit
|
case "$if_proto" in
|
||||||
mac=$(nvram get ${type}_hwaddr)
|
pppoa) hotplug_dev register atm0; exit 0 ;;
|
||||||
$DEBUG ifconfig $if down 2>&-
|
pppoe)
|
||||||
|
[ "$(nvram get pppoe_atm)" = 1 ] && {
|
||||||
|
hotplug_dev register atm0
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
if [ "${if%%[0-9]}" = "br" ]; then
|
if [ "${if%%[0-9]}" = "br" ]; then
|
||||||
stp=$(nvram get ${type}_stp)
|
|
||||||
$DEBUG brctl delbr $if 2>&-
|
|
||||||
$DEBUG brctl addbr $if
|
|
||||||
$DEBUG brctl setfd $if 0
|
|
||||||
$DEBUG brctl stp $if ${stp:-0}
|
|
||||||
|
|
||||||
for sif in $(nvram get ${type}_ifnames); do
|
for sif in $(nvram get ${type}_ifnames); do
|
||||||
if_valid $sif || continue
|
hotplug_dev register "$sif"
|
||||||
${mac:+$DEBUG ifconfig $sif down hw ether $mac}
|
|
||||||
$DEBUG ifconfig $sif 0.0.0.0 up
|
|
||||||
$DEBUG brctl addif $if $sif
|
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
${mac:+$DEBUG ifconfig $if down hw ether $mac}
|
hotplug_dev register "$if"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
do_ifup $if_proto $type
|
|
||||||
|
|
|
@ -63,8 +63,8 @@ $(IPKG_LINUX_ATM):
|
||||||
$(IPKG_BR2684CTL):
|
$(IPKG_BR2684CTL):
|
||||||
install -d -m0755 $(IDIR_BR2684CTL)/usr/sbin
|
install -d -m0755 $(IDIR_BR2684CTL)/usr/sbin
|
||||||
cp -fpR $(PKG_INSTALL_DIR)/usr/sbin/br2684ctl $(IDIR_BR2684CTL)/usr/sbin/
|
cp -fpR $(PKG_INSTALL_DIR)/usr/sbin/br2684ctl $(IDIR_BR2684CTL)/usr/sbin/
|
||||||
install -d -m0755 $(IDIR_BR2684CTL)/etc/init.d
|
install -d -m0755 $(IDIR_BR2684CTL)/etc/hotplug.d/net
|
||||||
install -m0755 ./files/br2684.init $(IDIR_BR2684CTL)/etc/init.d/S30br2684
|
install -m0644 ./files/br2684.init $(IDIR_BR2684CTL)/etc/hotplug.d/net/30-br2684
|
||||||
$(RSTRIP) $(IDIR_BR2684CTL)/
|
$(RSTRIP) $(IDIR_BR2684CTL)/
|
||||||
$(IPKG_BUILD) $(IDIR_BR2684CTL) $(PACKAGE_DIR)
|
$(IPKG_BUILD) $(IDIR_BR2684CTL) $(PACKAGE_DIR)
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,21 @@
|
||||||
#!/bin/sh
|
[ "${INTERFACE%%[0-9]*}" = "atm" ] && {
|
||||||
. /etc/functions.sh
|
case "$ACTION" in
|
||||||
[ -e /etc/config/network ] && . /etc/config/network
|
register)
|
||||||
|
[ "$(nvram get pppoe_atm)" = 1 ] && {
|
||||||
killall br2684ctl 2>&- >&-
|
VPI=$(nvram get atm_vpi)
|
||||||
[ "$(nvram get pppoe_atm)" = 1 ] && {
|
VCI=$(nvram get atm_vci)
|
||||||
VPI=$(nvram get atm_vpi)
|
case "$(nvram get atm_encaps)" in
|
||||||
VCI=$(nvram get atm_vci)
|
0|vc) ENCAPS=0 ;;
|
||||||
case "$(nvram get atm_encaps)" in
|
1|llc) ENCAPS=1 ;;
|
||||||
0|vc)
|
*) ENCAPS=0 ;;
|
||||||
ENCAPS=0
|
esac
|
||||||
;;
|
insmod br2684 2>&- >&-
|
||||||
1|llc)
|
br2684ctl -c0 -e${ENCAPS} -a${VPI:-8}.${VCI:-35} &
|
||||||
ENCAPS=1
|
}
|
||||||
;;
|
;;
|
||||||
*)
|
unregister)
|
||||||
ENCAPS=0
|
killall br2684ctl 2>&- >&-
|
||||||
;;
|
rmmod br2684
|
||||||
esac
|
;;
|
||||||
insmod br2684
|
esac
|
||||||
br2684ctl -c0 -e${ENCAPS} -a${VPI:-8}.${VCI:-35} &
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,36 +14,31 @@ for module in slhc ppp_generic pppoatm; do
|
||||||
/sbin/insmod $module 2>&- >&-
|
/sbin/insmod $module 2>&- >&-
|
||||||
done
|
done
|
||||||
|
|
||||||
while :; do
|
VPI=$(nvram get atm_vpi)
|
||||||
VPI=$(nvram get atm_vpi)
|
VCI=$(nvram get atm_vci)
|
||||||
VCI=$(nvram get atm_vci)
|
USERNAME=$(nvram get ppp_username)
|
||||||
USERNAME=$(nvram get ppp_username)
|
PASSWORD=$(nvram get ppp_passwd)
|
||||||
PASSWORD=$(nvram get ppp_passwd)
|
KEEPALIVE=$(nvram get ppp_redialperiod)
|
||||||
KEEPALIVE=$(nvram get ppp_redialperiod)
|
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
||||||
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
DEMAND=$(nvram get ppp_demand)
|
||||||
DEMAND=$(nvram get ppp_demand)
|
case "$DEMAND" in
|
||||||
case "$DEMAND" in
|
on|1|enabled)
|
||||||
on|1|enabled)
|
DEMAND=$(nvram get ppp_idletime)
|
||||||
DEMAND=$(nvram get ppp_idletime)
|
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
||||||
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
;;
|
||||||
;;
|
*) DEMAND="persist";;
|
||||||
*) DEMAND="";;
|
esac
|
||||||
esac
|
MTU=$(nvram get ppp_mtu)
|
||||||
MTU=$(nvram get ppp_mtu)
|
MTU=${MTU:-1500}
|
||||||
MTU=${MTU:-1500}
|
|
||||||
|
|
||||||
/usr/sbin/pppd nodetach \
|
/usr/sbin/pppd nodetach \
|
||||||
plugin pppoatm.so ${VPI:-8}.${VCI:-35} \
|
plugin pppoatm.so ${VPI:-8}.${VCI:-35} \
|
||||||
usepeerdns \
|
usepeerdns \
|
||||||
defaultroute \
|
defaultroute \
|
||||||
linkname $type \
|
linkname $type \
|
||||||
ipparam $type \
|
ipparam $type \
|
||||||
user "$USERNAME" \
|
user "$USERNAME" \
|
||||||
password "$PASSWORD" \
|
password "$PASSWORD" \
|
||||||
mtu $MTU mru $MTU \
|
mtu $MTU mru $MTU \
|
||||||
$DEMAND \
|
$DEMAND \
|
||||||
$KEEPALIVE
|
$KEEPALIVE
|
||||||
|
|
||||||
# Read settings again (might have changed)
|
|
||||||
[ -e /etc/config/network ] && . /etc/config/network
|
|
||||||
done &
|
|
||||||
|
|
|
@ -14,38 +14,34 @@ for module in slhc ppp_generic pppox pppoe; do
|
||||||
/sbin/insmod $module 2>&- >&-
|
/sbin/insmod $module 2>&- >&-
|
||||||
done
|
done
|
||||||
|
|
||||||
while :; do
|
IFNAME=$(nvram get pppoe_ifname)
|
||||||
IFNAME=$(nvram get pppoe_ifname)
|
USERNAME=$(nvram get ppp_username)
|
||||||
USERNAME=$(nvram get ppp_username)
|
PASSWORD=$(nvram get ppp_passwd)
|
||||||
PASSWORD=$(nvram get ppp_passwd)
|
KEEPALIVE=$(nvram get ppp_redialperiod)
|
||||||
KEEPALIVE=$(nvram get ppp_redialperiod)
|
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
||||||
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
DEMAND=$(nvram get ppp_demand)
|
||||||
DEMAND=$(nvram get ppp_demand)
|
case "$DEMAND" in
|
||||||
case "$DEMAND" in
|
on|1|enabled)
|
||||||
on|1|enabled)
|
DEMAND=$(nvram get ppp_idletime)
|
||||||
DEMAND=$(nvram get ppp_idletime)
|
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
||||||
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
;;
|
||||||
;;
|
*) DEMAND="persist";;
|
||||||
*) DEMAND="";;
|
esac
|
||||||
esac
|
MTU=$(nvram get ppp_mtu)
|
||||||
MTU=$(nvram get ppp_mtu)
|
MTU=${MTU:-1492}
|
||||||
MTU=${MTU:-1492}
|
|
||||||
|
ifconfig $IFNAME up
|
||||||
|
/usr/sbin/pppd nodetach \
|
||||||
|
plugin rp-pppoe.so \
|
||||||
|
connect /bin/true \
|
||||||
|
usepeerdns \
|
||||||
|
defaultroute \
|
||||||
|
linkname $type \
|
||||||
|
ipparam $type \
|
||||||
|
user "$USERNAME" \
|
||||||
|
password "$PASSWORD" \
|
||||||
|
mtu $MTU mru $MTU \
|
||||||
|
$DEMAND \
|
||||||
|
$KEEPALIVE \
|
||||||
|
nic-$IFNAME
|
||||||
|
|
||||||
ifconfig $IFNAME up
|
|
||||||
/usr/sbin/pppd nodetach \
|
|
||||||
plugin rp-pppoe.so \
|
|
||||||
connect /bin/true \
|
|
||||||
usepeerdns \
|
|
||||||
defaultroute \
|
|
||||||
linkname $type \
|
|
||||||
ipparam $type \
|
|
||||||
user "$USERNAME" \
|
|
||||||
password "$PASSWORD" \
|
|
||||||
mtu $MTU mru $MTU \
|
|
||||||
$DEMAND \
|
|
||||||
$KEEPALIVE \
|
|
||||||
nic-$IFNAME
|
|
||||||
|
|
||||||
# Read settings again (might have changed)
|
|
||||||
[ -e /etc/config/network ] && . /etc/config/network
|
|
||||||
done &
|
|
||||||
|
|
|
@ -10,46 +10,44 @@ for module in slhc ppp_generic ppp_async ip_gre; do
|
||||||
/sbin/insmod $module 2>&- >&-
|
/sbin/insmod $module 2>&- >&-
|
||||||
done
|
done
|
||||||
|
|
||||||
while :; do
|
PPTP_PROTO="$(nvram get pptp_proto)"
|
||||||
PPTP_PROTO="$(nvram get pptp_proto)"
|
[ "$PPTP_PROTO" = "static" ] || PPTP_PROTO=""
|
||||||
[ "$PPTP_PROTO" = "static" ] || PPTP_PROTO=""
|
PPTP_PROTO="${PPTP_PROTO:-dhcp}"
|
||||||
PPTP_PROTO="${PPTP_PROTO:-dhcp}"
|
IP=$(nvram get pptp_server_ip)
|
||||||
IP=$(nvram get pptp_server_ip)
|
USERNAME=$(nvram get ppp_username)
|
||||||
USERNAME=$(nvram get ppp_username)
|
PASSWORD=$(nvram get ppp_passwd)
|
||||||
PASSWORD=$(nvram get ppp_passwd)
|
KEEPALIVE=$(nvram get ppp_redialperiod)
|
||||||
KEEPALIVE=$(nvram get ppp_redialperiod)
|
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
||||||
KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
|
DEMAND=$(nvram get ppp_demand)
|
||||||
DEMAND=$(nvram get ppp_demand)
|
case "$DEMAND" in
|
||||||
case "$DEMAND" in
|
on|1|enabled)
|
||||||
on|1|enabled)
|
DEMAND=$(nvram get ppp_idletime)
|
||||||
DEMAND=$(nvram get ppp_idletime)
|
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
||||||
DEMAND=${IDLETIME:+demand idle $IDLETIME}
|
;;
|
||||||
;;
|
*) DEMAND="persist";;
|
||||||
*) DEMAND="";;
|
esac
|
||||||
esac
|
MTU=$(nvram get ppp_mtu)
|
||||||
MTU=$(nvram get ppp_mtu)
|
MTU=${MTU:-1452}
|
||||||
MTU=${MTU:-1452}
|
|
||||||
|
|
||||||
do_ifup $PPTP_PROTO $type
|
do_ifup $PPTP_PROTO $type
|
||||||
|
|
||||||
# hack for some buggy ISPs
|
|
||||||
NETMASK=$(nvram get ${type}_netmask)
|
|
||||||
IFNAME=$(nvram get pptp_ifname)
|
|
||||||
[ -z "$NETMASK" -o -z "$IFNAME" ] || ifconfig $IFNAME netmask $NETMASK
|
|
||||||
|
|
||||||
/usr/sbin/pppd nodetach \
|
# hack for some buggy ISPs
|
||||||
pty "/usr/sbin/pptp $IP --loglevel 0 --nolaunchpppd" \
|
NETMASK=$(nvram get ${type}_netmask)
|
||||||
file /etc/ppp/options.pptp \
|
IFNAME=$(nvram get pptp_ifname)
|
||||||
connect /bin/true \
|
[ -z "$NETMASK" -o -z "$IFNAME" ] || ifconfig $IFNAME netmask $NETMASK
|
||||||
usepeerdns \
|
|
||||||
defaultroute \
|
/usr/sbin/pppd nodetach \
|
||||||
replacedefaultroute \
|
pty "/usr/sbin/pptp $IP --loglevel 0 --nolaunchpppd" \
|
||||||
linkname "$type" \
|
file /etc/ppp/options.pptp \
|
||||||
ipparam "$type" \
|
connect /bin/true \
|
||||||
user "$USERNAME" \
|
usepeerdns \
|
||||||
password "$PASSWORD" \
|
defaultroute \
|
||||||
mtu $MTU mru $MTU \
|
replacedefaultroute \
|
||||||
$DEMAND \
|
linkname "$type" \
|
||||||
$KEEPALIVE
|
ipparam "$type" \
|
||||||
done &
|
user "$USERNAME" \
|
||||||
|
password "$PASSWORD" \
|
||||||
|
mtu $MTU mru $MTU \
|
||||||
|
$DEMAND \
|
||||||
|
$KEEPALIVE
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue