This is a big more, added also some comments. Maybe some things can be more readable. Can the originator do some explanations in code?
Signed-off-by: Bastian Bittorf <[EMAIL PROTECTED]>
---
Index: package/base-files/files/usr/share/udhcpc/default.script
===================================================================
--- package/base-files/files/usr/share/udhcpc/default.script (Revision 11157)
+++ package/base-files/files/usr/share/udhcpc/default.script (Arbeitskopie)
@@ -26,24 +26,43 @@
case "$1" in
deconfig)
- ifconfig $interface 0.0.0.0
+ ifconfig $interface 0.0.0.0 || {
+ ip addr flush dev $interface # ifconfig n/a
-> fallback using ip
+ }
+
hotplug_event ifdown
;;
renew|bound)
- ifconfig $interface $ip \
- netmask ${subnet:-255.255.255.0} \
- broadcast ${broadcast:-+}
+ MASK="${subnet:-255.255.255.0}"
+ ifconfig $interface $ip netmask $MASK broadcast ${broadcast:-+}
|| {
+ PRE="$( /bin/ipcalc.sh $ip $MASK | sed -n
's/^PREFIX=\(.*\)/\1/p' )" # ifconfig n/a -> fallback using ip
+ ip addr add dev $interface ${ip}/${PRE} broadcast +
+ }
+
[ -n "$router" ] && {
for i in $router ; do
echo "adding router $i"
- route add default gw $i dev $interface
- valid="$valid|$i"
+ route add default gw $i dev $interface || {
+ ip route add default via "$i" dev
"$interface" # route n/a -> fallback using ip
+ }
+ valid="$valid|$i" # leads to:
"ip_1|ip_2|ip_n"
+
done
+ # this section needs
refactoring, because it is unreadable
+ echo "deleting old routes" # this leads to
something like: route del -net 0.0.0.0 gw 1.2.3.4 ; ...
- echo "deleting old routes"
- $(route -n | awk '/^0.0.0.0\W{9}('$valid')\W/ {next}
/^0.0.0.0/ {print "route del -net "$1" gw "$2";"}')
+ $(route -n | awk '/^0.0.0.0\W{9}('$valid')\W/ {next}
/^0.0.0.0/ {print "route del -net "$1" gw "$2";"}') || {
+ # route n/a -> fallback
using ip
+ IFS="|" # field separator, set
+ for IP in $valid; do
+
+ # leads to something like: ip route del
default via 1.2.3.4 dev br0 ; ...
+ $( ip route list exact 0/0 via $IP |
sed "s/default dev \(.*\)/ip route del default via $IP dev \1 ;/" )
+ done
+ unset IFS # back to normal
separator
+ }
}
[ -n "$dns" ] && {
signature.asc
Description: Digital signature
_______________________________________________ openwrt-devel mailing list [email protected] http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
