[package] base-files: introduce option "broadcast" for proto=dhcp interface to enable...
[openwrt.git] / package / base-files / files / lib / network / config.sh
index 2ca04fa..8321b19 100755 (executable)
@@ -164,6 +164,15 @@ prepare_interface() {
                        local macaddr
                        config_get macaddr "$config" macaddr
                        [ -x /usr/sbin/brctl ] && {
                        local macaddr
                        config_get macaddr "$config" macaddr
                        [ -x /usr/sbin/brctl ] && {
+                               # Remove IPv6 link local addr before adding the iface to the bridge
+                               local llv6="$(ifconfig "$iface")"
+                               case "$llv6" in
+                                       *fe80:*/64*)
+                                               llv6="${llv6#* fe80:}"
+                                               ifconfig "$iface" del "fe80:${llv6%% *}"
+                                       ;;
+                               esac
+
                                ifconfig "br-$config" 2>/dev/null >/dev/null && {
                                        local newdevs devices
                                        config_get devices "$config" device
                                ifconfig "br-$config" 2>/dev/null >/dev/null && {
                                        local newdevs devices
                                        config_get devices "$config" device
@@ -339,12 +348,13 @@ setup_interface() {
                        if [ -d "/proc/$pid" ] && grep -qs udhcpc "/proc/${pid}/cmdline"; then
                                lock -u "$lockfile"
                        else
                        if [ -d "/proc/$pid" ] && grep -qs udhcpc "/proc/${pid}/cmdline"; then
                                lock -u "$lockfile"
                        else
-                               local ipaddr netmask hostname proto1 clientid
+                               local ipaddr netmask hostname proto1 clientid broadcast
                                config_get ipaddr "$config" ipaddr
                                config_get netmask "$config" netmask
                                config_get hostname "$config" hostname
                                config_get proto1 "$config" proto
                                config_get clientid "$config" clientid
                                config_get ipaddr "$config" ipaddr
                                config_get netmask "$config" netmask
                                config_get hostname "$config" hostname
                                config_get proto1 "$config" proto
                                config_get clientid "$config" clientid
+                               config_get_bool broadcast "$config" broadcast 0
 
                                [ -z "$ipaddr" ] || \
                                        $DEBUG ifconfig "$iface" "$ipaddr" ${netmask:+netmask "$netmask"}
 
                                [ -z "$ipaddr" ] || \
                                        $DEBUG ifconfig "$iface" "$ipaddr" ${netmask:+netmask "$netmask"}
@@ -352,7 +362,15 @@ setup_interface() {
                                # don't stay running in background if dhcp is not the main proto on the interface (e.g. when using pptp)
                                local dhcpopts
                                [ ."$proto1" != ."$proto" ] && dhcpopts="-n -q"
                                # don't stay running in background if dhcp is not the main proto on the interface (e.g. when using pptp)
                                local dhcpopts
                                [ ."$proto1" != ."$proto" ] && dhcpopts="-n -q"
-                               $DEBUG eval udhcpc -t 0 -i "$iface" ${ipaddr:+-r $ipaddr} ${hostname:+-H $hostname} ${clientid:+-c $clientid} -b -p "$pidfile" ${dhcpopts:- -O rootpath -R &}
+                               [ "$broadcast" = 1 ] && broadcast="-O broadcast" || broadcast=
+
+                               $DEBUG eval udhcpc -t 0 -i "$iface" \
+                                       ${ipaddr:+-r $ipaddr} \
+                                       ${hostname:+-H $hostname} \
+                                       ${clientid:+-c $clientid} \
+                                       -b -p "$pidfile" $broadcast \
+                                       ${dhcpopts:- -O rootpath -R &}
+
                                lock -u "$lockfile"
                        fi
                ;;
                                lock -u "$lockfile"
                        fi
                ;;
This page took 0.025349 seconds and 4 git commands to generate.