Date:2010-05-30 20:40:22 (13 years 6 months ago)
Author:jow
Commit:8eca131c0f9660e8ae54c8270c1db780a7ed35ae
Message:[backfire] merge r21638

git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@21639 3c298f89-4303-0410-b956-a3cf2f4a3e73
Files: package/base-files/files/lib/network/config.sh (4 diffs)
package/base-files/files/sbin/ifdown (1 diff)
package/base-files/files/usr/share/udhcpc/default.script (1 diff)

Change Details

package/base-files/files/lib/network/config.sh
7070add_dns() {
7171    local cfg="$1"; shift
7272
73    remove_dns "$cfg"
74
75    # We may be called by pppd's ip-up which has a nonstandard umask set.
76    # Create an empty file here and force its permission to 0644, otherwise
77    # dnsmasq will not be able to re-read the resolv.conf.auto .
78    [ ! -f /tmp/resolv.conf.auto ] && {
79        touch /tmp/resolv.conf.auto
80        chmod 0644 /tmp/resolv.conf.auto
81    }
82
7383    local dns
7484    local add
7585    for dns in "$@"; do
...... 
7989        }
8090    done
8191
82    uci_set_state network "$cfg" dns "$add"
92    [ -n "$cfg" ] && {
93        uci_set_state network "$cfg" dns "$add"
94        uci_set_state network "$cfg" resolv_dns "$add"
95    }
8396}
8497
8598# remove dns entries of the given iface
8699remove_dns() {
87100    local cfg="$1"
88101
89    local dns
90    config_get dns "$cfg" dns
91    for dns in $dns; do
92        sed -i -e "/^nameserver $dns$/d" /tmp/resolv.conf.auto
93    done
102    [ -n "$cfg" ] && {
103        [ -f /tmp/resolv.conf.auto ] && {
104            local dns=$(uci_get_state network "$cfg" resolv_dns)
105            for dns in $dns; do
106                sed -i -e "/^nameserver $dns$/d" /tmp/resolv.conf.auto
107            done
108        }
94109
95    uci_revert_state network "$cfg" dns
110        uci_revert_state network "$cfg" dns
111        uci_revert_state network "$cfg" resolv_dns
112    }
96113}
97114
98115# sort the device list, drop duplicates
...... 
212229    [ -z "$ip6addr" ] || $DEBUG ifconfig "$iface" add "$ip6addr"
213230    [ -z "$gateway" ] || $DEBUG route add default gw "$gateway" dev "$iface"
214231    [ -z "$ip6gw" ] || $DEBUG route -A inet6 add default gw "$ip6gw" dev "$iface"
215    [ -z "$dns" ] || {
216        for ns in $dns; do
217            grep "$ns" /tmp/resolv.conf.auto 2>/dev/null >/dev/null || {
218                echo "nameserver $ns" >> /tmp/resolv.conf.auto
219            }
220        done
221    }
232    [ -z "$dns" ] || add_dns "$config" $dns
222233
223234    config_get type "$config" TYPE
224235    [ "$type" = "alias" ] && return 0
...... 
363374stop_interface_dhcp() {
364375    local config="$1"
365376
366    local iface
377    local ifname
367378    config_get ifname "$config" ifname
368379
369380    local lock="/var/lock/dhcp-${ifname}"
370381    [ -f "$lock" ] && lock -u "$lock"
371382
383    remove_dns "$config"
384
372385    local pidfile="/var/run/dhcp-${ifname}.pid"
373386    local pid="$(cat "$pidfile" 2>/dev/null)"
374387    [ -d "/proc/$pid" ] && {
package/base-files/files/sbin/ifdown
4040config_get iftype "$cfg" type
4141[ "bridge" = "$iftype" ] && brctl delbr "$ifname" >/dev/null 2>/dev/null
4242
43# remove the interface's dns entries
44remove_dns "$cfg"
45
4346# remove the interface's network state
4447uci_revert_state network "$1"
4548
package/base-files/files/usr/share/udhcpc/default.script
139139    }
140140
141141    # DNS
142    config_get old_dns "$ifc" dns
142    old_dns=$(uci_get_state network "$ifc" dns)
143    old_domain=$(uci_get_state network "$ifc" dnsdomain)
143144    user_dns=$(uci_get "network.$ifc.dns")
144145    [ -n "$user_dns" ] && dns="$user_dns"
145146
146    [ -n "$dns" ] && [ ! -s "${RESOLV_CONF}" -o "$dns" != "$old_dns" ] && {
147    [ -n "$dns" ] && [ "$dns" != "$old_dns" -o -n "$user_dns" ] && {
147148        echo "udhcpc: setting dns servers: $dns"
148        echo -n > "${RESOLV_CONF}.tmp"
149        for i in $dns ; do
150            echo "nameserver $i" >> "${RESOLV_CONF}.tmp"
151        done
152        ${domain:+echo search $domain} >> "${RESOLV_CONF}.tmp"
153        mv "${RESOLV_CONF}.tmp" "$RESOLV_CONF"
154
155        change_state network "$ifc" dnsdomain "$domain"
156        change_state network "$ifc" dns "$dns"
149        add_dns "$ifc" $dns
150
151        [ -n "$domain" ] && [ "$domain" != "$old_domain" ] && {
152            echo "udhcpc: setting dns domain: $domain"
153            sed -i -e "${old_domain:+/^search $old_domain$/d; }/^search $domain$/d" "${RESOLV_CONF}"
154            echo "search $domain" >> "${RESOLV_CONF}"
155            change_state network "$ifc" dnsdomain "$domain"
156        }
157157    }
158158
159159    [ -n "$ifc" ] || return

Archive Download the corresponding diff file



interactive