base-files: always set proto passed to _ucidef_set_interface()
authorMathias Kresin <dev@kresin.me>
Wed, 15 Feb 2017 07:39:05 +0000 (08:39 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 3 Jun 2017 18:41:26 +0000 (20:41 +0200)
Overwrite an already set proto if a new one is passed to
_ucidef_set_interface() similar to what is done for the interface.

It is required when using ""ucidef_set_interface_wan 'ptm0' 'pppoe'"
after some initial wan interface configuration is already done by
ucidef_add_switch.

The "json_is_a protocol string" guard is meant to not reset an earlier
set interface proto in case something like
"ucidef_set_interface_lan 'eth0'" is used afterwards.

Signed-off-by: Mathias Kresin <dev@kresin.me>
package/base-files/files/lib/functions/uci-defaults.sh

index 06004c3bb5fa79348fdea6cc6bb477cc10e60ae3..7cc63ffc80ce8d6a3009b0f963ad4f0d3cec1762 100755 (executable)
@@ -35,7 +35,7 @@ _ucidef_set_interface() {
        json_select_object "$name"
        json_add_string ifname "$iface"
 
-       if ! json_is_a protocol string; then
+       if ! json_is_a protocol string || [ -n "$proto" ]; then
                case "$proto" in
                        static|dhcp|none|pppoe) : ;;
                        *)