[openwrt/openwrt] base-files: use "ports" array in board.json network for bridges
LEDE Commits
lede-commits at lists.infradead.org
Mon May 24 01:43:34 PDT 2021
rmilecki pushed a commit to openwrt/openwrt.git, branch openwrt-21.02:
https://git.openwrt.org/d9603bbd3e313bf97ae2895e1f03dc9ca048225c
commit d9603bbd3e313bf97ae2895e1f03dc9ca048225c
Author: Rafał Miłecki <rafal at milecki.pl>
AuthorDate: Fri May 14 11:09:57 2021 +0200
base-files: use "ports" array in board.json network for bridges
Bridge aggregates multiple ports so use a more accurate name ("ports")
and format (array) for storing them in board.json.
Example:
"network": {
"lan": {
"ports": [
"lan1",
"lan2",
"lan3",
"lan4"
],
"protocol": "static"
},
"wan": {
"ifname": "wan",
"protocol": "dhcp"
}
}
Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
(cherry picked from commit d42640e389a8b22a31fb0061c12cd9dfbddb87b8)
---
package/base-files/files/bin/config_generate | 19 +++++++++++++------
.../base-files/files/lib/functions/uci-defaults.sh | 8 +++++++-
2 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate
index ee3958e733..56f6c4423b 100755
--- a/package/base-files/files/bin/config_generate
+++ b/package/base-files/files/bin/config_generate
@@ -91,21 +91,28 @@ generate_static_network() {
addr_offset=2
generate_network() {
- local ifname macaddr protocol type ipaddr netmask vlan
+ local ports ifname macaddr protocol type ipaddr netmask vlan
local bridge=$2
json_select network
json_select "$1"
+ json_get_values ports ports
json_get_vars ifname macaddr protocol ipaddr netmask vlan
json_select ..
json_select ..
- [ -n "$ifname" ] || return
+ [ -n "$ifname" -o -n "$ports" ] || return
- # force bridge for multi-interface devices (and lan)
- case "$1:$ifname" in
- *\ * | lan:*) type="bridge" ;;
- esac
+ # Force bridge for "lan" as it may have other devices (e.g. wireless)
+ # bridged
+ [ "$1" = "lan" -a -z "$ports" ] && {
+ ports="$ifname"
+ }
+
+ [ -n "$ports" ] && {
+ type="bridge"
+ ifname="$ports"
+ }
[ -n "$bridge" ] && {
if [ -z "$vlan" ]; then
diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh
index 134c527d8d..407a9c710f 100644
--- a/package/base-files/files/lib/functions/uci-defaults.sh
+++ b/package/base-files/files/lib/functions/uci-defaults.sh
@@ -39,7 +39,13 @@ ucidef_set_interface() {
[ -n "$opt" -a -n "$val" ] || break
- json_add_string "$opt" "$val"
+ [ "$opt" = "ifname" -a "$val" != "${val/ //}" ] && {
+ json_select_array "ports"
+ for e in $val; do json_add_string "" "$e"; done
+ json_close_array
+ } || {
+ json_add_string "$opt" "$val"
+ }
done
if ! json_is_a protocol string; then
More information about the lede-commits
mailing list