summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSungbo Eo <mans0n@gorani.run>2019-11-12 01:20:45 +0900
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2019-11-26 17:01:12 +0100
commita2d9de21b841ab641c81cf3f6f9eb53e7bbf4a6b (patch)
tree7626f1f16b6f81dbda2361f11812779fc5adf795
parent3a5e28bd266b8e5de59ed9d9c198184b7c3e027a (diff)
downloadopenwrt-a2d9de21b841ab641c81cf3f6f9eb53e7bbf4a6b.tar.gz
openwrt-a2d9de21b841ab641c81cf3f6f9eb53e7bbf4a6b.tar.bz2
openwrt-a2d9de21b841ab641c81cf3f6f9eb53e7bbf4a6b.zip
base-files: config_generate: split macaddr with multiple ifaces
netifd does not handle network.@device[x].name properly if it contains multiple ifaces separated by spaces. Due to this, board.d lan_mac setup does not work if multiple ifaces are set to LAN by ucidef_set_interface_lan. To fix this, create a device node for each member iface when running config_generate instead. Those are named based on the member ifname: ucidef_set_interface_lan "eth0 eth1.1" ucidef_set_interface_macaddr "lan" "yy:yy:yy:yy:yy:01" will return config device 'lan_eth0_dev' option name 'eth0' option macaddr 'yy:yy:yy:yy:yy:01' config device 'lan_eth1_1_dev' option name 'eth1.1' option macaddr 'yy:yy:yy:yy:yy:01' ref: https://github.com/openwrt/openwrt/pull/2542 Signed-off-by: Sungbo Eo <mans0n@gorani.run> [always use new scheme, extend description, change commit title] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> (cherry picked from commit 298814e6be7640d89328de9e7c90d4349e30683f)
-rw-r--r--package/base-files/Makefile2
-rwxr-xr-xpackage/base-files/files/bin/config_generate16
2 files changed, 11 insertions, 7 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 0fcdc56b92..3602cc003f 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
include $(INCLUDE_DIR)/feeds.mk
PKG_NAME:=base-files
-PKG_RELEASE:=204
+PKG_RELEASE:=204.1
PKG_FLAGS:=nonshared
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate
index 3ca035ca8b..3bf48d7216 100755
--- a/package/base-files/files/bin/config_generate
+++ b/package/base-files/files/bin/config_generate
@@ -85,12 +85,16 @@ generate_network() {
set network.$1.proto='none'
EOF
- [ -n "$macaddr" ] && uci -q batch <<-EOF
- delete network.$1_dev
- set network.$1_dev='device'
- set network.$1_dev.name='$ifname'
- set network.$1_dev.macaddr='$macaddr'
- EOF
+ if [ -n "$macaddr" ]; then
+ for name in $ifname; do
+ uci -q batch <<-EOF
+ delete network.$1_${name/./_}_dev
+ set network.$1_${name/./_}_dev='device'
+ set network.$1_${name/./_}_dev.name='$name'
+ set network.$1_${name/./_}_dev.macaddr='$macaddr'
+ EOF
+ done
+ fi
case "$protocol" in
static)